Live data from Hacker News

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

news.ycombinator.com

1–10 of 114 posts

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

#1
Hi HN,

Very recently I stumbled onto a comment by Rich Hickey which I've reformatted in a gist[0] (unfortunately, the source is no longer available). Honestly, Rich Hickey is one of my programming heros and I'm a big fan of his ideas about programming. However, reading the response below, I couldn't help but feel disheartened.

Rich Hickey says - You don't level up by switching games all the time, but by sticking with one long enough to gain advanced skills. And, you need to be careful to recognize the actual game involved. Programming mastery has little to do with languages, paradigms, platforms, building blocks, open source, conferences etc.

Quite seriously, this is more or less opposite of what I've lived by in my career till now. As a backend engineer I can't help not getting excited by React or not spending a month learning OCaml or building side-projects tangential to my 9-5 line of work. The worst part is, that till now I always felt that it is a sure fire way to level up as a developer.

The confusing part is that Peter Norvig, another great programmer has quite the opposite to say[1] (although one can argue that overall they mean the same) - Learn at least a half dozen programming languages. Include one language that emphasizes class abstractions (like Java or C++), one that emphasizes functional abstraction (like Lisp or ML or Haskell), one that supports declarative specifications (like Prolog or C++ templates), and one that emphasizes parallelism (like Clojure or Go).

At this point, I'm really confused and I spent better part of the day mulling over whether I should go through the lectures of a recent Coursera course that I'm doing or should I dive deeper in my current stack e.g. Python / Django.

What are your thoughts? Is there one school of thought that you agree to?

[0] - https://gist.github.com/prakhar1989/1b0a2c9849b2e1e912fb [1] - http://norvig.com/21-days.html

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

#3
I don't think the two are mutually exclusive. You need both variety and focus to excel. The key is to know when to shift gear between the two modes. Why don't you just do whatever that you find fun and challenging? That's usually the best indicator of what you should do.

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

#7
I think you're overemphasizing Hickey's first thought. His second boils down to "be careful to recognize the actual game involved. Programming mastery has little to do with languages"

To me it sounds like he's saying "understand the underlying patterns and techniques that make good programs in any language" not "stick with one, and only one, language until you know it inside and out".

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

#9
I think Hickey is referring to more of an abstract "level up", while Norvig is talking about a general accrual of specific skills.

Think how all programming languages can be reduced to lambda calculus or Turing machines. And think how design patterns and algorithms can exist across all programming paradigms. If you can master design patterns and algorithms in one general-purpose language, then to pick up other languages you just need to learn the syntax and idioms of that language.

On the other hand, a quick way to expose yourself to different programming concepts is to take a crash course in very different languages, as Norvig suggests. The risk with this method is that you never attain mastery in any one thing ("jack of all trades, master of none", s/trades/programming languages/)

I think Hickey is right in this one, but fundamentally they are talking about two different things. Hickey is talking about mastery, while Norvig is talking about "programming success" ("success" is word with a slippery definition, but to be "successful" definitely does not require one to be a "master")

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

#10
Both. You get a better understanding of when/where to focus by understanding what the similarities and differences are between languages. I'm better now because I've done PHP, VB, Java, C#, Groovy, Perl, Ruby and some others, even though I focus about 90% of my time on just 2 of those areas.

You get a better idea of what 'advanced' is both by diving deep in to one language but also by digging in to other languages - seeing how they do stuff, what's possible, what's elegant, what's a hack, etc.

Post reply on HN