What is a web developer? Recently I was involved in a discussion about the skills a web developer is expected to have and how interesting it has been to watch common bad practices (like table layout and SQL injection) continue to spread. So in the nature of Denis’s What does a SQL Server developer need to know? post, I present the web developer breakdown.
What Level Am I?
Rather than try and attach years of experience to this scale, I’m going to present a list of major areas and skills, questions, or topics in each area. I’ve tried to capture whether I feel a skill is required to be an Intermediate or Advanced web developer.
I put this list together based on my own experience, 20-30 web developer interview lists, and some feedback from others.
Beginner: Knows some of the items on the list
Intermediate: Knows most intermediate items and some advanced
Advanced: Knows almost everything on the list
HTML | |
---|---|
The ability to produce clean, valid, maintainable HTML is critical for a web developer. Current standards include HTML 4.01 (1999), XHTML 1 (2000), and the beginning of HTML 5 (2011) | |
I | |
A | |
I | |
A | |
A | |
I | |
A | |
I |
CSS | |
---|---|
Cascading Style Sheets are used to describe the way an HTML documented should be presented. CSS 1 was released in 1996 and the latest published recommendation is CSS 3. | |
I | |
I | |
I | |
A | |
I | |
I | |
I | |
I | |
I | |
A |
Javascript | |
---|---|
Javascript has become the defacto scripting language for web browsers, one of only a few ways to create client-side interactions consistently across available browsers. JavaScript was first shipped in 1995 as part of the Netscape browser. | |
I | |
I | |
A | |
I | |
I | |
A | |
I |
Tools | |
---|---|
Along with standard languages, there are numerous tools available to help validate, evaluate, and improve existing websites. Similar to a spell-checking tool in a word processing application, these tools can help us catch errors and oversights in our websites. | |
A | |
A | |
A | |
A |
Server-Side Programming | |
---|---|
The shift to dynamic, server-generated websites in the mid-to-late 90's was responsible for shifting the focus of the web from document retrieval to interactivity, commerce, and services. | |
I | |
A | |
I | |
I | |
I | |
I | |
I | |
A |
Data | |
---|---|
Most web applications have some form of data store behind them. Several forms of storage and caching mechanisms exist and being able to build a basic system often requires at least a basic level of knowledge in these areas. | |
I | |
A | |
I | |
I | |
A |
Web Server | |
---|---|
Using a server-side technology to generate HTML generally requires a web server. The two largest install bases are Microsoft IIS 7.5 and Apache 2.2. | |
I | |
A |
Performance | |
---|---|
Tuning a website to run in an optimal fashion can sometimes be the difference between paying for a single server or multiple servers, between a responsive site and one that fails under load. | |
A | |
A | |
A | |
I | |
A |
Testing | |
---|---|
As the technology behind the web has developed, tools to help automate some of the repetition involved in testing websites has likewise evolved. | |
A |
Security | |
---|---|
As recent news stories have reminded us, security is an ongoing requirement for websites. Understanding the basics of security can help us build security in from day one rather than trying to squeeze it in at the end. | |
I | |
I | |
A | |
I | |
I |
Design Principles | |
---|---|
Being able to implement common design patterns without restoring to hacks is an important part of being a web developer (as opposed to a hobbiest). While it may prove impossible to build a site without some form of hack, hacks should not be the only tool in the toolbox. | |
I | |
A | |
A | |
A | |
A |
Meta | |
---|---|
Metadata (data about data) is critical to helping people and search engines find resources in our sites and applications. | |
I | |
I | |
A | |
A | |
A | |
A | |
A | |
A |
Disqualifiers/Limiters | |
---|---|
These are topics I consider to be critical to advancement. They reflect common misunderstandings or bad practices that an experienced web developer has to grow past in order to advance their skillset. | |
B | |
B | |
I | |
B |
Note: Disqualifiers indicate that you won’t progress past [B]eginner or [I]ntermediate levels until you stop doing them and understand why doing them was a bad idea
What’s Missing
There are several things that were intentionally left out of this list. Some were hard to quantity in a general manner, others I was unsure how relevant they were. And I’m sure people will be kind enough to add additional oversights and revisions below.
Missing Categories:
- Level of knowledge with server-side languages
- Project management skills
- Documentation and Modeling skills
- Design and Graphics skills
- Application Lifecycle Management – Source Control, Deployment, etc
Extra items that didn’t make it in:
- Can implement RSS and ATOM feeds
- Can implement a web farm
- Implemented single-signon (openID, SAML, etc)
- Knows how to implement XML data islands (still relevant?)
- Knows how to create DTDs and/or XSDs
- Can write regular expressions without a reference
- Knows relevant tools for Yahoo (SiteExplorer), Google, Bing for managing site information
- Schema.org – it belongs in the Meta category but I didn’t know what level of skill, knowledge, or adoption I should include considering it’s newness and several other factors
There is also the fact that we often get caught up maintaining or even adding on to a site that violates many of the skills and standards you see in this list. This doesn’t prevent us from writing good, clean, semantic sites the rest of the time and being forced to write poor code does not make on inherently less skilled.
A Brief Digression, or Why an App Dev is Not a Web Dev
At one point web development was seen as less exciting and far less complex than application development. It is still seen as extremely similar to application development, so much so that it is quite normal to hire a good or great application developer and expect them to be a good or great web developer.
Unfortunately it doesn’t quite work that way, as web development has grown extremely complex since the first dynamic sites started showing up in the late 90’s. Doubly unfortunately, web development is based on a stateless model instead of the stateful one most application developers are used to, uses a fluid layout instead of the grid layout, and sneaks a lot of extra communications and caching into the mix. This is a series of paradigm shifts not unlike the one between procedural, object oriented, and functional programming.