There’s an old developer saying when approaching new projects is that there are three ways to build it:
- Make it Good
- Make it Fast
- Make it Cheap
Pick two of those (or ask your client to do so) and move forward…
That’s the hard part of any piece of software that isn’t trivial [I realize that the definition of “trivial” can be a moving target as well 8^D]. Making good software often takes a lot of time and costs a lot, whether in free time, money, or other resources.
If you want it fast, then you need to cut some corners on features/functionality/security (damaging the good factor). You could help alleviate this by adding more people to the project, but then that gets expensive. Making cheap software can mean reduction in features (the good angle again) or simply taking additional time since you aren’t spending money on developers, tools that might speed things up, or even settling for a slower hosting platform for things.
Right now I’m definitely building things in the Good/Cheap sector of the triangle. Sometimes the lack of speed can get frustrating. There is a “just ship” mentality that I’m coming to embrance more, but that “shipment” has to be functional at first, and hence I get caught in the cycle again when adding a new feature. However, I keep in mind the vision of the outcome, and it encourages me to keep moving forward. Such is the process of software development.