views:

103

answers:

6

My project has some rather open-ended requirements in terms in file size limits and performance. In the end, the performance varies by platform and typically execution time is the only issue. Faster platform equals faster execution. Our business guy says we should find our current maximum capability, make sure we exceed the previous legacy application we're replacing, and set the bar a little higher than legacy. In every new release we can give them more until we hit our max. Nobody has to know what we can really do that way we can show improvement over time. This makes me feel a little dirty.

UPDATE: better example The situation is more like "Legacy applications could only do 2.5M. We can process 20M records NOW, but we'll set the limit to 5M so that in 6 months we can put out a new release that can do 7M, etc, etc. We're still above legacy"

We're still giving the customer what they want, but we could give them more. We're not giving them more NOW so we can give them more in the FUTURE and look like heroes. Something about this feels wrong from a academic/engineering/science point of view.

How do other people feel about this? Has anyone encounted this or similar "working the numbers" type situations? Should I just get over this?

NOTE: Not sure the title is 100% correct but I couldn't find a good way to word it. Help?

+1  A: 

I don't even really need to make any kind of decision - it seems as if you already have. If something makes you feel "a little dirty" or squeamish, there is probably something that isn't right about it. Or, Jiminy Cricket said it this way, "Let your conscience be your guide."

How you resolve that depends on your organization, your position in the organization, etc. But, just remember, an organization that is willing to compromise ethical-type issues in one area is probably willing to do it in others.

JasCav
+2  A: 

All features have to be tested and brought into a timeline. You can't have an infinite release cycle so you have to make choices. Some features get dropped and others get elevated based on business needs. It might seem like a silly distinction but maybe your manager is trying to balance priorities. If you have small performance fixes over time balanced with new features then that seems good to me. I'm not sure this has to be sinister if the motive is really balancing features with performance improvements. I have a list of about 50 things I want to do to improve performance of the product I work on but I have to get to that over time because there's a lot of other work for me to do.

Jon
Well, it depends on how they're approaching the problem - if they are gimping performance, or not giving customer's full performance (given what a customer is paying) and using it to sell new versions, that seems like a poor practice. If they're making trade-offs between features vs. performance vs. shipping it at all, then, yes, trade-offs do have to be made.Can't know more without the context.
JasCav
The situation is more like "We can process 20M records NOW, but we'll set the limit to 5M so that in 6 months we can put out a new release that can do 7M, etc, etc"
basszero
I'd set the limit at the current maximum and then aim to improve on that (or make the 20M process faster/better (whatever better means)) for the next release.
Lazarus
Yeah companies put limits on software all the time. Look at Windows. There's no reason why it can't support all the RAM the CPU can but Microsoft limits it to make more money. It's annoying but it's not unethical really-it's just really annoying.
Jon
A: 

A thorny problem. My thought it to develop the best code I can all the time. I quote for a job at a suitable rate, if the customer wants to reduce the cost then I work with them do help them decide what they want to cut from the product, be that features or optimisation.

And that's the way to avoid that 'dirty' feeling, make the decisions in the open, with the customer. They may decide that they want to spend the extra to get the features or the performance, at the end they get exactly what they expected (occassionally a little more if I find I have time to spare). They are paying for my time to do this work so within the scope of that time I will deliver the best software I can.

I also heartily agree with Jon, you can't keep tinkering forever. That's where cycles of development with clear objectives and timelines are essential. If it wasn't the case there wouldn't be so many methodologies based around that structure.

Lazarus
Correct. A person for whom I worked recently had a landscape supply business, and sold everything prior to selling the property. Near the end of the sale he wrote "markdown" on all the stuff that was going in the trash. No prices were changed, it was a the leftover stuff that was nearly unsaleable. A surge of people showed up ( he could advertise ) and started fighting over stuff that needed to be thrown away, paying full list price for it. I think your approach is best, you should be able to tell who really needs price negotiation.
Nicholas Jordan
A: 

It's your product, and you can ethically release what you want, as long as you are honest about the capabilities of what you're releasing; it's the customer's choice to buy it or not. However, I doubt that it's a good business decision to do what you're proposing, as opposed to releasing the 20M version immediately.

Note that nobody questions the ethics of producing intentionally crippled freeware or shareware versions of products.

mquander
Nobody may question crippled shareware, ethically, but I personally hate timed trials and make fun of them in the open. I call it Nagware. I'd prefer a useful, usable, non-expiring demo (SuperDuper! is a good example) where the 'full version' has compelling features for the upgrade. But I guess that's your point: it's their software and they can market it how they please.
Jared Updike
+1  A: 

Wait, so you're going to purposefully slow down version 1 so that version x will seem faster? Reminds me of the old Windows source code joke.

Ethics aside, if your company only betters itself later by being mediocre now, then perhaps you might find more personal satisfaction at a company with slightly higher aspirations.

P Daddy
+3  A: 

Don't.

Some business people believe that lying is OK and they will find nice words for it but it's always a first step on the road to corruption. And while you might be aware that you're on that road, it's very hard to know where since you'll start lying to yourself ("it's not that bad", "we don't really lie to the customer ... we just don't tell everything", "it's for their best", you know the drill).

Corruption is a very small force but hard to fight and even harder to stop. Therefore, if someone tries to corrupt you, say "NO!" to their face. If they won't let up, leave. I mean it. Most human beings are easily corrupted because of the way our brains work, so don't stay in an environment that can quickly ruin your life.

In your case, if the only benefit of the next version of your application is that it can process 2M rows more than the current version, in which way isn't that cheating your customer? If it has more worth for the customer, those features should sell it.

Aaron Digulla