3 ms·
I think a large part of being a good engineer is similar to becoming a good writer with the key difference of being a good writer on a paper that 10 other peopl
by bern4444 4y ago
I think a large part of being a good engineer is similar to becoming a good writer with the key difference of being a good writer on a paper that 10 other people are also helping to write.
So the challenge isn't just in developing the skill individually, but also collectively. No engineer is ever working alone on a project at work (and if they are its likely temporary).
Like prose and literature there are various styles, personal likes and dislikes, ways of problem solving etc.
Schools are concerned with imbuing in their students the skills to get a job. No fresh out of college employee is going to be the best of the group they join. It's impossible because the group they are joining will already have those same people but who also have more experience. School has to teach enough to make their graduates employable - often in the context of being at least on par with other schools curriculums so their students aren't at a disadvantage in the hiring pool.
I'd be surprised too with your assumption that schools don't have practical programming assignments that give students time to write code and develop their own style.
Unlike reading and writing, which we start learning extremely young, software is only exposed often at the beginning of college with just 4 short to learn and practice. It may also not be the sole focus.
Being a great writer requires the perspective of a reader, which is also difficult to map for teaching software - learning to read other people's code and write your own code in a way that is easy for others to read let alone modify and maintain is hard.
There really is just so much to learn and 4 years isn't enough to do it all. Schools have to balance the breadth and depth of different subjects so students can understand what's out there and also be on par with students from other schools.
That's why there is so much room to grow in this industry (like many others) from associate to mid, to senior, to lead, to staff and then principal/architecht/etc. Plus all the specializations.
- saltcured 4y agoEdit: 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".