Thinking fast and slow, and like a programmer

Paul Andrews
Aug 19 · 3 min read

“Programs must be written for people to read, and only incidentally for machines to execute.” — Harold Abelson

My life in code is still young. Months old, really. But I’ve come to realize Harold Abelson’s quote over this short period. It’s part of a broader area of coding that I’ve been giving some thought to — how programmer’s think.

Maybe it’s the full-time commitment to learning code. Maybe it’s the fact that I’m digging deeper into JavaScript than ever before. Maybe it’s out of necessity. Whatever the reason, I believe I’m learning more about how programmer’s think and seeing more of it in myself. Hopefully, further cultivating it with every glance at a passing thought.

So what in my eyes, after a few short months of training, characterizes how a programmer thinks? Of course there’s logic that underlies anything written for a computer to read. But more nuanced is the need to write with consistency, organization, and consideration.

I first learned that I must stay consistent to keep my code sane. How I think about functions, variables, properties, and basic markup has to be consistent across projects, elements, and even line-to-line. It makes both my thinking and output flow with greater ease. I admit, it might even help keep me sane as well.

Keeping my thinking organized certainly contributes to that too. I think ahead of time of how I want to style a project. I think about structuring my JavaScript in an efficient way. All in all, thinking about how to achieve a specified objective in an organized manner means that my code will be organized as well. Simple as that.

Thinking ahead and staying organized fundamentally means being considerate as well. I’ve considered several hundred factors, perhaps to a fault, when putting together a project. How might I code this to achieve what I want? Is this the most efficient way? Are there accessibility concerns I’m not addressing? Is my code and commenting clear enough for other developers to understand my thinking?

That last thought is crucial. I’m learning that a programmer must be considerate about what they’re doing and why and for who. Hopefully, I’m becoming more considerate daily in how I think about code.

Is months of coding really enough to change how one thinks? I believe so. But my progress here has been more than a few months in the making.

I’ll be the first to admit that my thinking was often not very consistent nor organized as a teenager. However, I did have a knack for thinking broadly and considering several things at once. I was drawn to history and it’s way of thinking as a result. It’s way of assessing cause and consequence. How it values every perspective into a complete narrative of the past. I still love that way of thinking about the world.

But it’s fundamentally different from thinking as a programmer. Where the historian researches everything in arguing for a reasonable account of the past, the programmer thinks about how best to achieve something tangible. That’s a huge part of what I love about code so far.

Economics and by extension mathematics (Economics was my minor in undergrad) are similar to thinking like a programmer. My experience in studying those disciplines have helped me to become a better web developer. Or so I think. And it’s for that reason that my journey into this way of thinking has been longer than a few short months.

I’m grateful to be in a position where I can think in this way everyday. Think to solve challenges. To problem solve. And one day, to create a better internet for all.

Paul Andrews

Written by

web developer || Toronto || “The struggle itself toward the heights is enough to fill a man’s heart.”

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade