“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.
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.
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.