To say a little more, programming is the thing that resonates for me most strongly with the above description of baking as not ritual. I notice it because there are lots of people who learn to program by ritual. They do well enough to get jobs and become my coworkers, but then they also write code full of cruft because they are programming by ritual rather than through deep understanding.
The classic examples of this that come to my mind are things like people thinking the iterator variable on a for loop must be named i or else it won’t work, or struggling with sed because they don’t realize they can pick the separator character on each invocation, or thinking they need [technology X] because they heard successful businesses use [technology X].
To add to this, I’ve noticed something that I do when I’m programming is rely on various constructs/built-ins that I have a solid gears-level model of. I often find myself unwilling to use functions/constructions where I don’t understand why they do what they do because I’m worried that the code might cause unintended effects that cause bugs, especially since debugging is extremely difficult without gears-level models.
I think the ideal programmer maintains probability distributions over whether or not they understand what various parts of their code is doing. If there is a bug, then they have some weighting over where the bug probably is, enabling faster debugging.
I’m in the midst of a career transition into computational biology. I taught myself coding at a young age and find it intuitive, but I’ve never worked in a tech job before. This reassured me that if people who don’t know that an iterator variable doesn’t need to be named “i” to work, that I can get a job in tech too, since I’m at least beyond that. Thanks :)
On the other hand, not knowing this might be like the 2-4-6 problem, where people just never thought to test this assumption. It would be entirely possible for a programming language to limit you to “i” (although nested loops would get weird). I wouldn’t call this a lack of conceptual knowledge, as much as one thing they haven’t tried. Having bad naming like this is bad [style](http://paulgraham.com/taste.html) , in my opinion, but doesn’t mean that whoever doing it must be a bad programmer.
To say a little more, programming is the thing that resonates for me most strongly with the above description of baking as not ritual. I notice it because there are lots of people who learn to program by ritual. They do well enough to get jobs and become my coworkers, but then they also write code full of cruft because they are programming by ritual rather than through deep understanding.
The classic examples of this that come to my mind are things like people thinking the iterator variable on a
for
loop must be namedi
or else it won’t work, or struggling withsed
because they don’t realize they can pick the separator character on each invocation, or thinking they need [technology X] because they heard successful businesses use [technology X].To add to this, I’ve noticed something that I do when I’m programming is rely on various constructs/built-ins that I have a solid gears-level model of. I often find myself unwilling to use functions/constructions where I don’t understand why they do what they do because I’m worried that the code might cause unintended effects that cause bugs, especially since debugging is extremely difficult without gears-level models.
I think the ideal programmer maintains probability distributions over whether or not they understand what various parts of their code is doing. If there is a bug, then they have some weighting over where the bug probably is, enabling faster debugging.
I’m in the midst of a career transition into computational biology. I taught myself coding at a young age and find it intuitive, but I’ve never worked in a tech job before. This reassured me that if people who don’t know that an iterator variable doesn’t need to be named “i” to work, that I can get a job in tech too, since I’m at least beyond that. Thanks :)
On the other hand, not knowing this might be like the 2-4-6 problem, where people just never thought to test this assumption. It would be entirely possible for a programming language to limit you to “i” (although nested loops would get weird). I wouldn’t call this a lack of conceptual knowledge, as much as one thing they haven’t tried. Having bad naming like this is bad [style](http://paulgraham.com/taste.html) , in my opinion, but doesn’t mean that whoever doing it must be a bad programmer.