The Tangled Tale of My Career (by )

My first job that isn't writing code

Bills needed paying, so I found a new job, and the school runs were made a bit easier by sharing with a local family; I'd take all the kids into school in the morning and they'd bring my kids home so I didn't need to take an hour out of my work day (which would have been impossible now I was based in a nearby town, so wouldn't have time to make the round trip). That job was refreshing - I wasn't writing code at all. It's a bit complicated to explain, but I was basically a high-level troubleshooter for a fairly large software development department split into several teams, that had massive problems with technical debt, interpersonal issues with senior staff, and interesting challenges like that.

I realised, around this point, that I don't really enjoy writing code. I loved the overall process of building software - I'd design a cool solution to a problem, and I'd enjoy that, but only because I anticipated seeing the result: the design phase was like cooking a meal when you're hungry. The end result is what you really want, and the fun leading up to it is mainly anticipation. But the actual writing of the code - and, the part I hated the most, dealing with bugs or unexpected issues with third-party components, which would result in headache-inducing sidetracks trying to understand/fix/modify/work around somebody else's code - was a tedious chore, even when working on personal projects. Working in a role where I didn't have to do any programming was a relief.

Not being expected to crank out code meant my whole time there was free to be focused on the big-picture stuff I love, but the work wasn't technically challenging at all; the actual problems the product was trying to solve weren't all that complicated. So while it was a welcome change from what I'd done previously, and I got to really feel recognised as a senior person in a hierarchy for the first time in my life, it wasn't really stretching me. And I didn't have free time outside of work to exercise my brain with my own projects.

Back to the land of startups

But, working in an office in another town was a difficult fit with looking after Sarah and the children; being the only driver in the family meant that any disruption to normal routines (eg, school day ends early) meant I'd need to take a full or half day off of work as I couldn't just nip out of work for an hour to handle such things. And I was getting bored with the lack of challenges at work.

So, after a year, I jumped ship again and joined another little startup, working from home, doing fun technical infrastructure stuff. And this one didn't only hire technical people; we actually had people who knew about sales and marketing, so I wouldn't be having to try do to that. I was, again, just "a member of the dev team" so although I (as usual, in this situation) tended to lead software architecture discussions by the de-facto principle of having all the best ideas, I still didn't get a title or responsibility; I still mainly spent my time writing code; but I hoped that if we grew I'd be able to take on a leadership role.

About this time, I got involved in an online community project, as I had in my heyday; I was on the design committee for the core of the R7RS scheme language. This was kinda fun, but it was more a matter of choosing compromises between existing approaches, rather than much chance for invention and innovation, so I wasn't much help in the end and didn't make much of an impact on anything.

We grew, but I didn't get the leadership role. In fact, somebody who'd worked for ME back in the job where I had a team got the leadership role instead, although I was told I was at least in consideration for it. I found this particularly crushing - not that I have anything against the person who got it (I have great respect for them), but it just felt like I was facing some kind of glass ceiling in trying to progress in my career. Two decades of working, and I had always been at the bottom of the org chart, apart from two occasions. I began to panic that I would be forever stuck as a "developer" of some kind, officially tasked with just doing tasks handed to me from above; tending to lead any discussion about software design, and having no difficulty earning the respect of my team as a wise leader, yet never officially responsible for it and never getting to cut my teeth on even bigger projects to actually stretch me.

What's worse, we also hired somebody I really didn't get on with. This person had Very Specific Ideas as to how software should be built, but rather than sharing them in discussions and arguing as to why they were good, they delivered them as dogma: and defended them with ad-hominem attacks against any competing viewpoints. We had a "pull request" workflow where people's work was reviewed by their peers before being accepted as part of the product, and whenever this person reviewed my work, they would challenge the very fundamentals of what I'd done, suggesting I rewrite the entire thing. Their proposed solutions were objectively worse than mine - whenever they challenged me and dug their heels in I'd raise it to the group as a whole to decide on what to do, and my approach would always win in the resulting discussion. They were disciplined for it, and made to write grudging apologies to me, but I found the experience so gruelling, and they never stopped trying, so I was quite relieved when the company ran out of money in the economic slump surrounding the COVID pandemic and we were all made redundant.

While that was going on, Sarah's father had died, and we'd become responsible for looking after her elderly mother. Who required a lot of looking after, as she could barely move herself, and was starting to have strokes, and dementia was setting in. I'll spare you the gruesome details, but I had to do a lot of driving her to medical appointments, and a lot of cleaning the carpets and furniture, and lots of laundry, as her grasp of her bodily functions slipped away.

Sarah's father - being a driver who could take Sarah and the kids to and from things - had been an invaluable source of support when I needed to go away for work, or when there were extra trips and events that I couldn't fit around work. He lived far away so wasn't usually around, but Sarah's parents would come and visit often, especially when there were interesting events on. With him gone, there was no longer a fallback: I had to find time to do all the driving.

When COVID rocked the world, although the requirement to do school runs stopped from time to time during the period of schooling from home, and there were periods when Sarah's mother was staying with other family or in hospital wards, and Sarah's events business was on hold, there were still a lot of domestic pressures - especially as Sarah caught COVID early on (so she was living isolated in an upstairs room, and I'd go in with gloves and gas mask to bring her food and empty the chemical toilet, and she nearly died (again)). She was seriously ill for weeks, recovering for months, and has never quite been the same since; as it turned out COVID damaged her thyroid leading to her later being diagnosed with Graves' disease, limiting her energy levels even further.

Anyway, the severance package was less generous this time, so I didn't have so long to relax before starting a new job. This time, I was definitely aware I was burnt out (in two ways at once), and I tried hard to use the time to heal myself before starting a new job.

I had a ray of hope when I applied to Oxide Computer, who were working on the kind of infrastructural stuff that excites me, and seemed to have a similar outlook to mine: inventing stuff from first principles rather than just throwing together yet another wobbly stack of leaky abstractions... Their web site said they were generally hiring interesting people, and invited me to fill in a long questionnaire with lots of essays, in which I poured my heart out about all the stuff I loved to do - only to get a template response saying they weren't actually hiring for that kind of role right now. Oh well.

Sarah's mother went through a horrible decline of strokes and cancer. She was in hospital a lot, and miserable for it, especially when ward visiting times were strictly limited by COVID. We were stuck in the middle of a horrible combination of wards trying to discharge her because they needed the beds, social services saying our house wasn't suitable for her (she couldn't get upstairs any more, even on the stair-lift we put in for her) but they'd try and send equipment to help (which took ages to arrive), her begging to come home... Several times she came home but quickly went back out to hospital again. We converted a downstairs room (our former library/office) into a bedroom for her with an ensuite bathroom, and the next time she was discharged from hospital she actually spent one night there before going back the next day; and she never came out again.

The world got worse

Meanwhile, the world around us had changed, too. When I started working, the Internet was a new exciting thing, letting people connect, opening new ways for businesses to reach their customers, breaking down national and cultural barriers. Queer communities and special-interest groups could come together worldwide, finding others like themselves. It was amazing; but the surge of venture-capital funded businesses that then turned to ad-supported business models led to the online world being dominated by huge companies that exploited their users, with miserable consequences. Exciting new technologies like Bitcoin could provide mechanisms for microtransactions, agoric computing, and global name registries without central control. But, they were taken over by speculators looking for short-term gain, and now the whole area is tarred with the same brush: as planet-destroying grifters and idiots. The last round of really ground-breaking startups that became household names were the likes of Uber and AirBnB, which made their money exploiting gig workers, circumventing legislation put in to protect communities, and generally making it plain to all that the industry was all just about short-term exploitation and lining the pockets of billionaires, out of touch in their own stratified world, happy to burn the planet and stab their users in the back if it would earn them a buck. And, slowly at first then suddenly all at once, even the once-loved early players have all slid into enshittification.

Looking at it from the inside, the software industry seems obsessed with things like new Javascript frameworks that, to my eyes, all just seem to be different ways to pile loads of complexity onto things that used to be simple, while producing an objectively worse user experience by breaking the browser back button and accessibility tools. Software projects seem to accumulate dependencies at an alarming rate, and there are now complicated tools whose job is purely to attempt to examine the tangled web of dependencies and find a mutually-consistent set of versions of everything that fit together (and I have spent far too long trying to diagnose problems with them instead of actually working on useful things). This complexity is usually "managed" by just wrapping everything up into containers, essentially hiding the complexity while creating more layers of complexity to dig through when something breaks.

It's not fun any more. I like learning new tools, but all these new tools seem to just do the same old things in unnecessarily different ways.

Many domains have been locked down by the requirement for compatibility with a teetering stack of legacy software; making a web browser capable of displaying these modern sites is now such a complicated task that an increasingly small number of practical implementations exist. The same goes for CPU instruction sets, operating system interfaces, communications protocols, file formats, and so on. Long gone are the days of the legendary Data General "Eagle" project, where you could design a new computer architecture, build it on wire-wrapped prototype boards, publish the technical reference manuals and expect people to pay to start programming it in assembly language. Nowadays, only organisations with the vast wealth required to command a production run on a state-of-the-art chip fab can even consider marketing a CPU, and then you'll struggle to get people to buy it unless it understands the vast x86, or maybe smaller-but-rapidly-catching-up ARM64, instruction set. Building a new general purpose computer platform capable of the "table stakes" task of running a Web browser is a gargantuan effort; a practical Web server isn't too far behind in complexity (but, perhaps, just about doable, which is why I've been focusing the ARGON project on the backend for years now). Innovation is, increasingly, concentrated into the hands of a few big players.

It's become routine for software to "phone home" to some central server, because the author of the software wants to monitor and control usage, and devices that only let you install approved apps from an app store (where the maker of the device gets to extract rent from software developers, and forbid them from competing with their own offerings), and so we're starting to see perfectly functional appliances being thrown away because their cloud servers were shut down and it's getting hard to buy a TV that doesn't show you its own adverts based on tracking your behaviour.

Outside of the tech world, we had the organisation of right-wing groups on the Internet, leading to the likes of Brexit, Boris Johnson, and Donald Trump, and endless assaults on the rights of women, immigrants/refugees, and people who don't conform to hetero-normative blueprints. We have horrible invasions in Ukraine and Palestine, public services collapsing here in the UK just as most people are sliding into poverty, and climate change destroying peoples' homes and livelihoods.

Hardly anything is made by a small team of enthusiasts any more. It's so rare to see something made to actually be useful, efficient and reliable, rather than to simply attract a lot of attention as cheaply as possible, before the creators jump ship to the next startup. Lots of startups open-source their software to some extent, but they retain tight control of it, with core development paid for by the company, so always aligned to the company's needs; it's a far cry from the "cool things are made by a bunch of volunteers on a mailing list" world of my youth.

And so we come to the present day. There's widespread excitement right now about large language models, although I struggle to find particularly fantastic uses for them - they're a bit poor at the kinds of things people seem to be excited about. Friends use them to write boilerplate code, but I just see that exposing the kinds of flaws in programming infrastructure I've long been moaning about, that they require the writing of tedious boilerplate code in the first place. People are pointing out that they have consumed vast quantities of energy to train, and been trained on things the trainers didn't have intellectual property rights to use in the first place. There is fear that big companies will use them to replace human workers, making their services even worse, but cutting their costs so they earn more money.

There's no new technology that people (other than small niches, each of which carry a faint whiff of "I am being paid to shill this / have a startup in this area") are getting excited about. The pervading atmosphere is one of doom and gloom.

Pages: 1 2 3 4 5

1 Comment

  • By andyjpb, Wed 29th May 2024 @ 11:04 am

    Good luck! It sounds like you're on the right path in the right direction so just keep on trucking!

Other Links to this Post

RSS feed for comments on this post.

Leave a comment

WordPress Themes

Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales
Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales