Most large scale IT/Software Development/Implementation/Integration projects have a potential to contain a number of challenges. We need to anticipate these challenges ahead of time and have a plan, if possible, to mitigate them before they occur and to effectively deal with them if/when they do occur. Here I categorize a few of issues that I have seen over the last 25 years that can plague a large scale project:
Requirement and Scope
In many large scale projects, there is a tendency for a gap to exist between what the customer wants and what the team understands as the deliverables. Creating a complete requirements document upfront goes against the agile methodology and is counterproductive as the requirements are bound to change over time. So the customer and the project teams need to agree on high level deliverables and some key details with an understanding that as more details are uncovered an updated feature matrix and schedule will become available for the two parties to review and agree on.
Budget and Staffing
It is very important that the client and the implementation team both know these constraints well in advance. For example if the project needs a Hadoop expert to be available two months from now and there is $H allocated for this in the budget, both the timeline and the budget should have been known to both the client and the implementation team and they should have based this on the current market condition for Hadoop experts. In other words the team should have either identified or should have a very high confidence that it can find such a resource who can do the work for $H, two months from now. If there is any doubt, both the budget ($H) and the duration (2 months) would need to be revisited affecting cost and schedule of the project.
Many project have runtime operational requirements which can only be addressed by having access to IT infrastructure which can support them. For example, if the requirement calls for 100 msec response time for 100,000 simultaneous users and the implementations team has determined that this will require 100 load balanced servers with geographically distributed caching servers and replicated databases in each of the geographical location, then the client should know about this need and should be made aware of the expected performance if the current infrastructure is less than what the team wanted. The recent Obamacare web site (www.healthcare.gov) launch fiasco is a good example of this issue.
This happens a lot when key client expectations are not written down and ratified by the client. Sometimes the client is not willing to sign off on such a document as this generally reduces the ability of the client to ask for more things to be done without actually paying extra for it. It is best for the both the parties to uncover as many assumed deliverables and expectations as possible ahead of time and document them. This will help set expectations correctly and will increase the chances of project’s success.