The agony of choice
Not so long ago, the toolbelt of any web developer was limited. Building for the web wasn’t a very complicated affair. With a good understanding of PHP, HTML, CSS and Javascript, one could tackle most problems. The web wasn’t a hard place to understand as the concept of a “website” entailed a collection of interlinked hypertext documents. Of course, there were the obvious frustrations with browsers and standards and most developers had there own idiosyncracies when it came to writing code. But the knowledge of a single developer encompassed all he needed to build an entire production ready website.
Today, things are different.
Over the span of a few years, the Web has exploded into this vast array of technologies, applications, frameworks, languages,… expanding and warping the very definition of what the Web actually is. No longer is the display of information limited to the confines of a static HTML pages within a browser. No longer are we passive consumers of information on the web. New, mobile, devices and applications have pushed the Web to a new level where we are constantly and actively engaged. This rapid evolution brings new requirements which pushes technology to break out of existing constraints. Technology needs to be geared towards superfluous consuming of information.
As a web developer, such change might feel as an uphill battle. Building a web application isn’t simply whipping up some PHP, HTML, CSS, JS, MySQL. There’s a vast choice in frameworks and languages out there to help you do the job. And the hard truth is: you just can’t master them all. With the advent of the new web, the increasing complexity leads inevitably to specialisation. A developer is proficient in a few frameworks and knows his way around others enough to pick up the basics and get going. Development also became a team based effort where different roles take on different parts of the work.
And then there’s the worry of overspecialisation. I can tell you what makes Drupal and WordPress tick and how to bend them. But I don’t want my focus to become limited to a few CMS/F’es let alone to a few aspects or subsystems of those. My major motivation to make a career for myself on the Web is to chase innovation and learn new cool stuff. But there are two major problems with such a pursuit:
-
Time is not on my side. Life shifts one’s priorities. Adult life comes with its’ own priorities. I’m no longer a student with the leisure of time to just hack on stuff. After a hard day of Drupal work, there’s only so much time left to read up on new things.
-
The Web has picked up the pace and spawned a massive amount of innovations and frameworks over the past 3 to 4 years. Node.js, Backbone.js, Symfony, Composer, SASS, SCSS, LESS, Angular.js, d3.js, leaflet.js, Bootstrap, Responsive, CSS3, HTML5,… to name a few and then some.There’s so much going on. And all are competing for my attention.
So, should I pick one or two and start toying around? Or should I methodically start learning them in the hopes that one day, I’ll need to use one of those in my dayjob? Or should I just wait out until a challenge lands on my desk which hands me the opportunity to learn a new framework or language?
And then there’s the elephant in the room: how long will what I’ve learned stay relevant? It’s not a question of “if” but “when” will you’re knowledge become outdated. Already, Drupal 8 will be a far cry from Drupal 7 as it is packed with loads of OOP/Symfony goodness and much, much more. There’s not really any choice not to be involved if you’re a Drupal developer. Even so, PHP is and has been the dominant server side scripting language on the Web, but these days Javascript is making vast strides to take a piece of the action. However, in our sector it’s extremely hard to predict the future. There’s no way to determine the exact expiration date of technology.
I think questioning one’s competences is a balancing act most of us faces these days. But it isn’t quite so problematic as it would seem. Picking a new framework to learn is a great thing to do. We should always expand our horizons and see what’s happening elsewhere on the Web. However, we shouldn’t be learning new frameworks merely because they might come in handy or because they’re the latest fad. We should rather take stock of the new complexity and reassess our own motivations: What do I want to accomplish? Which part of the Web do I really love to build? What interests me and tickles my curiosity? But above all, always ask yourself: What furthers me in my own personal growth?
In the end, the one thing we should avoid is getting paralysed by the sheer breadth of knowledge out there and realise that we just can’t learn and understand it all anymore.