Software development is not easy. Because it is difficult, it is also expensive. Complications often lead to delays. Delays cost money. Any organization that embarks on any software project should be aware of the costs, risks and pitfalls of software development. Software development is NEVER as easy as it might seem.
Many off-the-shelf solutions exist for most common needs. Some solutions can be modified rather than starting from scratch. Content management systems offer relatively easy-to-use platforms for creating custom products. All of these options when looking for software solutions. Often, others have solved the same or similar problems to your own, and purchasing their solutions will be much simpler than creating from scratch.
If you choose to develop your own software - either with or without the help of an external company - start small. Get some experience under your belt before you take on a mammoth project. Split the project up into phases in which you can incrementally deliver value to customers or stakeholders and get feedback from them. By releasing small portions early, you both validate the ideas underlying the project and start to tackle the complexities of the system that delivers it. The end product is rarely what you expect from the outset, so get early feedback from the people who will use it as often as possible. Try to avoid a "big bang" approach.
Whether you purchase, modify existing, or develop new solutions, it will be complicated. This website may offer some guidance. The goal is to share some of what I have learned in 25+ years in software development.
Throughout my career, I have always focused on process improvement. I have worked in a multitude of different roles in a handful of companies. Whatever role I've been in, I have attempted to improve the software development process. There are always improvements to be made. Often, developers need to be taught good habits, and leaders need to be taught good practices. Organizations need to be structured in such a way as to foster these.
In working with software development teams from across the globe (US, Europe, India, China, Latin America), I encounter the similar problems to solve. Every team can improve in some way. Every organization can get better at software development. There is no such thing as the perfect team.
Continuous improvement is the key to success. Start from where you are, and make a commitment to continuously improve. You may get to an end state where the process is working well, stakeholders are satisfied, and the teams are happy. But then for the next project, the process needs to change, and you need to continue to modify it to make it better. Rarely do you get to a point where a product is finished or a team can stop improving. It's just a continuous process of change that you have to manage or stagnate.
How do we optimize teams and organizations to produce the best software with the highest possible quality at the lowest possible cost? There are no easy answers. It's a balancing act. Every decision is a trade-off. So you need to have systems in place to help you decide what is the most valuable thing to focus on next. Both in product and process.
This is where a prioritized backlog is helpful. But that's a topic of another chapter. Just realize that you have to constantly evaluate where you are, where you want to go, and what is the best way to get there. Every day. This is how you manage software projects. Daily.
"There is no silver bullet!" in software development. That phrase was coined by IBM engineering manager Fred Brooks in his seminal book on software engineering, The Mythical Man-Month. What was true when he wrote the book is almost universally still true today. There is no one thing that will fix your software development process. But there are a multitude of ways to improve incrementally. This is what I will show you in this website.
If you haven't read that book, however, stop reading this website, and go read the book. Brooks's lessons from 50 years ago are still relevant today. Everyone in software development should read this book. Then read this website. I'll help you find new ways of solving the problems he raises in his book.
"No one size fits all" was the theme of "Agile Open Florida" in June 2015, and that phrase has stuck with me ever since. Just as there is no silver bullet in software development, there is no one size fits all approach. Every organization has its unique needs. Every team is different. One must adopt common practices that one believes to be sound and then adapt them to the needs of the organization. That's where continuous improvement comes in. People, teams, and organizations must continually adapt to the needs of the software being created. There is no one single approach that will help every organization. There are many to choose from. You have to evaluate the needs of the people, teams, and organization, adopt practices that meet those needs, and then adapt those practices further as you refine your software process. You can't sit still. As your people, teams, and organization evolve, so must your practices. That's the only way to keep your organization running smoothly.
Approach every software project with extreme skepticism. People will naturally be optimistic at the outset but later become stressed as the costs mount and the software is not ready. Delays are normal. Rarely will a team accurately predict when a particular item will be ready for use. There are teams that can do that, but generally it's after they have worked together for a long time. And it takes at least one wise individual to reign in optimism in predicting when something will be ready. Some teams never learn this skill.
So set expectations low from the outset, and prepare to be disappointed. The software process is difficult. You have to get used to that and adopt practices to make it better. If you're overly optimistic, you will be let down. If you take a realistic approach, you may get what you need.
This website captures some of the techniques and practices that help software projects succeed. No matter how simple the project, it always comes with risk. Adopting the practices explained here will help reduce that risk and will improve the chances of success.
Good luck!
The Virtual Team Coach