From mboxrd@z Thu Jan 1 00:00:00 1970 From: bakul@bitblocks.com (Bakul Shah) Date: Thu, 14 Sep 2017 23:43:31 -0700 Subject: [TUHS] really Pottering vs UNIX In-Reply-To: References: <880AF6DC-A8C8-49C3-B874-A0879406BBDD@bitblocks.com> Message-ID: <0375A2D0-4C7C-4DBB-9150-CBF0D172C7C6@bitblocks.com> > On Sep 14, 2017, at 6:24 PM, Dan Cross wrote: > > I think a better system than putting us into this rigid hierarchy system is to think of programming as somewhat analogous to writing; it requires proofreading and good editing. Some authors are better than others; practice helps a lot, writers workshops can help, seeking out advise and mentorship from more accomplished writers similarly, etc. I think programming has more in common with carpentry or some such construction related profession than writing. Often you work in collaboration with others (most writing is a lonely toil). The component you work on has to fit well with others'. Finishing on time and the cost of materials and labor matters. What you build is something people use over and over again and reply on for shelter and comfort. The structural integrity of your work matters. Overall architecture matters. Skill with tools matter. Understanding the material you work with and where it is suitable matters. There is a lot more craft than creativity. While the highest form of writing is considered to be creative writing. You pointed out how the maser/apprentice relationship can be abused but so can teacher/student, boss/employee etc. ones. The point of a master/apprentice or mentor/mentee relationship is ensure that the practical knowledge is passed on. It is what and how and why and under what conditions. And also what not to do, etc. It is not just what the apprentice *wants* to learn but also what he needs to learn. And learn by doing. You mentioned proof reading and editing. Typically is no such editing function in software. [You touch my code, you own it!] We have code reviews by peers but these reviews tend to be too low level. Everything must have a test but that still doesn't help you write better structured software. Someone blamed open source for the poor quality of code. But I have seen far worse quality code used by companies. In one job they had two millions lines of C++ code. It seemed they only did additive programming. Layers upon layers of cruft. These programmers were intelligent but they didn't have the knowledge or training or oversight or perhaps passion. As a programmer for hire for many years I saw a lot more of this. In one place the way they got a 'clean' compile of ported C code was by liberal use of casting. You can fool a compiler but you can't fool runtime. And it wasn't even a difficult port. And debugging skills are in short supply. Too many times no root cause analysis is done. Fixes in the wrong place. Things like agile programming and scrum and sprints -- not sure how well they work when it comes quality. What I am getting at is we have better languages and better tooling but there is a critical need for better training. > But the guild/craftsmanship metaphor just doesn't work for me. The guild idea not going to fly in any case. Nobody has any patience any more and egoless programming doesn't exist. Not sure what will work.