BlogJune 10, 2024Programming, mathematics, and formulating the problem
I have been programming for a long time, and the more I learn about it, the more I notice
its influence on how I think.
Programming does not only have the power to solve problems. It has the power to
formulate them — and that is the part I have come to value more. One of the most
fundamental difficulties in any technical field is not answering a question. It is
arriving at a question precise enough to be answered at all.
Every problem must first be stated in a way that can be understood, decomposed, and
acted on. A vague problem produces vague work. The practice of programming, like
mathematics, forces a kind of mental discipline against that: you cannot write the
function until you know what it takes and what it returns. You begin to break the whole
into sequential steps, each of which either holds or does not.
That discipline transfers. I use it on things that have nothing to do with code — when a
process is failing and nobody can say precisely how, the first useful move is almost
never a solution. It is a definition.
I recommend the practice to anyone, not only because it is a large professional field,
but because it is unusually good training for thinking clearly.