| |
Except Zakro,
Tihomil was the person with the longest working history in Dodoni
computing. He used to tell stories about the company's early days
and the people who worked there before. Those stories revealed the
fact that Dodoni computing had extremely high turnover.
Uncontrolled rage
Tihomil was in mid thirties and he practically lost all his hair,
except for the remains in the ear level. Instead of having monk-like
haircut, he shaved his head regularly and that gave him a pretty
terrifying look. In first contact with Tihomil you couldn't avoid
being a bit scared because of his bald, shaved head, deep voice and
nervous gestures. Bojan will always remember their first contact when
after meeting Tihomil the first thought that came to his mind was:
"Oh, God, how will I manage to work with this bully? If I say
something wrong to him, he will beat me without having second
thoughts."
It wasn't just the appearance, but Tihomil really had bad temper.
He would just explode for no apparent reason and shouted on his
co-workers and then suddenly, like nothing happened, he changed his behaviour and became kind and quiet person. For instance, if somebody
left the door open and that caused air to circulate, normal person
would say: "Guys, do you mind if I close the door? I can get cold by
this circulation." Normal person, but not Tihomil. He would rather
start to yell and shout: "One day I will beat up the ass who leaves the
door open! Do you people really understand that I can't stand air
circulation above my head, how many times will I have to repeat that
to you?".
Besides bad temper, he also had one really annoying habit - you
couldn't shut him up. He found it amusing to loudly comment every
thought that came to his mind, from problems he had in code to
enjoyment he felt when looking at some dirty page on the Internet. If
somebody tried to politely ask him to keep such thoughts for himself
because he distracted other people in their work, Tihomil would become
offended and yelled to that person: "When you talk to each other, it
distracts me too but then you don't think of me. So, I won't be quiet,
what can you do about it?"
Because of such difficult personality and constant uncontrolled rage,
Bojan gave Tihomil a nickname Maddog, inspired by the title of the
computer game Maddog McCree. It was a secret nickname known only to
him and Bartol, who was also a regular victim of Tihomil's rage. They
chose not to tell Tihomil his new nick, because they assumed he
wouldn't like it and become even more irrational.
Although Tihomil was very loud and annoying, it seemed that Bartol,
Bojan and Senka were the only people who noticed that. On one occasion
Bartol couldn't resist but to ask Zakro to order Tihomil to be quiet,
so other people could do their work without constantly being
disrupted. When Zakro heard Bartol's request, he seemed very
surprised. "Tihomil talks all the time? I haven't noticed.", he
replied. Obviously, Zakro pretended he didn't hear the constant noise
from other room because he didn't want to mess with Tihomil and his
bad temper, even if it would significantly improve other people's
productivity and morale. Zakro was "champ mannager" and as such, he
didn't care about the people, productivity and morale, he only cared
for his ass. The other person who also seemed unaware of Tihomil
behaviour was Stinky. It was probably because they were good buddies
and they usually went together to a smoking room.
When they couldn't stand Tihomil any more and it was obvious nobody
would do nothing to shut him up, Bojan, Bartol and Senka found the
solution in buying earphones and listening to music while they were
working. Although it was sometimes hard to concentrate on some problem
by listening to even most pleasant music, it was still much better
than listening to Tihomil's constant, irritating blabbing. The most
funny thing was that he didn't stop with his loud comments, although
it was obvious that nobody listened to him any more.
Great expert and macho
In time Bojan realized that Tihomil's bad temper and arrogant
attitude was just a facade that covered his professional and private
insecurity. Everybody with the common sense couldn't help but to laugh
when listening to Tihomil's holiday stories where he pictured himself
as a big macho and great lover who cruised the Adriatic coast in his
used Daewoo and picked up beautiful women like apples. Also, as soon
as you saw a piece of his code, you were 100% positive that Tihomil
had nothing to do with the programming either.
Of this last fact Bojan was warned by Bartol, even before he met mad
champion. "You know, Tihomil is definitely not a programmer. I see him
as a trespasser to our profession. He is here only because it is the best
paid job he could find."
Bojan soon found out that Bartol wasn't lying and that Tihomil's
programming abilities were very limited. His code was following the
same pattern as most of the code in Dodoni computing. It was ugly,
hastily produced Visual Basic code with hard coded constants and SQL
queries. As his role model Stinky, Tihomil also used copy-paste method
wherever possible and he also didn't care about any naming or coding
convention, so his variables were named according to principle "more
cryptic, the better". You could immediately recognize his code by
variables having self-explanatory names like x, xx, xxx or x1 or x2.
If somebody dared to ask him why he coded like that, Maddog would
simply reply: "It was faster that way."
"It was faster that way"
Few months after quitting Dodoni Bojan was on a conference and
during a coffee break he joined a group of developers who
discussed the worst programming solutions they've ever heard of. One
of the attendees started his story: "In a company I worked for many
years ago there was a guy who once developed the whole C program using
only the Main function. When later one of his co-workers opened the
source for maintenance reasons, he was desperately searching for modules
and functions but with no luck. To his horror he realized that all the
code was in Main() and that author heavily used copy-paste method to
achieve such a result. Soon the news spread throughout the company and
they called the author to explain why he coded the program in such an
unusual and hard-to-maintain way. The author of that miracle,
obviously not understanding why everybody were so upset about his
solution, calmly replied: 'It was faster that way.'"
After everybody laughed, one of the people in the group asked the
storyteller what was the name of the genius because he wanted to
nominate him for some programming award. "Tihomil", he replied. Bojan
laughed again and said: "Maddog! I know him, in fact I worked with the
master"
The story later became very popular and was told on many other
occasions. Maddog became a legend but unfortunately didn't win any
programming prize, at least not the one we know about.
"Copy-paste" guru
It would be really hard to choose the ultimate copy-paste champion
between Stinky and Maddog. It was kind of a constant, undeclared
competition between two of them who could produce more shitty and
unreadable code and who would more frequently use copy-paste method
without thinking of consequences. If you were sure that one of them
produced the worst solution ever, the other would soon change your
mind by producing even more horrifying garbage. To be honest, there
was one example of copy-paste crime that made Bojan think that Maddog
was definitely a winner and that Stinky couldn't beat him.
It happened when Bojan got the task to modify two detail forms in
DAMP, leading Dodoni application. After looking at the code for a
while, he started to realize that two forms looked very similar. After
even more careful examination, he definitely found out that two forms
had totally identical user interface and functionality, the only
difference was that they were invoked from two different parent grid
forms. It was obvious that the two detail forms could have been from
the start only one detail form, with proper coding that would ensure
that this form could be called by different parents. This classical
problem with one child form having many parents could have been solved
in two different ways:
- When referencing to parent form, child form shouldn't have used
the actual name of the parent because it was different from parent
to parent. Instead, it should have referred to parent as generic
object (As Object in Visual Basic). When calling parent methods
(e.g. refreshGrid), it should have used this generic object. In
fact, this was the typical scenario in which callee didn't know the
type of the caller object and it didn't need to, because all he
wanted from caller was to support a given interface. For a person
who knew basics of Object-oriented design it was an obvious example
of class implementing certain interface and Bojan implemented it
right that way. If later in the project there would be more than two
different parents, it wouldn't be necessary to change child's code
at all - new parent would just have to support the methods required
by child, in other words it would have to support the same interface
.
- The other solution would be to use champion's copy-paste method
and make as many copies of child form as needed i.e. as many as
there are different parents. If new parent form later comes up, then
copy child form again, together with all its controls, event
handlers and database code. In each copy reference to concrete
parent and don't use generic object or any of OOP stuff.
Even novice programmer who barely heard of any coding standard or
design technique would have no doubt in choosing the first method as
definitely the better one. Well, maybe novice programmer but not the
champion and copy-paste guru. From the given code it was obvious that
its author preferred the second
method and Bojan didn't have to spend much time in finding who the
genius was. He opened the history list in Source safe and found the
point where the second child form was created by simply copying the
first one. The author who checked-in the copy was, as you can guess, Maddog!
The profile of the expert
Maddog was weak in almost every technology he messed with. During
his time in Dodoni, Bojan tried to find out if there was any activity
that Maddog could perform without asking others for help or without
screwing up in the first place. After many attempts, he concluded that
there wasn't such a thing as Maddog's area of expertise, neither in
programming nor in any other computer related area. Of course, he
didn't count ability to smoke two packs of cigarettes a day or leaving
dirty coffee mugs all around the office.
Maddog once admitted that he has never been interested in
programming and that he started to develop software 5 years ago when
he realized it was the best paid job in the industry. He learned
everything he knew only by try-and error method and he has never shown
any intention to learn or improve himself - not to mention reading
some book on programming or taking some programming class. To make
things worse, he didn't see that as a disadvantage or something he
missed. Rather he thought that he was cleverer than other people
because he achieved the same without pain of learning and studying. On
one occasion Bojan brought to Dodoni his own copy of Steve McConnell's
"Code complete" to show to his colleagues where he got the
idea for code convention documents he usually wrote. When Maddog saw a book, he was curious and asked Bojan what
was the book about. Bojan replied: "You haven't heard of Code
complete? It is a programming bible. Everything you should know about
the programming, from naming variables to code formatting is here.
Do you want to take a look?" "No, thanks", Maddog replied,
"I probably know ten times more than what is
written in this book!"
Despite his arrogance, he was well aware of his weaknesses and he
avoided team projects like hell. He knew that if he had to collaborate
with other people, they would soon realize how little he knew and he
would definitely become the weakest link in every such project. The
logical choice for him was to work on solo projects where he was the
only developer and program manager and where nobody could control him.
Only from time to time Zakro would ask him about the status of the
project and Maddog would then assure him that everything was under
control and the project was near completion. Few minutes later he
would continue to surf porn sites or download mp3-s up to a moment
when he realized it was time to do some actual work, which was usually few
days before delivery. Then he would assemble some code, usually quick
and dirty and send it to Erich, who would deploy it on client's site.
In most of the cases deployment would be a real disaster and made
Erich blush in front of the client's employees. If Erich asked him why
code didn't work on client's computer, Maddog would reply: "It works
on my computer. Their administrators are idiots who cannot install
even simple application like mine without problems. I am not
responsible for their fucked servers or their lack of knowledge, my
code works!" By facing such direct response, Erich had no alternative
but to ask great champion to come to Dembelia personally and help poor
administrators install his application. Maddog wouldn't complain
because he liked to travel to Dembelia. Upon his return,
he also liked to tell the stories from the trip to his co-workers,
although it was obvious that no one cared about what he had to say.
Most of his anecdotes were related to problems he had with customs on
EU border. He had an impression that he was harassed by customs
officers and he didn't know why. Of course, the real reason they
interrogated him more than other passengers wasn't that he was bald,
wearing black pants, black leather jacket and black boots. No, god
forbid! The real reason was that they somehow felt they were facing an
important person, a master, a champion, and they were jealous like
hell. So jealous that they searched him completely and asked to show
them how much money he had. Pathetic losers!
Self proclaimed system engineer with the
motto "Reinstall and don't ask why"
Every development firm needs a person who
performs administrative tasks like installing servers or service
packs, evaluating tools, making application setups etc. Nobody knew
how and why Maddog took that position in Dodoni, it was probably
because other people were too busy programming and Maddog felt it was
a chance for him to master something that was definitely easier than
developing software. Unfortunately for the firm, he was too dumb to
learn even such trivial and repetitive tasks. To make things worse, he
has never consulted any documentation before doing some major
installations or upgrades and he has also never warned his co-workers
of his intentions. The net result was that after his interventions
productivity was cut dramatically, because he managed to screw some
development server, internet connection or database. Then at least two
other developers stopped their normal activities and tried to help him
and minimize the damage.
One time he messed with the main development
server, installed and reinstalled software, rebooted few times and as
a result, SQL server debugger failed to function properly. Bartol was
pissed and asked who screwed the server and the debugger and Maddog innocently replied: "I have no idea. Why do you ask me? Why
everybody thinks I am responsible for every error on the server? I am
sick of that, you pissed me off, I am going to smoke a cigarette or
two.."
On another occasion Bojan asked him to make
installation program for web components of Crystal reports for his
DAMP2 web application. After few days of try-and-error principle
combined with cursing and shouting, Maddog managed to assemble a setup
that seemed to work properly. Well, it seemed to work, but just on NT4
server. If run on Windows 2000, the same setup would crash the
operating system to the point that you couldn't even use Control
panel. After careful examination, Bojan found the reason of lethal
behaviour of Maddog's setup program: one of the components of the
installation, namely MFC dll, had a flag that instructed setup program
to unconditionally install that dll in system directory, without
checking if there was a newer version of dll. It posed no problem in
NT4, because dll in installation was newer than one in the system
folder. However, on Windows 2000, installation version was older than
one in system folder and that same older version replaced the newer version
and caused many system components that depend on MFC dll to crash.
Bojan tried to figure out why setup had to install one particular
version of dll and not caring if there was a newer version. Or, if
older version was a requirement, why it couldn't be installed in some
custom directory instead of windows system directory. If he cared to
ask author, he would probably get an answer somewhere between "It was
faster that way" and "Fuck, I didn't want to mess too much with that setup so I made the first version that worked and called it off."
Inspired by Stinky in
many ways
It wouldn't be fair to conclude this story
without mentioning one more thing Maddog and his buddy Stinky had in
common, except writing bad code and smoking two packs of cigarettes a
day. Like his friend, Maddog also smelled like a skunk. Obviously,
being so busy with thinking of new software algorithms and of new ways
to screw server installation, Maddog kept forgetting about so
elementary things like taking showers or washing his clothes. It
wasn't so obvious like with Stinky, but only if you didn't approach
him too much. Rudi, guy who took Senka's place after she left, wasn't
so lucky because he was sitting next to Maddog and you could see him
holding his breath or turning his head when Maddog leaned towards him
trying to ask him something.
Day after day, it escalated to such level that Bartol compared
Maddog's smell to the stench of the street bum who hadn't washed
himself for
weeks and had three days old urine on his clothes. On some other
occasion, probably after good portion of chilli, Maddog decided to
release a silent but deadly fart that soon filled whole room and made
other colleagues cough and cry. When he saw both hatred and despair in
their eyes, only thing he could say was: "Oops, I am
sorry."
|