views:

69

answers:

5

The context is as follows: Enterprise software developed without enough direct customer involvement. We did not develop this software for a particular customer but to fill in a market gap. We worked the core requirements with major customers only, more customers jump on now. Mandated deadlines, requirements changing, little time to design. Fun time! :)

We got the first release out of the door. Then we got second release out of the door (luckily in a more organized fashion)

Most problems that the sustaining engineering is facing for both releases are what they call 'design bugs' rather than good old code defects. In general these 'design bugs' are such that a feature or part of a feature behaves as designed but that behavior is not what some customers want the product to do. It is not that all customers have these problems - each customer is different and what is enough for one is not for the other.

This makes me wonder about several things and I could really use an insight from y'all with more experience.

Here are some esoteric questions:

  • How much do you think is this a common phenomenon in product lifetime?

  • How much do you think did the context contribute to this?

  • What is/was your experience and context?

A: 

When you deliver something the customer did not want, you have failed with requirements engineering. Since this is the first stage of software development, and design, coding and testing are based upon it, bugs in the requirements are the most difficult and costly to fix.

Sjoerd
Requirements gathering for product (rather than bespoke) software for the average organisation isn't that straight forward. You have many different clients who have different needs and desires (which are often contradictory). Even were it that straight forward this isn't actually an answer to any of the questions asked.
Jon Hopkins
A: 

Enterprise software developed without enough direct customer involvement

  • in such cases, this will be a common phenomenon in product lifetime. If the customer is not involved and you don't know what and how he wants things, you'll be up for quite a bit of disappointment when you deliver the product and you find out his reaction.

How much do you think did the context contribute to this?

  • I think it's the main cause.

What is/was your experience and context?

Similar context, up until about half-way across a project's development period, when delivering an intermediary product, I found out that many of the customer's expectations were quite different than what I had in mind. I guess it was a good idea to send something intermediary for approval, this way I had much less to modify than if I were to send a final product that would not meet customer expectations, so I suggest you keep a connection with the customer from time to time, and get him to approve features before you move on to new ones. This way, when the final product is ready, it'll be what the customer has seen and approved step by step all along.

luvieere
I have updated the question to be more specific esp. in the context (how we were gathering requirements) and in the detail of how these 'design bugs' occur.
finrod
A: 

It depends how long-lived the product is: the longer the life-time, the more evolution is possible and/or required.

For example I helped to sustain one software product from 1991 to 2003; and at the end, it was hardly anything like at the beginning:

  • It started as an assembly TSR for DOS, implementing modem-sharing for small (e.g. lawyers') PC-LANs.
  • It ended as a distributed service for NT, implementing least-cost fax routing for several telcos.

It was sold throughout this time, several releases per year; it was what customer wanted, but the customers (and their needs) changed over time, as did the underlying O/S, the competition, etc.

ChrisW
A: 

This is absolutely common that needs differ from client to client and that they want to drive the product in different directions.

There are three options for any given change:

1) You don't do it - they've bought product software, they have to live with the product. I wish Word did somethings different but I paid a couple of hundred pounds for it rather than having a bespoke word processor built from scratch so I have to live with it.

2) You branch the product and have two different versions - as often as not this is the worst thing to do. As a software house your model is dependent on many clients contributing to a common code base. Having multiple versions significantly increases costs (every bug fixed twice, two manuals, etc. etc.) and breaks your business model. Again, if they want bespoke software built exactly to their requirements then they need to pay for that - you don't get bespoke software at package prices.

3) Customisation (potentially as an option / module / configurable setting) - this can work but you really need to think about whether it's the right thing to do for your product. Each extra options massively increases the number of ways in which the code can interact and the number of tests which have to be carried out so there is a significant cost attached. In the enterprise space you will have to accept that clients will make demands in this area but you need to accurately assess the consequences and costs (one off during development and on-going for support) and make sales and management aware of them.

But essentially they all come down to the same thing - product software, even on the enterprise level, is far far cheaper than having an in-house team (or consultancy) build something bespoke. That price advantage comes with a downside - it's that you don't get exactly what you want and that the business needs to flex to the software sometimes.

It's not usually a popular message with clients or with sales but you need to work out which market you're in (product or bespoke) and remember that when making decisions.

In terms of the other two bits of the question - I don't believe the context created it at all. The root of it is that organisations are different. Unless you have all your clients the same, it was always going to be a problem at some point. Maybe it's a bit worse than it might have been but probably less than you think.

My experience in this area: I've been on both sides of the fence. I've been a development and / or project manager commissioning enterprise (and non-enterprise) third party software products (portals, finance systems and travel booking systems) and I've worked for two software houses developing them as a development manager (which is currently what I do).

Jon Hopkins
Would you expect / have you seen these type of customer issues to become less frequent with further releases? (It would be my expectation)
finrod
Less frequent yes but not disappear. Ultimately your product will reach a point where it meets the consensus behaviour in the industry but each client will always have their own quirks and look to take things in their own direction.
Jon Hopkins
A: 

This is why you create API's. I've also seen enterprise level applications that allow users to create their own vb/java scripts behind forms and inside reporting tools. Yes, embed a reporting tool writer and don't try to make all of them yourself.

Enterprises are notorious for their desire to have massive amounts of features in every app. Even within the same company, you can get multiple ways of doing the same thing. I their defense, time is money, so when you save a 1000 users a click, it can add up. On the other hand, they also have people with too much time on their hands to think of every possible piece of data they may ever have to track in the entire lifetime of their company and will want them all in your app. They have the money and are set in their ways a lot longer than say a startup.

Jeff O