I was talking with a fellow developer recently about some of the more recent “tools of the trade,” so to speak.
That is, we were discussing some of the newer frameworks that have been made available, web server software, configuration management tools, and dependency management applications.
I don’t know if this is a good thing or a bad thing, but the truth is that for the past couple of years, my technology stack hasn’t changed all of that much: Everything from the database all the way up through the IDE that I use has remained the same.
This isn’t to say that learning new technologies isn’t important, but I think that there’s something in our culture – at least in the United States – that invites us to spend our time spreading ourselves very thin across a variety of technologies rather than becoming specialized in a smaller subset of tools.
Developers Must Know Everything
For anyone who’s been on the web for more than a couple of years – especially if you’ve worked as a designer or developer – then you no doubt have seen how quickly software is released, changed, adopted, and forgotten.
It’s the way things are.
Granted, the really good stuff lasts for years – even decades – and there are some things that come on to the scene that I think will be around for a long time, such as GitHub, and then there are other things that come on to the scene on which the verdict is still out – like Snapchat.
I kid, I kid.
But in all seriousness, I think that we have a significant problem – at least in Western culture (that is, the United States) – that makes us feel guilty for not knowing every single technology that is available.
Look At The Job Search Engines
If you want to take a look at what people are looking for out of programmers these days, hop on to one of the major job search engines and then begin looking for computer programming and/or software/web development related jobs.
You’ll not only find a ridiculous number of tools, languages, and acronyms requested of the talent they are looking for, but you’ll often find developers cramming every language and acronym under the sun to game these search engines.
Just because you’ve written Hello World in a programming language does not constitute “knowing” a programming language.
But what we’ve done is create this system where people try to recruit other people who have a vast array of knowledge on a particular topic, and the people are forced to claim they know a vast array of certain things in order to get noticed.
And then we all look the same.
What’s even worse is that it can make someone feel guilty – or even dumb – for not knowing everything that others claim to know, or that others request that their talent know.
That really sucks, especially when there’s a level of intuition that we have that recognizes being a specialist in a field is something to be valued.
Imagine This For Any Other Job
Case in point: Try to imagine this particular scenario is other fields. It doesn’t matter of it’s something like medicine or law, or something like mechanics, or engineering, videography, or the arts.
We like to know that the people to whom we’re going to see and/or are hiring for an event or commissioning for a task are experts in their field, their slice of the industry, or their area of knowledge.
A lot of times – admittedly, not always (because there are exceptions) – we value depth over breadth and seek it out.
Time Breeds Greater Knowledge
I don’t want to come off as if I don’t think it’s impressive to know a variety of things throughout the course of your career.
One of my favorite hobbies is playing the guitar and listening to music – sometimes simultaneously, sometimes not :) – but the guitarists whom I admire the most have a wide variety of inspiration from which they pull, and they have a wide set of types of music that they like.
But the music they create is often of the same genre throughout their career, and they often use the same types of effects, guitars, and so on to achieve a certain sound.
Yes, they may grow broader over time, but it takes decades.
Similarly, as we – that is, programmers – move throughout our career, I think it’s only natural that we learn and adopt new tools in favor of old ones, but that doesn’t mean we drift far from where we started (again, some do – exceptions, remember?).
And we may pull inspiration from a variety of source, and gain knowledge in a variety of areas, but why should we expect this to happen in the course of a couple of years?
What Do I Know?
Now, I don’t claim to know which is the right thing and which is the wrong thing. For all I care, it’s a neutral matter, but I do think that there’s something to be said for being a specialist over a generalist.
And if you’re spending more time skipping across the pond of software dabbling in each thing that crops up rather than getting deep into a handful of technologies, you find yourself on your way to becoming a “jack of all trades; master of none.”
Who am I say the latter is any worse than the former?
I do know, however, that some of the people that I look up to the most – some of the people whom I respect and admire the most – didn’t know a little bit about everything there was available in their field.
They knew a lot about a little bit, and that took them very far.