Web Generalist
Make'n up job titles since today
Below is a list of job titles that I've held in my (nomadic, privileged) career:
- Webmaster
- Web Developer
- Web Developer (again)
- Engineer
- Technical Lead
- Technical and Design Lead
- Software Engineer II
- Software Developer
- Software Developer (again)
The job titles changed, the companies changed, the years changed, and the Web sure has changed. One thing didn't change, though. Through the two decades that I've been working: the work has been building websites.
Like most jobs, building websites is not just one kind of job. For most folks, that work regularly includes responsibilities like:
- building and maintaining web servers and infrastructure to host websites
- building web applications with server-side languages and frameworks
- building web applications with front-end languages and frameworks
- designing and building APIs for web applications
- designing database schemas (or not) and writing, optimizing, and debugging queries
- porting web applications between different technology stacks and languages
- wire-framing and designing websites
- building and maintaining design systems and component libraries for websites
- on-call shifts and incident management for web applications
That isn't an exhaustive list, it's just nine items so that it matched the number of job titles. When I reflect on the titles and responsibilities above, I can't help but feel disappointed that (after 34 years) we don't a proper, agreed-upon term for a person who builds websites.
It's not like we haven't been trying.
Webmaster was fun, but silly. And it belongs to a different era.
Web Developer is not bad, nice and broad. This is probably the simplest and most accurate title for web folk, but it seems to have fallen out of favor.
Technical Lead and titles like it are very specific to organizations.
Software Developer is fine, but doesn't imply anything to do with the Web, more a career description than a specific role.
Front-end Developer and Back-end Developer are efforts to segment responsibilities (good!), but (in my experience) these jobs always bleed into one another. I've never had a front-end role that didn't require an understanding of back-end technologies (APIs, caches, job queues, application frameworks, databases, etc). I've never had a back-end role that didn't require an understanding of front-end technologies (HTML, CSS, JavaScript, design systems, component libraries, etc). And in the post JS-on-the-server world, these distinctions have become less clear.
Full-stack Developer, perhaps, arose from this exact problem: it's unrealistic to keep our responsibilities pinned to a predefined area. But, this title is surely too broad. No one can develop the full stack? We are all partial-stack developers, I reckon, swimming around an ever-growing, ever-shifting sea of technologies.
Thoughts on Engineering
And then there is engineering.
Feel free to ↓ skip my thoughts on engineering.
I have never loved the title Engineer for software work (though, I'll concede that some dictionary definitions do map well). But, the term (in many countries) is loaded with specific legal definitions and requirements.
That said, I do think software engineering is an okay fit for some kinds of software work. There are people writing software in certain critical industries and applications who surely have excellent reasons to call their work software engineering.
My goal here isn't to get into an argument about the definition of words. And my goal is certainly not to gate-keep the title Engineer. No, ma'am or sir. If you're a software engineer and feel good about that term accurately defining your work, you'll hear no argument from me. Carry on.
I, though, am not such a person. Despite having held the title — even having lead "engineering teams" — I am rather uncomfortable calling myself an Engineer.
Most of the software work that I've done did not seem like Engineering. Most software is inherently elastic and fuzzy and fungible in ways that traditional engineering disciplines simply are not and cannot be. Using the word engineering for software often reads (again, to me) like an attempt to assign a certain weight to our jobs, trading on everyone's assumptions about what kind of work can be called Engineering.
But, as Fred Brooks would say: programming is pure thought-stuff.
The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures…
Yet the program construct, unlike the poet's words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself.
We (the collective we, the software people) are over here popularizing terms like vibe coding and prompt engineering, and calling everything we do delightful and blazing fast, and it all seems a far cry from having our work inspected by regulatory bodies to ensure that bridges and buildings don't collapse.
Okay, moving on.
Searching for a Better Title
So, then what to call oneself when writing an (admittedly low-stakes) About page on a personal website? Other folks have been thinking about job titles and finding themselves looking for similar answers.
Rach Smith on comb-shaped developers: "So then after some more research on this topic, I discovered the comb shaped developer: who has the breadth of a generalist and multiple specialisations that they’ve gravitated to throughout their career. Finally, this feels right. I am a comb. I am also, most definitely, overthinking this job title thing altogether."
Brad Frost on full-stack developers: "Are there people out there that feel equally comfortable designing a flexible, performant, accessible card component UI, and also wiring up the API that will feed content into that card component? I have no doubts. But is that skillset a common occurrence? I doubt it."
Adam Stoddard on generalists: "The idea of a job that’s nothing but drawing boxes in Figma interspersed with meetings about the boxes you draw in Figma fills me with dread. Humans are hardwired for novelty. We wither when we emulate robots. Working as a generalist is the more human way to work."
Martin Fowler on expert generalists: "The characteristics that we've observed separating effective software developers from the chaff aren't things that depend on the specifics of tooling. We rather appreciate such things as: the knowledge of core concepts and patterns of programming, a knack for decomposing complex work-items into small, testable pieces, and the ability to collaborate with both other programmers and those who will benefit from the software."
Konstantin (from Design Technologist) on generalists: "In real life, generalists have interdisciplinary knowledge, which boosts creativity and understanding of how things work. They understand better a problem and can perform better in second-order thinking in different conditions than the specialist can."
Tim Brown on I-shapes and T-shapes: "Most companies have lots of people with different skills. The problem is, when you bring people together to work on the same problem, if all they have are those individual skills-if they are I-shaped-it’s very hard for them to collaborate. What tends to happen is that each individual discipline represents its own point of view."
Wikipedia on generalist and specialist species: "A generalist species is able to thrive in a wide variety of environmental conditions and can make use of a variety of different resources (for example, a heterotroph with a varied diet). A specialist species can thrive only in a narrow range of environmental conditions or has a limited diet. Most organisms do not all fit neatly into either group, however."
Archilochus on foxes and hedgehogs: "A fox knows many things, but a hedgehog knows one big thing."
And sure, Archilochus probably wasn't thinking about the Web when he wrote that. Right? Probably not.
So, after probably too much thought, I've decided that I am a web generalist.
I am a person primarily focused on the web and its core technologies. A person who designs, builds, and makes websites. A person who does that work in many different shapes, with many different tools, on many different kinds of teams.
A person who is more of a fox than a hedgehog, but is comfortable hedgehogging in different areas when the work calls for it.
I quite like the idea of defining ourselves as a generalists within our chosen scope. It helps us speak honestly about our work and accept that the world is too complex for everyone to actually be a full-stack engineer. There is value in pursuing breadth and in understanding the wider context of our profession.
Specialization exists and it is both fine and necessary. Generalists, in my experience, thrive when they can work alongside experts and specialists. But, not everyone is or should be an expert or specialist.
People are rarely one kind of person.
I make websites and I'm a web generalist.
Do you make websites? You might be a web generalist, too.