As the sometimes baffling yet ultimately sage Yogi Berra once put it: “You got to be very careful if you don’t know where you’re going, because you might not get there.” This slightly corkscrew bit of advice holds a nugget of truth for managing successful projects–you gotta know what can cause a project to fail, to know how to make it succeed.

Andrew Stellman and Jennifer Greene offer more straightforward advice on what programmers need to know to save floundering software projects in Why Do Projects Fail?, an excerpt from their PDF with the very apropos title: How to Keep Your Boss from Sinking Your Project.

Budget overruns, missed deadlines, bugs: these are all issues that contribute to a project’s failure, but Stellman & Greene point all these project problems back to management, or poor management, as the root cause. Their answer to the problem of bad managers is for programmers to learn to manage upward. If you’re a programmer, here’s a quote from the excerpt that provides context for why you may want to learn this management technique:

By and large, good programmers have one universal response to bad management: “It’s not my problem.” Unfortunately, it is your problem. You may not be able to control it directly, but if you put your head in the sand and keep coding, your project can fail no matter how good your work is. And in the end, you may be seen as a poor performer because of that failure.

This excerpt really serves as the introduction to the concepts on managing upward on projects that Stellman & Green cover in the PDF. In it they explain what programmers can do to help their bosses keep project expectations in line and up to date, how to work with the users and “stakeholders” to get everyone on the same page about the scope of the project, and steps to take to get a project on the right track and keep it there.

So if it’s always “Deja Vu All Over Again” on the software projects you work on, you may want to pick up their PDF and find out what you can do to change for the better how your company’s projects are run.