What is a web developer?

Last week I was the target of a good old-fashioned internet witch hunt when I dared to propose that you should be able to work without tools (frameworks, libraries, and so on) in order to be a web developer.

I’m not saying you should give up your tools and only work in raw CSS and JavaScript. Instead, I’m saying that you should be able to do so. That’s my definition of a web developer, and it’s what I fundamentally believe in and will stand up for — repeatedly, if necessary.

Anyway, Adrian Holovaty tweeted about my presentation and the oh-so offensive slide, which was the start of a 36-hour long fake outrage. I am, apparently, an old fart, stupid, arrogant, my site is shit, and ... well, I’m not going to repeat the entire list. Trolls will be trolls.

See also Adrian’s write-up and my slides.

And no, I’m not very impressed. I was when it first happened in 1999, but meanwhile I learned that these hysterical overreactions mean I’m on to something important.

Raw nerves

There are certain points here that merit our attention. Put it this way: if make this statement you have a choice of three reactions:

  1. You agree with me (and a surprising number of people did; there were positive tweets interspersed among the trollish bile; I’d particularly like to call out Jen Strickland here.)
  2. You disagree with me, and offer counter-arguments (there were a few of those — we’ll encounter one below)
  3. You think I’m being a bit silly and don’t react at all.

Many reactions, however, conformed to none of these types. I evidently struck a raw nerve — again. Fair warning: I intend to strike that same nerve a few more times, just to see what happens.

Take this series of replies by Yehuda Katz. I don’t intend to shame Yehuda, but his reply is the stand-out example of a curious mixture of anger and serious arguments. He starts out by calling my idea corrosive, faux morally superior, and aimed at shaming devs, before pivoting to an actual argument that’s worth quoting:

In my view, the fact that many people can get into programming without full view of the whole picture is a tremendous achievement.

(Hint for next time: you could also proceed straight to the argument without the name calling.)

I’m not sure I agree with his argument, but at least it’s a statement that I can agree or disagree with. It opens a discussion, where 2,117 variations on “You suck” don’t.

My definition of a web developer

My goal today is not discussing this argument at length, but rather taking a step back and asking a more fundamental question: what is a web developer? How do you define one? What knowledge and skills does it take to be one?

To me, a web developer is a programmer who is not only able to write HTML, CSS, and JavaScript by hand, but also has a deep understanding of what browsers can do to that code.

That means that you have to understand the basics of how browsers work, how CSS works, how JavaScript works, and general browser compatibility patterns for the code you’re about to use.

That’s a tall order — and we haven’t even talked about accessibility, graphic and UX design, copy writing, and client-server communications yet. You can’t be a specialist in all these topics, but a rough understanding of their basics is mandatory.

Because if you don’t have that knowledge, what will you do? Although in theory other options are conceivable, in practice the answer is: add more and more tools until the site works in your favourite browser. To me, that’s not good enough — I said so a year and a half ago, and I’ll repeat it as often as necessary.

Amy Hoy hit the nail on the head:

I think a lot of web devs actually hate the web (afraid of CSS, afraid of pure JS) & therefore try to frankenstein it.

I think this is part of the problem — and it certainly explains why my remarks get people so angry. If I were clearly and outrageously wrong, nobody would have bothered to reply. Thus there has to be a kernel of truth somewhere — and I think Amy found it. I’d just add “afraid of browsers” to the list.

Other definitions

So I’d like to ask people who disagree: please define a web developer. Please state clearly what you think a web developer is supposed to do and know.

It’s possible that we’ll come to a two-fold definition: one closely aligning with mine, and one more aimed at getting websites and web apps ready for deployment without worrying too much about the underlying technology.

Maybe there’s room for both types, I don’t know. Web developers who understand what browsers can do to your code will always have the edge because they simply have more knowledge, but that doesn’t necessarily mean there’s no need for the other type.

In addition, there is the idea that the web is going to change massively over the next five (ten?) years, most recently embraced in Kenneth Auchenberg’s A future without browsers presentation — and see also Peter Gasston’s Fronteers 2016 presentation.

This may be true — several people I respect deeply believe it, and I need to do some research in this area. Obviously, if this is true it might change the definition of web developer, even though under the hood Facebook and the others still need a browser — it just won’t be a consumer-facing piece of software any more.

I have two counter-arguments (although this really merits a series of dedicated articles instead of a two-point list):

  1. It hasn’t happened yet — right now we still need traditional web developers.
  2. I think the process will go significantly slower in the West than in Asia, partly because consumers have a mental model of the web (and browsers), and partly because of sheer inertia.

This might lead to a web developer being defined differently in different parts of the world. One more thing to keep in mind.

But anyway, ask yourself this question: what is a web developer?

Update: Meanwhile some replies have come in:

This is the blog of Peter-Paul Koch, web developer, consultant, and trainer. You can also follow him on Twitter or Mastodon.
Atom RSS

If you like this blog, why not donate a little bit of money to help me pay my bills?

Categories: