"Can you just add that? How hard can it be?"
Managing expectations can be difficult thing to do in any business sector, it's especially prevalent in software development. The famous question often comes up ... "Can you just add that? How hard can it be!"... as a company we're all about customer satisfaction - more often than not its not a major issue to add a small piece of functionality to a piece of software and both parties are happy, they get what they want and you've gone the extra mile where others wouldn't - but be warned - if you do it once the expectation to do it every-time may creep into your business relationship and this leads me to the point of this article - how to manage expectations and be able to say no but in a nice way.
A lot of clients will not know what they want, they know they want it to be different, better and perhaps cheaper than it was before, not always easy to deliver every aspect but here's some tips to help you with managing expectations and some good practices in project management.
Stage 1 - The Idea
Ask questions: Understand the project from top to bottom, what do they want their software to to do, who is it for, what problems do users face with their current software, how will this new software
Use your experience and knowledge: Drawing from previous experience or past projects is a great way to convey the type of work you've done previously and how that helped those clients. Take that knowledge and tailor it to your current client.
Stage 2 - The Documentation
Create really clear documentation: when managing expectations this is the biggest part of the process - once you understand the project to the full its time to put that into writing. Every detail, function and design must be written down, if your getting pressure from a client to deliver a HLD or LLD early for a project don't take shortcuts on documentation just ask for more time and tell them that rushing the documentation will only cause longer delays and potentially extra costs later on.
Once the documents have been submitted, you've gone through all the features and functions and both parties have agreed and understood the end product its time to start developing.
Stage 3 – Development
Development and dealing with changes: Its go time, the documentation is complete and your ready to start. This is a good opportunity to cement the relationship between the client and the developers - you want communication at every key stage of a project, if you use the agile methodology like a lot of software developers then you'll have a product thats capable of being tested and assessed at multiple stages from both the development and user side of the software. This is where changes will start to be made, the client will want to make changes to certain parts of the project, this is fine in most cases, its pre-agreed that there will be design discussions. Having a strong project leader willing to step in and make the decision between what is agreed and what outside of the spec is important.
Telling the client no is never easy, clear spec writing makes it easier because what they ask for is either included in the spec or not - perhaps a better approach would be to start creating a rough v2 spec for later consideration.
Stage 4 - Testing and Delivery
Testing, testing, testing!: rigorous testing throughout the life cycle of the development can't be stressed enough, having a client come back to you again and again with little issues will be frustrating for both parties so avoid this by making the software as robust as possible from the beginning.
Once the project is complete be sure to take the client through every aspect of the software created, tick off each section of the specification if needed to ensure that what you've produced is what they wanted.
There is no perfect formula for managing expectation or project management but being open and honest and clearly explaining a project at every step is key to keeping a client happy and also making sure you're not working for free.