To err is human. But it is also human nature to learn through errors.
To be able to deliver a software project on time and within budget would be a dream come true for most software professionals. From the time a project is conceived until the project is successfully delivered, the project team goes through a number of project lifecycle phases. As discussed in the previous chapter, the project could involve a number of complexities that need to be addressed during the entire lifecycle of the project. They include: