The future’s not set. There is no fate but what we make for ourselves.
— Yes, I just opened a blog post with a quote from Terminator 2. I can’t quite believe it either.
I’ve been doing a lot of reflecting over the last few years about what I want to do for a living. Perhaps a bit too much. I’ve had all of these thoughts rattling around my head over the years, and I’ve babbled parts of them at various friends. Someone suggested that if I finally wrote everything down, it might help clarify what I want.
Frankly, I’m still none the wiser, but at least I now have something to link to
if I start to rant about it to someone else.
Written pieces such as this post are generally read in a linear fashion, with a narrative structure. But I can’t get this story to work like that — all the pieces are intertwined in a sort of feedback loop. Instead I’ll present separate threads of the tale, then try to weave them together.
Thread #1 — The Disillusion of Smaug
Developers/programmers are in an incredibly privileged position at the moment. I think it’s important to take stock every so often and recognise how well-off we are in comparison to many other parts of society. We work in a seemingly ever-growing sector where there are far more jobs than people to fill them. This means that established developers can pick and choose which jobs they want. Companies lavish their employees with perks to try to avoid them moving elsewhere, or to woo other developers into switching over.
Meanwhile, we grow bored of the tasks we’re assigned. We work ourselves into rage over the most trivial of issues. We complain about the smallest of First World Problems. We encounter headaches with software (because, let’s face it, all software is terrible in some way) and talk about quitting the industry to take up carpentry, or farming, or anything else.
A few jobs ago I came to the realisation that I no longer had the enthusiasm/“passion” for being a web developer. I’d got bored, and decided to try people management instead. After a few years at that I burned out, left the company and tried being a developer at other places. At no point have I ever regained the energy and determination that I first had as a professional developer. Eventually I came to a conclusion — I’d had the same detachment from (and disillusionment towards) the tech industry across different roles and companies. The problem persisted and there was only one common link: me.
It was at that point that I settled on an outlook that kept me going for a bit longer. I had joined the industry with bright-eyed enthusiasm and energy and ideas to spare. (I still have lots of ideas, but consign most of them to the “pipe dream” bucket.) But then I’d lost the enjoyment of my chosen career, so I had two main options before me: quit the industry or carry on with a different attitude. I seriously considered quitting entirely (and still do, sometimes), but was severely hampered by the fact that I had no other skills that would see me employed at anything other than an entry-level position. As the sole income provider for my family, that puts me a bit of a bind.
I then took stock and thought about just how damn lucky I was that I had a job which I was good at, didn’t involve hard physical labour, and paid me ridiculously well in comparison to so many other job markets. Even within Australia, a first-world country, there are so many people who don’t get that luxury. They work longer hours, doing harder work, getting paid less. They don’t get the benefit of switching jobs or roles at the drop of a hat. And it’s certainly not like the tech industry is free from problems. There are swathes of people who don’t get given the luxuries due to exclusionary hiring practices. Many others spend years working in jobs they don’t like, because it’s all they have.
Since then, I’ve had a different perspective. (I believe) I am damn good at being a web developer, and I could have it so much worse. So for the last couple of years, my motivation for coming in to work each day has been to get a job done, get paid, and go home on time.
Thread #2 — Developer Bubble Wrap
I don’t need to be constantly chasing the newest, shiniest technologies to work with (despite what legions of recruiters might think). While it can be draining to be in a job where you’re constantly fixing up old, outdated tech, it can be equally draining to be always chasing your tail. Using the newest thing is great until it isn’t. Until you find a bug that apparently no-one has ever hit before, because no-one’s ever tried to use that technology in that way. Then you’re the one stuck with trying to find a solution on a tight deadline. (See also: Dan McKinley‘s Choose Boring Technology.)
One thing’s for sure: I want to spend far less time building things that just help other developers. It seems that so many developers are spending their time (either paid work or side projects) building things that aim to make other developers’ lives easier. Those other developers in turn continue the cycle.
I’m not saying that no-one should build developer tools, as I’m generally opposed to that sort of absolutism. There needs to be a balance, but I think it’s currently way off centre. I see very few side projects within the web development community that are aimed at a non-technical audience. The worst part is that I’m just as guilty as anyone else. My GitHub profile is full of tools built to solve my own problems, and by extension, the problems of people like me.
I’m clearly not the only one frustrated with this scenario:
Most software – especially open source software – was made out of the same motivation: personal need. “Scratch your own itch”; “dogfooding” — those are fixed terms in our industry for a reason. Most of what we build, we build first and foremost for ourselves. And I’m sure Sir Tim had only the best intentions when he implemented the first web server a quarter-century ago at CERN. But fundamentally he was building a tool to solve his problems and the problems of his peers. Nowadays when we build tools, we solve our problems and the problems of our peers. We build tools for web developers; no wonder our toolkits are growing at such ridiculous rates. […] Every day we get more and more tools tailored to address increasingly specific problems, in many cases inventing those problems in the first place.
— Alex Feyerke: Step Off This Hurtling Machine (emphasis mine)
We blog on design blogs, we create quick scripts and tools that are almost the same as another one we use (but not quite) and we get a warm fuzzy feeling when people applaud, upvote and tweet what we did for a day. We keep solving the same issues that have been solved, but this time we do it in node.js and python and ruby and not in PHP (just as an example). We run in circles but every year we get better and shinier shoes to run with. We keep busy.
— Christian Heilman: Finding real happiness in our jobs
Part of the problem is that making things for a non-technical audience is hard. It means a lot of research and validating ideas with people outside the tech world bubble. In my case, it means a lot of work that is very difficult to do during the only time I realistically have available for side projects: a morning train ride to work, with limited network connectivity.
A few years ago, I was deeply interested in web browser developer tools. I closely followed every little update across the major browsers. I had ideas for new tools and paradigms, or improvements to existing tools, to make web developers’ lives easier. They led to meetings with people working on browsers to further discuss the ideas. But then one day I just… stopped. It was as if a little switch inside had flicked off, as all the frustration at devs building for devs building for devs building for devs reached a breaking point.
After that, I categorised and prioritised the myriad side project ideas I’d written down over the years. The primary category became “Who is the audience?”. I tried sorting the projects so that I would roughly alternate between “Things for me and other developers” and “Things for a general audience”. And yet, a year or two down the track, I’ve done almost nothing for the non-developer audience. It’s just all too easy to fall into the default mode of building things for me and other people just like me.
Maybe it’s time to admit defeat and accept that side projects aren’t the way for me to break out of the insular developer bubble. Especially since the time I spend on them is gradually reducing, out of a need to maintain a healthy perspective on life. The older I get, the more I see software as terrible, rather than exciting. (See also: Disillusionment thread above.)
Thread #3 — Moral Compass
As the world becomes increasingly driven by digital technology, the role of programmers becomes more central in driving society forward. For better or worse (often worse), the general public is handing over ever-larger parts of their lives to technology — not always by choice. We as programmers therefore have an ever-increasing responsibility to NOT FUCK THAT UP. As Tobias Revell once put it during a talk at Web Directions South 2014:
But I must leave you with one very dark thought. […] You control the perception of objective reality. It’s a meaty and difficult one: The people who visit your apps, your websites, your services and platforms construct their understanding of the world through it. And so you have to figure out where you sit on the sliding scale between making magic, which is a fun spectacle that might bring people joy but also potentially horror. And making sense, which might not be as enchanting but is, in some ways, more real.
— Tobias Revell: Haunted Machines
We are now in such a position of power that I feel it’s almost our duty to use that power to help others. Help the less technically-minded and those for whom software is something to be endured, not enjoyed.
The inimitable Genevieve Bell delivered the Boyer Lectures in Sydney last year — a fantastic set of talks about shaping the future of technology in Australia. During the first lecture she mentioned a lesson her mother had drilled into her:
In fact, she raised us with one pretty simple principle: if you could see a better world, you were morally obligated to help bring it into existence. That you should put your time, your energy, your passion, your intellect, your heart, your soul, everything on the line. You shouldn’t sit on the sidelines, you should actively advocate for the world you wanted to see, and that world should be one that was better for many, not just for you.
— Genevieve Bell: Fast, smart and connected: Where it all began
Having seen the damage that the tech industry can wreak on society when assumptions go unchecked, I propose a corollary statement: If you can see a worse future, you are morally obligated to try to prevent it from happening.
When I went job-hunting a couple of years ago, it was the first time I didn’t have a choice in the matter. The company I’d been working for had gone bust and I needed to find new work quickly. Coincidentally, around that time I’d been re-reading Bret Victor’s phenomenal essay What can a technologist do about climate change? (always worth going back to every now and then). I had it in the back of my mind during the whirlwind of frequent job interviews. When I finally had some job offers, I chose the one which had a direct environmental impact. Bret’s essay helped shape my attitude around how I want to earn a living.
For the foreseeable future, any decisions I make about where to work will be strongly driven by the potential societal impact. Inspired by Bret’s essay, I want to do more to help with the larger problems at hand. The problem is that I still don’t know which path to aim for (climate, energy, health, etc.). Tech can do some amazing things to help others — personally I’ve been particularly inspired by projects like Wayfindr, Be My Eyes, eHealth Africa, and a crowdsourced Caribbean hurricane relief effort. I’m trying to find satisfaction in my work, knowing that it’s contributing positively to the bigger picture (note: “positively” is the key word there).
In short, I’m in a privileged position where I can be extremely picky about where I work. But herein also lies my core dilemma. I want two main things from a job:
- Social conscience.
- Enough salary to support my family on a single income.
Unfortunately those 2 things are usually in conflict with each other. The best social improvements are often happening at non-profit/volunteer/research organisations, which (understandably) don’t pay very well.
Simultaneously I recognise that the biggest areas for improvement are often in sectors of industry that move painfully slowly. I know several people who have gone into web development/design roles for crucial services (generally government departments), trying to make an improvement to some of the key functions that our society relies on. They’ve almost all burned out and left, frustrated at the bureaucracy and inefficiency of the management levels above them. It’s infuriating that some of the most crucial things people will ever do online are usually run by government departments that don’t seem to have a real interest in making it better. Just being good at development or design isn’t enough — convincing the power-brokers of the value is the main sticking point, and that’s a task that’s well outside my skillset (and network).
If public sector work is out, what about charities and not-for-profit organisations? What about private companies that are filling the gap left by the aforementioned government departments? Putting aside the question of salary, which path should I take? Well here is where choice paralysis kicks in. I don’t know where to start, or what to focus on. Even Bret’s essay, for all its amazing information, presents an overwhelming array of potential options.
The next problem is, having potentially found somewhere that matches my personal moral code, what happens when the situation changes? Even the aforementioned job that I joined for the environmental benefits ended up with me leaving, largely due to a clash of morals.
At heart though, I’m a web developer. I may mix and match between front- and back-end work, but everything I do relates to web-based projects. As with the public sector, a large majority of the important projects I see just don’t require someone with my skillset.
Weaving the threads — the future looms
I think what I want is to actually care about what I do. Many years of different types of development jobs (advertising agencies, software product companies big & small, consultancies) have taught me not to get particularly attached to the work I’m doing. I used to pour so much effort into going above and beyond to improve what I was working on. Then the entire project/product/whatever would be yanked away almost without notice. In agencies it’s an expected part of the job, but it stings when you’re building software that’s allegedly meant to have longevity.
In the end I just stopped caring. That’s how I settled on the mindset that I should treat it like any other type of job: I provide a service in return for a salary, and that’s as far as my emotional investment goes. But that’s not enough any more — I want to give a shit again.
I don’t really know what I was trying to say with this post. Perhaps, as horrendously clichéd as it is, I’m just trying to find a purpose. As I stated earlier, developers have an enormous power in today’s world, but equally there’s a responsibility. I’d rather not waste years of my life being paid to build something that doesn’t really solve a meaningful problem. I especially don’t want to be part of building anything that makes problems worse, under a faux label of “progress”. At the same time, I’d like to re-discover the energy to really invest in the problem; mostly what I feel these days is tired.
The trick is to define what is and isn’t meaningful. I’ll work it out one day (I hope).
I accept that this can easily come across as bemoaning First World Problems. I’m a member of just about every majority you can think of (middle-class, cis-gendered, straight white male in my 30s) — there’s no denying I have a lot of privilege. But it’s precisely for that reason that I feel I should do something better than just whinge about my career.
This is also not intended to force or project my sense of purpose onto anyone else. We all have our own lives to take care of. This is really just an extended rant into the void.
Finally, some words of encouragement, because I can always rely on Maciej Cegłowski to lighten the mood.* *Actual results may vary.
If we’re going to worry about existential risk, I would rather we start by addressing the two existential risks that are indisputably real—nuclear war and global climate change—and working our way up from there.
But real problems are messy. Tech culture prefers to solve harder, more abstract problems that haven’t been sullied by contact with reality. So they worry about how to give Mars an earth-like climate, rather than how to give Earth an earth-like climate. They debate how to make a morally benevolent God-like AI, rather than figuring out how to put ethical guard rails around the more pedestrian AI they are introducing into every area of people’s lives.
—Maciej Cegłowski: Notes From An Emergency
So I’m going to stay in tech, and try to do better. Besides, I don’t really have any other employable skills… 😉
Thanks to Fiona Chan, Kris Howard, Mike Sharp, and David Lewis for reviewing a draft of this post.
Pingback: Professional Development 8/20/2018 – 8/26/2018 – The Software Mentor