I've heard so much hot air on the subject of software development projects, and how to manage them successfully. Personally, I think that doing it right is simple:

  1. Care passionately about solving your customer's problems.
  2. Get a product out as quickly as possible.

The trouble is, most projects are not driven by a passion to solve customers' problems. Instead, they are driven by a desire to keep down costs, or to produce cool technology. Knuckle-headed businessmen often think that the users of software are stupid, and won't notice when they are treated with contempt. Arrogant technologists are often entirely uninterested in their customers - they enjoy the process of developing software, rather than delivering working solutions.

My second observation is a crucial corollary. Even if you're passionate about solving the customer's problem, it's all too easy to become absorbed in producing the perfect solution. Perfection is not required. If a flawed solution is better than nothing, then ship it! The next release will be even better.

Complex theories of software project management can follow on after these principals, if the project is big enough to need it. But all management is much easier if the team is focused on the goal. If you choose the people who are passionate about solving the customer's problem, and you give them a clear and achievable goal, then the hard part is over. Sadly, software development projects rarely clear either of these hurdles.