Seven years ago I wrote an article entitled “I hate puzzles: am I still a programmer? This article resurfaced a few times over the years on Reddit and Hacker news. A year ago I even appeared in a podcast because of it. The premise was roughly the following: I’ve been programming most of my life (since I was 9), and at the time of that writing, started to look for my first full-time industrial job. Many of the tech giants interview primarily testing algorithmic puzzle solving skills — so I faced an identity crisis of sorts — am I really a programmer if I don’t like such things?
The popularity of the article made it clear that there are many more people “like me.” That was good to hear, of course.
But the key question was: is not liking puzzles a blocker for a successful career in software development?
For this reason, I thought I’d share a bit about what happened to me over the last 7 years, to see if things worked out after all, or if today I’m a giant-ass failure eating old crap out of a dumpster.
I suppose answering this all depends on your definition of success. Did I end up in one of the tech giants? I did not. Did I try? A little little bit.
About 4 years ago I thought: “screw it, I’m going to try to get into Google.” And you will never believe what happened next. Actually, you will, but that’s not the cliche headline.
So let me start there.
I decided to finally respond to one of those Google recruiter emails and apply for a job as a Developer Advocate in London, something I always considered close to my skill set and interests. But like any Google job in engineering, this role, too, includes the usual suspects of technical questions. I knew this, so way too late I started to work through parts of the “Cracking the Code Interview” book. I later found out others start preparing for their interviews many months in advance, I started about a week before or so. Doing the exercises in this book was like reliving the first two years of my studies, specifically the parts I did not like at all. But hey, it’s Google.
I had a phone screening, I passed, then was invited to the London office, then had 4–5h of interviews after a night of no sleep (they put me in an excellent hotel the night before, but for the first time in my life whatever I tried I couldn’t sleep). I think I did quite well with most parts of the interviews, but the “technical” questions were a struggle. I bet I signed something ensuring I won’t disclose what they asked, but (ironically) you can Google this stuff :-)
After a few days, I got a call saying that I was highly rated for most aspects, also I came highly recommended from the the people I know at Google, but I failed the technical part. So it was a “no.” Funny enough (for some definition of “funny”), about a week later later I got another call, because apparently there was some internal pushback, resulting in yet another tech-only phone screening, but the final decision was still a “no, please try again in a year.”
Giant slap in the face.
Too bad. Today, years later, I think it was for the best, considering what our life would have looked like in London (small kids, long commute), but it would have been interesting for sure.
So, what did I do instead?
However, a few months in, I got my first glimpse of what my career would become.
At the time we had major stability, quality and reliability issues. Basically the (node.js) backend would crash constantly and basic functionality like loading and saving files in the IDE wasn’t reliable. My code completion was getting better by the day, but given I was building on a very unstable foundation — what was the point? So I “shared my observations” (= complained) with the CEO, and in a true startup style he said: “ok, go fix that.”
My first attempt was just to do this all myself — trying to fix things, scale the system, but this wasn’t sustainable. I needed to sign up the rest of the team. Long story short, within a few months I was promoted to VP Engineering and spent my time leading our development teams and spent little time coding. I fully understood most of what was happening in the system at a technical level, but no longer wrote the code myself.
I joined a later company, STX Next as a Python developer, observed a gap, was promoted to team lead, showed a different way to approach things, was promoted to VP Engineering responsible for around 100 engineers. Then, at Egnyte, started with a small, stable team as engineering manager, contributing code. Moved on to a team developing a new product, got that close to launch the 1.0, saw an opportunity to take over the core teams that produces their main product and ran that. At OLX I also started a role that involved coding initially, but as my scope has increased — less so.
The original question was: do you need to like puzzles to be successful in software development? I’d dare say no. Except for this one interview at Google, I never felt my lack of puzzle solving skills were hindering me. In fact, the roles I’ve had over the last few years gave me a pretty broad perspective on the type of software projects that exist, and very few rely on such skills. As a result, I also make sure that none of the interviews we do with candidates rely heavily on testing such skills, I still think checking for this is silly and would result in many false negatives that we cannot afford.
The reason I decided to go into leadership roles was because I realized that they allow me to have a far greater impact than just me typing code really fast.
Looking back, I’m very satisfied with my career so far. The only path that my puzzle-hating personality blocked was Google, but looking back at that opportunity, I’m not sure I would have been able to grow at the pace that I have in other places. I wouldn’t have been able to make as much of an impact there.
At Google, I would have just been a tiny piece of an enormous puzzle. I bet I would just have hated that.