Where did you throw personal convenience into the mix?
In fact, my wife and I had made plans for that weekend, and she was
very upset when I called her Friday afternoon and told her that I had
to work over the weekend. If I had planned to work the weekend, it
wouldn't have been a big deal, but I didn't lose any time because I
took three days later.
You're doing unprofessional work because you're acceding to your
manager's demands to do things that are quick and dirty.
Let's explore this. Is 'quick and dirty' ever appropriate? Microsoft
did QDOS (Quick and Dirty Operating System) early on, IIRC. In my
practice I often take short cuts and ignore best practices for one-
time scripts where the output is more important than the script. I
don't think it's necessarily unprofessional to do 'quick and dirty'
and at times it may be unprofessional to follow all the recommended
practices for a very small job. Besides, it's my manager's call, and
if he wants quick and dirty, shouldn't I comply? We're not talking
about critical health or safety issues here.
You're
rationalizing it as a first effort that merely validates the spec, but
what it boils down to is this: you, as a *professional*, by claiming
that term, are responsible for the quality of the code you produce.
Absolutely! But the 'quality' relates to the output, not the code. I'm
in my fifth year at my current job, and I've NEVER had a customer look
at my code to see if it's up to snuff ... but I've had customers
complain plenty of times about the output the code produces.* We are
judged by the work product, not necessarily by the means used to
produce the work. No one here gives a rat's ass about the quality of
my code, except for me.
This means pushing back when the manager tells you to do something
inappropriate.
Absolutely! But there's a difference between 'inappropriate' and an
unreasonably short deadline. I very rarely get impossible deadlines,
but when I do, I make every effort to get the work done by the
deadline. If the deadline passes without the job being finished, then
it's on the manager, not me, and that's all the 'pushing back' that's
needed.
Didn't you start a thread some time back about crisis mode programming?
Do you really not see a connection between your willingness to work on
deathmarch and panic-driven schedules without pushing back, and the
frequency with which you have to deal with crises?
Hey, a large part of my job is to produce reports, and it's common for
the customer to request the report at the very last minute. These may
be crises, but they are not of my making. At the end of the day it's
the customer that faces the consequences of the crisis. Despite that,
I make the effort to do my job in such a way that no one can fault me
for the failure to get the work done on time. (Please note that my job
is NOT writing software but producing reports -- I just produce
reports by scripting.)
I am a firm believer in the maxim "A failure to prepare or plan on your
part does not constitute an emergency on mine."
I totally agree. My version of this is, 'Procrastination on your part
does not constitute an emergency on my part.'
I have had managers who were walking repositories of self-created crises
and emergencies. I pushed back hard against the self-created deadlines,
and when I found managers who were impossible to train, I got out of
those jobs as quickly as I could.
I only have one manager, and I've seen him once this year. He
generally leaves me alone, and I probably don't get an assignment from
him more than once a month. OTOH, I have lots of customers, some of
whom give me plenty of time but others who notoriously send in jobs at
or past their deadline.
I advise you to do likewise.
My general approach is to meet or beat the deadline without
complaining. If I can't, I explain that I can't do a 12 hour job in
three hours --- BUT I MAKE SURE THAT THIS IS SEEN AS AN EXPLANATION
AND NOT AS AN EXCUSE. People know that I try hard, and most customers
are willing to accept the consequences of their own procrastination.
CC
-----------------
* There are many reasons a customer would complain about the output,
ranging from an ambiguous specification, to garbage input, to my not
understanding what was needed. Case in point: this week, an
administrator requested a report on 'all active students.' He got a
list of tens of thousands of names when he was expecting a couple of
dozen names, and he complained. What he wanted was HIS active
students, but what he requested was ALL active students, and I gave
him what he asked for, not what he meant to ask for. Also, it's not
uncommon for me to misunderstand the request, so I take credit for a
reasonable share of the blame.