In Web Development, Choose Wisely, But Choose You Must!

Web development languagesThis 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.

For me, the memory that triggered this reflection was a free program weekend offered by Code School. I was half an hour or so into a new course on Ember that this realization struck me. In that moment I was taken back to when I was headlong in courses offered by Code School. At the time that meant courses in Ruby, courses in PHP, courses in Javascript, and courses in HTML and CSS. Yes, I was really getting a taste for it all – because I really wanted to expand my general knowledge of all things development-related.

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.

But all that said, there’s a big difference between having a healthy generalized sense of development topics versus trying to regularly work in all of those languages. Yes, even if you’re not working in JavaScript every day, or even every week, it’s good to have a general sense of how JavaScript works, what it looks like, how to edit it, and what it’s generally used for. But the answer (I don’t think) is to make sure you do – every week – some JavaScript, some Ruby, some PHP, some HTML, some CSS, etc.

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.

The truth is, as Ruby developer extraordinaire Pat Maddox has pointed out, regardless of how popular MEAN stack development (or whatever comes next!) becomes, if you want to stick with Ruby, you can build an entire career around that speciality. And that’s true for PHP, JavaScript, Python, etc. And why? Because, remember, from the 30,000 feet view, all of these languages are attempting to deal with the same computer science concepts in slightly different ways. Each one has trade-offs. Each one has pluses and minuses. They’re all being used by teams around the world.

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.

Posted in Musings, Web Design, Web Development Tagged with: , , , , , , , , , ,