Byt4lion
Posted on July 24, 2024
For nine years, I've been a software engineer. This article is an open reflection on my career, hoping others might glean some insights. I'll describe my journey from my first job through subsequent positions, including every interview I've taken. I'll also honestly disclose my earnings at each role. Ultimately, the success of your job is measured by how much someone is willing to pay you to do it. While money isn't everything, it's right up there with oxygen.
I'll use placeholders instead of mentioning the companies I've worked for, but I will name the companies that rejected me—after all, they've already said no.
TL;DR
- Graduate Engineer - Big Networks: $35,000
- Software Engineer - Big Bank: $72,000 base + $20,000 bonus
- Senior Software Engineer - Tech Start-up: $85,000 base + $85,000 equity
- Software Engineer - Big Finance Alpha: $200,000 base + $120,000 bonus
- Software Engineer - Big Finance Beta: $300,000 base + $450,000 bonus
These figures are in dollars, though I've only worked in Western Europe. Read on to learn more about my journey.
Background
I hold a BSc in a STEM field and an MSc in Computer Science. I didn't graduate from a target school nor excel academically; I was about average in my class. However, I was probably the best engineer among my peers. I disliked writing essays, and many aspects of my course didn't interest me. So while I was a poor student, I was an excellent programmer.
My lackluster academic performance stemmed from finding university boring; I just wanted to build things. I've never cared much for academics—too many run-of-the-mill know-it-alls—but I digress.
That First Job
During my final year at university, I applied to 20 companies. Twelve never responded, six wouldn't sponsor a visa (I was an international student requiring sponsorship), and two granted me interviews.
The first was ARM, the chip maker. It was a group interview with other graduates, and we were put in teams. Honestly, I found it somewhat condescending, but I needed the job. The tasks weren't engineering-related but focused on reasoning and logic—the sort of stuff a Mensa member devises to justify their self-worth because nobody else cares. There was one technical one-on-one interview, which I failed miserably. They asked about compilers, semaphores, and mutexes. I thought I was a good programmer; turns out I was a novice. Needless to say, ARM rejected me.
Next was Big Networks. Similar to ARM, it involved a group interview with other graduates. The tasks were less condescending and more practical. There was also a one-on-one interview where I shined because it was less technical. Honestly, I think they just needed people, and I needed a visa—a match of supply and demand. After some time, Big Networks offered me a graduate role with a starting salary of $35,000 a year.
I made one important realization: I was bad at programming. I thought I was good because I was better than my peers, but it turns out we were all bad; they were just worse than me.
Some additional context: when I was interviewing, entering the tech industry was much harder due to fewer open roles for graduates. There were far more graduates than jobs. The situation for current graduates is still challenging but slightly better. Finally, I never did any internships.
Life at Big Networks
My job overwhelmed me initially. Programming in university is nothing like the real world, and I don't think universities prepare you well for it. Fortunately, my first manager was skilled at training new graduates. Within six months, I became productive. Sadly, after those six months, my manager left the firm, and my new manager was difficult to work with. He would micromanage my work life. A nice job turned into a nightmare. He monitored the exact times I arrived at and left work, enforced his special coding standards on me (not the company standard), watched me code, and often told me I didn't understand SOLID or OOP principles without explaining further. Needless to say, I couldn't take it anymore and started looking for new roles.
My First Job Hop
I began searching for a new role, but only banks seemed to be hiring, presumably because they had fired everyone in '08 and now needed people again. I interviewed at Morgan Stanley, making it to the final round. One of the engineers sat me down and asked me to design classes representing an elevator. As I explained, he typed on his computer. Once I finished, he turned his screen to me, revealing the outline of the classes I had described. He then asked me to implement the elevator logic. Needless to say, I didn't even come close. This was a 40-minute interview.
A quick aside: at this point in my career, I thought interviewers must be some of the more senior and intelligent engineers at companies. Obviously, this isn't always the case, but I didn't know that then. The guy at Morgan Stanley who gave me the elevator question should never have been allowed to interview me or anyone else.
Next up was Big Bank. They had a different culture and interview process. Many questions were coding-related, similar to LeetCode but none of the hard ones. Big Bank had multiple rounds, but ultimately, I performed well enough to get an offer. They offered $50,000 base plus a bonus. I joined toward the end of the year, so the bonus would be paid soon. I was ecstatic with the offer. At the time, I couldn't imagine earning this amount of money, and it felt life-changing.
Life at Big Bank
Big Bank worked me hard—I'm talking 100-hour weeks. This was trial by fire. There was a lot of proprietary tech at Big Bank that I had to learn. I wasn't alone; everyone on my team had to work extremely hard. This led to high turnover—on a team of 12 when I joined, I was the longest-serving member at the two-year mark.
During my time at Big Bank, my salary rose to about $72,000, which felt like a great increase from the $50,000 I earned when I joined. However, my bonus was non-existent despite being a top performer according to my annual reviews. This was strange, but I was told it was because the firm was having a tough time and cutbacks were required. I soon learned this was untrue. New graduates were paid $50,000 bonuses, and many of my peers received significant bonuses. This left me feeling bitter. I was by far the most impactful member of my team but wasn't rewarded as such. However, I'm not a tree; I can move to a new firm, so I did.
The Second Job Hop
Determined to leave Big Bank, I managed to get interviews at four companies:
- Amazon (rejected)
- Marshall Wace (rejected)
- Synthace (rejected)
- Tech Start-up (I got this one)
By this point, my technical skills were good, and I was competent enough to get through most technical interview rounds. Amazon was the first to interview me. This team seemed like a great opportunity to finally join the big leagues of tech. The interview process was pretty standardized. I was asked to solve graph problems, convert Roman numerals to integers, reverse a string, etc. Amazon also mixed in many soft questions about situations I'd encountered at work, like "Tell me about a time you had a conflict with a co-worker." I completed all the interview rounds and awaited a decision. Although I was hopeful, Amazon ultimately rejected me.
Next was Marshall Wace, a hedge fund that doesn't know it's a hedge fund. They had an unusual interview process. After completing the first online technical assessment, I was invited to interview in their office (just before remote work became mandatory for everyone). I was put in a monitored room and asked to solve Python coding challenges, similar to an exam. If I failed to solve the coding exercises, I would be sent home. Honestly, I didn't really need to come to their office to code on their computer; this could've been done online. After completing these challenges, more technical challenges followed in the in-person interviews, including brainteasers and questions about data processing. In the end, I managed to complete all the technical rounds and then had two final interviews—one with HR and one with the CTO. The HR interview consisted of soft questions, but I really messed up one of them.
The HR representative asked what motivates me most to join a company. Being an honest person, I said three things: the money on offer, the offer of money, and finally, the potential money on offer. He smiled, but I could tell I had made a mistake. You see, some hedge funds feel guilty about who they are. Marshall Wace is one of them. They would prefer to think they are making the world a better place by making obscene amounts of money for themselves. After this, the CTO didn't even want to meet me, and Marshall Wace rejected me.
After Marshall Wace, I realized that complete honesty in interviews is not always the best approach. If I wanted to leave Big Bank, I needed to tell any company that would interview me what they wanted to hear. Not lie, but omit certain details. For example, instead of saying "the money on offer is what motivates me," I would say "the opportunity to grow my career, take on more responsibilities, and really make an impact, rewarding both me and the company."
I got an interview at Synthace, a biotech startup. I really liked the role, and I feel this was the one that got away. I got through all the technical rounds but performed poorly in one of the final rounds. A former Google engineer asked me to design a graph database of sorts. I botched it. Like a plane hitting a mountain, I crashed and burned. The rejection came soon after.
I was beginning to feel pretty useless at this point. Most places I applied to wouldn't even interview me, and as COVID-19 began to take over the world, many companies started pausing hiring. Then a light shone my way. I saw a job listing for a Frontend engineer on Stack Overflow. I was mostly backend at this time, but I could do both and applied for the role. This was the Tech Start-up I eventually joined. The interview process was nothing special, and I managed to get an offer. My new salary would be $85,000. I asked for $90,000 but was rejected and wasn't in a position to negotiate. The equity offered was also $85,000 worth of options vesting over four years.
Tech Start-up
I found myself working as a Frontend engineer fully remote because COVID was in full swing. My team was good, and I really enjoyed my work. However, I soon began to have a strange feeling. I was missing Big Bank. I would come to realize that Big Bank had many competent senior leaders, a deep bench, and made smart business decisions. They didn't treat me well, but they were smart. On the other hand, Tech Start-up treated me well, but senior leadership wasn't very smart, lacked direction, and failed to motivate the troops. I watched in real-time as company morale dropped off a cliff. It didn't take long before I wanted out too because the ship was sinking, and there were only so many lifeboats. This isn't the Titanic; I want to live. So I started looking for a new role. This time, I leveraged something new: LinkedIn.
The Third Job Hop
I used LinkedIn to build my network. In addition, I applied online to some companies. COVID was also nearing its end, and things were opening up again. I had three different opportunities available to me:
- Palantir (Software Engineer)
- TradingView (Frontend Engineer)
- Big Finance Alpha (Frontend Engineer)
Palantir started with an online coding assessment. Honestly, I lucked out on their coding assessment. It was about building a typosquatting detection algorithm. I had just been learning about edit distance algorithms before this assessment, so it was fresh in my mind. I completed the assessment, spoke with an internal recruiter, and skipped the technical phone round. I was in the final round, which consisted of four interviews. I was asked to design an Uber app and had to cover some other technical questions. I pretty much aced all the interviews, and Palantir was ready to make me an offer. At the same time, I had other interview processes happening and wanted to finish those first. Furthermore, something didn't sit right for me with Palantir. Everyone who interviewed me didn't seem to like being there—it's almost as if building software that helps nations kill people is a soul-sucking experience. Oh well. In the end, I rejected Palantir's offer. For the curious, it was $160,000 base + $200,000 equity and a one-off $50,000 cash sign-on.
Next, we have TradingView. The interview process was pretty straightforward, just a bunch of UI coding tasks and questions on my knowledge of JavaScript. The people I met seemed to like the place. I also spoke with the CTO, and honestly, he was great. I believe I would've ended up joining TradingView, but their offer wasn't as strong (and they didn't want to match Big Finance Alpha). Still, amazing people and a great company from my experience with them.
Finally, we have Big Finance Alpha. This would be the company I ended up joining. The interview process was long but worth it in the end. Most of the questions were UI-focused, with some algorithm questions here and there. I performed well and was offered a role. The position was something I really wanted because I would get to work on high-performance UIs, an area of interest for me. The pay also far exceeded my expectations. So I joined Big Finance Alpha. Their starting offer: $180,000 base plus $100,000 cash bonus.
Life at Big Finance Alpha
Big Finance Alpha was surprisingly nice to work for. They offered free food and lots of social events that allowed you to bring friends. I worked hard, and during my time at Big Finance Alpha, I really grew as an engineer. I was constantly trying to learn more and improve my skills. I also wanted to ensure I remained interview-ready. I had adopted an approach of always being open to opportunities. I didn't want to get too comfortable in one place or get caught flat-footed like those Google engineers laid off after working there for 20 years. I was becoming an elite mercenary—my cost was high, but I brought a lot of value. My skills were also unique. There aren't many Frontend developers with knowledge of building very fast web UIs who also have excellent finance knowledge and great software fundamentals. By the time I decided to move on from Big Finance Alpha, I felt pretty much unstoppable. I no longer needed to prepare extensively for interviews. You don't need to get ready if you stay ready. By this time, my salary had grown to $200,000 base + $120,000 bonus.
My Move to Big Finance Beta
I got an opportunity to move to Big Finance Beta via a recruiter on LinkedIn. The role was billed as a senior position, and the company was willing to pay whatever it took to get the best candidates. Music to my ears. I replied to the recruiter, and the process began.
The interview process was challenging, probably the hardest I've done. There were UI questions, system design tasks, backend questions, and deep dives into past experiences. It was quite a long process too. In the end, I passed all interviews, and it came down to offer time. I decided to shoot for the moon, and somehow it worked. I asked for $400,000 base and $300,000 bonus. I communicated that the base was really important to me. However, finance companies generally prefer to push compensation to bonuses, so they countered with $300,000 base and $450,000 bonus. I was stunned—it seems "ask and you shall receive" is a real thing.
Concluding Thoughts
After 9 years as a developer, the level I've reached compensation-wise is not something I ever expected. At my current compensation, I am able to set myself up for quite a nice life—for me and my family. What's interesting is that I see many of the juniors at Big Finance Beta who, in a few years, will likely be at the same level as me, but in half the time. It's insane to think about.
If you're interested in a write-up about how I approach interviews, answer soft questions, write CVs, and maximize your chances of getting paid as a Software Engineer, leave a like for this post. With enough likes, I'll write another post on the above topics.
Posted on July 24, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.