The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

A Matter of Conscience vs Customer Requests

One of the things that the system that I am currently working on is required to do is produce reports for the client's customers; having met with the customers they want the reports in what they have acknowledged is a sub-optimal format which they then convert by hand (using a spreadsheet) into the format that they actually use.
  I have offered them the reports already in the format that they actually use (perfect match) and even offered them a system-created spreadsheet in their format, but they insist that they want the "wrong" format and they want to convert it themselves.
  Giving the customer what they want should be the overriding driver, but when that involves creating a deliberately poor user interface, what then?
  Any thoughts / what would you do?

P.S. The client doesn't particularly care either way - the current incarnation of the system gives their customers nothing like what they want and the clients were quite happy with that.
Paul Brown Send private email
Thursday, March 02, 2006
To clarify, you have 3 parties involved: you, your client, and the client's customers. Your client is being unethical by trying to keep their (wasteful) part of the process intact. You can't really go directly to the customer and say there is a better way because that would anger your client, and potentially cost you your contract.
Anon and anon
Thursday, March 02, 2006
Not quite; the client isn't being unethical so much as disinterested - they don't see any need or requirement to provide their customers with what the customers actually want, they are happy providing the customer with what they want to provide and telling the customer to like it or lump it.

This attitude might seem amazing, but both the client and the customer are part of the same overall group of companies (and, in fact, I work directly for that group too) so the customer doesn't really have the option to go elsewhere.

No matter what I do the client is unlikely to care, I just feel bad about supplying to a customer, even an indirect one, something that I know isn't what they need and causes more work and has the potential for errors in the copying.
Paul Brown Send private email
Thursday, March 02, 2006
Sometimes people like the process they're used to, even if it isn't optimal.  Perhaps the customers are accustomed to scanning over the data while they perform the conversion to the "right" format, and would actually miss that step.  Or perhaps they think there's more flexibility in managing the conversion process themselves.

One option would be to produce the data in some useful intermediate format such as XML, and then give them a nicely modular convertor that outputs the format they currently want (but could easily be tweaked to output the "right" format, or some other format entirely).
Jacob Send private email
Thursday, March 02, 2006
People suck. If you're working for people who suck, you either give them what will make the man with the chequebook happy, or you find some new customers.

Sooner or later you start wondering if standing on a streetcorner in a miniskirt isn't actually a more honourable and respectable profession. And that's just the guys.  ;)

I'ld present them with the better option, I'ld probably try to emphasise the benefit to the guys paying me, and if they don't go for it I'ld remember that it's called "work" and not "play" for a reason, and just give them the crap that they've demanded.

I wouldn't implement it less well than is necessary, but I'ld waste minimal time on making a better system that can be easily tweaked to what I think is good, unless doing so would benefit me. I wouldn't write one line of code that couldn't be justified, either by giving them what they actually asked for, or making it easier for me to acquire other customers. it's more sensible to spend the time and effort on keeping the income flowing than on making a system that appeals to my sense of professionalisim and gets me fired.  ;)

Thursday, March 02, 2006
We had a similar issue where the customer said "it'll be software both you and we can be proud of".  Unfortunately, I'm not proud of it.  Why?  The customer insisted on having things done 'their way'.  So, we complied.  The customer is now happy.  We got our money.

If it's bespoke software to your customer, my suggestion is go with what they say, even if it isn't the best.  However, if other customers may get their hands on it...
Paul Norrie Send private email
Thursday, March 02, 2006
Give them a choice. If the customers perspective is that the data is complex and converting the data themselves makes them more secure and confident, let them do it. Eventually they may try the "ready to go" format and realize that in addition to being great, it saves them lots of time.
Thursday, March 02, 2006
What does your contract say you will do?  I think honoring your contract is the ethical thing to do, unless it is renegotiated.

Thursday, March 02, 2006
There may or may not be a valid business reason for what looks to you to be a stupid requirement.  I suggest investigating the business reason.  If you get one, it will at least give you a reason for the stupidity.  In fact, it might demonstrate the stupidity is not so stupid after all. 

Assuming the requirement is not illegal and you can deliver it on budget, checks you can cash are never stupid.  The only thing you can loose is the time spent might be better used for something else.  That's true for anything you do but it is better to get paid than not.
Lionell K. Griffith Send private email
Friday, March 03, 2006
There isn't a business reason that the client's customers can give, stupid or otherwise; I suspect that Jacob was closest when he said that people just like doing what they are already doing. The conflict really is between doing a bad job and giving the customers what they want (and leaving them doing unnecessary work) or doing a proper job for the sake of my conscience. The issue of cheques doesn't really apply because all three parties, including myself, are all part of the same group - I am being contracted out to perform this task and ultimately I am not answerable to either the client or their customer, only to the board of directors.

I think that I will go with Nonymous' suggestion - give them what they want and what I think will help them and let them choose for themselves. It's just a shame that I won't be able to do proper user testing on the "better" solution, because those concerned don't want to use it.
Paul Brown Send private email
Friday, March 03, 2006
"The conflict really is between doing a bad job and giving the customers what they want"

How is giving the customer what they want doing a bad job? It's THEIR decision how they want data presented. So if they want it in Egyptian hieroglyphics, present it that way. You're letting your personal preferences cloud your judgement.

You've done the right thing. You identified a problem, raised it to the customer along with possible solutions, and the customer doesn't care. It doesn't (I assume) present a safety hazard, or breach of law, etc, so get on with your life. You're there to provide value, not to give yourself warm fuzzy feelings.
lw Send private email
Friday, March 03, 2006
"How is giving the customer what they want doing a bad job? It's THEIR decision how they want data presented."

Agreed. You do what the person paying you wants you to do. Maybe there is another reason they want the information in a sub-optimal format.
A. Nonymous
Friday, March 03, 2006
There might be more to the story.

Perhaps the "suboptimal" data is also used for another purpose.

Anyway, if you have a single client, you are second-guessing them.

What they want is the text format, not the spreadsheet. Don't get your shorts in a wad over "irrational behavior".
Friday, March 03, 2006
One other thought.

The job of software creators is to take the needs of the real world and meet those needs in an elegant way.

You have not done a bad job if you output the text format the customer wants.

If you do a payroll application, and five people out of 25,000 have their union dues deducted in a different way, it's not "inelegant" to make that special deduction.

Your job is to figure out an elegant way to represent that special case.

That example isn't made up. It's from Chrysler Comprehensive Compensation, much discussed on Ward Cunningham's Wiki at
Friday, March 03, 2006
I guess I have to side with doing what your client wants.  The unspoken benefit to not improving this system is they get to apply your skills to some other problem.  I tend to leave it to my client to determine the most valuable problem to solve.  That includes, I'm afraid, letting them decide when my solution is good enough to stop spending money on.

If you can show them dollars saved by the customer doing the work and compare it to the dollars spent on you doing the work, that's great.  But they also have to consider the opportunity cost of even higher value work.

(If the question had been ethics and not efficiency, I'd switch my answer in a heartbeat.)
Chaz Haws Send private email
Saturday, March 04, 2006
Consider that by performing the manual conversion step, they may be keeping someone hired. You take away that step, you put that person out of a job.

For what it's worth, I think that job should go away, but the real point is that its really not our place to make that judgement call.

+1 to the various suggestions that you offer the alternative, and then drop it when they decline to take you up on it.
Saturday, March 04, 2006
I am only a few years into programming professionally, but in the projects I've worked on it seems to me that ridiculous customer requests are the norm.  Every salesperson I write for seems to want to see their entire customer base in one list view, even if there are 8,500 rows.  Then they want to export the whole thing to Excel so they can make notes just like they did 10 years ago, and bring it all back in.  They want to know why they can't type and save 'waiting for answer' in the numeric 'Quantity Ordered' text box.  On and on.  Paul's example is spot-on; I am sure you all know what I mean.

There appears to be a rainbow of reasons for this, stretching from a total lack of technical and structural understanding, to old habits that refuse to die, to practices that everyone knows are bad but remain because of a private interpersonal arrangement.  But then there is the other, scarier cause of ridiculous-sounding requests; ones that I chalk up to bad habits or lack of vision, only to realize when I see the screen or feature in day-to-day use that it was my own lack of understanding and knowlege about my customer's industry that made the request seem ridiculous to begin with.

Paul, your interest in doing the Right Thing is perfectly placed; and your customer's customer is lucky to have you on their side.  This sounds resoundingly like a case of old habits, but without becoming an expert in the end user's field and internal company structure, you should probably defer.  My advice?  Take the time and effort you've allocated toward this feature, which isn't a priority for the end user (yet), and find a different kink in the process that is a priority for them right now.  Then everyone in the chain is happy, and if you can really show the end user that you can solve their pressing problems and get them on a healthy let's-improve-our-process path, this data conversion thing might be just the first item on a new, long, satisfying, profitable to-do list.

Oh, and when they do, down the road, request a faster way to process these files, be sure to congratulate them on their inspired idea.  :)
Mike Bloise Send private email
Sunday, March 05, 2006
> They want to know why they can't type and save 'waiting for answer' in the numeric 'Quantity Ordered' text box.

Well, why the hell can't they put an accurate and useful value in that field?

Sure, you "want" them to have the number immediately, but did you provide them with a way to distinguish between a forgotten entry and one where the realities of business mean that they need to make notes while they're half way through dealing with a customer?

No.  You didn't.  You declared that "quantity ordered" is a numeric field and that they shalt never fail to have the number.  Hell, would you even bother to wonder why they'ld want to type notes where you want them to enter figures?

Customers can be annoying, but arrogant developers are worse.

Eh, I suspect this guy has a point, but really, his customers would be better off with someone who'll actually give them what they want.

Sunday, March 05, 2006
I apologize; I think I was unclear.  Your point and the one I intended to make are the same; from my programmer's viewpoint I saw the 'Quantity' field as numeric, period, and the customer's request to enter text as showing a lack of technical understanding on their part about databases.

But when I saw that particular screen in use I came to the exact same conclusion that you did; the salesperson doesn't care about data types and table schemas; why can't they type what is most useful to them?  Once I saw it from their perspective, I realized that the actual lack of understanding was my own.
Mike Bloise Send private email
Monday, March 06, 2006
In fact, I found that my own lack of understanding was really the problem in the other 'ridiculous' examples I gave as well.  As it turns out, my customer really did need to see many thousands of contacts in one list, and uses that feature to huge advantage.

That's why my advice to Paul is to focus on some other area or feature; my own efforts to tell people what they really should want have so often been mis-guided that unless the request is actively destructive in some way, I have found the better option is almost always to defer.

I apologize for the lack of clarity in my original post; it read much more clearly in my head :)
Mike Bloise Send private email
Monday, March 06, 2006
Maybe the customer likes that manual step because it is easier to 'massage' the data before sending it on?

Monday, March 06, 2006
at the design stage i have a tendency to store all user input as text, and handle converting it to a number in code. its not unsual to store *both*, thus the user enters text, which converts to either a valid number, or zero (maybe with a prompt of some sort to indicate this).

thus i can have a set number (for a train) of "unspecified" or "driver didn't say" or anything else OR a valid number.

its also a nice way of handling nulls, i.e. nothing entered.

they key is to look at what is wanted and make the application do that, not try to redesign the way people work to suit the program.

optimise things internally by all means, e.g. store the converted number as a number if you will use it that way, but let the user do as they wish.
Claire Rand
Tuesday, March 07, 2006
who are you talking to from the client side?

I am software designer, and one of the things I have learnt  is that different stakeholders in the design process want different things. For instance we had one database & reporting system that was maintained very smoothly by a full time employee. When she left & another employee was appointed to take over, I was asked to make some tweaks to the system as the new employee thought the system was too manual. What we found after a few days of analysis was the most of he nearly 40 hours per week spent performing the task were obsolete or just not required (i.e. she was spending 10+ hours inserting page breaks in a report, printing reports & binding them for a client who never got a printed copy etc).  The database program had a few tweaks done (like page-breaking the reports) & we talked to the clients abotu what format they wanted the report & now the job takes about 1 day per month to look after.

So, you may get old-timers or people unable to cope with change who want the status quo, people like certain managers I have worked with who don't mind creating work for others if it saves them time/money, people who are afraid of losing there job, etc. 

My advice - listen to everybody & try and understand the perspective, but in the end follow the money. The person paying for the job in the end is the one who should get what they want; its up to you to communicate to them exactly what they want ;-)
Grant Send private email
Tuesday, March 07, 2006
"The person paying for the job in the end is the one who should get what they want; its up to you to communicate to them exactly what they want ;-)"

I actually laughed out loud.  Nice.
Chaz Haws Send private email
Thursday, March 16, 2006

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz