This past weekend something triggered a memory regarding my personal path in design and development. And in that moment I realized, once again, just how true that old monicker is: “If you’re a jack of all trades, you’re a master of none”.
Now, in this era when developers are aiming for “full stack” credentials, this kind of time-tested wisdom can get lost in the shuffle. It’s for this very reason that I think it’s worth revisiting this truth – as it applies specifically to web development.
Now, in our careers, sometimes we choose the path we take. Other times it’s seemingly chosen for us (de facto) by an employer, our school program, circumstances, etc. Often it’s only well after the fact that we even come clear on what the path has looked like. In other words, sometimes we’re so “in the moment”, reacting situation to situation, that we don’t actually notice the curve of the larger path, so to speak.
If you’re one of those “nose to the grindstone” “in the moment” types, it’s worth taking a moment to stop and consider this.
And that’s a great perspective to have. To this day I really think some developers (and this is even more true for designers!) tend to sell themselves short by jumping in without first getting enough sense of the bigger picture of the more generalized computer science concepts that underlie every program you come across – whether it’s the new hottest thing, or a tried and tested program from yester-year.
Now, not only is that not all that realistic, but, much more importantly, it’s just not all that useful. If you spread yourself around like that, while you may have an impressive generalized skill set, you won’t have a real masterful knowledge of any particular language (or two). You will be, as the saying goes “spreading yourself too thin”. Because, the thing is, you can’t have it both ways. You can’t have equal depth and breadth. You must choose one or the other. And when it comes to “getting things done”, it’s almost always preferable to have masterful depth over superficial (or even midlevel) breadth.
And not only is this true from an overall perspective, but it’s also true when it comes to applying your trade to “real world situations”. If you look at job postings, you’ll see some teams looking to add MEAN stack developers, others looking to had Rails developers. What you won’t often see (like, hardly ever) is teams looking to add both. And why? Well, because a choice has been made (one language or the other) and now they’re subsequently filling out the team to get stuff built.
I know, I know… it can be overwhelming trying to decide which path to commit to. After all, you don’t want to chose the language that gets left in the dust next year, right? Sure. I get that. But, just remember, just because a new, hot language comes along, that doesn’t mean all alternatives suddenly disappear. MEAN stack development has become really popular. But does that mean there are no Rails jobs posted? No, of course not.
So just keep that in mind, even if you are aiming to be a broadly educated person with full stack credentials. It’s good and helpful to have big picture understanding. But that doesn’t mean you’ll understand all aspects of development equally. No, if you are to become a productive member of a team – even a manager of a team – then you’ll become more granular in your approach – developing real, masterful experience with one particular aspect of development. In real world development situations, it’s ultimately these kinds of developers that offer win-win scenarios for all involved.