Is it better to have breadth or depth in your programming knowledge, skills and experience?<p>When you set out to learn something new in programming, how do you choose between delving deeper into tools and languages you are familiar with or discovering something completely new?
Tough choice, because you really want both, and yet you can't have both.<p>I think a nearly-optimal strategy is to have breadth in a variety of technologies and then deep expertise in <i>one</i>, which you choose based on what you're most passionate about when exploring technologies. (It also helps to keep an eye on the market, so it's not completely useless.) That deep expertise is what will open new opportunities for you - nobody hires a dilettante. But the opportunities will be worthless if you get stuck in a specialty you hate.
I don't know what you mean exactly by programming knowledge, but if you are talking about languages, then pick a core language of your choice and master it. Then, dabble in a few useful frameworks in that language for later. As a side note, js seems to be such a language to keep in mind for the next decade or so, at the very least :-p<p>As about technologies, they will come and go, so master your fundamentals first, everything else will make sense or at least you know where to look for help when sh*t hits the fan!<p>Again, I think mastery is helpful. If you can do something really, really well, you can do some interesting things. See this: <a href="http://calnewport.com/blog/2010/01/23/beyond-passion-the-science-of-loving-what-you-do/" rel="nofollow">http://calnewport.com/blog/2010/01/23/beyond-passion-the-sci...</a>