The first step to determining success is defining success. Every project should start with some definition of success. The definition may change over the course of the project, but there should always be a way to determine that the project is moving toward a good conclusion. One of the biggest challenges in the definition of success is making the definition realistic. If the definition is too lofty, success will be impossible. Avoid things like "bug free", as well as things that are impossible due to time or resource constraint. If success is unattainable, then the only other possibility is failure.
Some common elements of success are:
- It works - Remember that the most important thing for any project is that it works. This should be the first item of any definition of success. If it does work, no matter the status of the other criteria, it is at least partially successful. If the project does not work, it cannot be a success.
- It is easy to support - An important aspect of most projects is that it be easy to maintain and modify. This will be important in reducing risk to future enhancements.
- It is responsive and efficient - A project that works but is too slow will be considered unusable. Determine how responsive and efficient the application must be, and use that as a success element.
- It is user friendly - If the UI is to "clunky" or does not work in an intuitive way, users will not want to use the application. An application that the users don't like to use can be a bigger failure than one that never existed.
- It uses "cool" technology - An important part of maintaining an application is having developers that are happy to maintain it. Using the right patterns and methods can go a long way toward keeping developers excited about the project. Using the right technology can also increase the chances of success in the other criteria as well.
- Project specific successes - Most projects will have a set of success criteria beyond the other items listed here. They should be included in any assessment of success.
All of these should be specifically qualified for each project. Some projects may not require a UI at all, for example. Temporary projects may have much more importance assigned to the "it works" category than to the others, but keep in mind that few projects are ever as temporary as first intended. Care must also be taken not to spend too much time and effort on gains that are insignificant.
Managing risks can also determine the success of a project. One of the biggest risks to any project is scope creep. Scope creep is caused by changes to the plan. The plan can be changed on purpose, due to a change in priorities or a change in information about the project. These changes may be necessary, but should be carefully considered and tracked.
The plan can also change because of loss of focus. If the team gets distracted from the overall goals and vision of the project, they can spend a significant amount of time on activities that are unimportant or unnecessary.
Managing scope creep is one of the most difficult parts of many projects, and one of the biggest keys to success.
Management of the effort and resources put into a project is very important as well. If more effort and resources are spent on the project than the results justify, then even a project that meets all the conditions for success is not truly successful.
There are several things that can be done to maximize the chances of success.
- Good requirements - Requirements that are declarative, concise, focused and prioritized will help set the definitions of success, as well as starting the project with a solid foundation.
- Good team - A team that is competent, focused and united will increase the chances of a successful project.
- Good marketing - Whether the project is to be sold commercially or used internally in a corporation, good marketing is important. Evangelizing the project will increase awareness and excitement for the system.
- Good documentation - Documentation can help in many areas. It helps measure success, helps keep the project on track and helps keep all the interested parties working together well. Documentation is absolutely essential to successful maintenance of the system.
- Good plan - A proper plan will give the team members an understanding of the need being fulfilled and an understanding of the solution being developed. The plan should include thorough, trustworthy design, good development practices, thorough testing and a plan for implementation. Most importantly, the plan should support the larger vision for the affected systems.
One of the most important decisions about a development project is when and how to end it. There are several fates that can befall a project: it can be abandoned as a failure, it can be postponed for future review or it can be declared a success and moved into production. A failed project is one that has not met enough conditions of success, and the investment required for any path forward is more than the project is worth. A project that has met some conditions of success, but requires investment of time or resources that is not currently available can be postponed until the time and/or resources are available to complete the remaining success conditions. A project that meets enough success conditions to be moved into production is completed successfully, ending the "construction" project and putting the system into "maintenance" mode for future modifications and enhancements.
Proper risk management and definitions of success can increase the impact of any system. Following good, consistent, easy to understand processes and procedures will benefit any development team. In the end, each team is different and must develop it's own processes, procedures and definitions of success, but the most important thing is that these things exist.
No comments:
Post a Comment