1. Billed by the hour
Know that just like any professional service, whether you are on a fixed-price package or time & materials arrangement, software development companies ultimately works off billable hours, and it always comes back to that.
It is important to keep this in the back of your mind when working with anyone who writes software.
2. Be practical with your scope
There's a saying software can do anything, it is true, it can! Being perfectionists we are, we'd love the thought of building the best software in the world, but this comes at a cost - time, again, it all comes back to this!
Be practical and know what you want now, and know what you want in the future. Build out a practical solution to solve your immediate needs and utilize it first, then elaborate on it in another phase.
3. Know your scope and stick with it
It is imperative to know and understand your project scope well and try your best to stick with it. It pays off to spend a bit more time upfront to define a concrete scope, that way your developers don't waste time refining or rebuilding work for the same requirements.
4. Participate in the development process
Talk to your developers, communication is the key. This minimizes the risk of rework later down the track.
5. Control your changes
Everyone loves changes, especially when they start to see something tangible. The general rule of thumb is, requesting changes early on in the process is much more economical than deep down the process.
It also takes roughly 15 minutes for a software developer to recover from an interruption, it is always better to bundle a list of changes before sending it off to them!