The Human Side of Web Development
I've been thinking a lot about humans lately. It has a lot to do with all the talk of non-humans (A.I.) over the last year or so. It's gotten me thinking about the purpose of the web and our (my) place within it as a developer.
What is the Internet anymore?
The web has always been, to me, a communication tool between humans. But the last few years, it's seemed we're trying to reduce it all to numbers. We're chasing "engagement" on social media. We're trying to inflate registrations and newsletter sign-ups. We're trying to bump our pages per session metrics. We're writing content for algorithms, hoping some code somewhere will deem it "worthy" enough to show it to a real human, which in turn, will (hopefully) increase the other numbers just mentioned. We're looking to A.I. to do more and more complicated tasks to free us up to do...something. Often, the one number we all want to see go up as a result of all these other numbers is our bank balance.
Numbers are great. I love numbers. I think most good decisions in web design and development start with a number. "We have this number and we want it closer to this number" is a great place to start a project or new feature. However, behind every number is a human (or set of humans).
What it feels like we're often missing
Empathy is something that gets talked about a lot on the design front, but I don't hear it thrown around much in development circles. We are very concerned with output. "How do I get my code to do the thing I want?" probably being the biggest. "Does it meet the requirements?" is another. I'm not sure if it's because we assume the requirements have been vetted or if we're just so fixated on "the problem" that we don't question if the "solution" (for users) is even the right one. Maybe in some organizations, engineers aren't empowered to even raise the question or are dismissed when they do. However, I think empathy is one of the key traits of a "good" developer, maybe even more so than the code they output.
Empathy for users
Empathy is a great and necessary gut-check throughout the entire product life-cycle. Even if you start with a great idea, how that idea gets executed is critical. And it's likely to change from it's conception, through stakeholders, designers, product managers and, finally, engineers. Each layer has its own motivations. Each layer imparts its will on the final product. And a check-in about how that product is likely going to feel to real humans is important during every step of the way.
Engineers have a unique perspective on products because we actually build them. We know the technical limitations. We know the caveats. We know what's actually possible. "Our APIs don't have this data" is important in how it compromises the requirements, but it's even more so in how it compromises the end product and user's experience. "How do we build this with accessibility in mind?" is an incredibly important question that, in my experience, can be quick to overlook when excitement for a new feature urges the team to ship as quickly as possible. "The mockup has this thing, but we could do this thing and make it a little nicer" is one of my favorites because sometimes people just don't know what's possible (or how little a lift a "nicer" thing can be) until you bring it to their attention. I think it's our job to bring these issues to light, but even more so, to push back when we feel we're making a compromise that negatively impacts the humans on the other side of the computer screen.
Empathy for each other
I've been a professional web developer for 10 years now. And I was a hobbyist long before that. I call myself a "community-taught developer" because I don't have a CS degree. I have no degree at all. I learned using all the freely available (and some paid) resources on the Internet. I learned thanks to the Envato network, Egghead, Smashing Magazine, Jeffrey Way, Kent C. Dodds and countless others. What I've found is for every humble, knowledge-sharing dev out there like Michael Chan and MPJ, there are numerous self-absorbed, arrogant developers who desperately feel the need to be the smartest person in the room. They hate on tools other developers use.
I think developers need empathy for each other. Not all paths are the same. Not all situations are the same. Coding is hard enough without strangers on the Internet telling you you're Doing It Wrong ™️. The fact is, we're all trying to build things for humans to use. It matters very little what tools/languages/whatever we use to do it. You can build an API in pretty much any language and it'll function the same as if you had used another. Is the developer experience better from one to the other? Sure. But also debatable. You can hate JavaScript or WordPress or whatever is cool to hate this week. But, people have to use them. Sometimes because that's just what they're dealt. Sometimes because they made a choice to. The reasons don't matter.
Everyone is learning. Or, at least, they should be, regardless of where they are in their career. Share knowledge. Share opinions. But do so in a way that has people feeling empowered to draw their own conclusions.
Wrapping up this rant
Tech has a lot of power these days and, by extension, engineers. And every day, there are more bots, more A.I., more influencers, more clout-chasing and more metrics. More number games. When we minimize the humans for whom we build things to a simple set of numbers, we miss the larger picture. Confusing things can get lots of page views but little engagement. Things that look beautiful can still be horrible to actually use. You can be technically correct and still in the wrong in how you communicate it. I frequently say:
I've always meant it as more than just the code we output. I've meant it as the vibe we put out in the world; the values we put out in the world with that code; the knowledge we share with others starting down the road of building things on the Web. And I think we, as developers and engineers, are burdened with a responsibility to protect and uphold the promise of the Internet for the humans that use it.