Saturday, January 28, 2012

The 3 C’s of a Successful Project

 It is a well known fact among software professionals that a majority of software projects fail. In fact, this phenomenon is not limited to software projects. If we define “success” of a project as “a state when it meets all the stated objectives and requirements and is completed within the time and budget, without compromising quality” it is easy to spot failures in non-software projects too.

It is interesting to note that the size of the project and therefore the budget and timelines have no bearing on the success of the project.

There are several analyses and theories on why project fails and there are as many remedies too. All of them are valid and useful in some ways and are suitable to a given project.

Here is an attempt to define the three most significant contributors to a successful project - the three C’s of a successful project.

1.     Clarity

Clarity of requirements is the most essential ingredient of a successful project. Often the requirements can be complex and are not easily comprehensible. Detailed analysis, discussions and decision making are essential for the clarity to emerge. The saying “assumption is the mother of all screw ups” is worth remembering all the time. While assumptions are essential in situations where there is no way to find the right answer, it is very important have consensus among the stake holders on what to assume.

No programming language offers syntax to say “not sure”.  If you are not sure, then you need to assume and proceed. When building a house, you can’t say “I’m not sure if I want a window here”. You may assume that you will need a window in the future and give provision for the same. While decisions such as this can be taken even when the work is in progress, some decision will have greater impact on the project. For example, the number of floors your house will have is a decision that needs to be taken before the work starts. There are similar decisions in software projects which when not taken at the right time will have enormous cost and time implications.

In software projects, the impact of lack of clarity is significantly high due to the intangible nature. It is easy to appreciate how a physical product takes shape and therefore the impact of changes. A non-technical user can seldom appreciate the impact of a change in a software project. This makes it all the more important to have absolute clarity of requirements including intelligent, unanimous assumptions.

Clarity is the “What” of a project. It is the answer to the question “what do you want to build?” Do not start if you are not clear. Don’t step into a muddy river, lest you are most likely to drown.

2.     Capability

Once you have the clarity of what to build, you should have the capability to build it. Capability refers to the skills required to build something. Capability is essential not just for execution but also for the Clarity to emerge. Only a skilled architect can ask relevant questions so that the user is provoked to think and crystallize the requirements.  When Capability exists, the right questions are asked. When right questions are asked, answers are found. When answers can’t be found, intelligent assumptions are made. With this, Clarity emerges.

It is a capability by itself to understand what capabilities are required to execute a project. It is important to discover the requirements that would need some research and learning during execution. These requirements would need to be addressed at the beginning of the project, so that the answers are found early.  High levels of skills are essential to produce quality results.

Capability is the “How” of the project. It is the answer to the question “How do I do this?” Do not start if you don’t have the capability. Identify your weaknesses and get the required support.

3.     Commitment

Capability without commitment will not yield results. Half-hearted attempt by members of the project team can spread negative energy in the team. This will cause imbalance and friction in the team and will consume a lot of energy in utterly unproductive activities such as rework, resolution of conflicts and lead to frustration and fatigue.

Quality is the major causality when there is lack of commitment. A half-hearted attempt can never produce quality. This is true for any profession. Great works of art are produced by artists of utmost Commitment. Magnificent buildings are built by engineers of enduring Commitment. People who take a casual approach to their work would stagnate and would be the first to perish when adversities strike.

Commitment is the “Why” of the project. It is the manifestation of the answer to the question “Why am I doing this?” Do not start if you are not committed. Because, commitment to what you do is the very essence of your being.