3 ms·
Edit: I decided to leave this as is, but with misgivings. The tone may seem off, as it does to me too on re-reading it in context as a reply. I think I'm echoi
by saltcured 4y ago
Edit: I decided to leave this as is, but with misgivings. The tone may seem off, as it does to me too on re-reading it in context as a reply. I think I'm echoing very similar sentiment...
I also think writing good code is a skill or craft like writing prose. But there are also drastic differences. The analogy falls apart in many ways. While it has a textual or symbolic aspect, in other ways programming is more like other crafts where the novice starts at zero, rather than with decades of relevant listening, speaking, reading, and writing.
Good code get consumed and maintained by others in a way that most prose does not. Sure, there are editors and published revisions, but not nearly the amount of modular reuse and refactoring. Natural language reuse happens in other indirect ways that benefit from the mental plasticity of the audience. You invoke ideas or idioms from your influences, but not as literal embedding and reuse. A good writer does not need to engineer their prose to be easily lifted and reused by a different author and an unanticipated audience.
Another thing is that code is mostly consumed by an audience who do not even see or read the code. They only use the resulting program. Whereas prose consumption is in the same essential form as it was authored. You don't naturally encounter code examples even if you spend your early life using programs. I think this is perhaps the biggest problem. Many may have internalized many examples of natural language utterances by the time they reach college-level classes. Few, if any, have similar exposure to code. Most exposure is at the level of kindergarten reading exercises. See factorial run. Run, factorial! Run!
So even if college classes are similarly structured and staffed, all the participants have far different depth of exposure at the beginning. Your term projects are too short to experience programming in the large and to gain experience. Most of your teachers are grad students with only a few years extra exposure than you have, and most of that similarly shallow. Even after decades as a professional practitioner, one is still learning interesting and hard lessons about what it means to program well. And these lessons are often personal and idiosyncratic, as we cannot usually separate our coding outcomes from other economic concerns which may not care for or reward "good programming".