New Firmware Has Arrived

Personal reflections of experience with the software industry, career decisions, and future aspirations.

New Firmware Has Arrived

Nowadays, it’s the time where the first-ever trace of light is showing up into my life—from almost I think seven years blindly going through the darkness with temporary flashes of hope—you call me moth, and it would not be wrong at all.

From today’s point of view I would come down and kick myself for crying over nothing wasting time —, reasons behind it were even more cringe than I expected—crying over taking decision in a direction which I have wanted to go just to prove something to me or others—yet, by doing so today I see this as literally self-harm, but it was what it was man, and I hope lessons like this one aren’t forgotten in one’s lifetime.

Impostor Syndrome can be costly

I came to startup with a lot of hopes for a normal work environment (at some point it was a recognizable start-up in Poland), been quite confused about experiences with previous companies where care for software being built was non-existent to the point where running code locally for checking out functionality was rare to see. (Not mentioning tests, CI/CD pipelines and quality assurance of the product.)

I was greeted with a team of people who were quite odd, but since I was the youngest in the team, I thought it was just me having impostor syndrome and decided to hear older ones (who were in the industry for 10+ years) incl. architect and CTO. I am welcomed with even storming sessions which were quite off-beat to what COO and CEO were saying about the product, and I felt like we’re building the wrong product, but I was told that I should not worry about it. People judge people like me for being “one that follows all the rules” and “does things by the book” yet I am nothing like that person — I just think you should understand rules before you start breaking them, and some rules simply didn’t be worth breaking - but then I see people doing DDD by the book and completely ignoring business needs just because business is too dumb to understand DDD and communicate it properly, yeah… They are. But you know what? After you come to them and start talking like a human being with minimal willingness to understand what they want, you can actually see they don’t want to be dumb, just like you people have never been seeing any software product in production and have weird imagination of how a client / customer sees things.

Then come series of bad decisions which I have seen aren’t going with the direction of product and company (where there was pressure of time by investor relations), and we had one of most complex nonsense architecture approaches with >40 SQS queues, lambdas (and single package.json with 100+ dependencies), GraphQL API nad system which nobody had a clue how to deploy. I got mad about it at this moment, decided it is best to take a step back (rather for a step forward) and rewrite the whole codebase into something that is actually deployable (single docker container), and with time I have been able to convince people that this is the way to go, and we have been able to deploy it in a matter of weeks. It was a great feeling, but I still was struggling with the fact of drastically raising ownership of codebase for myself.

I didn’t stand up for myself once (due to fear of being judged) and once realized that decision which I could stop was wrong and self-destructive to the company but man… at what a cost at the end. I have been working for almost 1.5 year on a codebase which was not only unmaintainable but also untestable, and I know it’s my own fault for not standing up for it before it was too late. I had my own moments to improve this bad situation, such as writing >5000 LoC of tests for business cases over the course of weekend once production has been broken once, then holding major responsibility for production and being on-call for 1.5 year, which was quite a lot of stress. However, I have been able to handle it.

Maybe it was right that I am too young, because at some point I fall into picture of arrogant asshole, but I don’t think 0.5$ per staging deployment is cost of a healthy software system and architecture, even more when nobody was able to respond to question “how much traffic is going through previous iteration of system that is deployed” - to which I heard “system must be scalable” so yeah. I guess AWS Lightsail wasn’t enough scalable for a system that later on happened to have 30 RPM on average.

Depression, Burnout, and Resignation

I have been working in the software industry for almost 7 years, and I have seen a lot of things that I would never expect to see. I have been in companies where people were more interested in playing politics than actually building software, where the focus was on meeting deadlines rather than delivering quality products, and where the culture was toxic and unwelcoming. Never been welcomed to any full-time position, until I come actually overqualified for the position I have been hired for, and then I was welcomed with open arms. It was a great feeling, but it didn’t last long.

I have been working in a company where I was the only one who cared about the quality of the code, the architecture, and the product. I was the only one who was willing to put in the extra effort to make sure that everything was working as it should. I was the only one who was willing to take responsibility for the codebase.

I have zero tolerance for people who don’t take responsibility for their work, and I have seen too many people who were willing to blame others for their mistakes (including me at some point). Cutting corners, not testing code should not be rewarded with “good job” as the fact something is delivered on time doesn’t mean it is good and should not be respected to any extent. Therefore, I openly hate the whole software development industry. It is not about building software, it is all about money, deadlines, and bullshit meetings that nobody cares about (but nobody will complain as this is not “work”) — therefore, it’s time to take complete responsibility for my own software, style of programming and taste of software engineering.

Future Aspirations

After all, I want to be working with actual people who can show a minimal amount of love towards software engineering and software instead of just being “nice” to each other, because I have seen enough of this niceness that is just a mask for incompetence and laziness. I want to be working with people who are willing to learn, who are willing to take risks, and who are willing to fail. I want people who are in the same team with me, because, even though we’re playing in the same industry, it seems like we’re playing in different teams, and I don’t want to be part of it anymore.

Then I have been crawling from place to find a job a place where I can be myself. In this particular case it was me spending 12h/d on work just to keep a system glued together, so others can have their time off and coming to work to fix typo once a week. It’s just missing the truth of what software engineering is about, my job might not be top of the line when it comes to skills needed, but this doesn’t mean there should be no care about software.

Don’t get me wrong, I don’t complain about working hard or that competence has its own price. With a lot of people I have worked with, never had a problem with somebody calling me insert bad word here or saying that I did something wrong. I know it’s normal, but dealing with particular group of people is even more challenging, as there is no way to communicate with someone who sees whole software engineering as a translating procedure said by business into code, and then you have to deal with people who are just following orders without any understanding of what they are doing. I have seen this too many times, and I am tired of it.

Which changes my perspective on LLMs and AI in general, if investment of one ends up in translation of details said by the project manager into code without any willingness to understand what is being built and responsibility for fails, then I don’t see any point in having a human being in the loop. Yet, my word is going to be disrespected by such kinds of people because “reddit says otherwise”, where kids like me, we’re ranting out on Reddit when they were 16 (I know how many trolls I have posted on Bluelight, Reddit and others).

I had to leave, and I will never look back

I could overwork myself, but my recent experience backed by 68:1 ratio of codebase ownership isn’t way of doing things - especially when you’re lead responsible for setting up direction and ensuring that everyone is on the same page, and since getting on same page was impossible due to communication gap and intentions of ones signing in to responsibilities of roles I have decided to step down from my position as a lead engineer, I cannot take responsibility for everyone without destruction of myself (considering fact 12h/d wasn’t enough at some moments).

I can’t lie, being on guard of production was a first-time where I have been feeling alive, I had something for what I could care and protect it from breaking, however such kind of emotions isn’t something reflected by people I have worked with, and I think we all can predict how such a situation can end up - with burnout, depression, and resignation. I have been there, and I don’t want to go back.

I was promoted to my position by expertise I have gained over the years, which cost me a lot of broken freelance projects, dropped personal projects and time spent learning and researching correct way of solving problems and building software; it was more than I could afford. I will never let a person at similar age stand himself next to me thinking one is **better—**as a human beings we all are equal but business for what it is, is competitive environment, no matter somebody wants it or not - it’s just a game.

With all the hate to software industry that I have felt over the years I decide to quit game and make one on my own rules - seeing all the waste of computing and poor technological decisions from company to company I don’t even think it’s necessary to hustle - most of the companies seem to be self-destructive with act of love for product they are building, blinded by ROI - and for me what matters now is how my own time can affect other human beings in a positive way by my own style which is software engineering and solving problems - then I will probably continue building my own company with foundations in cryptocurrency (DAO) and try out novel approaches for revenue-sharing along team members so nobody will be left behind or rather be responsible for own future.

Besides, building the organization I have spark to contribute into open-source projects beside ones that I currently have; There is a long road ahead of me that probably land in programming language design and compilers. Therefore, I start experimentation with languages like Rust, Haskell and OCaml which would be a good starting point for understanding of systems programming and compilers. My end goal is to be able to contribute to future generations of software engineering by the creation of experimental programming languages and DSLs for narrowed purposes.

With every chapter in my life I have been entering with a new username and digital identity, this one has been made in a time where I was heavily into stock and cryptocurrency markets—however, with a chain of positive trades and built financial stability (more or less) I feel further fighting is just begging for bankruptcy. (It’s almost inevitable this will happen.) I will probably come with one last trade in this chapter of my life, which would be short-selling of NAS100 as quite the remarkable end of identity which had bullish sentiment towards financial markets and trading.

And for the architect who has been the precursor of my burnout and said to me “I know people like you, and they burn out quickly” - I no fucking wonder if they have to cover up years of technical debt and poor decisions made by astronauts like this - I feel sorry for him. I hope he will come back to the game.