I talk about being simple a lot. I like software to be simple. It’s not as hard when you keep it that way. That’s important for a lot of reasons, but for me the most important thing is relating how that software is going to put dollars in your pocket.
The single most overlooked aspect of simplicity in software development is the concept of a “happy path”. Look around, as tons of companies are doing it. They’ll call it agile development, or some other silly buzzword, but in its simplest form, its nothing more than coming up with a happy path for how the customer will want to use your product. Non-software people in your business will understand that and get engaged at a different level.
How does Joe Customer accomplish the problem your trying to solve with your software? That’s it. Go build that. Get that done. Stop getting hung up on implementing things that don’t matter. Bite off that simple niche and build it with a limited feature set. You’ll know when your done building if you need to add a few things here and there to make it work right. Those few things will have a MUCH smaller development time and complexity curve. Not to mention it can be offloaded easier because the “guts” are there and you can inject people with less domain knowledge (code monkeys) into the mix because you’ve really defined the “domain”.
Most software projects would just be better off re-written in a year or two anyway because of the speed of the tools evolving around it. So instead of designing to write large complex systems, stay simple. Build your first happy path and release it, and if it doesn’t solve your problem (and you’ll know because people won’t pay for it), bolt on another happy path and continue to build that way.
Simple is hard to do, but when done right keeps you moving at the speed of the competition around you. Happy path software development will help you accomplish simple.