|
It was very nice-looking but usable only to users of Internet
Explorer. Poor Netscape user would have much trouble selecting
anything in the table because he would never see the highlight or the
hand. Also, he couldn't click the row either. Because there wasn't an
alternative to DHTML navigation, the whole application would be
totally unusable to users of browsers other than IE. When Bojan
asked Stinky about supporting Netscape, he got the answer: "It doesn't
work in Netscape? OK, if you say so. Anyway, even if it doesn't work,
I think it wouldn't be a problem to adapt it to that browser." Because
Bojan still believed that Stinky was competent, he didn't think of
possibility that maybe Stinky didn't know much about the web
programming and that he probably had never developed serious web
application that supported both browsers. Many months later, when
Stinky gladly offered him to reuse VB modules from desktop application
in his ASP code, he had no more illusions about the knowledge of head
developer. But we haven't come to that point yet.
Let's throw Stinky's prototype and build something usable When he
realized that Stinky's prototype is full of limitations and that it
would be really painful experience to develop anything serious around
that crap, Bojan designed totally different prototype. He got rid of
tabbed sheets and created separate page for each data table. It was
pretty much classical design but it worked and pages were much lighter
and loaded faster. He also created browser-aware navigation where
application detected browser type and rendered appropriate navigation.
IE users would still get the same navigation that Stinky designed -
highlight and stuff. However, Netscape users would see the text in
data table rows as hyperlink.
Difficult birth of functional specification To prove he was serious
about it, he wrote a document where he put screenshots from the
prototype and described in detail every functionality of the
application. It was in fact a complete functional specification that
he called "Feature list". The main drive force behind writing that
document was his intention to force Stinky and Zakro to finally think
ahead and define the final scope of the application. The whole
story with the specification began when Bojan created his first normal
Netscape-friendly prototype. He decided to show it to Stinky for
approval. He didn't want to start any serious coding before he was
sure what had to be built. Stinky was up to his head in coding desktop
application so he didn't pay too much attention to Bojan's prototype.
Instead, he gave only some minor cosmetic suggestions and allowed
Bojan to proceed with the coding. Then Zakro came to a scene. Day
after Stinky's approval of the prototype, when Bojan thought he had
permission to start design and coding of the modules, he saw the pop
up window on his screen saying "Aye, Bojan, shall we discuss some
things?". The message was from Zakro. It was his typical introduction
to torturing poor developers with his mannagerial crap. Bojan
approached his desk and immediately saw his prototype on the screen of
Zakro's computer. "Why is he looking at my prototype? Stinky is
program manager and he approved it, so why does he bother?" He got
the answer very quickly. As if Stinky and their yesterday conversation
never existed, Zakro started to review every part of the web
prototype, making new propositions, changing functionalities and
design and at the end the whole concept was so different from the
original that it seemed that Bojan's work was simply thrown down the
drain. In shock, Bojan didn't have time to ask "Damn it, who is
project manager here, you or Stinky?" and soon after he found himself
rewriting functional specification and the prototype. Then he realized
the bitter truth about the DAMP and the Dodoni computing, which was
further confirmed to him by Bartol. There was no change in command
chain and developers could only pretend they managed projects, but in
fact the real and only project manager there was Zakro. On DAMP
project, Stinky was only a fictious project manager and the real one
was Zakro, as it was before on the first version of DAMP. To make
things worse, the two of them weren't even synchronized and each one
of them had different vision how application should look like.
Ping pong Zakro Stinky The best proof that Zakro and Stinky were not
synchronized at all in their managerial roles Bojan got the next day.
He showed the changed specification and prototype to Stinky because he
wanted him to know that Zakro changed many things in the original
concept. Stinky was probably in the mood for pretending to be a
manager and he did the same thing as Zakro the day before - he started
to insist on details and he instructed Bojan to change again many
aspects of specification and the prototype. Bojan was about to explode
but he thought this was the last change and then he would have the
final permission to start developing actual code. Oh boy he was wrong!
Only half an hour after the session with Stinky, he was again called
by Zakro who, like Stinky never existed, had new visions and changes
about the design and functionality of the web application. That was
too much even for a calm person like Bojan! He entered the last
changes into the specification and then he added at the end a small
paragraph that read: "We agree that the software will be built
according to this specification. Project manager and product manager
confirm that the specification is complete and that developers can
start to implement it. Developer confirms that he understands the
specification and that he will implement all features in given time
frame." Under that last paragraph he put placeholder for three
signatures - one for Zakro as a product manager, one for Stinky as a
program manager and one for him as a developer.
After he finished the document, he called for a meeting of DAMP
team. When everyone gathered at the table, he showed to them finished
functional specification together with placeholders for signatures. He
was obviously very upset because he had enough of Zakro and Stinky's
incompetence and their constant changing of requirements. "C'mon
bastards, sign the damn document so I can proceed with the coding
without your constant interruption", Bojan thought when looking at
their faces as they browsed his document.
Zakro's first reaction was as Bojan expected pure political:
"Well, OK, we can sign it, but as you know, requirements change in
every project and we cannot predict everything. Why are you so upset
about it? Build something and then we'll see if that's it, we've
always worked that way. What is your problem with that?" "In
normal distribution of roles, developer doesn't need to have
telepathic powers and try to figure out what has to be done. Instead,
project manager is the one who builds the functional specification in
several iterations with the client and the development team. When that
document is finished, every stakeholder knows what will be built, when
it would be finished and how much it would cost. Here this is not the
case - it is up to poor developer to deliver functional specification,
architecture, design and code. Project manager does nothing.", Bojan
replied. "Maybe you are right, documents have to be written but we
don't have time. Krunoslav runs that project but he is up to his nose
in programming desktop application, and I am busy with other stuff so
nobody has time to write documentation. You are really good in that, I
can see", Zakro started to suck up, "starting with the next project we
are doing your way, by the book. OK, if we are done with that
discussion, let's see what are the other problems in DAMP", finished
his reply Zakro. And so the meeting changed the course, and Zakro
and Stinky avoided signing the functional specification. Bojan
realized that there is no use in fighting lost battles and that there
is no way they could be forced to make things right. They were too
dumb and incompetent to change the way they ran projects, now he was
sure about that. Except this last revelation, the other consequence of
that meeting was that Bojan got the reputation of book worm and the
person who annoyes others with unnecessary details like
specifications, conventions and quality. He definitely didn't pass as
a true champion. Delivery date
When delivery date came close, it was obvious that desktop application
is way behind schedule. It didn't help that Stinky worked overtime and
produced his spaghetti garbage at even more speed and it also didn't
help that Rudi was forced to replace his theoretical experiments with
some actual code. Time was simply running out. Estimation given by
Zakro and Stinky was too optimistic even for "code-like-hell" way of
work.
Another typical champion's last minute delivery was on its way (see
Champion's manifest for details). It would probably went that way if
Zakro 'didn't find the magic formula: "Let's move delivery date for
one week and we'll tell them that it is because we want to deliver
both the desktop and the web application at the same time." Although
the web application was scheduled two weeks after the desktop, Zakro
could promise earlier delivery because he knew that Bojan was almost
finished with it. Despite the fact that he had to write functional
specification and fight with Zakro and Stinky for final scope of the
application. And despite the fact that he developed it by the book -
using stored procedures, using separate data, business and resource
modules and heavily commenting the code, which obviously took more
time than if he used infamous copy-paste method. Ah, yes, we mustn't
forget that his application supported both browsers.
After the touch of Zakro's magic wand, everybody was happy, especially
Stinky who got extra 7 days to assemble his crap. Off course, he
didn't find it necessary to thank Bojan for saving his ass. Anyway,
his happiness lasted only until the next delivery date when it was
obvious that Stinky needed way more than 7 days to make his crap
usable. However, in the last minute he managed to fix something that
worked and client got something to install on given date, but as
usual, it was buggy and unstable application that once again caused
Mr. Dodoni to apologize to the client and promise that those numerous
bugs would be fixed in the shortest possible time.
|