Live data from Hacker News

Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

news.ycombinator.com

61–70 of 114 posts

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#61
> The worst part is, that till now I always felt that it is a sure fire way to level up as a developer.

So here's the thing: you believed in something, were living by this and felt just fine. Now you've heard some other guy with famous name disagrees with that and you feel down and confused. Isn't that funny? To be blunt, I think it's simply ridiculous. Having "a hero" in the strong sense of it is a problem by itself, but whatever, here you're discussing a practical issue. You think there's some goal you'd like to achieve, there are some practical advises from several people on how to achieve it, some are contradictory, as always. If you have confirmed, that something works, what's the problem? If you didn't confirm anything and you don't know how to solve it analytically, the only option you have (well, at least in this case) is following some of the advices and see what works.

But I'll go as far as saying that even that indecisiveness isn't your problem. The problem is, as it often happens, that you don't know what you want. You believe there's something you'd like to achieve, but you don't really know what. You never really formalized it, and hence you cannot judge if some advice would be helpful or not. Yet you strongly believe you want this "something", but as you don't know what is that, you cannot really decide on direction and it worries you. In that case only meaningful advice you can get is the one Cheshire Cat has given Alice, IYKWIM.

For what it's worth, I also have an opinion on that matter. I don't really believe in "mastery". I believe there's world full of things you can interact with and state of some things is different from that you'd like it to be, which produces a notion of problem, which you are willing to solve. Solving some specific problem may require skill, domain knowledge, physical strength or something else. Telling me that learning to make good sushi takes 70 years will only make me yawn or chuckle, depending on my mood, but sure it takes a lot of practice. And, generally, to be able to solve skill-related problems you need to practice. However it is quite likely that subset of problems you'd like to be able to solve in some domain (even skill-related) requires very little to none practice, as you can resort to using better tools (maybe humans), some clever trick or getting the essence of it is in fact pretty easy, when you have a good teacher.

So, as I don't believe in "mastery" both Hickey's and Norvig's advices mean pretty much nothing to me, and I partly agree and partly disagree with both. Specifically, I almost completely disregard the notion of "being not my domain", as I've repeatedly found that learning seemingly unrelated fields can improve my understanding of others and sometimes happens to be just handy (kinda point to Norvig). However I feel that as long as you have many enough options to cover all range of problems you'd like to solve, the less tools you use — the better it is for you, as it removes mental clutter and helps concentrate on actually solving the problem, not thinking too much about "what is better option to solve it" (point to Hickey). The famous presentation, where Hickey compares programmers to musician, I find compelling, but completely ridiculous when you actually think about that, as being a programmer has almost nothing to do with being guitar player. I disregard popular saying about programming being an art. There're more strong opinions of mine, which I can support with arguments, but that isn't really on topic and I doubt it would be of any interest to you as my surname isn't Norvig nor Hickey.

But, yeah, well, that's just, like, my opinion, man.

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#62
post #32
post #28

Earlier quoted context omitted.

It just sounds to me like they're saying they only want engineers who already know everything about everything. Sure, I'd want that too if I were hiring, but it doesn't seem very realistic. It also makes me wonder about their ability to manage people with different skill levels and areas of expertise. And of course, having used Steam, I'm not at all surprised.

Not to me. It sounds like they want people who have a wide variety of shallow-ish knowledge (but still an actual understanding of whatever area it is), while also having very deep knowledge in one or two areas in particular. > It also makes me wonder about their ability to manage people with different skill levels and areas of expertise. And of course, having used Steam, I'm not at all surprised. Weird that that's th…

I should clarify that I have enjoyed some of their games. Particularly the Half-life and Portal series'.

That said, actually using Steam is an awful experience. Literally 50% of the time, when I launch Steam, it immediately stops and gives me a dialog saying I'm not connected to the Internet, despite that I have other Internet-using apps open and working fine. Quitting and immediately restarting works just fine for no apparent reason. I have several examples of things like this that show a lack of quality in their products. In my opinion, that is usually an indication of poor management as they aren't concerned with the quality of their product.

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#63
In my experience great developers rarely focus on the tools (except if that's what they're building of course). It's like with great authors; what you have to say is far more important. Most great books were written on a typewriter, some even with pen and paper.

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#65
post #22

Programming languages matter some, but algorithms and data structures matter a hell of a lot more. While it is true that learning different programming paradigms can help you evolve as a programmer, I strongly believe (I have been programming professionally for about 20 years) that that is far from the best way to evolve as a developer, and learning algorithms and data structures will help you "level up" faster and b…

When people talk about learning algorithms, what do they mean? I recently spent a few hours reading about and implementing A* for the NPCs in a video game I'm working on. Are you talking about being able to write A* and other algorithms from scratch with no reference material?

I can't speak for anyone else but I think the important thing is understanding the tradeoffs of different ways of accessing data.

At it's simplest you have things like checking for existence using linear scans of arrays. Anyone with experience sees that as a bad thing to do because they understand that it's inefficient for any sort of sizeable array. But those who don't understand algorithms or data structures won't even know there's an issue. And that's the simplest case really.

When you have a list and you need to efficiently add and remove items from both ends - then you want some sort of double-ended queue. I know where to find the one in my std lib and I know when I need to use it - which it turns out is almost never - I thought I did the other day, then I found a simpler way, which was actually a bit disappointing :)

Then, as you say, you have things like A* or R-trees. The more of these you have an handle on - even just to know they exist, the better position you'll be in when you need them.

But I don't even think that's the most important part of knowing data structures and algorithms (and really, I'm sure none of that's news to you if you're implementing A* searching). For me it's more about understanding efficient patterns for data access. So much of the work I do is about efficiently pushing data around in different forms. Often having a core chunk of data and then a couple of different indexing structures to allow me to interrogate it depending on the info I need.

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#66
I'm going to have to agree with Hickey on that one. But then again, imagine the horror of dedicating years of your life to a language that turns out to be complete garbage.

I also think you need to take into consideration that the Norvig essay is dripping with hyperbole.

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#67
post #22

Programming languages matter some, but algorithms and data structures matter a hell of a lot more. While it is true that learning different programming paradigms can help you evolve as a programmer, I strongly believe (I have been programming professionally for about 20 years) that that is far from the best way to evolve as a developer, and learning algorithms and data structures will help you "level up" faster and b…

When people talk about learning algorithms, what do they mean? I recently spent a few hours reading about and implementing A* for the NPCs in a video game I'm working on. Are you talking about being able to write A* and other algorithms from scratch with no reference material?

> Are you talking about being able to write A* and other algorithms from scratch with no reference material?

No, I mean knowing what algorithms/data-structures are available, what their characteristics are, and how to tweak them. This way you can say stuff like: with those data access patterns, we'll need a B+-tree with links for concurrency, modified to not delete depleted nodes until such-and-such. Or, something like: doing that efficiently requires an optimization that's NP-hard because the problem reduces to graph partitioning, but we can use an approximate solution that should work well-enough in this case.

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#68
I enjoy listening to Hickey talk in abstractions because it always gets grounded in practical considerations. I suspect the "actual game" is solving problems. At the end of the day, that's my understanding of why he wrote Clojure and Datomic recently and switched from C++ to Java earlier in his career.

Because Clojure was targeted at working Java programmers who might benefit from the power of Lisp and working Common Lisp programmers who might benefit from the power of the JVM, I don't really see any contradiction between Hickey's quote and Norvig's. For each, the reason to know "another language" is it helps a person solve problems.

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#69
post #54
post #49

Earlier quoted context omitted.

Any links describing the management failures?

Jeri Ellsworth has been quite vivid about the actual, rather than the idealized, version of how Valve actually works; there's some thoughts here: http://www.develop-online.net/news/valve-s-perfect-hiring-hi... Besides shelving the VR project that she was reportedly working on, there's also the Steambox which still doesn't exist (the only hardware to even pass prototype stage eventually had to abandon SteamOS and rele…

Sounds like every company, ever.

Re: Ask HN: Thoughts on Rich Hickey's advice on becoming a better developer?

#70
post #28
post #18

Whenever a question like this comes up among the people that I am mentoring, I like to show them the "T-Shaped Employee" section of the Valve Employee handbook [0]: "We value “T-shaped” people. That is, people who are both generalists (highly skilled at a broad set of valuable things—the top of the T) and also experts (among the best in their field within a narrow discipline—the vertical leg of the T). This recipe is…

It just sounds to me like they're saying they only want engineers who already know everything about everything. Sure, I'd want that too if I were hiring, but it doesn't seem very realistic. It also makes me wonder about their ability to manage people with different skill levels and areas of expertise. And of course, having used Steam, I'm not at all surprised.

I think it's more engineers who know something about everything, and everything about something.
Post reply on HN