Andy Dingley wrote:
> Tom Forsmo wrote:
>
>> I think the prevailing thought on process is "just write the damn code"
>> as Chris put it 
>
> Not here. 8-( I've spent 20 years fighting against this approach.
>
> I have no shortage of code. I've got 2000 source files of it in front
> of me, and most of it's ugly crap written by unskilled peons. The last
> thing I need is more people "just writing the damn stuff",
Well we all know that, what was is?, "1000 monkies hitting a typewriter
will eventually write Shakespeare" is not realistic, its a statistical
possibility, and that's it. Same goes with coding, you have to have able
and earnest programmers to create good code. If you don't, then of
course they are going to write crap, so either you have to teach them or
get read of them. I have worked in companies where they only hire expert
programmers. The type of programmer that writes larger and
semi-complicated code in a couple of days, while others might use 2
weeks, and the code is almost flawless. I know it sounds like an
exaggeration, but I witnessed it myself in the beginning and it left me
speechless. And from that I learned what good programming is and allows
me to do, if done correctly.
Btw, I forgot a couple of points when writing my previous post, so I
will make the additions now.
Just writing the code in it self is not good enough. You have to have
some structure to the procedure of writing the code. There should be an
agreement on what needs to be done and how to do it. In the above
example, there was usually an task/architecture meeting between the
programmer, the project leader and a senior programmer managing the code
base for that part of the system. The point of the meeting was to have a
common understanding of what to do, how to do it and how to use the code
base to achieve it. If there were any details that needed to be
recorded, we used bugzilla. Bugzilla was the overall archive of all
things coded, and every piece of code checked in to subversion had to
correspond to a bugzilla bug and had to be relevant. To ensure this,
senior programmers had control over the master branch, the senior
performed a code review and the final checkin (even for each other). If
there were any questions during programming, a senior was consulted. So
the senior programmers acted as the guardians of the code base and hence
the code was kept to premium quality. There where other parts such as
testing procedures and bug verification procedures, but that are details
I wont go into here now.
This kept the development process light, capable of supporting change
and above all helped us write excellent and functioning code. This made
programmers and management happy because everybody could focus on their
main tasks instead of long meetings and endless specification
discussions. Tasks were divided into smaller parts so it could be done
by one or two programmers and so that no single task took too long time
to complete. Everything was checked by several people by way of small
meetings, or coffebreak discussions, without having to resort to a paper
mill production. By working iteratively and hands on from the start we
learned to understand things intimately from the start and could avoid
problems and pitfalls before they even existed.
As another point, later I worked on a project where the management tried
to enforce a rigid structure and force us to use xp, scrum etc
indiscriminately. The project soon fell apart, in dissent. I, and
shortly after, another, walked away from the company. They did not
consider the team or the individuals and how they work best together.
tom