yeah, they're out of chronological order. what the heck, if Lucas
can release a prequel 20+ years after the sequel, i figure i can get
away with a few liberties, too. ;-)
ACT I: SHOULD'VE SHOT MYSELF THEN
(in which a marketer schedules a phone conference, for the purpose
of bringing a group of software developers back in line with his
expectations)
one of the endemic problems with this job is that my bosses want quick
wins for free. perhaps the most important lesson i've learned in the
last eight months has been that you never show a marketer a piece of
software that works unless you're willing to put it into production
immediately.
i used to think differently.. my goal was to give people enough
functionality in the prototype that they could get a general idea of
what the thing would do. then i face-planted the brick wall of
reality, in which the person you show the prototype can't tell the
difference between that and production code, so they go out and tell
the whole world that the thing is ready to go.
after going through far too many iterations of this scenario, incuding
several where i wasn't the person writing the code, i've come to the
conclusion that the guilt really belongs to the developer. i can't
just absolve a person who takes the words "okay, this is just a
sample" and turns them into a delivery date, but i *can* write them
off as being too stupid to learn. if i do that, though, i have to
look at the corresponding stupidity of the programmer who keeps
showing people code and *saying* "okay, this is just a sample".
no matter how you cut it, the coder is guilty of raising expectations,
even if those expectations are completely unreasonable. and the
worst of the breed are the ones who deliberately push incomplete code
into production on the assumption that it will buy them time to work
on the remaining pieces.
it's a fine line to walk, because there *is* an acceptable concept
known as 'good enough' software. when you build that, you release a
stable version of a limited feature set, with enough hooks to let you
build the additional functionality into the next version. the key
point, though, is that the product works, and is capable of being
upgraded. it's different from prototype code, because a prototype is
nothing more than a quick & dirty scratch version of an idea, to show
that some idea does in fact work. it's a research tool, and nothing
more.
most of the installed CGI code base for my network was developed on
those principles, by the coder who came before me. i keep getting
asked to finish off those 'few last details' which turn out to be
completely impossible without starting over from scratch. it's like
having to tell the kids there's no Santa Claus because Uncle Ernie had
a heart attack while stuffing the stockings, and the EMTs are
currently loading a fat guy in a red suit into the ambulance. there
are so many layers of bad news that it's easier just to leave town
under an assumed name.
to make matters more fun, my pre-unfortunately-not-yet-decessor has
taken a job with a partially-owned subsidiary of the company, and is
still programming for us. he's still Mr. Good News, writing code
that doesn't work, and i'm the Evil Unreasonable Bastard whose code
actually does what it's supposed to. if the titles don't seem
to make sense, go back and read paragraph 3, sentence 2 again..
my latest adventure in the wonderful world of vaporware involves two
mutually incompatible prototypes of a product, an on-site contract
programmer, and my boss, who wants the thing in production ASAP, if
not sooner.
the contractor is a pleasant and charming young Indian woman named
Anitha, who's about seven months pregnant. we hired her through a
local agency rather suddenly, because at the time, following a series
of domino-effect system failures, my VP was very hot to add staff.
normally, he tells us the salaries will be built into next year's
budget, but we have to meet the current demands (which we don't have
the staff to support, hence the bitching for more bodies) so he can
justify the additional expense to the board.
not wanting to miss the window of potential spending authority, my
immediate boss brought Anitha in on a semi-permanent arrangement.
her objective is to create a stable version of the two prototypes
which can be rolled out to all the other newspapers in the company.
the day Anitha arrived, there were three separate and distinct
opinions as to what she should be working on, because neither my boss
nor my VP had communicated with each other, or with me. i set her to
work examining the existing code, and the unusually well-written
feature set description, done by another former membver of the
department. by the end of the first week, there were four opinions..
i accept my share of the responsibility for not staying on top of what
Anitha was doing, but in extenuation, there are half a dozen other
projects which i'm supposed to be mentoring, not to mention the code
of my own -- which the elves and faeries have so far steadfastly refused
to write overnight. i let Anitha choose her own direction as a way of
letting her get familiar with the existing code, and the product
requirements.
by the end of the first week, she'd decided to finish the upgrades on
one version of the product, because that seemed to be the closest to
the desired feature set. i let her go ahead, not having heard
otherwise from above.. admittedly a poor excuse. after a couple more
weeks, she and i finally got past the language and conceptual barriers
preventing us from realizing that we were working at cross purposes
without knowing it.
as it turns out, the version Anitha was completing is more or less
dedicated to a single newspaper. she'd thought that her job was to
make that version do everything it was supposed to. she knew i'd
been talking about having a version which would work for everyone, but
she'd also been getting input from the bosses about making that specific
version work. neither they nor i knew that that version was
hardwired for a single paper, and the way Anitha read the situation,
completeness was more important than expandability.
as soon as i realized that the work Anitha was doing couldn't be
repackaged for anyone else, we sat down and worked out the
communications between ourselves. i learned that the two existing
prototypes (which are, naturally, both in production) were
incompatible, and explained to her the importance of being able to
reuse the product.
that resulted in a major, but necessary, change of direction. Anitha
started to re-examine the code to see which, if either, prototype
could be expanded to suit everyone's needs. i mentally wrote off a
couple more hours each day to checking her progress and reinforcing
the things i consider positive.
then my boss found out about it.
he's a nice guy, and in his defense, he's not trying to make my life
as much of a screaming hell as he is, but he doesn't have any
background in technology development. he knows he's supposed to be
in control of the department, but doesn't exactly know how to do that.
when i can keep him happy enough to stay out the way and let me run
the development wing, things are fine. unfortunately, this issue made
enough noise that he felt he had to make his presence felt. the
result was roughly like a senior administrator of a hospital going
into the operating room to "take charge".
when my boss feels insecure, he imposes on people's time.
technically, as director of the department, he has the right to tell
people what to do and where to go, and the higher the mileage and body
count, the better. he brought John, the guy who wrote the orignal
product description, into the office from 300 miles away, then
declared that there would be a conference call with the other coder,
in Montana, to get everything squared away.
the hidden agenda for the exercise was to make the guy in Montana
accept the blame for writing a piece of code which couldn't be
expanded indefinitely. that got nowhere.. he's had far too much
experience dealing with the principles to accept that kind of loss of
face, and i didn't have the stomach to really grill him. we all
repeated our default positions, got nothing whatsoever accomplished,
and went away unsatisfied.
i'm hoping to find time amid all the chaos of next week's software
installation to sit down with Anitha and get better in synch with her.
i feel like i've abandoned her. at very least, i haven't
communicated what i want well enough or clearly enough, yet.. she's
not excited about what she's doing, and that's my fault. i'm the
only one in the company with both the information and the authority to
give her a job she's enthusiastic about, and if she doesn't have that,
i've failed as her project leader.
mike stone <[EMAIL PROTECTED]> 'net geek..
been there, done that, have network, will travel.
____________________________________________________________________
--------------------------------------------------------------------
Join The Web Consultants Association : Register on our web site Now
Web Consultants Web Site : http://just4u.com/webconsultants
If you lose the instructions All subscription/unsubscribing can be done
directly from our website for all our lists.
---------------------------------------------------------------------