The only thing more difficult than building software for a client, is explaining how software is built to a client.
Toggl sat down to explain this incredibly complicated concept the only best and clear way:
with Pictures, and with Cars.
So one of the biggest, persisting issues is usually the gap between how clients see software development and how development works out in practice.
What we will most probably face here? Endless negotiations over budgets. But it's only one item on the list, the divide is much wider than that.
How to cope with that? What is the best way-out? On this stage you will have a lot of questions, but what you should really know is:
What kind of software development methodologies are there, and where does the client involvement stop?
The Waterfall model, where development follows a linear path seems to be gone these days. Unless you're working on particularly big projects, you're better off following an agile development methodology.
Сlients often don't know what exactly they want from a piece of software. Agile teams work in a transparent manner and keep the client involved in the development process to make sure the end result matches their actual needs as closely as possible.
It's like buying a suit. You can shop online (never know what you get), go to the store and try it out. And ideally, you'd have a tailor make it fit your shape.
Buying software from an agile team is like getting a tailored suit.
How to protect your development time?
While agile development is about transparency and cooperation, you still need to protect your time. Here's a few things that you may have heard clients say:
"Can I sit with you so we can work on this together?"
"I have a friend who could do this in a day, could we do this at half price?"
These scenarios can cost you a lot of time and money if you don't stand your ground. Your first line of defense is a good project management system.
If you need to be able to respond to unexpected issues or maintenance stuff, use a Kanban board. A Kanban board is essentially a to-do list that imposes a strict limit on how many work items can be in progress at a given time. It's a great system for keeping your team from getting overwhelmed by interruptions.
If you don't need to worry about maintenance or if the project isn't made up of many interconnected parts, you can use a Scrum system. Scrum limits a team to working on a highly specific goal in sprints lasting typically between 2-4 weeks. Its whole idea is to keep the team fully focused on their goal.
How to protect your budget?
One way of staying profitable is to put a big red price tag on your time.
There are a few benefits to tracking your development time. In jargon-free terms, it gives you the ability to make informed plans and to show your clients how much "small changes" really cost in development time.
Time tracking works because of the way our brains function - we do not really have an accurate sense of time, but rather a pretty terrible perception of it. Consequently, guessing how much time a project might take - especially those ever-changing agile projects - is not significantly more accurate than predicting weather with a magic ball :)