Hello fellow crustaceans,
About five years ago, I left a good job at a good company because I did not believe in the things we were making, and could not bring myself to make them. I called my manager (I’m in the UK, he was in the USA), crying because I had spent two days opening my IDE at 9am, staring at it, then closing it at 5pm. We agreed that I could leave on the spot.
Since then, I’ve alternated between having jobs that I show up to and collect money from, and time off. Neither is really satisfying. On time off, I have pretty highfalutin ideas about new systems or applications I could build, but get analysis paralysis and never move far beyond design notes, or prototype implementations. In jobs, I do well in my managers’ eyes while internally wondering when I’m going to be found out. I spend a few months on flat-out delivery so that people are happy that I can do the job, then gradually the wheels fall off. I stretch flexible hours/lunch breaks to breaking point, take on multiple tasks and slowly nibble at all of them, and get into as many advisory/leadership positions as I can to fill my calendar so that the reason I haven’t done anything is meetings. People genuinely value my contributions in those situations, but they’re a cover for not sitting at the computer.
I’m currently in another “time off” phase of the cycle, but can’t afford to do it for long. I’ve burnt through my savings and taken on some debt to start my consultancy business, but haven’t got the customers I need to turn that into level flight. I think that’s because I can’t, or don’t want to, define what it is that I do, because I am not sure that if I did, I would enjoy it. I see the last few years as a walkabout, trying to find the thing I should be doing. I haven’t found it, and have run out of resources to carry on walking.
I had a long call with a friend and former colleague recently who said “it sounds like you’re lacking a community”, and there’s something to that. Before all of the above started I was someone in the Apple-dev community that other members of that community might have heard of. I’d written books, done conference talks, video training, podcasts, made apps that I was proud of, with people I was proud to work with. But then I became disillusioned with Apple, and with that life. Swift passed me by. I thought I’d be more aligned with the Free Software community, but my lack of focus means no contributions, no status, no membership. I’ve tried “sideways moves” into management, senior management, architecture, but those don’t fill the hole.
Have any of you encountered similar situations? What was your way out? I need work soon, but don’t want to perpetuate the cycle of unsatisfying work/rage quit break. What is there that’s genuinely interesting and exciting in the world of software, and what was your way of engaging your interest and excitement?
I appreciate that you may not want to talk about such parts of your own history in public replies; please remember you can message me here too.
I’m no longer excited by the technology for it’s own sake. I couldn’t give a shit how many serverless functions your bespoke kubernetes cluster manages, or how simple your webpack configuration is.
I find work that matches my ethics; at the moment I’m lucky enough to support radiopaedia.org. We get regular letters from around the world detailing cases where the site has helped save a patient or markedly improve their health, which is always a morale boost.
Software systems get used to plan large-scale infrastructure projects, keep track of clean drinking water, food production & distribution, and healthcare. Being aware of the positive outcomes my work generates has become key to enjoying it.
Some (mostly unfiltered) thoughts on this:
This all sounds very familiar. In fact, I resigned a few weeks ago with no new job lined up as I felt my entire job was just useless. Everything gets rewritten every year or so anyway, so why bother?
I was rewriting some of the same code I rewrote when I started. When I joined a lot of stuff was objectively bad; for example a lot of the email handling code was so bad a lot of emails simply didn’t get delivered, or incoming emails wouldn’t get accepted (it was written by someone who didn’t understand email). So my refactors served a clear purpose: “don’t drop emails”, “make sure emails are RFC-compliant”, etc. I then refactored things to add some features (“more details logs”, “ability to re-send delivery failures”, etc.) Again, refactors to enable a concrete goal.
Later on, we did some refactoring to make stuff compile faster; it was taking upwards of 30 seconds for even simple changes, and it was pretty annoying. This involved rewriting quite a bit of our API, and that took maybe 2 months in total. I’m not sure if it was worth it in hindsight, but at least it had a clear concrete goal (“make it compile faster”), which was measurably achieved. It did make working with the code more pleasant, as waiting 30 seconds for a simple type is no fun at all (fast compile speeds are supposed to be a feature of Go!)
But now, I see people rewrite stuff because “it’s more elegant, “it had better layers”, or “this is the best way to do it according to {person,methodology,religion,…}”, which are all really just rephrasing of “I prefer it this way”. This doesn’t mean the new way is bad per se, sometimes I think it’s probably a better approach too, but … the “old” way is working, and often has been working for quite a while. Why rewrite it? “I prefer it this way” is not a concrete goal. What is gained with the rewrite? Often this isn’t clear, and at the same time there’s still the increased workload. Even if you’re not involved in the rewrite directly, you’ll still have to learn the new API and/or way of doing things.
This is a product to solve concrete problems for our customers. The code to achieve that isn’t some sort of art project.
Yet, many people seem to treat code as an art project. Now, I treat some of my personal projects as “art projects” – and I learned a lot from doing that – but when building software in a team of people that’s just not workable, every time someone new joins the “art project” needs a re-evaluation because it doesn’t fit their sense of aesthetics.
Software is easy to change. This is great in some ways, but it’s also easy to fall in to the trap of constant change. If you build, say, a bridge of building you can’t just change it at a whim, even if it has serious problems such as lack of daylight or airflow (far too many office buildings suffer from this), so people accept that the world is imperfect, suck it up, an deal with it the best they can. But in software it’s tempting to say “no, I can make the world a better place! I just need to rewrite [..]!” Sometimes that is the correct approach, but often times it’s not. Especially not if you’re in a team. It’s very hard to actually prove something is “better” in the world of software, so the endless battles/bikesheds start.
This isn’t just a software dev problem, it’s also a management problem in the company. But I don’t see that changing, so I just quit.
If it was just this company I’d find a different job, but it’s a pattern I’ve seen in many places in my 10-year career. This is not a new observation, either: CADT, Magpie developer, etc. are all phrasings of this problem.
I don’t know what I’ll do next; maybe I’ll just go jwz and open a bar or something. I really like building software products, but am thoroughly fed up with the industry. Everything feels like a battle, and I’m too tired of it. It might be worth it if I felt the end-result is worth it, but it’s just regular B2B software. Not the worst in the world, but nothing special either. There are a whole bunch of competing products that do an equally good job (if not better).
Every time I’ve seen this happen, it’s at a organisation that has money far in excess of its costs (unfortunately, this happens pretty often in b2b software).
This enables middle management to start empire-building / hiring for projects of dubious value. You can fight it in the early stages by having a suitably aware CEO (eg 37signals / basecamp) but as you get to larger organisations, most roles fit this description.
Once you have more developers than you need to solve the problem, you start stepping on each others toes and spending all your time communicating; before you know it, there are four teams building microservices (to reduce the communication overhead) to solve a problem that only needed one team of 3-5.
You can avoid this by finding a place that either lacks excess money, or has somewhere to sink it. Basecamp sink it into high engineering salaries and dividends to owners; radiopaedia can only afford me part-time, but can hire me for more hours if they get more money.
There is a saying that if everybody are morons, you are the moron. (For clarity, I don’t believe you are a moron, you seem bright).
Could something similar be said of battles? If everything feels like a battle, does it come from within?
Okay, some more mostly unfiltered thoughts (I guess Lobsters is my weblog now?)
That’s not unreasonable, and I’ve been thinking about that for quite a while during the last few months (even before I resigned). There is an easy solution to it: shrug, don’t care about anything that happens outside of the narrow scope of the job I was hired for, do my boring job for a few hours, and collect the paycheck.
But that’s not really how I work. In many companies there’s a lot of stuff “between the cracks”, stuff where there’s no person/team who has a clear responsibility, but really should get done. I tend to do a fair amount of work “in between the cracks” as that’s often pretty valuable for the business. Example: I wrote standard scripts for our Travis integration, because that’ll save everyone a lot of time so they won’t have to ad-hoc the .travis.yaml files with random copy/pasting. I spent a day on it two years ago and while hardly perfect, it’s been working pretty well since then. Yet I’ve had to deal with a ton of bikeshedding and headaches about it. Some of the feedback has been reasonable and constructive (great), but there’s also a lot of “change for the sake of it”, and some downright toxic stuff (like the guy that just overwrite it all several times with his own version without prior discussion, often getting a few key things wrong).
Perhaps the worst part if that all the bikeshedding and toxic idiocy made me shoot down a more reasonable proposal that someone made a few months ago. The PR did have a bunch of issues and needed quite a lot of work, but fundamentally it was a good effort as it attempted to address various real concerns (and was’t a “I don’t like the way it’s done” type of rewrite). The entire thing was eventually amicably resolved, but being in the state where I growl at things because I’m tired of bikesheds and toxicity being flung at me is not a place I want to be at.
To be clear, the problem isn’t “everybody”, it’s just that there are a few people who have very strong visions on the One True Way™ how to do things and will push that vision with little sense to pragmatism. A lot of people think that’s somehow normal, so these people can do what they want (some of these people are also very toxic).
As I briefly mentioned, this is just as much of a management fail as anything. Ideally, management should have nipped a lot of this nonsense in the bud and fired a lot bunch of these people (some of the more toxic ones have).
Some examples: I wrote our internal Go framework; this wasn’t a “invent a framework from scratch” effort, but more “codify common practices our existing projects already use, while making sensible ROI improvements”. The end results is pretty decent, if I say so myself. Yet, no one uses it, as it doesn’t fit the One True Way™ for any of the teams. The result is that we now have 6+ “frameworks”, all based in varying degrees on the original. There is loads of duplicated effort here. I tried very hard to accommodate people’s concerns, but there was a lot of “I don’t like it”-ism and people just went of in their own direction anyway 🤷
I don’t even have strong opinions. I just care about 6 teams not duplicating all effort to produce a Go API. Not unreasonable, right? But now we’ve got all that duplicated effort. Worse, some of these efforts are just … not very good. We’ve had two unreleased apps that already had to undergo a massive rewrite before release because the re-invented stuff sucked too much, but is being ignored “because I don’t like it”. I get that new apps sometimes need to take risks and experiment, and that some of these risks don’t work out, but this isn’t rocket science, this is basic CRUD APIs. We already invented all of that 2 years ago.
I’ve been working on a weblog post about all of this for a while, but I find it hard to articulate my feelings accurately, because when described like above it doesn’t necessarily sound like a huge deal. “So no one uses your framework, deal with it!” In part, it’s a “death by a thousand cuts” affair, this is just one example. There have been a lot of pushes to rewrite/redo existing systems without a clearly stated goal. Seeing a lot of your work being rewritten all the time has a certain psychological effect. Why bother if everything will be rewritten next year, anyway? There was also a good HN comment on that last week.
I’m also one of the few that actually takes the effort to push back on all of this. A lot of people seem to shrug in apathy, or they just don’t do anything because they don’t want to spend the effort to get involved. Turns out that actually caring about making a good business, and not just doing the job you were hired for, can burn you down. I’m “just” a developer, I don’t really have more authority than anyone else. In hindsight, I should have either pushed for more authority, or tried harder to get those in authority aboard. Being remote while ~75% of the company is in an office probably doesn’t help either, especially not after I moved to New Zealand which put me in a massively different timezone (main office is in Ireland).
Part of this is just growing pains from small startup to company with >250 people. When I joined stuff worked pretty well without any direction, as a lot of people were very pragmatic and dedicated. Now that’s we’ve increased the amount of staff by a lot, things are more tricky. I guess I could work to change the culture, but after 3 years I feel burned out and to be honest, our products aren’t all that great and not really sure if it’s worth is trouble.
What you’re describing here sounds like a bad mismatch between the level at which you care and the level of authority you hold. Plus probably. the proportion of payoff you stand to receive if you do succeed.
Put another way: if you’re high up enough in the organisation that you could fix it, it might be your responsibility. If you’re not senior enough to e.g. be able to order people to knock bad behavior off, then by definition it is not your responsibility.
Please don’t get emotionally invested in a company of which you are not a large-stake shareholder. It is IME a recipe for getting burned out hard.
I suppose you’re not wrong, but on the other hand apathy and not caring is also quite toxic, IMHO.
Sure, don’t start casually keying peoples’ cars on the way in or whatever. Care about your work. Don’t try to fix things that are your boss’s (boss’s) job, though.
Here’s why this is so correct: being excited by technology is a surefire way to be disappointed in life.
This kind of sentiment confuses me, especially given the context of this community. If working at a job that matches your ethics is what does it for you, then that’s amazing! We need more people like that around to make the world a better place.
But disparaging people for being excited about technology is odd, to say the least. There’s something intrinsically satisfying, at least to some people, about learning new things, understanding the context in which that thing is (or is not) useful, and why it is (or is not) more useful than the old way of doing things. Do you think a mathematician being excited about mathematics for its own sake is a surefire way to be disappointed in life?
Treating your software like a craft and always striving to be better is a great way to enjoy what you do. A carpenter isn’t diminished by making tables for whoever happens to want to buy them, they can enjoy their work intrinsically as they masters their craft and take satisfaction in a job well done. Obviously this can be complicated by the reality of working with other people who may not treat it the same way, but… that’s how people work, and that problem exists in any field or career.
If you get excited about technology, it’s much more meaningful to get excited about how a technology could help people, not about the technology on its own, which most of the time is going to be deployed to sell more ads or perform more effective surveillance.
There is a certain irony to this comment coming from someone with the username “technomancy” whose description links to their blog about their custom-made personal keyboards. :)
One way to help people is to not criticize their internal motivations simply because they don’t align with yours. If someone gets home at the end of the day and feels great for no other reason than that they got to write a bunch of code and they love how writing code makes them feel, more power to them.
It might be more meaningful to also help other people with your tech, but that has its downsides. When you hang your satisfaction on someone else’s joy, you give others control over your own happiness. You sacrifice the freedom to feel good about something you did just because they happened to not like it.
Each of us is free to find our joy however we like.
On the contrary, the reason I have continued to make custom keyboards after all these years is precisely that; it helps people. The keyboards allow my customers to avoid RSI and learn some useful DIY skills. I wouldn’t still be doing it otherwise.
If you look at my comment in context, I’m replying to a post that is explaining why the original poster no longer feels motivation to work in software. If you don’t feel like they do right now, that’s great, but the odds are very good that at some point in your life you will if you’re working in the technology industry.
Genuinely wondering how you feel about this:
This isn’t actually true for mathematicians as far as I know? I mean, if you’re a statistician working for an ad company, then sure; it seems to hold up fine, but as far as I know most mathematicians aren’t.
The “most of the time” probably isn’t (I personally think definitely isn’t, but no data no certainty), but if you’re a mathematician working on something just because it interests you, there is a chance still that someone might find a use for it in ways that you didn’t think about, including ads and surveillance. What I was wondering about phrased directly is basically, whether these two questions have different answers for you:
Q1: Is it meaningful for a mathematician to work on some mathematical structure that interests them, without any foresight of a meaningful use of their work?
Q2: Is it meaningful for a programmer to work a on a technology that interests them, without any foresight of a meaningful use of their work?
where meaningful is relative to you personally.
Mathematics is discovered. Technology is built.
When you discover new mathematics, nobody owns the math.
When you build technology for an employer, somebody else owns the technology.
That means:
This statement is in my opinion too general to have any useful meaning or validity.
I however find your distinction between discovery and invention (building) interesting, so I’d like to ask you a question. Consider a new real world programming language L. It would probably be very easy to argue that L was invented. Assume now that a user of L stumbles upon a quirk in the way L handles closures for example. Is this quirk an invention or a discovery?
The quirk is in an implementation; it was invented by the language creator and discovered by the user.
What about the behavior of numbers? why isn’t that an implementation detail? if numbers are too natural for you then what about the behavior of sequences of numbers? doesn’t that seem a bit closer to an implementation detail?
Whether numbers are an implementation detail is a question for theology 😀. Human understanding of them is a discovery.
Hehe, I was actually heading in the direction that numbers are defined by humans and not by any divine entity and thus the way they behave is maybe just an implementation detail of how we defined them;)
My intent was not to disparage and I find that reading to be very odd. All I’m saying is that if you focus on technology as your source of excitement in life you are setting yourself up for disappointment. This does not mean you are a lesser person for liking it.
I take great pleasure in writing software, making keyboards and other such things. I truly enjoy it and I always want to improve. But that is not technology. Technology is just a vehicle for that kind of growth. The technology itself may be interesting and I may like it, but I certainly don’t like it just because it’s technology.
According to the life expectancy measures, I have one foot in the grave (that is, I’m past the halfway point). I grew up in the personal computer revolution and was an adult when the Internet took off. I’ve heard a lot of promises of what technology will do and how it will change things. Only one thing has ever been consistent: it does change things (corollary: we’re terrible at predicting the future). It does this for both good and bad, and rarely in the ways you hope. I used to look for the new thing all the time. I don’t anymore and I’m happier for it.
The joy I get from technology is understanding it and using it so that I can do things or better yet, how it gets used to help people. I don’t get excited about AI/deep learning, for example, I get excited about the thought of learning how it works and maybe using it to help me with my extensive collection of papers. At the same time, I think the adtech world is nothing short of a blight on humanity and have zero respect for it. As such, I would never work in it, regardless of what AI techniques they use. Being excited about AI for the sake of technology, in this case, would cause me great inner conflict and thus, disappointment. To avoid these situations, I no longer seek happiness in technology.
This is one of those topics that is hard to put your finger on and honestly, I don’t think I’ve quite captured it here. I apologize for that. At the same time, I can’t deny that a lot of my friends, just like me, used to be thrilled about new technological innovations, saying things like “Wow! That’s awesome!” or “It’s just like in the movies!”. Now we say, “Maybe a Earth-level EMP pulse isn’t such a bad idea.”
Not if they die tomorrow. Sorry for the strong statement, but I just wanted to provide at least one counter example.
People are different, maybe as programmers we need to resist the urge to generalize more than other humans.
I wasn’t generalizing so much as playing the odds. (And yes, there are plenty of counter examples. But it’s also not a cut and dried kind of argument, which is kind of the point.)
Fair enough, I personally share your sentiment. Thanks for your explanations, you’ve certainly put it in a way better than I could’ve.
I’d like to point out that this is the same tendency, expressing itself in opposite ways. If we had an Earth-Level EMP Pulse, people would die. A lot of people. Technologists have a hubris that says “We can do it better, just watch us” that leads to magpie development, technological innovation, and a wish to burn it all down.
It’s a hyperbolic statement.
There is almost nothing new and shiny that’s genuinely interesting, in my opinion. I derive excitement from learning about new concepts and such that I haven’t previously known about–there’s plenty of that. I do not derive excitement from whatever the current hype is. Elixir? Serverless? Those just feel dull to me. They seem like a cycle: “This is the next great thing! It’s SIMPLE! And FANTASTIC!” and then those folks write software systems that, like most other software systems, suck. Everything is simple in the beginning, and everything is legacy after five years. I think that’s what Geoff was getting at.
I think you are describing the toxicity of the hype cycle and the shallow excitement it inspires. The target of the hype, being it yet another software framework, a music genre, or a food, is not relevant.
Trends are almost parasitic: they chase after new idea, feed on the novelty aspect and then leave it behind.
I share that, mostly. There’s one problem with this approach I’ve experienced, which is that it focuses on getting fundamentals right (good!) but disregards the importance of getting the superficial details right too.
The reason for e.g. Go being popular is that they got so many little details right, not because it contains new concepts.
[Comment removed by author]
That’s a good suggestion. I think this is why I have been trying to skirt the Free Software world, because I believe strongly in the four freedoms. When I’ve gone for “open source” jobs that aren’t really open source, I’ve always been disappointed (in one, the open source was kept very much at arms’ reach to avoid “accidentally” opening the core IP; in another, I took on the role of defining our open source strategy, getting the internal lawyers and other stakeholders on board, getting buy-in from the engineers…who then didn’t open source anything).
This is helpful for me, thanks.
Honestly, it’s hard for me to imagine any other reliable way to enjoy work, other than enjoying the company of your co-workers.
You might get some fleeting enjoyment out of solving a particularly tricky logic puzzle at work, but in a healthy workplace there tend to be few opportunities to apply cleverness; people applying a lot of cleverness to their code on a regular basis is a sign of an unhealthy workplace.
I get quite a bit of enjoyment from just solving the problems at hand in the most appropriate way. This is way more reliable for me than enjoying the company of coworkers! People come and go, have a bunch of opinions and habits, but GNU Emacs never lets me down.
speaking of Emacs, I think there’s definitely something to be said for dotfiles hacking as a kind of “release valve” that allows you to express your cleverness in a way that doesn’t result in unmaintainable code for your teammates!
I like that idea a lot actually.
I live in the central US and I’ve met a lot of developers around here who are happy to grind away at an insurance company because it lets them provide their family with a level of comfort other jobs wouldn’t allow. The work itself doesn’t seem to give them a wholesome feeling, but being able to provide for their families does.
This feels related, but somewhat different from your point about the work itself being directly beneficial to society.
Before I get into any details: You should seek professional help! Immediately! Call your GP (general practitioner) right now the moment you read this and see if he or she can direct you towards a good psychiatrist. This is probably not a single-faceted issue and you need professional help, because you cannot debug your own brain with your own brain! Even more so if your own brain is the problem (which it clearly is). The fact that you took on debt is even more alarming and means that if you don’t act now, your problems are only going to grow worse.
With that out of the way…
I have no hands-on experience myself, but something similar happened to my partner. The first thing I did was to direct her towards her GP whom almost immediately diagnosed that her symptoms where similar to those of a burn-out. However, my partner noticed that this is quite similar to the symptoms of a “writers block”.
I told her to take at most 24 hours to read up on what a writers block was and how to overcome it, and at most another 24 hours to read up on burn-outs. The deadlines have to be mandatory to keep yourself moving forward.
In the end she discovered that everyone has a different coping mechanism, and that hers was to take some time of work and physically create things. (She likes to sew her own clothing and she also dragged out the good-old lego’s and a soldering iron and some small kits).
She took a (paid) month off from work, as was advised by her GP and a psychiatrist. During that month and due to many conversations with professionals, she discovered that everyone has a different coping mechanism, and that hers was to paint and physically create things. She likes to draw, sew her own clothing and she also dragged out the good-old lego’s and a soldering iron to build some small kits.
Somewhere along that path, something clicked into place in a “background process” in her mind. This gave her the answer she was looking for, which was that she needed to believe that her work was beneficial to people as a whole, and not just a happy few at a big bank or a small team of people in a government organisation. The systems she builds need to be touched by at least a couple of tens of thousands of people, each and every single day, before she could give herself the impression that she is leading a useful life. She also became consciously aware and voiced of the fact that she might actually want a family of her own, but that this would be enough not fill her void. This sets her apart from most other woman, family and friends. The fact that she knew this subconsciously, but could never put it into words had also quietly been chipping away at her, without her knowing that it was an issue.
So with this newfound knowledge, she switched jobs….
But after a couple of weeks, management started dragging her into other projects than the initial project she was supposed to be working on. She started to feel useless again the moment that happened, but management did not want to back down. In the end, she forced their hand by taking on a 32 hour work week instead of 40 hours, because 32 hours would pay more than enough to pay all the bills, but would make it impossible to push her onto other projects. It also gave her more time to constantly be on the lookout for other opportunities and the other things she also enjoyed which I have mentioned above.
Thanks, I appreciate the concern. I’ve been there twice in the past: the first time I was told to go and read a book about CBT, the second time I was on antidepressants for a year. My experience of getting access to a therapist is, well, negative. There are good PT and OT people in the UK NHS, but they aren’t easy to get time with.
Incidental coincidence: me too.
I’m considering this angle, it’s a common theme among responses. I used to work at FB, because I wanted to be making things a billion people wanted. While I was there, the emotion manipulation experiment came out, and other things made it become clear that actually we were making things to make people want to use FB, and pretending that they wanted to use it because it had value for them.
This does not matter at all!
The main purpose of seeking professional help is that you need to start talking with other people in real life. Ideally people whom cannot “get one over on you”. Professionals have this guarantee due to mandatory confidentiality. If they break confidentiality they can kiss their career goodbye. This is a benefit you cannot find elsewhere.
There is simply no other way around it as speaking about what bothering you, is roughly equivalent to “starting the mental garbage collector”.
You can walk in, state that you do not believe and do not want a chemical solution, but that you need a professional to bounce around “general life questions” that prevent you from doing any work at all. They are not going to prescribe you meds if you state beforehand that you have no intention of using them and no faith in them due to past experiences.
I’d also like to point out that “I do not want to seek professional help because my past experiences were negative.” is an excuse you make to yourself to not do anything about your current situation.
That’s okay. It is the natural and instinctive response…. And those instincts have kept us safe for tens of thousands of years and lead us to where we are today….
But it’s an excuse nonetheless! An excuse which comes from an instinct which has evolved for a world that was very different from the one we live in now! Those instincts are wholly inadequate for today’s world, and you need to overpower them with your intellect if you want to put yourself back together again.
It may be hard to find a good therapist or other discussion partner, but I would nevertheless advise you to keep looking until you find one. You need to get clarity on the underlying problem here and if you could get that on your own, you’d already have it. It’s in your blind spot and you need a good mirror.
How common is this sentiment? I feel exactly the same way about my career.
Absolutely. With only minor changes, such as s/Apple-dev/Ruby-dev/ and s/written books, //, this is basically my current struggle as well. :(
It is very common with people who burned out and have not yet recovered.
What if it’s not burnout, and the industry really does suck and keeps getting worse?
The suckage of the industry is certainly a problem. But being burned out definitely not making you appreciate any extra.
How did you help to recover from your burnout. How do you avoid relapsing?
I first changed position internally in the company. Then moved to another company, industry sector and country. But it wasn’t exactly a specific plan and far from a controlled experiment.
Afterwards I looked at the things that got me there and nipping them in the bud since. Mostly it’s saying “no” early and firmly to unreasonable things, and dismissing unsolicited input from people who are not stakeholders. That includes ignoring the work of non-coding architects. But it’s circumstantial, there are likely many paths leading to burnouts.
This is what burnout feels like?
It did feel very similar to me. You know how to do the job, it’s not like your previous skill and knowledge evaporates. You can make an estimate how long could it take the former you etc. But the battery is dead, you never get anything done.
Unlike the OP I didn’t quit right away when it happened, but changed my position from project lead to a grunt doing non-critical part of work. Struggled even with that but was sort of able to push it through. Took about 18 months to recover enough to function.
There’s a lot to unpack, and I’m afraid I won’t be much help for a variety of reasons that I will enumerate. First off, I’m a father of four living in a relatively low cost-of-living area of Quebec, Canada, and we’re lucky enough that my work provides comfortably for our lifestyle, and my wife can stay home and take care of the kids (one of which has had significant health issues (open heart surgery at 2 months of age, yaaaay), I can’t begin to be grateful enough for our universal healthcare). I’ve come to a point where I’m comfortably remunerated, don’t have a lot of consumer debt, and my mortgage is soon gonna be 1.5 times my yearly salary; this is good because it requires a less huge “relative” chunk of my paycheck, and I can manage to do other stuff with my money (specifically, pile it up for projects, debt repayment, or because I’d like to retire one day).
The above is my context. This is why I will bite the bullet and do what I do for money, at some cost in morality. My absolute list of priorities in life put my wife and family’s wellbeing above my own. That might not be super healthy, I’ll grant you that much, but that’s how it is; I have a responsibility towards them, and I very much intend to fulfill it if it’s the last thing I do.
The above is why I stick to my job, at least for durations. Whenever I change jobs, I think “well I’m gonna stay at this one for at least five years”. The average lifespan of my past 4 jobs is in the neighborhood of 2 years. I’m 10 years into this career now, and I’ve stopped expecting corporations to care about me (I think that’s good). I’m not sure how I feel about everything I build essentially contributing to consumerism and either enabling people to buy more efficiently, or sell more things (or sell cheaper, or more efficiently, or whatever). I don’t really have contributions to the open source things. I have a few useless things that I built for myself that are open source, I tell people about projects and try to teach people about things I think are cool, and that helps.
I don’t really have a solution. A friend introduced me to this concept of Ikigai a while back; I really feel like what I’m missing for myself is the “what the world needs” part. I don’t think the world needs us to buy more things. I’ll direct you to my first paragraph as an indication of why I don’t stop doing what I’m doing, which leads back to the next one, and the next one….
I recently shipped a tiny piece of software for a university’s music department that helped its workers by automating a rote time-consuming task. I didn’t charge them much, because there wasn’t much to do; If I wanted to maintain my lifestyle, I’d have to render that same kind of life-improving service 200 times a year, just about. I’m mentioning this because it felt good. I’m helping them save a bit of time so they can do less boring more important work. Next time around I’ll charge a bit more, yes, but I’d like to do more of that. Directly improving people’s lives through automation… IDK. Felt nice, felt like I was actually helping real humans. Nobody’s getting rich off of that piece of code, I can promise you that much. This might be my way out, in the long run. This, I like to do.
Same here. The wikipedia page translates Ikigai as “the reason for which you wake up in the morning”; I wake up because I need the toilet. That’s a useful framework though, and gives me a way to think about what I should be waking up for. Thank you!
All of this work setup is in a way a background framework to allow me to live outside of that work, and not just to relax and have fun but to have stimulating hobbies, engage with people locally, see what they’re doing, help them in some ways, do some projects, even do some business that doesn’t have to be so profitable since I have the regular contracting.
But I’m in an upwards phase in my own kind of slightly bipolar life. I am hoping that my off-work engagements will lead to interesting and fruitful collaborations, and that I won’t get bored or tired of working like this, and that I’ll actually have clients.
It seems that diversification of meaning is quite important. In some sense life is totally meaningless, but a variety of attachments, engagements, and interests seems to create at least a kind of geometric stability in life. A bit like “we must imagine Sisyphus happy”, except he would probably be much happier if he had more variety in his tasks.
I’m with you on 1-3, but not comfortable with 4-7. I guess it’s the sort of positions I’ve had lately in management/leadership, I feel a duty to talk back to the CTO as a member of the loyal opposition. That goes well with some people, less well with unclothed emperor types.
The other thing I’ll call out is 6, I live in an expensive area and wouldn’t want to move away from friends/hobbies/opportunities to keep my cost of living down. It’s not quite Silicon Valley/San Francisco levels, but I could halve my housing costs by moving to somewhere with no software companies. I’d have to only take remote work, but I’m someone who needs company.
This was inspirational, thank you. How did you get started as a contractor? Where do you find your employers?
I agree with @spycrowsoft’s remark: there’s aspects here that need to be addressed by a therapist type person.
That said: I manage burnout by doing home programming or other creative solo works (oil painting is one thing). My work engagement for years has been in inverse correlation to the amount of programming I’m doing at home. Children changed that, though.
I specifically make an attempt to work at companies whose products I agree with, I attempt to find work that is personally interesting. Corporate life is a balance of blaggh and “yay”, with strange tawdriness here and there. But it pays well enough, and if I like what I’m doing, I can suck up the blah. Right now, I work in an intrapeneaur group in a big hospital system. I like working in the medical area. :)
The other thing that I find extremely compelling is remembering working minimum wage jobs: even if I feel stupendously blah or down or whatever, I contribute a little bit, making steady progress towards the goal - I don’t care to work fast food again.
edit: oh yes. I don’t do solo consulting generally. I sell myself worse than an ice cream salesman in an Arizona summer. I don’t like doing that hassle constantly; it’s a huge drain. Others differ. But I am personally in a much better place when I’m not marketing at other people to hire me.
edit2: I genuinely like programming. Always have. I have always sought to keep that love alive, whether at work or at home. It’s my thing. Even when the day job has a blah moment; I enjoy the hacking.
Accessibility. I’ve been following your blog for a while, so I know you care about making things that are easy and pleasant to use. Focusing on accessibility is a way of doing that for an under-served group of people. And if you want to make a contribution to free software during your time off, there’s lots of room for improvement in the accessibility of major free-software platforms, frameworks/toolkits, and applications. Send me a private message or email (in my profile) if you’re interested.
Great suggestions, thank you. I’ll PM soon.
I walked away. I am now committed to people management. Twenty years in, I burned out, hard, and had something of a crisis. It was timely, in that I was able to take my statutory parental leave and use some of that time to work on trying to figure out what was next.
For me, it was helping other people do better. My scope here is not particularly broad – I’m not a doctor, or a priest, but I can both make a living as an engineering manager, and that gives me the opportunity to do unto others.
I had a similar experience working for a start-up company on the Gulf Coast. I had been there for four years, working 60-80 hour weeks, and one morning, I opened my IDE and had a panic attack while staring at the screen. The code I had been working on for several years suddenly looked like gibberish, like a foreign language. I remember exactly how that feeling started, creeping up the back of my skull until it just took over. Not anxiety, but sheer panic. This happened three days in a row, until I finally decided that I had to leave the company.
I ended up working for EDS/HP (similar to Accenture in the UK) for about 3 years after that. The structure, supportive team and 9-5 schedule gave me an opportunity to focus on my mental and physical health for the first time in my life, and to take time off when I needed it. In my case, that was the piece I had been missing. Every evening, I was either at a yoga class, or the gym for an hour or two. I even went back to school while working there and earned a second degree (Microbial Genetics and Genomics) and trained for/ran two marathons. On the technical side, I also learned a lot about continuous integration and software engineering practices, which I’m grateful for.
Eventually, working at EDS grew tedious. The work I was doing felt empty - like I was simply converting specifications into code without any real mental engagement. I grew bored and depressed. I felt an urge to work on a smaller team and start solving problems that were more research-oriented, so when the opportunity arose I co-founded a bioinformatics company in Michigan, close to my family. I’ve been at it for over 10 years now, and while I put a lot of hours in (occasionally, once again, to the detriment of my mental and physical well-being), I really derive a lot of satisfaction in the problem-solving. I don’t always have the work-life balance that I had when I was at EDS, but I’ve made some progress towards that in the past year. A year ago, I was suffering from intense burn-out, and I had to dial work back a few notches in order to recover.
I guess what I’m getting at, is that if you find yourself in a cycle, try something different. You refer to “the hole”, but there may be more than one underlying source for that feeling. Seek work-life balance, and don’t define yourself solely by your work. Some of the other phrases you used, such as finding “a way out”, imply that you’re feeling trapped. You are not trapped - there are many paths forward from where you are. It also sounds like you are looking for “the one thing”. Don’t limit yourself to finding one single solution.
As for engaging my interest and excitement, that is a little more difficult to describe, but I’ll try to answer it. Speaking personally, if I run out of problems to solve, I get bored. When I get bored, I get depressed. On the other extreme, when I have too many problems clamoring for attention, I get unfocused. When I get unfocused, I get overwhelmed and anxious. At the far extreme, panic attack (I now recognize the signs building up to that). With my current company, it has been a long road and I’ve had my ups and downs, but what I really love about it is that it presents me with a near-unlimited supply of new and interesting challenges that I can pick and choose from. Most of our contracts are with federal agencies that have their own in-house software development teams. Those teams are great at designing workflows, but consistently awful at creating efficient solutions to specific problems. I really found my calling by jumping into this pool of insanity with both feet, and sniping problems away from those teams with proof-of-concept solutions to their bottlenecks. Those development teams and their directors love it because it takes pressure off of them, and at the same time it results in new/continued contracts for us. Sometimes it doesn’t even feel like work. At other times, I feel the same way you describe. I, too, lack that sense of community, more-so now that I work from home.
If there is one specific example of a technology that excites me, it is GPU programming. In the past year, I have thrown myself into learning it, and re-learning C++ in the process. I don’t think it is a great general-purpose technology, but it is a good fit for a few projects I am working on, and requires a totally different mind-set for problem-solving. I am currently on a personal quest to solve a specific compute-intensive bioinformatics problem with some novel C++ code on a home-brew cluster of used cash registers w/$45 GPU cards, while a federal agency is simultaneously throwing $13M at an Intel CPU cluster running off-the-shelf code to solve the same problem. We’ll see who gets there first. In essence, I keep things interesting by finding ways to make it fun, and challenging myself at the same time.
I really hope this collection of personal anecdotes helps in some way. There is certainly no one-size-fits-all solution to finding a path in life. I’ve done a fair amount of meandering myself, and I routinely question whether I’m on the right path. The things we need change from time to time, and certainly are different in each stage of life. This is just my personal experience, and I’m sure it won’t resonate with everyone. I’ve never really had a “Joe vs. The Volcano” moment that changed my life, but I can recommend a book that really helped me put things into perspective when I was trying to find “a way out”: The Way of the Peaceful Warrior. I’m not sure what it is about that book, but even now, re-reading it, it helps to silence the echo chamber in my head.
Great reply. Cash registers?
They are used Point-of-Sale systems, but I like calling them cash registers because it sounds ridiculous while being technically true. They are Dell Optiplex XE, upgraded to 16GB memory, Core2 Quad processors and nVidia GeForce 730 GPUs. I posted a short description in a comment about a month ago, and I’m working on a full article.
Been there recently. Feeling much better about life after taking a semi-break for three months or so, and now at a new job that I’m fairly happy with so far. Only advice I have: Learn something new, and always be ready for the unexpected to intervene.
My mojo was awful last year, between January and September I quit two jobs under very similar circumstances to yours. Just for fun I ended up spending about two weeks helping a friend who was interested in woodworking finish building and troubleshooting a CNC router at Ye Local Hackerspace. Someone else there knew a local robotics startup that needed embedded programming and electronics stuff done and suggested I apply; I’d never done electronics stuff beyond tinkering with microcontroller boards from time to time, but I shrugged and figured it couldn’t hurt to send them my resume. They interviewed me and after they had explained what they were doing and what they wanted to make, on a whim I showed them a video I’d made of the CNC (which was not dissimilar to the ideas they had), and they said “You did this? When can you start?” So suddenly I was spending the rest of the year and part of this one building a robot, and it made me happy again.
Don’t despair. Find something you love, even if it has nothing to do with software.
Interesting to know that this sentiment is more common than it seems. I wonder if this is a sign that software industry now consolidating itself. That is, there isn’t same level of pioneering or groundbreaking work being done as there was in 1970s, 1980s and 1990s. May be even 2000s. Perhaps it is the case that when an industry matures, it appreciate true skill less and instead develops is own “fashions” such as programming aesthetics as pointed out by @arp242.
People’s opinions about how code should be organised are really like a religion. Personal preferences are imposed on others (many code review debates are proof of this). And people like Martin Fowler are the high priests of this religion.
I know the feelings. One thing I have done is try to work on my own on a product, I haven’t shipped yet, but the experience of working solo has helped me improve my appreciation for the things that went on in my old job.
Another tip I have is to do small software hacks, where you identify a (small) problem that annoys you, and try to solve it in one day. You get the reward of solving a problem quickly, rather than the normal slow grind that is normal software development.
Your tidbit about being “found out” is what keeps me fearful pretty much everyday. I still have my imposter syndrome. Sometimes I’ll forget syntax and think, “Wow, I don’t know anything and they’re all about to find out!”. It’s demoralizing…and I’m the one doing it!
I’ve very glad you had the courage to write such a personal missive to a wide audience. That takes guts. It’s good to know I’m not alone in having some of these thoughts. I think your friend’s advice about community is interesting in that I’ve thought it would be a good solution as well. I did feel better after jumping into the lobsters IRC. It’s good to have a laugh with people that probably have a better understanding of what I do professionally. Having people to speak to IRL is a must, of course. I keep telling myself I’ll go to meetups…I’m just socially awkward as hell.
Perhaps you should focus more on finding a job you can tolerate, rather than one that fullfills you, and find your purpose outside of work?
Full disclosure: I work for a company which does secure analytics, so an improved perception of the state of the art is something that would benefit us. I’m writing this independently, and I’ll be as objective as possible.
Based on my disclosure, you can probably tell I’m going to discuss secure analytics. I work with two different technologies to do this, Secure Multiparty Computation and Homomorphic Encryption, and to avoid going too in-depth for this post, I’ll summarize the critical point: both technologies allow you to perform computations on and between encrypted data.
Being able to offer fully encrypted analytics services, in the short term view, lets businesses keep their own data totally secure while still being able to outsource computing power. Beyond that, there are strategies to also allow computation between multiple sets of data from different sources, letting data owners perform analytics over joined data sets while never giving other parties (collaborator or not) access to their data. It’s an exciting technology in its own right, and being able to work on and implement tech like this still feels rewarding, but what really drives me is the long term impact that this sort of technology can have for the world.
With the “new” boom for data science and AI, we’re in this tricky place where your data is the property and capital of all of the services you use. To me, it makes sense that any service wants more data, as it gives them more meaningful insight, but because everyone wants data, it becomes valuable, and the more valuable it becomes, the more difficult it becomes to do collaborative analytics, usually due to cost of data access or security protocol certification. I’m particularly interested in medical information as a few members of my family suffer from diseases like Type 1 Diabetes, which seem to require a large set of attributes per individual (collaboration between different kinds of service providers), and large numbers of individuals (collaboration between data owners who provide similar services) to get meaningful insight in studies.
If it’s possible to allow data providers to to collaborate in a simpler way while still guaranteeing total security of any individual’s personally identifying information (PII), we can get so much more information about the problems which face the world today in almost any context. Eventually, we may even be able to have a system in which users own their own data, and can provide it as they see fit, while their information remains totally secure.
That idea is what really keeps me going, and there is a long way to go until we get there. Secure analytics like MPC and HE are still moving into more universal practicality, and they don’t solve all of the issues in front of us on their own. We still might need things like Private Set Intersection (PSI) and Private Information Retrieval (PIR) to perform more anonymous filtering, Differential Privacy to really guarantee anonymity for participant information, and much more work into Adversarial ML in the encrypted space where we can’t extrapolate information from our data as readily. Some of this is research work, some of it is implementation, and most of it will require multiple rounds of research and implementation until we find a good solution.
On the larger software side of this, the community, especially the Homomorphic Encryption community, has been working on sets of standards to close the gap between the research implementation and production code, using better software engineering ideas to motivate the next generation of designs. It’s difficult to impart the scale and interesting-ness without going in to lower-level detail about why we (might, and probably do) need new definitions of things like operators and operands in HE contexts, so again, for the sake of brevity, I’ll leave it here.
Honestly? And people are gonna hate this - I went to work at Amazon Web Services. I’ve been here about three years now and it’s like riding a lightning bolt :)
I’ve grown as a person, a professional, a leader and a software developer more in the last 3 years than in the previous 10 or more.
I know, hating Amazon is the latest craze, but there you have it.
My wife worked at AWS until the start of this year - she shifted over to the dot com side of things. She’s in a Product role now. I often wonder what it’s truly like working as Amazon as a programmer. I have formed my opinions based on things she has said, but I’m curious as to yours considering that you’ve claimed to have grown professional there. What experiences have you had in the past three years that have helped you grow in the areas you mentioned?
First off, Amazon and AWS are not a monoculture. Each service is effectively its own startup. We share some infrasturcture, and there are some company wide initiatives that are across the board, but by and large each group makes its own decisions.
This means that my experience may not be your wife’s experience may not be somebody else’s experience etc.
Couple of things:
For about the past 10 years, I’d been being told “Be more assertive” in jobs - people were pushing me to take charge and leverage my experience more broadly in teams, but I never really had the confidence to do that.
It’s gonna sound like an ad, which it totally isn’t, just my experience, but the leadership principles create a framework for just that. We actually live them every single day. use them to resolve disputes and make tough decisions, and in my case, to give me the confidence to know that if I weigh in on something important and make a good case, then not only will I actually be listened to, but if there are any team members who disagree, we’ll discuss it, and then one of us will Disagree and Commit, and it’ll be done. I also know that taking ownership of things that are important to the business and being relentless in pursuing the right answer is not just encouraged, but expected.
And these aren’t just edicts or “Our new Values” or some kind of “5 year plan” that the marketroids framd and put on the wall to never be referenced again, they really are at the core of how things are run in our service.
Moreover, I know these things apply all the way to the top - that I can confidently have conversations with anyone up to and including our director because we’re all following these guidelines that govern our behavior and decision making. I find that to be incredibly empowering.
The pace is intense almost to the point of being relentless, but on the other hand I find I get several orders of magnitude more support than I have at any other company. So at first you feel like you’re drowning, and then you realize you’re not just staying afloat but you’re doing the back stroke, and are in fact ENJOYING it.
I can’t imagine working anywhere else, but if I ever do I’m quite confident I can handle anything they’ll throw at me.
Hopefully that gives you a sense. I didn’t take the time to carefully craft this prose, sorry about that :)
Thanks for your comment. I’ve heard so much negativity about working in tech at Amazon et al. that it’s good to hear a different side of the story.
Picked up F#, took more naps, spoke to more people.
I think the importance of F# in part was that it was different enough to let me breathe, while still being close enough (.NET) to be applicable. Naps are good. Speaking to people, in part about F# helped me engage with software development as a social activity.