On Sep 14, 2017, at 6:24 PM, Dan Cross
<crossd(a)gmail.com> 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.