It was eight years ago that I lived through some of the worst weeks of my life as a professional software engineer. I was working for a small startup that was about to be acquired. Or about to go bankrupt.
There was no other possible outcome anymore. Acquired or bankrupt, it was one of these two and every week for several months the odds would tip from one to other and back again.
We were a funded startup that didn’t have any revenue, running out of money. We had used up all our funding hoping to either grow and get more funding or to get acquired by one of the two large companies that we had been partnering with.
One week it was: this is it, maybe we won’t get paid this month and then that’s that. And then the next week: they’re going to acquire us, 100%, I mean, why would they say something like that if they don’t plan to acquire us?
Leadership kept us in the loop and told us as soon as there was anything to tell. They had already put more of their private savings into the company, just to stretch the time we have left, hoping that we make it until we’re acquired. Any day now, surely.
At that point, I had been working there for more than three years. And in those three years, I had done everything there is to do as an engineer in a small startup with less than five engineers: build features, scale the database, rebuild features, build internal tooling, go to sprint workshops, do performance optimizations, write SQL, fix CSS, give talks — everything. We all did everything — whatever was needed at any moment — all the time.
But in those weeks, when we were all closely watching the movements of the acquired-or-bankrupt scale, we found ourselves with nothing to do.
Yes, there’s always something to do — you can always refactor some code, clean up some README, remove that moldy TODO comment in that file no one has seen in years — but do you? Is that really what you do when you know that it won’t, no: can’t, affect the outcome, that it won’t the tip the scale, and won’t save the company?
Two large corporations were about to decide what happens with us. They didn’t care about new features or performance optimizations — we had already gone through a due-diligence process, they had looked at the codebase, poked the servers, interviewed us engineers (good story for another time). They knew what the product and the engineers are capable of. What they had to answer was: do we have the money to acquire them? Can we get the money to acquire them? Should we acquire them?
And that last question had everything to do with financials and strategy and politics and nothing to do with what a handful of engineers does in a small office.
When I asked one of the co-founders what we should do, he said, with a shrug, something like: I don’t know — come up with some new features? What else was he supposed to say? You don’t tell your engineers “there’s nothing to do but wait, do whatever.” And yet that’s exactly what the situation was.
We had nothing to do. We could do whatever we wanted.
Sounds like a dream setup, doesn’t it? Be Big Head from Silicon Valley. Sit in front of a computer for eight hours, do whatever you want, get paid. Maybe write some code, maybe don’t, maybe do something else.
But — to my big surprise — I hated it.
The first few days were fine, but then, very quickly, I started to dread it. In the second week I didn’t want to go to work anymore. But I did. Every day I would get up, walk to the train station, sit in the train, walk to the office, go up the stairs, sit down, sigh, and think: okay, so now what?
Don’t get me wrong: we did do something. We did some refactoring, we did try out some new features, we did tune some servers. I also worked through Real World Ocaml, set up a nice, pristine VM running Linux on my MacBook, made my dotfiles cross-platform compatible, switched colorschemes.
All the while, running through my head in a loop that I couldn’t stop: none of this matters, whatever you do doesn’t matter, someone else decides what happens with the company.
Never would I have predicted how horrible that is, this constant feeling that I’m wasting my time, wasting someone else’s money, that I’m doing things that just do not matter.
It lead me to write something in a note that I still have on my computer and that I’m looking at right now. It’s what I learned about myself in those weeks. It says: “I want my work to count. It should matter.”
I guess everyone says that when you ask them, but what I learned about myself was that I’m hyper-sensitive to it, that I need it.
I learned that I could never work in a research lab, for example. Work on something for a year that then might get scratched? Research something that might turn out to be a dead end? I wouldn’t be able to get up in the morning.
I learned that maybe that’s why I don’t like greenfield projects that much — the projects haven’t proven themselves and might get scratched at any point, maybe independent of what you do.
I learned that I like working for companies where the technology counts, where success and failure are also influenced by engineering and not just by a marketing budget.
I learned that if someone were to tell me “go build this, knock yourself out, but know that it might get thrown away” I wouldn’t even start.
I learned that that’s what I loved about writing and self-publishing a book: everything I did mattered. From writing the book, to designing the cover, to building the landing page, to promoting it. I knew exactly how my input would translate into output. The more I put in, the more I got out.
It’s a lesson that I thought of every time I felt unhappy at work and talked with a manager about it. I thought of it every time I interviewed for a new job, every time I read about someone else’s experience at their job. It’s a lens through which I view many things now: will I feel like my work matters?
In the end, our startup wasn’t acquired. Not how I imagined it would be acquired anyway. Half the team (myself included) were hired by one of the large corporations, the rest of the team and company were acquired by the other corporation. It didn’t feel like a happy end, just like a end, like a fizzling-out. It felt so anti-climactic to me that I forgot quite a few things about it, but what I’ll never forget is what it felt like having nothing to do.
This is eerily similar to what I went through a few months ago! The startup I worked at was going to either be acquired or shut down. The founders and managers had to pool together ~$1m to keep us running for a few more months. We got news here and there about potential buyers, and some of us were interviewed. One day, we got an emergency all-hands and the CEO told us that we couldn't find a buyer in time. In an unfortunate turn of events, the last handful of potential buyers dropped out in a matter of a few days.
I really missed what we had there. The people were genuinely good. It was one of the rare startups that actually had work-life balance, and the founders had integrity.
Being an alien resident, I rushed to find another job, and was able to get a job 3 days before my last legal employment date. This new job is almost as bad as it gets. The PMs are micromanaging every software engineer. 5-days in-person, and every day our standup boiled down to the PM reading our task of linear and saying "end of day, ok?". Speed is their company motto. Speed is their culture. Their strategy for growth is to "just write more code, that's it". During one of the interviews I asked them "what’s crucial for success at your company?” and they said “write good code, fast”. They do write code fast, but that’s about it. The product is unstable, and most of the employees have worked there for less than a year.
This is really making me reconsider what I’m looking for as a software engineer. In the first week, I thought that all I wanted was a healthy workplace (like my previous startup). Entering a toxic workplace, this idea made a lot of sense. Over time, though, I’m thinking that might not be the case. After enforcing some boundaries, I was able to limit myself to a roughly 40-hour work week. For context, others on my team are working up to 10-12 hours, and some are working weekends and public holidays. Even after enforcing this, though, I still didn’t feel satisfied.
I realized that, in all of my jobs so far, I haven’t really pursued what I wanted to build. It was always a generic frontend/backend role. I think that even if I did find a healthier job, I would still be quite miserable. I might be clouded by how toxic the current workplace is, and how fun and nice the people were in my previous startup were, but it probably boils down to the same thing. It’s gotta be something I like.
So, I’m currently working on a CLI game. I’m hoping I can take it far enough so I can work on the things I’m really passionate about: software tools. I’m getting jaded with SaaS and leaning more towards smaller products that work really well locally, like terminals and IDEs. It might also mean that the work I’d do would be less spread out (e.g. writing new microservices that might get phased out in a few years) and are concentrated into something more valuable (e.g. a new rendering engine).
I’m getting tired of startups with herculean expectations and leaning towards sustainable growth, like Obsidian and mymind. Anyways, I hope my current job is at least a good catalyst and realization for my long-term growth as a software engineer. Thanks for the read!
> this constant feeling that I’m wasting my time, wasting someone else’s money, that I’m doing things that just do not matter.
This hurts a lot.
The only thing that stays with you is the last part, the feeling that nothing of what you do matters. Even when the problem is in the past, that feeling stays with you for a while, even when you have things to do, things that _probably_ matter.
It feels somewhat good to know that it happens to others.
Thanks for sharing it!