Every now and then it happens that customers and software development vendors stop understanding each other which leads to wasteful argues, mutual accusations and can even end with the complete project crash. By the nature of the profession I constantly work somewhere in between the client side and the programmers’ one. Basing on this experience I can say for sure – that’s not developers/testers/PM’s who are always to be blamed – the customers also should understand the basic behavioral models and principles of work. I’m not saying the client shall grovel through the whole available literature on the software development methodology. Often, it’s enough to keep in mind simple but useful tips that will save lots of time, money and keep the both parties’ nervous system robust.
1) Take an active part in the project, don’t restrain yourself 🙂
Basically there are 2 situations possible: when there is a detailed technical spec and when there is not. Even when there is – if developers pose questions, it means they really need the information for your business success, first of all. So, I’d really advise you to find at least 10 minutes to respond to the posed questions. If there is no spec and the process is going iteratively, it’s even more important for you to discuss the functionality needed. The more the BA/developer (depending on the project size/needs) knows – the more quality the product is – the less time consuming the development process – the more successful your business is.
The most important thing to understand here is that, above all, it’s your business, your product, your tastes and your vision. The thing which is completely obvious and logical for one person may not be clear at all to the other. Vendor companies can definitely advise/suggest (and they actually should), but the customers shall take an active part in the discussion. Depending on the product goal, sometimes even some simple “register” button can play the crucial part in the whole business. It’s always better to ask and make the required thing at once, then remake it again and again wasting time and patience.
2) If you are a Big Boss and simply don’t have time to take this active part described above, appoint a person who can substitute you fully in the decision-making process and whose competence and vision you trust.
3) There always shall be one person who is fully responsible for the whole project, not two, three or ten. Don’t share responsibility with your marketing assistant, accountant, art-director, system administrator, chief locksmith and charwoman. Ok, I’ve overplayed a bit 🙂 Marketing assistant and technical director can definitely advise on this and that but the final decision is always made by one person. Thus, it is always known who is responsible without shifting the duties between different departments.
4) Working out the prototype, think only about the main and the most important functionality. All bells and whistles will come afterwards. If you can not define which detail is more significant and which is less, let the competent people like Requirements or Business analyst help you.
5) Deadline is a mutual concern.
Actually, it’s an extension of point 1. If you set a tight deadline, please, ple-e-e-a-a-se don’t leave for a 3-hour lunch or for a vacation leaving the developers without the required info/docs at the last project stages. They’re upset, you’re upset (especially after vacation – I bet!). In the end, it’s a loose-loose game.
6) Listen to the programmers’ advice.
You’re not obliged to carry into effect everything they say, but try to take to heart at least part of it. Especially if you have no clue about all these offbeat terms like .NET, PHP, Java, Apache etc. and want to develop your own e-commerce system, for example. You’d better listen to the technical people in this case – not all the systems are made hands down with the help of some free ready template. It will take you some time to listen but instead will save lots of time and money. Who knows – probably they will say something useful? 🙂
If you are a rather large non-IT company, it’s actually better to entrust the process optimization to the professionals. There are always Requirements and Business Analysts who are ready to help and advice.
7) The following (and the last for now :)) tip is applicable for the life situations in general, not only in the sphere of software development. Golden rule, so to say. Every dispute, every problem, every issue can be settled and solved without shouts and emotional accusations. If there is already a problem, it makes no sense anymore to constantly clarify who is the one to blame. The parties should already think over the way out by the means of a constructive dialogue. Not in a different way. Let’s treat each other respectfully.
True – in our company there are such people like me who help establishing this communication bridge between the customers and tech guys, thus avoiding lots of embarrassing moments. Still I vote for the world peace J and constant mutual understanding. So I hope that these tips will help us in the uphill struggle of building a beneficial cooperation in the sphere of software development.
I’d be really glad to see here both parties’ opinion – customers’ and vendors’ one. Probably, you have your own list of tips or interesting moments/situations to tell about – share with us! 🙂