Wednesday, October 10, 2007

Better Project Management

Some Useful tips for better project management.

Courtesy : Mr.Shiv Koirala's Article from Career Mentoring.

There is life outside projects....your life and your family.
Love your work but not your project or the company. Many developers after a certain amount of time become possessive about the project and the company. Do a professional job but don’t end up marrying the project or the company.

Try to come on time and go on time. So that you do not get saturated and work on the project for a longer time and effectively. Don’t become a zombie - nobody said on his death bed that he would have liked to spend more time in the office.

· Try to freeze your requirements before the start of the project. In practical scenarios it is very difficult to control the end customer. But if you can at least control the changes it will help you manage the project comfortably.

The best way to control changes is by taking official sign offs from the end Customer. As the saying goes,building quality software and skating on ice are both easy to do provided requirements are frozen.Do not try to be a hero in the project. Because heroes also have to go through all the hardships. So believe in distributing the load equally which is not only good for the project but also for you in the long run. Do not try to be an octopus - unfortunately you were born with only two hands.

· Every project has parasite developers.
In short every project has developers who constantly take help from others thus bringing down their productivity. Yes it is possible that they are your friends, but think for a moment - what’s smarter, giving a person one fish everyday from your catch or teaching him how to fish.

Step in to help others when they are stuck but you should know when to step out as well. There’s a thin line between helping somebody cross a tough hurdle and carrying
him on your shoulders - always be aware of this.If you are a developer avoid doing
their work from start to finish.

Yes, give them hints but do not do complete coding for them.
If you are a project manager you should analyze such kind of developers and take effective action at the very beginning which may even mean removing the resource from the project. Remember, your team is only as strong as its weakest link.

· Do not make projects your learning ground.
Customer’s pay heavily for making software so do not make it a learning ground. In many projects developers try to implement new technologies in mid of the project just by hearing jargons.

· Test, Test and Test. That’s the key to success for any software project.

· Do not hide your defects.
Developers are the best guys who know where the code will crash. Do not hide it, analyze and fix it. Do not cheat and leave the same till it goes to the end client.

· Avoid ego issues during the project.
Many times in a project developers and managers get stuck up with ego issues. Sometimes stepping back makes the project move further

· Tackle bigger problems of the project first. The best way to complete any project is to start those screens which are used by the customer more often.
For instance every project has non-frequent masters code them later and start the transaction screens first. Many time developers end up doing nitty gritty work and forget the bigger part of the project.

· Do not talk about stars. Every project starts with talking about stars but later ends up somewhere else.
Developers talk about concepts of OOPS, full database normalization, design patterns etc etc. These fundamentals are important but it should end up with only jargons. Some times practical deadlines make it impossible to implement these features. Keep yourself flexible and compromise with quality when you have deadlines…..believe me it’s not a sin if a customer is giving you unreasonable deadlines.

· Maintaining a right project hierarchy is very important i.e. the A model.
In a model you have one senior person at the top, project manager, team leader, senior developers and then juniors.
The right proportion of people from each grade is important. On any level if you have too much concentration you will have ego issue and promotion issues.Do not treat your project people as a resource. Project managers have this jargon of thinking of every one as a resource.

That’s bookish thinking; any one working in a project is finally a human being with emotions. The moment you consider them as a resource they will also consider you as a resource.
Moreover the word resource reminds you of water resources, mineral resources, oil & natural gas resources, etc which become empty some day - you get the point. In your own interests wipe off the word from your vocabulary.

· Make yourself visible. If you think you have done something good show it,
advertise it, make it visible. It will help you during your assessment.

· Avoid getting into project politics. Peace of mind is the most important thing.
Getting into egos and politics will only complicate things.

· If you are working in a maintenance project upgrade yourself time to time.
Change is the only constant in life - this is painfully true in the software industry more than anywhere else.

· In case you are maintaining some other developers’ code do not criticize the code.
Who knows in what circumstances the project was made.

· If you are a project manager in the project do not make it a compulsory rule that
you will never touch coding.Remember juniors respect their seniors only if they sit with them for development and understand their difficulties. This is a time tested rule - people only respect leaders who lead from the front rather than issue orders from the rear - don’t be a preacher, let your actions do the talking.

· If any resource is working on a project for more than a year his performance comes
down. Prepare a proper KT plan and bring in new resources and roll the old
resources off for some better prospects.

· Avoid unnecessary meetings.

Identify what makes the other person tick - for some it could be gaining technical
knowledge, for some awards, for others the lure of going onsite. Whatever it is, as a
PM it is mandatory you realize what makes people tick and utilize it for achieving
the end goal.

Proactive quality developers are like fast moving cars - you only need
to navigate them and they will reach the goal. Average developers need to be
pushed into action and monitored continuously, much like starting up a car and then
there are those whom you just cannot coax into doing their job, you may need to
inevitably remove them from the project much like sending broken down cars to the
garage - else you will end up spending your time and energy pushing these worn out
cars and get exhausted.

· Keep the team motivated - as a Project Manager this is one of your primary
responsibilities. Keep the environment relaxed and don’t impose unnecessary
restrictions. The occasional team outings, dinners go a long way in keeping people
happy - use the staff welfare budget wisely.

· Spend 80% of your time with the top 20% of the developers who are the champions
in the project. You will get more output generated in this manner. Don’t spread
yourself too thin.

· Assume that your best developers will not last the entire length of the project. Have a back up plan in place in case some of your best developers quit midway through
the project.

· Build leadership across your team across all levels. This will greatly help you in
handling bigger projects involving more than 50 developers. In this way you will
also indirectly help your key developers to become better leaders which boosts their
long term career prospects - building people is an ongoing exercise to be done on a
daily basis and not something to be remembered only during the annual appraisal

· Handle people issues in a sensitive manner - people don’t care how much you know
until they know how much you care.

· Recognize & reward efforts - it could be a small gesture like presenting an ipod to a star performer but it means a lot to people.
You will end up building a strong and loyal team who rise to the occasion when needed. People will also realize that their efforts are being noticed - too many times it happens that people are working in isolation with no recognition for their efforts. Catch people doing something right - genuine praise for a job well done is one of the strongest motivators for people.

· Use delegation effectively - delegate the right tasks to the right people.
At the same time remember delegation is not abdication - you are eventually responsible for final delivery of the project.

· Be an empowering leader, scout for team members who are better than you are and
assign tasks respectively.
The best leaders are those who consistently surround themselves with people who are better than they are in a certain area and develop synergy towards achieving the common goal.


No comments: