Marcin Bunsch

Marcin Bunsch

Code Mechanic at at Breakout Learning

< Back to home

Every developer needs their Kobayashi Maru Moment

Kobayashi Maru, image source: https://www.pexels.com/photo/a-coffee-cup-and-a-book-on-a-coffee-table-28379134/

With the endlessly accelerating growth of AI tools comes a problem of using AI without understanding the problem. I recently read this article by Namanyay in which he does a good job conveying the problem of newer developers jumping over learning opportunities to get to the solution.

It’s a huge temptation to move fast and get to the answer, and we all do this from time to time, but it’s specifically bad when you should be grinding on the fundamentals to build the foundation of your understanding. I think that Namanyay points it out well in his blog post.

There is another layer to it though, one that I like to refer as the Kobayashi Maru Moment. I believe each person should experience it in their professional career to get better. It’s where you fail so hard, your ego gets pummeled into the ground. You get into a no-win situation, you have to concede defeat and deal with the consequences.

It might be making a bad architectural decision which bites you 1 year later. It might be a bug that causes havoc because you did not think the whole problem through. Or it just might be youthful arrogance giving a false sense of security.

The idea of Kobayashi Maru was to make cadets experience a no-win scenario in a controlled environment. With junior devs, that usually happened by giving them free reign on a non-critical project. If they failed, it would feel awful to them, but the system would not suffer. The goal was to instill the humility that every problem they face can have hidden complexity and traps, which would make them a better developer moving forward.

Now, AI takes it away - it shields you from making small-scale mistakes, it takes away the opportunity to experience embarrassing, but non-critical failure. It takes away opportunity to feel humbled. It makes you feel omnipotent, but that feeling is a lie.

By skipping that level, you go straight into real-life failure, and this is where shit hits the fan. You end up deleting production databases, costing real money and getting fired. Sure, all really good learnings, but at an expense of someone else.

In the end, it’s a question of accountability - seniority usually doesn’t mean someone can code better or faster, but it means that you accept the responsibility that comes with decisions you make, because you’ve been there, you got your ass kicked and know that feeling. And you don’t ever want to feel it again.