7 Simple Steps to a Successful Software Project
October 09, 2011
1. Imagine an end-result in only the coarsest detail
Let’s face it, we’re all human. We can’t juggle everything in our heads, and we don’t have perfect clarity on day 1 of a project. You want to get your system in place quickly, and you definitely don’t want to waste time playing imagination games for weeks on end writing detailed documentation and pixel-perfect mock-ups that will be difficult for others to understand, and could be impossible to implement.
There is definitely value in a study of business requirements, written project requirements, and simple sketched mockups, but stay high level!
The more you layer imagined details on top of other imagined details, the further from reality you get. Write down and verify your facts, sketch out your vision, and get the ball moving!
2. Keep and communicate a clear and consistent vision
It’s OK if you realize during a project that your best chance of success means a slight change in direction.
However, be wary of too many or drastic changes in direction - pause your development until you’ve re-established your vision and reconfirmed your facts. It doesn’t make sense to continue spending time and money along any direction to which you’re not fully committed.
3. Stay engaged
Don’t send your development team away on auto-pilot. They will need your help, and you will need theirs - daily communication is healthy. As each iteration goes by, they will rely on you to imagine more and more detail on top of the code they deliver. Imagining the details on top of real concrete running software is what will keep you on track towards delivering your product.
In addition, if you see something going in the wrong direction, the sooner you talk about it with the team the more you’ll be moving towards your goal.
4. Ship
It’s OK if the product is not perfect on day 1. Call it an open beta if it makes you more comfortable, but the sooner you can get your product into the hands of your users, the sooner you will start collecting valuable feedback.
Remember, don’t imagine what your users will want, find out for sure by putting the product in front of them.
Sometimes you’ll hear the idea of focusing on your “Minimum Viable Product”, the simplest product you can build that has some value to your users. How can you fully imagine this without your users’ direct feedback?
5. Keep the feature set small
Remember the words of Antoine de Saint-Exupery, “Perfection is achieved not when there is nothing more to add, but when there is nothing left to take away.”
It doesn’t take much effort to build something complicated, and it is very challenging indeed to build something simple. It’s compelling as the project moves forward to imagine all the extra things it could do. However remember that by and large every new feature you add will make the product harder to use, and more expensive to maintain moving forward. Be very, very sparing.
This includes incorporating user feedback. You will get a volume of feedback from your users, but don’t take it at face value. Understand where it’s coming from, read between the lines, and either discard what doesn’t align with your vision, or re-align your vision.
6. The Long Haul
Your software isn’t an island. It lives in a world that constantly changes, and as with everything it must either adapt, or fail.
If you approach the project with a single up-front budget and leave nothing for ongoing maintenance, you’re ensuring the future failure of your product – it’s as simple as that.
Some technologies will be inherently most expensive to integrate from a maintenance perspective. Right now, social platforms like Facebook and Google+ are in constant flux and products that integrate with them can carry the highest maintenance costs as they adapt to what can be weekly changes. But who doesn’t want their product to integrate with Facebook these days?
Choose carefully and with your eyes open what technologies you integrate. Some will have a far higher impact on your maintenance costs than others.
7. Have Fun
Creating software is a uniquely rewarding experience. When you can see it in the hands of your users, and they appreciate it, it is tremendously gratifying.
But also remember the journey, product life cycles can span years or decades - revisiting the path to maintain and better it should be a positive and pleasant experience. If it’s not, you’re not going to want to do it.
Everyone does their job better when they enjoy what they’re doing. Keep your vision front and centre, keep a positive attitude, treat your users, peers and developers with respect, and it will be hard not to build something meaningful.