I had an interesting chat with a few colleagues of mine yesterday, and it was on the subject of the "front end dev". The two colleagues in question were a designer, and a good all-round developer, each with 10 years experience in their respective fields. So they've been through the mill.
The subject of JQuery came up, and after a little rumination on things, we kinda agreed that what the web needs, is a new specialism, the front-end developer. So were we right? If you're a dev, is now the time to go for that niche and specialise, if you're a designer, are you going to have to get used to your finely crafted CSS getting butchered by some nightmarish hybrid creature, neither a designer or a fully fledged dev? (A were-dev?)
On the face of it, a heck of a lot has changed over the last 3 or 4 years. Off the top of my head, us web folk have had to contend with:
- HTML5 and it's rapid adoption by browser vendors
- The arrival of CSS3
- Ubiquitous video - it's everywhere! Where's all this content going to come from?
- WebSockets - a big slice of what was server side, can now be client side.
- The OS explosion - iOS, Android, Windows 7, Windows Metro, etc
- An increasing browser mix - no more IE6 and nothin' but IE6 (believe it or not at one point 95% of users), there's now Firefox, Chrome, IE7, IE8, IE9, Safari, etc.
All of this changing "stuff", who's responsible for keeping up with it all? Designers still have to design like they've always done, us devs still need to dev, just as ever. But hang on a mo...
This Sounds Familiar.
When have things ever been any different to where we are now? When did the web, or before that the operating system, ever settle down and have a rest?
We've had it just as bad - remember the late 90s? When we had a crazy browser mix including Netscape 3, IE3, Communicator 4 and 4.8, IE4, IE5, Opera, etc to contend with? Unlike now, noone could agree on how a given page should look (incidentally this was the era that gave birth to the Acid tests). Does the margin go inside the box or outside? And who the hell couned the term "quirksmode"!?
Then there was the problem that browser releases were lucky to happen once a year, and users just didn't upgrade, downloading a 17meg installer back then was no mean feat! For example, it took a full 2 years for the Netscape 4 browsers to overtake Netscape Navigator 3.
Creating working, dynamic websites in this environment was hard work, but it was done. Maybe for a while, things were in such a state that people felt like they needed someone to deal with all this new mess, a new breed, the "Front End Developer".
Sounds Risky To Me, Don't Do It!
The IT industry is always in a state of change, there's always new technology coming along, and always a broadening horizon of "stuff" to experiment with and implement. But all the way through, the specialisms have stayed relatively the same - you have your data folks, your infrastructure folks, your support folks, your dev folks and your design folks. Time has shown, there is no long-term need for specialism beyond this!
How can it be, when the horizons are always broadening, that we don't need increased specialism? It's because of us magic devs of course! Us magic devs and our magical world of abstraction. The messy stuff that you'd want to throw a specialist at, an abstraction layer over the top of it all is just the job.
Abstraction To The Rescue
Software devs immerse everyone around us in our world of abstraction. Things get too complicated, a dev comes along and wraps up all the complexity in an abstraction, and then everyone forgets the bad old times, the new abstractions give us more room in our heads for the new stuff, and "it just works".
Just as binary gave way to machine code, which gave way to assembler, which gave way to C, which gave way to C++, which gave way to C#, the stuff we now see as complicated specialised work will some day be absorbed into a nice simple API or domain-specific-language or platform, rendering those who've specialised redundant.
By all means have some specialist skills to your bow, but make sure you're not a one-trick-pony, it's risky. Just focus on being a damn good code monkey, and when you're cursing the crappy config needed by the latest and greatest layer of abstraction (WCF, Spring.Net, I'm looking at you...), that's just the natural order of the world we've created out of our trillions of ones and zeros, so lump it.