What I harped on in many of my posts were what I called “academic participation trophies”, achievements your parents could brag about to their friends, but weren’t very useful for getting a job as a programmer, stuff like getting a masters degree1, having top grades, or graduating early. All of these sound vaguely impressive, but don’t actually matter for becoming a successful software engineer.
However, no matter how much I’d tell students this, they would keep on chasing these awards. I’d tell them that grades don’t matter for getting a job; they only really matter if you want to get a PhD, and they’d immediately say “well hmm maybe I should look into a PhD”. Which, no! That’s almost certainly not what they want. I came to realize that they needed for these grades to matter. That was the a priori assumption. It was entrenched in their mindset.
You see, any student who has matriculated at even a moderately prestigious school has had to play the college admissions game. This game involves, surprise surprise, almost entirely academic participation trophies: Good grades, high test scores, and a whole slew of extracurriculars. Students spend their formative years playing these games and get really good at them. I could spend a whole essay regaling you with the tricks of the trade, whether it’s lying about being captain of the track team (nobody will check2!) or taking 3 years of SAT prep3, or claiming you lead the development of your school newspaper’s website when in reality you wrote two lines of code. Okay, I may be a little…aggrieved about a couple of these.
By the time students get to college, this game has solidified in their mind. It’s how they see the world. And so, they continue to chase these same academic participation trophies. Some get masters degrees; some double-major; others decide that medical school or law school is the right answer. I don’t mean to say that everybody who takes these paths is participating in a Sartrean bad faith farce. Likely many are genuine in their pursuit. But it is unfortunately common that many are just playing the game they have learned to play.
And really, there’s nothing inherently wrong with playing this game. There’s no correct way to live one’s life and it’s not like they were hurting people in this pursuit. However, what frustrated me was that a lot of people didn’t seem to recognize that they were playing this game. I could be wrong here. Maybe this wasn’t the case, and everybody actually knew what they were doing all along. But it didn’t seem like that. Part of my goal with my old blog was to let people on to the fact that there was a different game to play. And that they could even take a break and not play a game at all!
Anyways, I’m no longer in college and so I don’t write about that anymore. But the concept of games and which game people play isn’t restricted to college. In fact it’s a really important concept in one’s career.
Different people want to play different games. Some people want to play the game of programming. They want to spend their time engrossed in the technical details, in architecturing the best platform that’s scalable, backwards compatible, and elegantly written. Other people want to play the product game. They want to build stuff that has users, and they want to make these users happy. They’ll spend time talking with users and figuring out the optimal way to satisfy them. Others may want a hybrid of the two.
When you’re choosing a place to work, it’s really important to make sure you’re on the same page as to the game that you should be playing. If you want to spend your time debating the optimal way to implement an algorithm, you might not want to join a startup that wants you to talk to customers every day. Ideally, the company should be aware of this too. After all this is what most companies mean when they talk about “fit” or “alignment”. However it does appear that a lot of places don’t take this into account. They assume that any developer with the technical skills must be good at playing their particular game, and furthermore, must want to play their game. It’s not easy to understand the games other people play.
Likewise, many developers don’t understand that there are different games. Much like students who come from high school, and continue to play the game of academic participation trophies in college, many developers play the game of their old job at their new job. Namely, if you’ve been working at a regular company, I.e. not a super early startup, the game is of good code quality, careful architecture, scalability and so on. At an early startup? Not the priority. You need users, and product market fit. Everything else is secondary. It doesn’t scale? Fine. The code is janky? Fine. You could fill graveyards with startups that had good code and no users. It doesn’t matter how clean your code is if you don’t have people using your product.
This can be even more dangerous when the founders are the people who are playing the wrong game. Maybe I was too naive, but I used to assume that in order to raise a bunch of money, a founder had to know a bit about how to run a startup. Turns out that’s not necessarily the case. A lot of founders are judged on their prior accomplishments, which are often success in different games, games like big tech or open source.
This is why startup accelerators like Y Combinator have noted that ex-big tech employees can struggle to adapt to startup life. I’m sure many do it just fine, but in that process, they need to understand that their previous job, working at a behemoth doing billions of operations a day, floating on a cloud of money generated by the most profitable economic engines to ever exist, is not in any shape or form the same game as their new job. This is especially true if they worked in a cost center where there was no focus on profit or even sustainability.
This isn’t to say that you should actively avoid good code, scalability and all these nice things. But these goals should be secondary, they should not dictate your time. They should be dropped when necessary in favor of shipping and getting users.
I want to emphasize that there are many valid games for people to play, and indeed most people play a hybrid. But there is certainly a core game, a core priority that depends on the person. My advice: figure out your core game, and then make sure it matches up with the game other people want you to play, and you will have a lot better of a time working with, and hiring people.