| "You don't really understand something until you can explain it to a computer!" / "If you can "explain" something to a computer then you've understood it, you don't need anyone else's confirmation of your understanding." This were the breakthrough sparks of enlightenment for me, even if at first I only groked them viscerally... only decades later I found the words for this. Programming is a tool for thought, a tool for thinking in a very peculiar, rare and valuable way. It doesn't matter if you'll rarely/ever use it to actually write usable software. In other kinds of thoughts, we can always glance over stuff and be misleading or imprecise without even realizing it. When you put something into code and something really dumb, eg. a computer, executes them, you have a rare chance to actually se how incredibly bad your thinking and your instructions and your communication in general are! (And that it's good at making you feel stupid... this alone is good reason to make everyone learn it, most people think themselves way too smart and don't understand how complex everything is around them! Math used to feel this niche, but programming makes it more visceral - when you've learned a programming language well enough, have access to a powerful computer, have a known to be solvable problem in your face - but just not succeeding to get at a working solutions and realizing it's only of how bad the shitty chunk of jelly in your head is at thinking, that's enlightening. Making you lose some of that self-confidence engendered by your otherwise rich education and artistic taste and developed culture and whatever not... realizing that no, neither that nor anything else will make you less dumb.) Learning about computation helps up think better and helps us better model other people in our heads. This is why I think computer science + practical programming should be mandatory for majoring in literature, linguistics, psychology or philosophy! </unpopular_and_mildly_hated_opinion> |
The good developers that thought things through before getting into the instructions for actually making the sandwich would start by getting together the ingredients and tools.
Much of programming is thinking things through from start to finish.