Developing software is a rather complex task. Ask any developer. It's made even harder by the three competing goals of software development: Time, Money and Features.
In an ideal world every software development project would be delivered on time, within budget and with all the features originally requested. Unfortunately this is very rarely the case.
Developers know that delivering the holy trifecta of time, money and features all at the same time is hard impossible. Why is this? The answer is simple. All three of these goals compete against each other.
The three goals create a negative perpetual cycle. More features means the project takes more time. More time means the project costs more money. More money means that the client wants more features. The cycle has now come full circle and repeats itself.
To stop the cycle you need to lower your expectations to achieving only two of the goals. I suggest you look at features and time.
Features are the real drivers behind any software development project. If you can limit the feature set, you can deliver your project on time and enjoy the accolades of your colleagues and superiors :)
Unfortunately most software projects throw every idea possible into the mix because "it must have this feature". Of course this results in a mammoth feature set and the project is doomed before it has even begun.
A wiser way to determine the features required is to only pick the ones that will help achieve the primary purpose of the software. This should be no more than three main features!
Got some obscure feature you think will be useful? Don't do it! Once enough of your paying customers have asked for it reconsider whether you want to do it or not. Stay focused on the core features for the product!
You will ship your software project.
Once your product has shipped you will quickly tell what is right, wrong or missing. I cannot stress how important and invaluable this information will be!
By reducing your feature set and shipping on time you won't have wasted years developing a product then finding out you got it wrong or all those "must have features" are not even used. This will save you money, time and your sanity.
You will also know exactly what you must do next for version 2 of your product. Again you pick the 2-3 most important features and ship them. Then you will receive more information and a positive feedback cycle is starting to occur!
Now you are cooking with gas!