Project Strategy and Planning
Developing a business case and strategy that can entice an organization’s leadership to commit resources is a difficult part of any project. Many times projects are carried out with existing human capital; however, capital expenditures at the project onset and in operations can cause a project to lose attractiveness in its pitch. Project sponsors and leaders are forced to spend significant effort balancing the objectives of the project and the quality of the final delivery against needed capital outlays. If too much capital funding is requested the Return on Investment and Payback Period for the project will be scrutinized, if too little is requested then the project risks developing something that cannot be useful to its customers. For most IT projects, this difficult planning process can now be reduced. If a project is built in the cloud it significantly reduces or eliminates the difficult planning process in two areas:
- Capital planning for infrastructure
- Trade-off planning for infrastructure peak capacity vs. design cost
Using a cloud environment for a project also helps reduce total lifecycle costs and to reduce or eliminate the work required in the development of asset disposition and reuse procedures. While this may not always be a major concern for most projects, mature organizations will understand the value of this as their physical assets age and reach end of life. Depending on the laws for the organization’s geography, recycling of e-waste can cost an organization additional funds they had not expected to incur. Eliminating physical assets using a cloud environment therefore saves money both in planning for asset disposition, and in disposal costs.
Development Stages and Improved Sprint Iterations
The earliest design phases of any IT or software development project are the most difficult. When making use of agile based project implementations this is no different. Initial sprints are focused on determining approaches to the various user stories and a variety of brainstorming methods are used to prioritize and develop finite tasks along with a good technical foundation for the project (what languages will the project use, will we use some variant of Linux or Windows to run the service, etc). Developing a project in the cloud helps to expedite the early stages of the project by allowing for rapid prototyping in the early stages of the project. To help facilitate more effective brainstorming, multiple virtual machines with different characteristics can be started and stopped at convenience (to get an idea of the brainstorming involved with agile projects review Agile Estimating and Planning by Mike Cohn). Doing this allows the design team to quickly evaluate initial design factors with actual production ready assets. This helps agile projects also increase the likelihood of producing potentially shippable increments in the earliest sprints of a project – an issue that many agile projects face at onset.
Cloud vendors also provide a variety of other services to complement their infrastructure. Amazon Web Services is an excellent example of this. Messaging tools like Amazon Simple Queue Service allow developers to make use of asynchronous messaging without building their own Enterprise Service Bus. Monitoring tools like Amazon CloudWatch provide monitoring tools which require little work to utilize. Combine this with the many other services available for most public clouds like Amazon and developers can save time by using existing tools supplied by cloud vendors.
Another area in IT project management that receives substantial benefit from cloud computing usage is System Integration and Deployment. A challenge in any project is integrating the various parts of the project created separately in a development environment and moving them to the target production environment. Problems occur from integration when these elements are placed into a staging environment closely resembling the final production infrastructure. The development team can work through these issues, but it adds extra time to the overall project for troubleshooting. Using a cloud environment, the development team can replicate the final production environment easily. This helps with integrating a project application which will operate on an existing application server. Creating a copy of the existing production instance supports more frequent integration testing during development reducing the amount of final integration issues that could occur - issues become apparent sooner.