While I Compile

… I compile my thoughts about programming

Consultants are advisors, not decision makers.

Overview

I was having lunch with my friend & colleague last week and we had a disagreement about whose decision it is to make a change when you see something wrong in the client’s software.

Mechanic analogy

My colleague used an analogy about a mechanic; it was a good one, so I’ll use it here.

Let’s say you bring your car in for a $30 oil change, and your mechanic notices a problem with the timing belt.  My colleague suggests, he doesn’t just ignore it, he tells you it’s an emergency must be changed immediately (the emphasis is my friends).

Well I agree the mechanic shouldn’t just ignore it, and I was relieved my friend didn’t suggest the mechanic should simply change the timing belt, driving the bill from $30 to $930, but I’m not sure if telling the car owner they must change the timing belt ‘now’ is appropriate either.

In my opinion the mechanic should tell the customer what he found, the risk in not fixing it, outline the options to fix it, and the cost & associated risk with each option[1].  Then make a recommendation.

It’s the customer’s decision, not the mechanics, and even if the customer makes a foolish decision, it’s his decision, not the mechanics.

Fortunately, all the mechanics I’ve dealt with seem to understand this.

As consultants we’re advisors, not the decision maker

In my opinion, our role as consultants / advisors includes the responsibility to inform the client of any problems or potential problems you’ve noticed, the risks in not fixing it, options to resolve the problem, along with the costs and risks associated with each.

Unethical behaviour

To me it seems unethical to go rogue, and just start making changes the client doesn’t know about, and didn’t approve.

It’s also unethical to purposely instil fear, uncertainty, and doubt when explaining the options to the client so they make the decision you want them to; regardless of your intentions.

The client owns your time

After all, the client does own the software, is responsible for its maintenance, and they do own your time to direct as necessary.

Wait, what?  Who owns your time?

Yeah, when you’re consulting, your client (or employer) owns your time.  … you sold it to them; remember?

Every consulting and/or employment agreement is different, but if you’re charging by the hour, it probably says something like this; they bought your focused efforts to solve their problems for a specific duration.

And how they spend your time (their resource) is up to them (within reason[2]).

So deciding feature X is more important than feature Y, or bug X is more important than bug Y, is their call, not yours.

An extreme example

But what if it’s a big important issue?  What if it’s a major security flaw in the banking software you work on.  The flaw is dangerous. The flaw could potentially put users at risk. The flaw could even push the company into bankruptcy.

But your manager doesn’t want to invest the time to fix it and his manager stands behind him.  You’ve exhausted all other paths of reason, to the point of being on the verge of getting fired.

You still don’t have the right to change it … not even on your own time, because the software is their asset, not yours.

Your decision

Now I’m not saying you have no say, you can refuse.  Bottom line: if they refuse to make a change that you feel is necessary and/or potentially dangerous, you can give notice and quit.

Exceptions

Like everything, there are exceptions to this general rule.  Here are 2:

The first is if you are working on one task, notice another problem, and can fix it without seriously adjusting your time budget on the original task.  An example of this might be noticing and fixing a 1-off error in a loop.  I once had the responsibility of making manual year end changes to customer databases, with an estimated time of 3 days for each.  It took me 4 iterations working smart within the allotted time to write and test a utility which dropped that task to a 1 hour job[3].  The utility was separate, so I didn’t change the base product, and it cost my employer nothing.  So it is possible to make an impact working like this.

The second exception is you have built up a lot of trust with the client, and are completely unsupervised, making whatever changes deemed necessary to accomplish the client’s goals.  I’ve been in this situation a few times, and can honestly say, it’s a rare situation to be in.  It’s reserved for the situation where the client trusts your character and your responsibilities are so mysterious that they cannot make a decision, so they leave it up to you.[4]

In Summary

So basically, in my opinion, as consultants it’s not within our rights to make the decision to change or coerce the client into allowing you to change something.  It’s our obligation to inform them of the problem, outline their options along with the risks and cost of each, and make recommendations.

… that’s it.


[1] Yeah, there aren’t too many options to discuss for changing a timing belt, but we’re discussing software remember.

[2] There are limits of course, everybody will have their own personal & ethical limitation, and many (not enough though) will have professional limitations of what they’re willing to do.  Professional limitations might include, I was hired as a programmer, not a janitor, or worse yet, and Access developer.  ;-)h

[3] I could’ve dropped it to 5 minutes, but 1 hour is where the 80/20 principle told me to stop.  Somebody did this after I left, and it took significantly longer.

[4] Neither my colleague or I are currently in this situation.

February 2, 2011 Posted by | Consulting | , , | 2 Comments

Obviously unethical consulting … but why?

A few years ago I did some research into CMS applications and it occurred to me, that an unscrupulous web design company could easily sell a website and deliver nothing more than an installed, free, open source CMS app with a simple custom skin. They could basically; install the CMS app, create, buy, or even steal a skin, then cut & paste the clients copy into it. A fairly sophisticated (aka expensive) site could be launched in one evening, and the client would never even know the difference. Heck, many clients wouldn’t even care if they knew the difference and a carefully worded contract would protect the web design company if the client did care.

It’s easy to speculate that others may be doing this right now, been doing it for years, and some may have even made fortunes doing this.

… wait … what? … fortunes? …

… and with this, my rational mind kicked in and argued that as an ‘Entrepreneur’, isn’t this exactly what I was supposed to be doing? Trying to make as much money as quickly as possible, while minimizing my costs? Isn’t that what business is all about? Isn’t this providing the customer more value faster? Maybe this is the way to go!

Think about it; StarBucks is praised for quadrupling the price of a cup of coffee by adding foam … foam! … Air with a thin milk film separating the $5.00 air from the free air. How is it StarBucks is praised for selling foam, while what I described above is clearly wrong?

To be honest, I had a very tough struggle with this … not IF I should do it, but why is it wrong? I mean you could probably do this ‘legally’, while the ethical question was very difficult to quantify and easy to argue against with simple business logic.

It really comes down to the question; what exactly is unethical about this?

After wrestling with this question for weeks, I finally realized the answer.

As a consultant, there is an implied promise to use ALL my knowledge and skill to advance the clients interests.*

The ethical issue in this specific situation arises when information about an easily implemented solution is withheld from the client. This is the problem … this is why the above scenario would make anybody with a conscience uneasy.

This situation can be made ethical by a disclosure of the advantages of using the particular open source package and what exact you will bring to the arrangement. By selling the installation, customization, and configuration of open source software, not burying the term in the contract while implying a custom solution, and you are being ethical.

You can still make a lot of money doing this and it’s ok to charge a high rate. Charge $50/hr, or $80, or $100, or $150, or $200, or $2000, or more if you want … that’s totally fine, as long as information is not hidden from the client. After all, everybody likes money right? 😉

Now as far as I know, there is nothing illegal about the above scenario, but just because something is legal doesn’t make it moral.

Agree? Disagree? Can you add a clearer distinction? Add a comment.

* With exception to confidential information acquired outside of this client.

Copyright © John MacIntyre 2009, All rights reserved

March 15, 2009 Posted by | Consulting | , | 1 Comment