Saturday, April 28, 2007

Effective Project Management

Projects fail quite frequently due to the manager's inability to manage them properly. Sadly, many projects initiated in the IT field miss their deadlines and are usually well over their budget. Good Project Managers are also hard to come by, especially in developing countries, which further complicates the situation.

Project management is not rocket science and nor are we born with it. It is easy to learn and understand. Here is a guide to which I adhere to when managing large projects.
  1. Define scope of work: Develop a preliminary scope of work. It should be an overview and not necessarily a detailed specification for work. Try to identify major limitations and constraints that need to be addressed. Establish clear goals and objectives. Therefore, be clear of what you are trying to achieve from this project. Based on the above information, create a simple list of tasks and a basic schedule for delivery. Remember, this is not a detailed analysis. It is just a preliminary scope of work so that one can get an idea of what needs to be accomplished in what time and what issues can occur during its life cycle.
  2. Identify core team disciplines: Based upon the scope of work defined above, identify all the needs and resources that are required. It should include the business, technical, support and any other that may be required to accomplish the project in the given time. Once that is clear, estimate the time and skills required to accomplish this project.
  3. Identify customer needs and wants: From the start of the project, continue to gather the basic set of requirements from the client. And use this information to define the initial scope of work. Keep the communications channel open with the client and have regular interactions till the scope of work is refined and finalized. And make sure that both sides have agreed upon mutually acceptable set of deliverables for the success of the project.
  4. Develop plan of work: While defining the scope of work, interact and get regular feedback from the client as well as the team that will be working on the project. And based on the project requirements, finalize all key project objectives. Make sure that all tasks are prioritized and properly assigned. This will help in making sure that the team performs to its optimum and limited resources can be managed efficiently.
  5. Approval and implementation of work plan and budget: Initiate and hold regular meetings with the client and the development team to approve and accept the work plan. Get their feedback and modify it accordingly. The feedback may affect the eventual budget and time line. Get the client and your team to agree on and approve the project timeline. Also make sure that the budget is approved with mutual agreement.
  6. Ensure coordination and communications: This is one of the most critical and important aspect of any project. Ensure that communication channels are always open between the client, the team and all other parties involved. Have regular meetings and delegate responsibilities but hold them responsible for delivering on those tasks. And most importantly, keen an eye on the project deliverables and outcomes and make sure that they follow the schedule assigned.
  7. Satisfy the customer: This cannot be emphasized enough. We have all heard the phrase, "customer is always right" and therefore, their advice and feedback is critical for the success of any project. Continue to hold regular meetings through out the life cycle of the project. Get their buy-in for all major changes and modifications. Make sure that all communications are documented, included changes and approvals. If there are any major modifications, get their justification as to why is it required at this time. Make sure to review the impact of changes on the project and if the work plan needs to be modified, get the client written approval for it.
  8. Assess and adjust performance: Conduct regular internal project reviews. If required, work closely with each individual in the team to keep their productivity to the optimum. As project manager, one can improve the productivity of its team members by making sure that the team understands the scope of work (including modifications required). Keep a close check on the progress including monitoring the, actual work performed vs planned work. Make sure that you address all major issues, concerns and opportunities with your team members. Also, be quick to respond to any changing conditions. Identify them early and take prompt actions.
  9. Indicators of success: Throughout the project life cycle and especially when it nears completion, make sure of the following questions are answered. Consider them as the guide to see if the project was a success or not.
    1. Were the customer expectations met?
    2. Was the project completed on time? Were all deadlines, milestones met?
    3. Did the project complete within budget? And if not what were the budget overruns?
    4. Were the customer's objectives and agreed upon deliverables met?
Technorati Profile

Friday, April 27, 2007

The Effective Executive, by Peter Drucker

I recently came across this book The Effective Executive by Peter Drucker and I recommend all budding entrepreneurs read it thoroughly. Especially those who would be managing a fledging startup right out of school.

Here are five things that Mr Drucker recommends all managers do.

  1. Time: To be effective is to know "where your time is spent". Time is one commodity that cannot be replaced or changed. Once lost, it is gone for good. Therefore, all managers must be careful of what they do with their time.
  2. Focus on results: A lot of us tend to work long hours but fail to achieve the desired results in a given amount of time. We strive to work really hard, rather than smart. We should set up goals before initiating a task. What needs to be achieved in what time. What results are expected. Once that is clear then we should execute the task.
  3. Build on Strengths: Get the best out of the team by making them do what they are best at. Not all of us are able to handle everything. Some of us are good managers, others are great at taking orders and executing them. For example, in a typical software house, some are excellent software engineers but fail to see the finer side of managing a large project. While others may be weak in programming, but can manage large and dispersed teams quite well. Others can handle customer relationships and clients much better. Find what is the best among your team and give them the work that they are ideally suited for.
  4. Keep a clear focus: Always be clear of what you want to do. Trying to do hundreds of tasks in a short span of time will not achieve desired results. Rather, you will end up behind in most of those tasks. It is better to prioritize and clearly focus on a few tasks that you can achieve in a finite amount of time. Do them and reassign the rest to others.
  5. Make effective decisions: Never shy away from making decisions, but weigh them before making them. Always get everyone's opinion, but make your own judgment.