Rescuing Code: Turning Software Pitfalls into Success Stories
I sometimes get called in to get software projects back on track after out-sourced folks or big consultancies/agencies don't deliver. It pains me to see so many projects and products get off track in the first place. There are so many clear changes that can be made to the way software projects are run that can make a huge difference in the outcome. Here are a few of the things I've seen that can make a big difference in the outcome of a software project.
You need to have a vision. A desired outcome that you, your team, and your customers/users can get behind. This needs to be articulated and embraced by everyone involved. This is your "why".
Strategy. How are you and your team going to get there? This is your "how".
Features, flows, stories, and UX (User Experience) principles. What are the things that need to be built to get there? This is your "what".
Task breakdown and execution. Getting the work done well. What these are depends on the stuff above. If your strategy involves going fast, you need to keep this list short and focused. Quality may be affected. If your game plan requires reliable, robust, and secure software, make sure to document all tasks and prioritize high quality.
Experiments and Testing. After you have something (and hopefully throughout the process), you need to test it. You need to know if what you are building is working and if it is what your users want. Get out of the building and talk to your users. Get feedback. Make changes. Repeat.
Throughout the building process, there are many things to watch. Here are a few of the things that I've seen that can make a big difference in the outcome of a software project.
Communication plans. I'll be frank, the number one problem is there isn't enough communication. The second-biggest issue, and a bit of a nasty one, is dishonestly in that communication. Team members might avoid taking responsibility for their mistakes. They either avoid discussing the problems or minimize their importance. This is a huge problem. If you can't admit to the problems, you can't fix them. If you can't fix them, you can't deliver a good product.
Risk management. In a software project, there are so many risks. It's almost a never ending list. Of course, you can't manage all of them, but you can manage the big ones and the ones that are likely to happen. Having an eye on the risks will save you so much effort in the long run.
If something isn't working, or you see a big opportunity, you need to be able to pivot. You need to be able to change your strategy, your features, your tasks, and your experiments based on what you learn. This is the essence of agile software development. This is the essence of Lean Startup. This is the essence of good software development.
If you're not sure where you're at, consider having me do an audit. If you're starting something new, invite me to write a proposal for you. Or if you want to hear more about my perspectives, let's talk about how those software development projects are doing.