DEV Community

Luís Silva
Luís Silva

Posted on • Edited on • Originally published at luissilva.eu

Software is Tetris

Software and Tetris have a lot in common.
No, I am not saying that the best software was written in 1984 or by Russians.
What I am saying is that playing Tetris feels a lot similar like building software.

So far I was not able to break the metaphor.
It is so powerful that can even work at multiple levels of abstraction.

A quick example: Tetris feels like a never ending game, and so does software.
From small personal project to big budget, company powered ones. We can argue that it seems that there is always something to do.
A feature to implement, a feature to add, if we want the ball would always keep rolling.
Until eventually we give up or move onto another project.
Basically until you lose and Tetris wins.

Tetris is always easier at the starting point, with a clean slate.
This goes without much to say, you can verbatin replace Tetris with Software in the last sentence.
Sometimes you even throw the game when it gets too difficult in order for you to start a new one from the start.
We all have that git repository with that old project that we abandon in order to seek happiness elsewhere.

When you start a game of Tetris you are super focused, planning your every move optimizing every placement.
Just like building software, you start planning your folder structure, putting everything in their place, but for how long?
Sometimes you need to go fast.

Speed and perfection, don't go together.
This last one is true for Tetris, for software and for life in general.
when building software if you go too fast you start making mistakes, taking shortcuts.
Basically, you start leaving holes in your blocks.

Sometimes you cannot be perfect.
In order to move forward, you need to be able to accept less than perfect.
Done is better than perfect.
Sometimes, you need to use that L piece to close off a few lines.
If you keep waiting for that I piece, that perfect Tetris every time you might end up throwing your whole game.

What about working with others?
Just play Tetris 99 for a while and you have a pretty decent picture of what it feels like building software with other people.
You think you have the perfect blocks? Those perfect lines ready for that big Tetris?
Baam! Now you have your bits and you need to integrate this new batch of changes from this random guy.

There is always that guy who is better than you and can make lines faster than you.
Probably is just he is doing this for far longer than you.
Practice makes perfect.

You see? Tetris and software are basically the same concept.

Tetris gif

First published on my blog.

Top comments (0)