Login or Sign Up to become a member!
LessThanDot Sit Logo

LessThanDot

Web Developer

Less Than Dot is a community of passionate IT professionals and enthusiasts dedicated to sharing technical knowledge, experience, and assistance. Inside you will find reference materials, interesting technical discussions, and expert tips and commentary. Once you register for an account you will have immediate access to the forums and all past articles and commentaries.

LTD Social Sitings

Lessthandot twitter Lessthandot Linkedin Lessthandot friendfeed Lessthandot facebook Lessthandot rss

Note: Watch for social icons on posts by your favorite authors to follow their postings on these and other social sites.

Your profile

    Search

    XML Feeds

    Google Ads

    « WebMatrix - Routing and Magic PagesMaking a jQuery Mobile style for a PHPBB forum »
    comments

    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)
    IThe effect of doctypes, can code a mostly valid site without looking up the rules
    AThe effect of content-types and how to set or debug them
    IKnows (and use) all of these without looking them up: html, head, title, meta, script, style, link, body, a, strong, em, ul, ol, li, table, tr, th, td, h1-5, input, select, option, img, p, span, div, pre, textarea
    AAnd most of these: dl/dt/dd, thead, tbody, tfoot, abbr, acronym, applet, object, blockquote, iframe, label, map, optgroup, sup, sub, base, fieldset
    ACan name/explain at least 15 of the new HTML5 tags
    IKnows the escapes for &, <, >, ©, ASCII characters (though you may have to look up the character code)
    ACan explain how HTTP works (headers, redirects, header requests, clientside caching)
    IKnows how to link to a position in a page
    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.
    IDifference between display inline, block, and inline-block and what the default value is for div, span, a, b
    IDifference between position static, relative, fixed, absolute
    IWhat z-index is and how to use it
    AHow z-index is calculated by individual browsers
    IDifference between padding and margin
    IDifference between display: none and visibility: hidden
    IPurpose and use of "media"
    IAble to describe and calculate specificity
    IKnows at least a few attribute selectors
    ACan describe pseudo-classes and know many without looking them up
    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.
    IHow to write a basic function, inline event handler, and a non-inline event handler (raw or w/ a package)
    ICan write one or or more methods to make an AJAX call with reference material
    ACan write one or or more methods to make an AJAX call without reference material
    IKnows at least one framework (jQuery, Prototype, YUI, Dojo, MooTools, …)
    ICan create classes (function or literal)
    AKnows and can use prototype (little 'p', not the framework)
    ICan dynamically find and add elements to the page using DOM or a framework (without looking it up)
    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.
    ACan name at least one site, application, or organization that has an HTML validation tool
    ACan name at least one site, application, or organization that has an CSS validation tool
    ACan name at least one site, application, or organization that has an SEO scoring tool
    ACan name at least one site, application, or organization that has an Accessibility evaluation tool
    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.
    IKnows at least 2 server-side technologies - Perl, PHP, ASP 3, JSP, Java Servlets, CFM, ASP.Net (WebPages, Web Forms, MVC), Ruby on Rails, Python (WSGI, CGI, mod_python), etc
    AKnows more than 4 of the above list
    ICan explain difference between stateful and stateless development
    ICan explain how sessions work
    ICan explain how cookies work
    IDifference between GET and POST and how known languages present this information
    IPros and cons of client-side vs server-side validation
    AUnderstands the basics of (SOAP) web services, how to implement them, and how they work
    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.
    ICan build databases, define queries, and debug on at least one major RDBMS
    AKnows basics for normalization and can create a basic data model to describe their database
    ICan work with at least one NoSQL database or data cache
    ICan write match and search regular expressions
    ACan write match and search regular expressions without a reference in more than one language
    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.
    IUnderstands the basics of how the web server (Apache or IIS) works and can create a new site
    ACan explain URL rewriting and implement on at least one system
    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.
    AUnderstands and can implement data caching
    AUnderstands and can implement page caching
    ACan use one or more page performance or load testing tools
    ITools/methods and purpose of minification of JS and CSS
    AUnderstands and uses CDNs when possible
    Testing
    As the technology behind the web has developed, tools to help automate some of the repetition involved in testing websites has likewise evolved.
    ACan use one or more automated tools for interface testing
    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.
    ISQL Injection - what it is, how to prevent it
    ICross site scripting - what it is, how to prevent it
    ACross Site Request Forgery - what it is, how to prevent it
    IUnderstand hashing, salting, and importance of storing critical information in hashed or encrypted formats
    ICookies - Understand session hijacking and dangers of storing user information or identification
    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.
    ITable Layout - what it is, why it's bad (at least three reasons)
    ACan implement multi-column fixed, fluid, and elastic layouts without reference material
    ATable Layout - and why using CSS for table layout (display: table, table-cell, etc) is not bad
    ACan explain and implement fixed, fluid (liquid), and elastic layouts
    ACan implement multi-column fixed, fluid, and elastic layouts without reference material
    Meta
    Metadata (data about data) is critical to helping people and search engines find resources in our sites and applications.
    IKnows purpose of description, keyword tags
    IKnows purpose of robots.txt file
    AKnows purpose and can implement sitemap.xml file
    AYou know the basics for SEO
    AYou've implemented some form of browser analytics
    AMicroformats
    AYou know what WCAG is and how to test conformance
    AYou know what semantic markup is
    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.
    BBackbutton doesn't work w/ your sites, would prefer to disable it altogether
    BYou protect images from download by implementing right click intercepts, layering transparent images in top, etc
    IImplement performance tuning without before/after measurements
    BTable layout

    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.

    About the Author

    User bio imageEli delivers software and technology solutions for a living. His roles have included lone developer, accidental DBA, team lead, and even unintentional Solaris consultant once. With experience in adhoc, Lean, and Agile environments across NSF grants, SaaS products, and in-house IT groups, he is just as willing to chat about the principles of Lean or Continuous Delivery as he is to dive into Azure, SQL Server, or the last ATDD project he created.
    Social SitingsTwitterLinkedInHomePagedeliciousLTD RSS Feed
    InstapaperVote on HN

    9 comments

    Comment from: Tom Winter [Visitor] · http://www.amosfivesix.com
    Tom Winter Great article! I sent this to my manager for our next round of hiring.

    A few years ago (at another company) I was on the hiring team for a web developer and I was made fun of for wanting to ask the candidate if they knew the difference between a GET and a POST. So I didn't. And guess what? We ended up firing the guy we hired after just a few months!
    06/28/11 @ 07:12
    Comment from: Claude [Member]
    Claude Great post. This is definitely a good list to use as an interviewer or job seeker.

    One point of disagreement is that using IIS 7's wizard to create rewrite rules is more of a disqualifier. Ideally, a candidate can show proficiency with Apache mod_rewrite and regex. Most of the time those rules can be used as-is with an IIS plugin like Ionic's ISAPI Rewrite Filter (IIRF).

    I would also add the ability to understand and build restful interfaces, which are more common today than WS-*, the ability to write jQuery plugins and advanced concepts like the module pattern, closures and namespacing in JavaScript.
    06/28/11 @ 09:45
    Comment from: Erik [Member] Email
    Erik Cookie hacking and cookie hijacking would seem super important intermediate security concepts. Not understanding these would pretty much be disqualifiers:

    - Trusting the user ID in a cookie lets anyone savvy enough to modify the cookie log in as someone else.

    - Not understanding cookie hijacking is less crucial but still opens a gigantic security hole big enough to drive a bus through. When cookies are successfully stolen they allow someone to log in as someone else. If any security-sensitive identifeirs are put in the cookies, at the very minimum ensuring the cookie comes from the same hostname it was registered on seems important.
    06/28/11 @ 13:22
    Comment from: Prashish [Visitor] · http://www.fortystones.com
    Prashish Awesome Post.. Great for a learner like myself. I really need to buckle up after reading the 'A' s!
    thanks
    06/28/11 @ 23:46
    Comment from: Eli Weinstock-Herman (tarwn) [Member]
    Eli Weinstock-Herman (tarwn) Thanks for the positive comments everyone.

    Tom: Glad you liked it. Just keep in mind that not every job requires the most experienced person you can possibly find, sometimes finding someone who is at the beginner level (or a beginner web dev and advanced in something else) can have a lot of benefit also. I only mention it because I've see over-hiring have some negative consequences too.

    Claude: I find myself in a gray area on the rewrite issue. On the one hand I think the most important part is that someone understands what rewriting is and how it works, once you know that then picking up the mechanics of how to do it in IIS7 vs Apache vs ASP.Net MVC vs ASP.Net WebPages...I couldn't figure out how much depth I would expect.
    As far as REST vs WS, not all SOAP is WS- and SOAP still has a larger use base than REST, but I would consider putting REST in the list as an "A" also.

    Erik: Good additions. I found it hard to find a place to draw the line. I've added your entries.
    06/29/11 @ 04:27
    Comment from: Tahir Khalid [Member] Email
    Great post Eli, I thought I was a developer but it is obvious that I still have the brains of a 5 year old.

    I would say, personally I can tick of most of the things in each section so that gives me a vote of confidence and also it's handy you have produced that as I can see what gaps I have and focus on those (something we tend not to do as we get stuck into our roles).

    I would say, as a "Developer" the other things like Communication, Sense of Humour, Documentation, Analysis skills are a given.

    Adios!
    06/29/11 @ 04:49
    Comment from: Eli Weinstock-Herman (tarwn) [Member]
    Eli Weinstock-Herman (tarwn) Kermit: Agreed. I actually considered outlining a number of things I consider important for any developer (web dev, app dev, DB dev, etc). But I didn't. :)

    Maybe that's a topic for another post.
    06/29/11 @ 07:33
    Comment from: Remigijus Jarmalavičius [Visitor] · http://www.jarmalavicius.lt
    Remigijus Jarmalavi&#269;ius Fully agree! Except you have not mentioned Python in server side technologies... :(
    06/30/11 @ 00:42
    Comment from: Eli Weinstock-Herman (tarwn) [Member]
    Eli Weinstock-Herman (tarwn) I also haven't mentioned VB.Net, C#, JScript, and a few others :) I've used Python as a scripting language in ASP and the only other options I know of is CGI, there isn't really a dedicated "Python on the web" type of technology (that I am aware of). If we go down the CGI path then technically anything becomes a web development language, which is possibly true but reduces the effect of the 2 and 4 language requirement up above, as well as the "web dev is not app dev" digression :)

    Edit: Ok, I've done a little searching and it looks like python usage for the web is wider spread than the I originally thought, so I've added it to the list above.
    06/30/11 @ 04:21

    Leave a comment


    Your email address will not be revealed on this site.

    To mislead the spambots.

    Your URL will be displayed.
    (Line breaks become <br />)
    (Name, email & website)
    (Allow users to contact you through a message form (your email will not be revealed.)