On 2010-11-11, Grant <[email protected]> wrote:

>>> Should I only hire coders I can sit in the same room with?
>>
>> That will probably work best, but it will cost more.
>>
>> Have you ever managed a programming team before?
>
> I haven't.  Any pointers?

Not really.  Just be prepared for the programmers to misunderstand the
specification at every turn.  And once they've understood the spec, be
prepared for them to just plain screw up the implementation.

Unless you're hiring programmers who have a very good understanding of
the problem space, they're not going to understand the spec.  They are
going to do the wrong thing in the first several iterations before
they finally understand what it is that you want.  Some of the "wrong
things" will violate the spec. Many won't.

It's like hiring to build a house carpenters who've never seen a
house, never heard of a house, and have no idea what a house is for.

The first version will look like the drawings, but they'll have
misunderstood the dimensions and the whole thing will be 3 feet high
an 5 feet wide.  When you ask how people are going to fit in that,
they're going to look at you completely dumbfounded because you never
told them people had to fit inside -- how were they supposed to know
that?

The second version will be the right size, but the doors and windows
won't open -- they'll be built solidly into the structure on all four
sides.  When you ask why, they'll say "it's a lot stronger that way!"
You'll say "but I told you people had to fit inside".  They'll reply
that people _do_ fit inside.  You'll ask how are they going to _get_
inside.  They'll say "the specification doesn't say that doors and
windows have to open, so we implemented it the strongest way, and now
people fit inside just like you said."

[Repeat until you're out of time and/or money.]

The only advice I've got is to do things in increments as small as
possible.  Don't do "big bang" integration.  Make sure there is a
runnable testable program after the first week of development. Maybe
it doesn't implement any significant features, but you must have
something runnable and testable at all times.  Otherwise, you can get
too far down the wrong road before you finally figure out that either
a) what you specified isn't going to work, or b) they didn't
understand the specification at all.

-- 
Grant Edwards               grant.b.edwards        Yow! Actually, what I'd
                                  at               like is a little toy
                              gmail.com            spaceship!!


Reply via email to