This was a “whitepaper” I wrote for my previous employer. I’m posting it here to ensure I don’t lose it.
As a "business professional" you are likely to be involved in a software development project at some point in your career. It may be the development of a content management system for a corporate website, an employee portal, or a custom developed software package to meet the unique needs of your business. It is important that whatever the software project, you are armed with the information necessary to bring the project to a successful conclusion.
By aligning yourself with the values outlined below, you can help to improve the likelihood of success on your next software project. While the values alone won't ensure success, they go a long way to ensuring the vital parts of the development process have the correct focus.
Value Individuals & Interactions
The most important success factor in any software project is the individuals involved in the project. Despite this fact, many organizations put all of their focus on developing a well defined process for their software projects to follow. This process, mind you, is typically designed to commoditize the people involved and treat them as pluggable components. The best tools and most refined processes will not ensure project success, however, having an excellent team of project managers, programmers, testers, and business sponsors will.
If you're looking to build successful software the last thing you want are pluggable components. Instead, you should seek out talented and skilled individuals that work well within a team environment. Do everything you can to provide them with what they need to be effective. Empower them, let them know they are valued and appreciated. Give them a reason to make your project a success.
Value Working Software
The most valuable thing that you can get from the team developing your software is a working version. Many organizations spend months and even years developing requirements and design documents, and while valuable they don't provide what you really need. Without a working version of your software you can't determine how the software will respond, nor can you foresee what features might need to be tweaked or changed, and you certainly won't be able to determine what will provide the real value.
To help get your hands on a working version of the actual software as soon as possible, you should ask your development team to take an iterative approach to developing the software. Choose the features that will provide the most business value and have them get started on developing a working version. Although this may sound dangerous, remember that you have the best individuals you could find on your team. You didn't just select a bunch of pluggable components; you selected a set of highly skilled individuals that have been empowered to work together to reach a common goal—delivering you valuable software.
By taking an iterative approach you are able to get a working version of your software much earlier in the game, thereby enabling you to determine the best next steps for development. After each iteration you can re-evaluate where you stand and what remaining features will prove most valuable. Have your development team deliver early and deliver often. The more you get your hands on your software the more likely your software project is to succeed.
Value Customer Collaboration
The "customer" of the software should be placed at center stage. They have the knowledge and practical business experience necessary for developing great software—more than anyone else, they know what is of value.
Encourage the "customer" to be closely involved with the project team. Close interaction and collaboration between the customer and team will help everyone realize where the real value is. Make the customer part of the team and have them collaborate with programmers, testers, and designers.
Getting the customer collaborating with the people developing the software will help the team see the project as more than just another project; they will begin to see the real value. Your development team will like to see that what they are doing matters, and will probably be motivated by it.
It is always good practice to have the customer review the software after each release. After viewing the current state of the software, you should also review the requirements not yet developed to determine which will add the most value and which requirements may need modification. Continual collaboration between the customer and project team will positively enforce the most valuable features of the software and significantly decrease the amount of re-work after the final product is released.
Value Responding to Change
Traditional software development processes are predictive in nature rather than adaptive. They use a detailed project plan based on a set of identified tasks & requirements to predict how the development of the software will occur. Unfortunately, software development is a very unpredictable endeavor.
Changes are inevitable, so why not embrace them? Instead of trying to take a predictive approach to your projects, try to make them more adaptive. Setup your project to be ready to respond to changing business needs and requirements. Allow customers to change requirements as their understanding of the problem evolves and manage those changes in requirements at the beginning of each iteration. Find ways to make your process responsive to the change—you might as well because it is inevitable.
The values outlined in this article may seem like common sense, however, the majority of software development projects are not in alignment with these essential values. Give your next software project a better chance at success by aligning yourself and your development team with these values—you won't be disappointed with the results!