The list of responsibilities that differentiate a web designer from a web developer from a system administrator is becoming fuzzier as those working in these fields become cross-trained. The necessity for a web developer to focus on her core competency while also dabbling in relevant technologies is a result of web sites and web-based applications becoming more complex. It used to be a few pages of simple HTML would be enough to build out a web site for a client. Now web designers and web developers are expected to know how to build dynamic sites running on top of databases and interacting with other web sites via APIs.
With all this complexity bleeding into the web site development, what skills should a web developer equip themselves with to take on the most common challenges? Web developers typically spend most of their time developing on the backend, the server-side innards of a web site or web-based application. However, they should also know enough of the front end, the client-side interface. And on the other end of the spectrum they should know some of the wayback system administration, the cogs that keep the site up and running.
Why this wide spectrum of skills? Because every web developer is going to hit snags during a project and the more prepared they are to resolve those blockages, the sooner they’ll be back to working on the web site. Web developers can’t always go searching out the sysadmin or the web designer when they get stumped on a project. And besides, being able to address these hurdles will make you a better web developer in the long term. The worst thing a web developer can do is look for reasons to not complete a task (i.e. blame a sysadmin for not installing the mcrypt module, or a web designer for not including a CSS declaration for some obscure page on a web site) and then surf the net until someone else fixes the problem. The web developer who can keep going despite these minor hurdles is going to be a far more resourceful developer and a more valuable asset to their employer.
The Front End, Client-side
What web design tools should web developers know?
- Photoshop/Image Optimization
Server-side code simply has to work on the development and production servers. Client-side code, however, has to work on all of your targeted browsers. While the front end my not be the web developers responsibility, the ability to work around client-side snags is going to keep you more productive and more employable.
The Back End, Server-side
This is the area you spend most your time, coding infrastructures for dynamic web sites and web-based applications. You’ve settled in with language of choice — PHP, Python, Ruby, etc. — and its prominent MVC framework, and probably dabble a little in SQL when necessary.
A web developer can try and spend most of their career focused on just this one aspect of a web site or application, but they will be pulled in opposite directions at some point. For example, a SQL query might be performing poorly and require optimization. You’ll need to fix that. A page may not be rendering exactly like the original comps instructed, so you’ll have to fix that, too. Did your code crash Apache with an infinite loop? Gotta go restart it. My point is, there are going to be scenarios that pop up that will require you to fix, scenarios where you won’t have access to an HTML/CSS wonderboy, a DBA, or a sysadmin. You are going to have to figure it out on your own, or wait around twiddling your thumbs until someone with the proper skillset can help. That someone should be you.
The Wayback, System Administration
What system administration tools should web developers know?
- Basic web server configuration (i.e. mod_rewrite, .htaccess)
- Basic language configuration (i.e. php.ini)
- Configuring an OS to enable web development (i.e. LAMP stack)
The wayback is what we called the third row of the station wagon, where we sat backwards watching the landscape slip by in reverse. Parents in the front row, younger brothers and sisters in the middle, neither had any ideas what we were up to back there. System administrators share a similar sense of domain over their caves of servers, routers and switches. The web developer needs to be able access the development servers in a limited manner, but with enough access to overcome some common development barriers.
Many web developers these days will use a laptop as their development server. This makes it even more important to understand how to setup and configure a basic development environment. There will be language bindings to install, databases to setup, web servers to initialize. Setting up a basic LAMP stack can be trivial most of the time, but it can also require some tuning and tweaking, depending on the nature of the app you are developing.
A simple understanding of the Linux distributions package manager will help install missing pieces such as an mcrypt module or that mysql PHP connector. And a basic understanding of Apache configuration directives is essential, especially mod_rewrite and .htaccess files for developing web-based applications that rely on URL rewriting. Learn how to write scripts that will run from the command line to hack through more utilitarian tasks, and figure out the crontab manager for scheduling scripts to run in the background.
Is that it?
No, I just wrote out a few random items I’ve personally encountered in my last 16 years of web development. The peripheral requirements of your job as a web developer will differ from mine. But the one thing we web developers all have in common is we have to get outside our shell and cross train in those technologies that support our code. It’s the only way to become a more productive web developer, especially as the lines between web design, web development and system administration blur even more. So, tell me, what else do we need to know?