Is your knowledge as a programmer tall like they sky or broad like the horizon?
Greg Knauss says the programmer is like the sky, the manager is like the horizon. From Wide vs. Deep:
So here’s my theory: Managers must work shallow and wide, while programmers must work narrow and deep. People who are naturally tuned to one particular method of work will not only enjoy their jobs a lot more, but be better at them. I’m a deep guy, I should be doing deep work.
I didn’t say it was a particularly insightful theory.
Counter-point: your must prune your knowledge so that it is deep and broad. I spoke to this in my OSCON presentation The Holistic Programmer. From my description:
The Holistic Programmer is about how programmers should approach take a global view on the stack of abstractions in which they work and also in the spectrum of communications between people and machines.
In it I talk of my approach to problem solving. My method is largely predicated on knowing a little bit about a whole lot. Given that, I can usually frame a problem pretty quickly and get on to making the first attempt at solving it. I might get lucky and actually frame the problem correctly. Even if I don’t, at least now I’ve got an idea of what the problem really is and I can take another, more informed stab. So on this, Greg Knauss and I disagree.
My main point is that programmers need to take a holistic approach these days, knowing things above and below them in the application or system stack in which they are expert. This is the deep part that Greg mentions. Its not enough to just speak Rails, Django, Linux or Flash. You have to understand the bits that are higher level and the bits that are lower level than what you are working on. Otherwise you’re looking at an incomplete picture.
There’s a notion going around of the “specializing generalists” or some such. I think its a great way to go. Given the rapid rate of change software development sees, you have to stay nimble. The ability to quickly adapt to new technologies and approaches separates the mediocre programmers from the great programmers.
I’ll leave the penultimate word to The Dude:
If you’re yearning for more, check out the above presentation for a deeper dive and some book recommendations.