Project management is the art of planning, organizing, and managing resources to bring about the successful completion of your project. While that is a good definition of project management, it doesn't say anything about how your project is managed. This page is designed to accomplish that goal.
So what do you need to manage a project successfully? Let's set the criteria:
Realistic Vision of the Solution
This may come as a shock, but to manage your project successfully I'm actually going to need a clear, realistic vision of the solution. Otherwise, all the unknowns (features we missed, but needed) are going to pop up at the worst times and harpoon our project plan.
Realistic Schedule
You can be the best project manager in the world and have the most talented team, but if your schedule is 3 months long and the solution is going to take 9 months, you are in trouble. Without a realistic schedule, your project is going to be late, over budget, and deemed a failure. But often times, people have unrealistic expectations when it comes to the time required to build custom software. As project managers, it is our job to set a realistic schedule, even if it means telling the client something they do not want to hear. The alternative is unpleasant.
Apply Best Practices
Managing software projects may be an art, but you are going to have to rely on science if you want to do it right. The Project Management Institute's Body of Knowledge (PMBOK) is a great set of practices (which we use) to structure, plan and run a successful software project. Winging it isn't an option. Learn more about PMI.
Online Project Management
One of the best ways to manage a project is to provide transparency to the entire process. By transparency, I mean making it obvious to everyone exactly where we are with regards to the schedule. For example, let's say our project plan listed "Coding" as a major task. It requires 8 weeks to complete. Then I provide an update weekly, with our progress moving from 30% complete, to 40%, etc. In my opinion, that's a black hole. Except for that number, you have no idea how the project is going. And when the task gets to 90% it could stay at 90% for a while.
A better way to structure a project would be to break out the "Coding" task into many smaller tasks. For example, "Billing Module", "Monthly Transaction Report", etc. That way when you get the weekly project plan, you can see exactly what the team's accomplished, and what's left to do. An occasional demo of the current version goes a long way towards building credibility, too. So when I mention transparency, I'm talking about providing more than just a "trust me". The plan needs to be structured in a way you can understand it.
Although we still provide traditional Microsoft Project plan's for each project, we've started using an online tool as well. The major benefits are that the project plan is always up-to-date, or real-time, and it's accessible from your web browser. The tool is called Basecamp, and it is pretty cool.
Here's a screen shot.

One more thing about project management. It's not enough to simply rely on transparency and cool tools to get the job done. A project manager has to be committed to achieving your stated goals, which sometimes means working long hours, weekends, traveling across the country on short notice, and pushing to get things done. Creating custom software is a lot like having a baby (not that I would know). The fun doesn't really start until the end. It's like custom software doesn't want to be born, and we have to push it out with a lot of effort. That's when your project manager matters the most.

