With the arrival of smartphones and tablets in recent years, and the rapid shift of part of the tangible economy to the digital economy, web development has become hugely fragmented, compartmentalized, and dispersed across an ever-growing collection of heterogeneous technologies. It’s no wonder that anyone approaching web programming for the first time feels a little dizzy deciding which tools and technologies to use. You have to take a leap of faith, which sometimes leads you to study the trendiest frameworks in depth, with all the risk that entails.
The days when someone could define themselves as a web layout designer or web master are long gone (just thinking about these outdated terms makes my ears ring), although it’s not unusual to find them on résumés even now… The landscape has changed radically and evolved so much that the industry now embraces anything that sounds like a standard or a non-proprietary technology.
There are so many options for starting a new web project today that it’s tremendously difficult to choose the most suitable ones for a project’s requirements. Some recurring questions are:
- Should I base it on a flexible CMS like Drupal?
- Should I build it from scratch (…)?
- Should I design mobile first or desktop first?
- Will the project evolve a lot, a little, or not at all in the future?
…and that’s assuming we don’t fall into the trap of using the technologies we know best and find most comfortable just because (to avoid stepping outside our comfort zone).
The concept of a web developer doesn’t mean very much anymore, at least not to me: are we talking about a front-end specialist, a back-end specialist, an infrastructure deployment specialist, a designer, or someone focused on usability, SEO, and so on? I’m afraid not everyone can excel in all these areas. That’s why the field has fragmented, and why the inescapable reality is that a reasonably large project has to include people with distinct roles.
We’ve long since moved from the concept of a web page to a web application, whose development calls for very different skills and roles:
- Design and usability (user experience, or UX). The success of any website—especially one that relies on attracting traffic to generate content or sales—depends directly on good design and excellent usability. Responsive design can also be a real challenge and a significant amount of additional work to consider.
- Front-end: everything that presents the website’s content to end users and lets them interact with it.
- Back-end: everything cooking away behind the scenes that supports the front-end: APIs based on web services or REST services, database access, and so on.
- If there’s a database, designing and maintaining it well is an important responsibility.
Necessary, but not enough… a web application has to be deployed in some IT environment and infrastructure. Web servers such as Apache, Nginx, Lighttpd, or IIS? In the cloud, with Amazon EC2 or Microsoft’s Azure? Those environments, naturally, have to be configured properly and maintained correctly, and each one is a world of its own.
Once the website is deployed and running for users, the work isn’t over: we need to measure both how successfully it operates and how users actually use it. That’s where web analytics comes in. And if nobody visits the site (a bit like painting a wonderful picture that no one ever sees), we need to implement SEO and SEM tactics. What’s more, those tactics aren’t added only at the end of development; they’re also put in place during it. They’re part of the project itself.
What I want to emphasize here is the heterogeneous, multifaceted nature of developing, evolving, and maintaining a web application—something far removed from the simplistic idea of someone calling themselves a web developer. Given that, it’s better to describe yourself on your résumé as an expert in specific areas, such as:
- A front-end expert working with Foundation, Bootstrap, and so on.
- A back-end developer working with Node.js, REST APIs, ASP.NET Web API, and so on.
- A designer specializing in digital commerce, usability, and RWD (responsive web design).
- A web systems administrator working with LAMP technologies.
- Someone with knowledge of web design and UX.
Make a note of this, then go update your résumé right now to describe a more specific profile like the ones above.
And to top it all off, what about security? Security cuts across several of the roles we’ve identified, so we should add another item to the list:
- Web security expert / auditor.
So whenever a résumé lands on my desk with a line that says web developer, well… honestly, I’m not quite sure what to make of it.
It’s not just a question of which role you identify with more, or where you have more or less experience. For each role, there’s also an extraordinarily wide range of tools, technologies, frameworks, and so on, so we risk specializing in a framework that’s very popular today but that no one will be talking about in a while.
If you work in web development and the skills, tools, and technologies you know are the same ones you knew three years ago, no one’s told you yet that you’re living in the Stone Age and need to retrain—and retrain deeply.
The myriad of knowledge, libraries, and frameworks available to a front-end developer, for example, is so vast that it can really make you doubt what you do and don’t know: Zurb’s Foundation, Bootstrap, Semantic UI, Gumby Framework, JavaScript (for the easily distracted), CSS3, preprocessors such as Less and Sass, Blueprint CSS, and a very long list besides, not to mention essential little libraries such as jQuery, Modernizr, HTML5Shiv, and Respond…
In my opinion, having so many options—some mutually exclusive, others complementary within the same project—is an exceptionally good thing, because it lets us fine-tune our choices to suit each project’s requirements. Still, all those options can have a very dark side:
- Will the libraries / frameworks we choose continue to be maintained?
- If they evolve, as they undoubtedly will, we’ll have to account for the cost of adapting and migrating our production solutions to new releases, unless we want to end up maintaining projects with obsolete libraries a few years from now.
- If we choose libraries that are new to us, their learning curve will undoubtedly add to the project’s development cost.
This is an aspect of software development I discuss at length in The Programmer’s Black Book: the fine line between choosing a good technology stack and allowing it to evolve in the future without putting projects at risk once they’re in production.
Web development is more multifaceted today than ever, more diverse than it was just two years ago, and precisely for that reason it offers more professional opportunities than before. If you consider yourself an active web developer—very active—then congratulations: you won’t be bored!