code flow

coding is like flying.

Residential backyards seen from above at sunset.

coding is like flying. Until it’s not, which equates to hitting a literal floating brick wall in the middle of the sky, passing around it, and then immediately hitting another one.

I’ve watched numerous of my closest friends hit enough of these walls and give up on coding. It’s too frustrating for them. Understandable yes.

I know I’m clearly biased as a software engineer, but for these people who have given up, I wish on their behalf that for at least one instance in their life, they can achieve coding flow and feel just how wonderful it is.

I come from a background of architecture. Before the age of AutoCAD and other CADding programs, one had to draw plans on paper, and use these monolithic copiers for this blue paper that released carcinogenic fumes into the air. If you made one mistake you had to start all over with a new sheet of mylar. Since the advent of CAD, many of these processes have become irrelevant and the pace of work has increased: once you made a mistake, you just pressed ctrl+z.

This is the workflow that I grew up with learning architecture, but not my dad, who grew up in the age of mylar. To him, this is an achievement for the industry unlike any other: one that frees the user to be more experimental in their process and work at a more reasonable speed without the overarching fear of making an unerasable mistake.


Now imagine coding. There is virtually nothing standing between you and the completest version of the finished product that you could imagine besides your keyboard. In theory (and in reality for many of you vim and emacs users), you could just sit down and type on your keyboard for however long, and finish your work in one sitting. Now in practice, real work often involves a lot more collaboration and meetings and planning and bug fixing and generally not understanding what’s going on.

But the fact that the product you are making is just characters in a sequence on a keyboard is such a powerful concept because it means that there is virtually no upper bound on how well you can flow.

There are moments where you know what to do and how to do it and you just go and those moments are what I chose this profession for.

So if you are thinking of giving up on computer science for good, try your best to at least get into one of these states and see how it feels. Try learning something small that seems interesting to you, and doing some extension or reimplementation or whatever with it. The most important part should be that you should feel confident that you know how to do it. Then just go for it. Code it as far as you can with the knowledge that you have, looking things up when necessary.

And then sit up and see how you feel. How did that go? I can’t predict how you, my reader, will react to this situation, but if you are anything like me, it might feel good. And you might want more of this. Well champ, welcome to the club.

Originally published on Substack. View the source version ↗

Comments