Exit stage left

It’s time I sling the baskets off this overburdened horse
Sink my toes into the ground and set a different course
Cause if I were here and you were there
I’d meet you in between
And not until my dying day, confess what I have seen.

— Phish, The Horse

I’m finally doing something I should have done at least a decade ago: I am no longer going to try to be a software engineer professionally. I’m not sure what’s coming next, but hopefully it’ll be a much better life for me.

Some history

It all really started when I was 5 and my parents bought a Commodore 64. It was so fascinating, being able to write things on the computer and have the computer do them. The many amazing games on the platform were such formative memories for me, and it just seemed so magical.

That said, even at that age I didn’t think I’d be a computer programmer when I grew up. Adults told me I’d be a great pianist. I wanted to be a chemist, I think. Or at least that’s what it said in a diary I found from when I was 7 or so.

Programming was a fun hobby, though, and I’d get totally lost in it for hours at a time. But it always felt like it was too fun to be a job.

In middle and high school I always saw programming as a means to an end. I learned about artificial intelligence (at age 12 I’d figured out genetic algorithms on my own!) and got deep into theoretical math (especially fractals, which I found to be absolutely fascinating). I came across an old issue of Creative Computing which got me extremely interested in graphics programming. I also had fun making dumb little games. But programming itself never felt like a career; it was a tool for exploring other things, a means of enabling other stuff. To me, computers were devices for making art, and music, and communicating with people from all around the world.

I first got on the Internet in 1991, at age 13. It was so amazing to be able to send an email to researchers and actually get a response! I probably annoyed the hell out of them.

Throughout high school my computer explorations broadened. I got really into CAD and house design, and thought maybe I’d be an architect. I also got very into 3D rendering, and loved the idea that you could make entirely different worlds to inhabit. The first Virtual Reality craze was just getting started and I was amazed at the idea of being able to put on some hardware and then experience a completely different life. I thought of how neat it’d be to experience life as a lobster or a dragon or a mote of dust.

I also had a number of internships. One was at a video production company. Ostensibly I was supposed to do a bunch of gruntwork with building out event lists on linear tape machines for other people to edit, but I ended up spending most of my time playing with the live production equipment, where they had a (brand new) Video Toaster and then-cutting-edge motion graphics software and Lightwave 3D and so on.

My senior year I had an internship at a local research lab. My job was ostensibly to develop video processing software, but I ended up just fetching coffee and making copies for the full-time employees, and at one point a contractor sent me on a wild goose chase which eventually led me to being let go from the internship. But then I was given a much better opportunity: helping to run a computer lab for “twice-exceptional” students. There I learned a lot about accessibility needs, neurodiversity (honestly, I should have probably been a student in the program myself!), and also useful skills like computer networking and systems administration.

In the meantime I also had some part-time jobs; I was running the computing exhibits at the local children’s museum, and also had a job building computers at a local beige-box shop.

Basically, my life revolved around computers at this point, and so when I started college, I immediately declared my major: computer science. (I had intended to double-major in both CS and music, but the CS course load on its own was already a bit more than I could handle.)

While I was in college, the whole “dot com” boom was starting, and many of my classmates dropped out so that they could pursue big financial gains as contractors. I decided to stay behind to get my degree, though, in case the .com life didn’t work out. Anyway, my big focus was on graphics, and all of these .com things were web stuff, which I had very little interest in.

I was also starting to develop pain in my body, especially when working long, obsessive hours on my programming projects. I took pride in how much I was hurting, because it was proof, somehow, that I was giving it my all.

When I graduated, I got a job as a graphics programmer at a defense contractor in the DC area. I lasted three months; the company was quite dysfunctional, they were expecting 80-hour workweeks, the management were outright abusive, and of course my pain was flaring up and every time I tried to take a break from typing I’d get yelled at for “goofing off.”

I went back to grad school, now determined to get a PhD so that I could land a research position at Xerox or Microsoft. Because I knew I didn’t want to write code all the time, I wanted to solve problems and develop algorithms that would change the world or at least make things better.

My brain didn’t really work well with the PhD process, though. I actually got really far along; I aced most of my qualifying exams (only having to retake one — because it was over a course I hadn’t taken yet, and even then the professor was surprised at how well I did), I had several promising research directions and was building a bunch of algorithms for various aspects of graphics and simulation, and I was doing all this on my own, going deep into graphics research at a department which had no ongoing graphics research!

And then I went to SIGGRAPH, and was overwhelmed by all of the stuff that I’d been totally isolated from because I was working in a vacuum. I tried networking with folks, including a full professor at MIT who was presenting some work that was very close to one of the things I’d been working on, but I was given a pretty bad brush-off, and this felt devastating.

It was also time for me to do my PhD comprehensive exam, which involved writing a very long paper that was a description of all of the current work happening in my intended research problem. At this point I was primarily researching visibility determination, which is a thing which had been more or less ignored in academia since the 1970s. All of the good work on that was happening in the games industry, but the games industry wasn’t producing much in the way of papers on it.

I languished, got disheartened, and ended up writing a master’s thesis on the implementation of one of the algorithms I’d developed. The algorithm itself would have been perfect as a PhD dissertation, but due to the exact mechanics of how academia works, simply implementing it didn’t qualify; so my thesis ended up as a master’s-level implementation of PhD-level research which never got published.

(Incidentally, every now and then I find people stumbling across my master’s thesis and they’re pretty interested in it and try to learn more about the algorithm I implemented — and can’t find any “real” papers on the algorithm itself.)

I matriculated with “just” a master’s degree, and then struggled to find a job.

Early career

This was a difficult time in my life. My master’s degree made me overqualified for entry-level software engineering positions, but wasn’t enough for research positions, who wouldn’t even consider my resume without a PhD. So I did some contracting for a little while (working on Internet stuff I didn’t care about), and was trying to find a graphics programming position which wasn’t in the games industry or doing military work.

Then I found the job at Ubisoft, where they wanted to make experimental, emotion-and-dialog-driven games, and well, I’ve already written extensively about that.

The long hours and high stress at Ubisoft made my pain flare up, badly. I was overworked and underpaid, and the environment was so abusive that I’d internalized a sense of worthlessness. I tried to explore other job leads, but I was rejected out-of-hand for being “a games person” or not having the right kind of experience that these places wanted.

Then someone at Ubisoft leaked the Nintendo DS SDK, I was erroneously blamed for it based on circumstantial evidence, and was fired.

The timing for this was perfect, however, as later that day I got an email from an Amazon recruiter, and before I knew it, I was moving to Seattle to work at Amazon. And while my original position was building the “search inside the book” reader (which I found uninteresting), I was playing around with some of the data in a spare-time capacity based on a thing my manager had mentioned, and stumbled upon a solution to a thing which had been puzzling a secret team: Amazon’s own ebook reader project.

I found myself getting the opportunity of a lifetime: I was on a project that had a lot of tough problems to solve, many of them graphics-related, and I was on a team which was pretty dang collaborative! It was small, but we’d work together on things; some of us would come up with algorithms or ideas to implement, others would actually implement them, and there was a lot of back-and-forth and we’d build on each others' work and there was a lot of amazing forward progress in surprisingly little time.

However, this bliss didn’t last forever. As the project became product, we started to get a lot more external pressures which required all-hands-on-deck crunch time. I started to get stressed and pain flares. The fun, enjoyable parts of the job gave way to agony-inducing bickering, and my manager, who had previously been pretty much hands-off, ended up adopting some behaviors which made things aggressively difficult for me. He was a self-described “pointy-haired boss,” and treated Dilbert as a management guide, not a cautionary tale. Rather than do his job as a manager to, well, manage, he’d just direct everyone to me, directly, and my as-yet-undiagnosed ADHD brain took this as an unending crisis where I had to Solve All The Problems Now. (A good manager is supposed to act like a shit umbrella, protecting individual contributors from getting dumped on from the outside. This manager was more like a shit funnel.)

At around this same time, the whole idea of “agile” started to take over, and our team became “agile,” which meant that our researchy, exploratory work instead turned into fungible “story points” to be taken on by fungible engineers.

Innovation stopped, stress took over, and it all became about shortcuts and maximizing the appearance of progress. My teammates started dropping off like flies; one left for Google, two others got fired after having been put through the wringers of PIPs and making small mistakes which were enough of an excuse for them to be let go. This headcount was filled in by people my manager thought would be great additions to the team; instead they were jerks who just managed to take advantage of me and accelerated my burnout and pain issues.

This manager also seriously used Myers-Briggs tests as part of his management; he assigned work based on each team member’s MBTI type, and whenever there were stresses that occurred he would say things like “Well of course my style stresses you out, I’m an ESFJ and you’re an INTP, so we’re going to clash.” With no attempt made to actually cut down on how much clashing was happening.

I ended up quitting.

I knew that I would not be able to be the person writing the code all the time, and my aspiration was to become a software architect, a problem-solver, the person coming up with clever solutions to difficult problems, and have other people do the work of implementing it. But every time I expressed this desire to recruiters and interviewers I was laughed at, told that “software architect” is obsolete and wishful thinking, that thanks to agile we no longer need such outdated ideas about how things are built.

For the next five years I was at Sony, recruited by a friend who would later become my manager. The work was a mix of boring and interesting. Our development processes were pretty good, but our projects kept on being canceled or repurposed for the purpose of “recouping the investment” rather than building an appropriate solution to the problems in the first place. Then Agile took over there too, and it all became fungible work being done by fungible engineers, with no time allowed for addressing our severe technical debt or even doing things like automated testing or even basic build infrastructure. My pain flareups started back up as things turned toxic.

At some point, Sony decided to hire a management consultant who had us all do the “DISC assessment,” which is basically the Myers-Briggs test under a different guise, and just as what happened at Amazon, people used their DISC personality types as an excuse and even a justification for why their communication style was difficult for me, rather than using it as a set of guidelines for how to cooperate and come to common ground.

At this point, it was 2012, and I was burned out. The entire tech industry put a hammering in my head and the last thing I wanted to do was go back into tech work. I decided I’d move back to Seattle and live off savings for a bit, because Seattle was still pretty affordable and there was so much stuff I could do there that wasn’t tech.

Song Fight! Live happened to be in Seattle that year, so I went with the intention of also looking at houses and having an escape plan so that I could move back and leave tech forever. And as luck would have it, an Amazon recruiter got in touch with me, and we were able to schedule an interview for that week which would at least make my trip (mostly) free, and the Amazon interview went well enough that I figured I could go back for another couple of years to at least get my move paid for.

So I quit Sony, and moved back to Seattle on Amazon’s dime.

Late-career

I went back to Amazon. Agile had fully taken over. Everything was fungible work being done by fungible engineers, with the added stress of being on call and on the hook for finding and fixing ridiculous problems in other peoples' code. I was pretty good at it, but it was more than I could handle, and the first team I was on was toxic, and the second team I was on had a chronic problem of being under-resourced, over-burdened, and incredibly stressful. I was in constant pain. I asked for accommodations, which never came. I asked to go on disability leave, and was threatened with a PIP. I learned about the euphemism of “managed out” (i.e. “fired”). I quit before it came to that.

I ended up at HBO, on the client platform team; I’d been ostensibly hired to work on virtual reality stuff but then they decided there wasn’t headcount for that. So I worked on client platform stuff, which was similar to my last two years at Sony (ironically, the project I was working on was to replace the product I’d worked on my last two years at Sony). It was very Agile, with fungible work being done by fungible engineers, and all of the problem-solving was in the form of working around self-made problems, rather than being able to architect things as was best for the situation.

I finally managed to get on the VR team. The manager there didn’t trust me as a graphics programmer, and kept on assigning me infrastructure work, even though I had no interest or competence in infrastructure. Graphics work would always go to people who had no interest or competence in graphics; my manager wanted to “share the load” on that.

HBO got more and more topsy-turvy with their agile processes, and due to a lack of company-wide process, we went from “Agile” to “Scaled Agile” (aka SAFe). It was like management had been infected by a cult, and individual contributors were all constantly confused, and everything was falling apart.

Then HBO hired a DISC assessment (what is it with these cargo-cult Horoscopes for Business feel-good exercises?!), which I outright refused to participate in, and encouraged everyone else to refuse as well.

I was completely burned out, and was still not finding the sorts of jobs I enjoy doing.

I had plenty of savings, and aspirations towards a different kind of work.

So I quit.

Limbo

For the next two years I lived off savings while working with Spud on Augmented Reality projects. We did a lot of interesting, fun work. But all the work we found was basically portfolio-building stuff that didn’t pay sustainable amounts of money for the company to grow. Meanwhile I was trying to also work on my music and comics, but that never got past the point of portfolio-building and stress and burnout, and I was losing money fast, not helped by my condo HOA dues constantly going up and me being on a 15-year mortgage.

I took on a job at the university as a computer technician, hoping that I could put my skills to use in a research area that would benefit humanity. The pay was pretty bad, and the job was very stressful and primarily involved maintaining an incomprehensible Perl codebase that was written for a research domain I had absolutely no familiarity with, and I could only barely tread water. I was still working part-time on the other pursuits, which seemed to be picking up.

So I quit.

The other pursuits never quite picked up.

Out of desperation I took a job at a software company that was doing web-based publishing. It seemed like a good fit for me. But the codebase was an unholy aggregate of the codebases of three or four separate companies which were bought out and then “integrated” to “recoup the investment,” and the internal politics were toxic and unworkable, and COVID happened and we all got a massive pay cut while the company abused PPP loans which they used to fund more acquisitions instead of actually protecting our paychecks, and they constantly made excuses for things getting worse and worse while denying any responsibility for the underlying, top-down issues that were the cause of them. I was given the responsibility to Fix All The Things but none of the authority or autonomy necessary to make that happen. The prevailing process was agile, with fungible work being done by fungible engineers, with no real planning or architecture.

So I quit.

I ended up at another web/marketing technology company, recruited by one of my former coworkers from HBO. The work was ostensibly the stuff I love doing: developing algorithms and running experiments and figuring stuff out, and working collaboratively to try to solve problems. But everything felt very isolating and it was difficult to make forward progress on things, because instead of being given the authority and autonomy to move forward on the work I wanted to do, I was saddled with legacy code and legacy design decisions, and “agile” processes which were anything but. The company culture was amazing, but it was losing money fast, and then the company was bought out by a large international megacorporation and the culture changed practically over night, after the entire leadership team had been made redundant.

So I quit.

The last straw

The job I’ve held most recently seemed like everything I wanted. It was ostensibly about solving problems and working collaboratively with others in order to drive things forward. There were separate teams for doing the different parts of a large, complex problem, and my job function was supposed to be working with them to build new forms of interaction to make it workable.

The company itself also spoke a lot about diversity, inclusion, burnout avoidance, mutual support. And at least on paper, there was a lot of that. Heck, in practice there was a lot of that.

But there were some pretty fundamental issues that made it difficult for me to move forward. Ever-shifting sands on the underlying platforms, a constant tease of “that’ll be done real soon” for the functionality I needed to build the things I was trying to build, a lack of clear direction on what would make sense for moving forward, and simply not having the underlying support I needed to do the things I knew how to do, but couldn’t execute on.

And the project management was a weird attempt at squaring the circle between agile processes and unbounded research.

My pain was growing exponentially. My fatigue followed suit. I found it very difficult to get anything done. Whenever I did move forward on anything, the people around me were too busy to properly evaluate it and provide any suitable feedback.

I had many conversations about burnout with my manager and my coworkers. I was given a lot of reassuring words about how we’d try to work through it, and was asked what accommodations would help.

Every single accommodation I asked for was denied, as it would “put an undue hardship on the company.” In particular, it was deemed unreasonable/unworkable to have my job responsibilites changed such that I wouldn’t be writing code as part of it, and there was no available headcount to convert my job to a more managerial role or to create an architect or research role like I’d been expecting in the first place.

I attended internal “burnout avoidance” seminars. Many platitudes were shared. No advice was available for someone who is already burned out, much less for someone in severe physical, chronic pain.

My job was supposed to be about research and development, but instead it was about cranking out code, on an ever-shifting platform using support functionality that was never quite available, and every time I tried to move forward with an idea, the pushback was that it wasn’t “general enough” and that the company was pivoting to an area where that would not be suitable.

And then I got COVID — from an exposure the one day I happened to go to the office — and my fatigue got way worse, and then I started developing an algorithm that would at least help me move forward on the specific thing I was trying to solve, and then at an engineering all-hands it was announced that we were moving away from the specific thing I was trying to solve.

I realized I just can’t do this anymore.

So, once again, I quit.

On agility

If it isn’t clear by now, I do not think that agile is a good thing. Yes, it works well for some projects, when practiced correctly. But all too often it’s more of a means of replacing the thinky parts of problem solving with mythical man-month “throw bodies at it and it’ll work out” things. There is still a room for architecture and design and planning.

Yes, shipping a minimum viable product is important. Yes, so is constant iteration. But you can’t just use the superficial trappings of agile and expect perfect results or true innovation to result. And later on, you need to plan around tech debt and communication and all the other things that make separate business units function together properly.

I don’t know what a perfect project management lifecycle is, but there’s definitely more to planning and problem-solving than throwing a JIRA board at it.

And I have very little interest in working on the sorts of projects that Agile is good at.

The present

I’m again in a situation where I am living off savings. Fortunately I have a much better financial situation than the last time; I have a safety net of around 2 years as it is, and my condo is (finally) in the process of selling, after which my safety net grows to around 15 years.

My plan, at present, is to give myself a couple of months to actually heal and not worry about income at all. I’ll be putting my condo sale proceeds mostly into stable interest-bearing vehicles, with the hope that I’ll be able to live off the interest. One particularly interesting vehicle for this is Fundrise, which is a non-publicly-traded REIT, and pays dividends based on rental income. There are plenty of other REITs out there, as well as high-dividend-bearing stocks that I will be investing more in as well. I will definitely be diversifying my holdings, in any case.

The future

I want programming to just be a means to an end, and not the end itself.

I’ll keep working on Publ, mostly as a platform for me to keep on sharing things. Maybe I’ll eventually get it to a point that anyone else wants to use it, but even if not, I’m glad to do my part to help out with Indieweb adoption. Maybe I’ll pick up occasional short-term contracts along those lines, in any case.

I’ll keep on working on indie games, at a non-burnout pace. There are several games I’ve been doing music for, although that’s been on the backburner for the past few months. I’m hoping that those can take a significant amount of my time going forward, and start to actually generate some real income at some point. And who knows, maybe I’ll start back up on Refactor.

I also have my nascent pottery hobby, which hopefully I can now make some real progress on as well. I’ve finally proven that I’m able to throw a single pot, and having watched The Great Pottery Throw Down for a while I have a lot of other ideas for things I could be doing. I’ll definitely be making use of the community firing service at Rain City Clay.

I’m hoping that at some point I’ll feel up to working on comics again. I still have so many stories to tell.

I’m definitely going to spend a lot more time in my garden.

I’m not fine, but I’ll be fine.

Grinding is for coffee, not people

I’ll be avoiding anything where my income is contingent on being able to maximize engagement on a particular platform, though. I’m not terribly interested in building an audience on Patreon or YouTube or Twitch, for example. I will of course occasionally produce content for YouTube and Twitch as part of my greater activities, but I’m not interested in becoming A YouTuber™ or A Twitch Streamer™ or any other things that exist purely as a platform that commoditizes free time. I need to find my own path towards happiness which is not contingent on The Grind.

Places where you can help me out

Things work better when we work together.

I’d love to get more work in music composition, particularly in games, but also I’d love to learn how to do music for films and TV (which I’ve only done a little of and I definitely have a lot to learn in that arena). If you know of anyone searching for such a thing, please point them to my Bandcamp and my itch.io page.

I’d love for other folks to start using Publ. Supposedly it should be pretty easy and cheap to get running on Nearly Free Speech, and it’d be great to get both an idea of what would help others (especially in terms of documentation and templates) and also to have others help out on making the code better. There’s also a lot of stuff I’d like to build to make it work even better within the Indieweb ecosystem (for example, I think it would be great if it had its own self-hosted webmentions and comments instead of relying on external things for that).

I’d love if I could work with someone else on comics, too. Lewi and Unity in particular feel like they could do well to have other people helping out on the art. And, heck, working together on writing would be great, too! All of the media I truly love is from creative teams, not from sole writers or individual auteurs.

Maybe if you feel like chatting, hop on over to my Discord community. It’s small, at least for now.

Really, a long-standing dream of mine has been to have some sort of creative agency, where instead of people working in isolation on things, I can pick up work to help out others and vice-versa. I feel like something with a co-op structure would work really well, especially for the many incredibly-creative folks I know who also have ADHD and related difficulties with being made to tightly fit their peg into one specific hole for the rest of their lives.

In the meantime, I also wouldn’t turn down sponsorships on GitHub or Ko-Fi.

Comments

Before commenting, please read the comment policy.

Avatars provided via Libravatar