When I was a young student, I had a fashionable infatuation with martial arts. One day at the dojo I was busy practicing a particular punch to the side of the neck. The teacher watched my repeated fumbling for a while, and finally pulled me aside and gave me one of the best lessons I’ve ever received on how to become a better software developer.
Why learning only one thing is hard
“Listen, you won’t learn the punch right by practicing it in isolation. You’re going through the motions but you don’t know what you’re doing. You’re going to need some context.”
OK, I thought, that seems like a good idea. I’m not getting anywhere anyway.
“Let’s make the punch a part of a story,” he said.
So he taught me a kata. It incorporated the punch into a sequence of moves against an opponent. Before learning the kata I did basically know how to execute the punch. But the kata showed me why I was doing it and that made all the difference.
My teacher’s lesson applies to software development as well. The part you’re working on is part of a bigger story. You have to know that story. It is much easier to do the right things if you teach yourself a little bit about the customers, the business, usability, technology, or anything which is not your specialty but is happening around you anyway.
Are you a fake specialist?
Too many of us seem to believe that specializing in something simply means not knowing about other things.
This hits the nail on the head. If ”specialist” does not mean technical depth, then all that is left is an excuse to avoid learning anything else.
So, here is my advice. Be both. Be a generalist so you can understand the whole story. Be a specialist to do your part better than anyone else could.