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
"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 important for success at Valve. We often have to pass on people who are very strong generalists without expertise, or vice versa. An expert who is too narrow has difficulty collaborating. A generalist who doesn’t go deep enough in a single area ends up on the margins, not really contributing as an individual."
[0] - http://www.valvesoftware.com/company/Valve_Handbook_LowRes.p... page 46