I created a CodePlex project for hosting the ALM system. I even gave it one of those fancy codenames the kids are always talking about: Parallax ALM.
Parallax is a scientific term to describe how the relationships of items in space look different from different angles. According to Wikipedia:
Parallax is an apparent displacement or difference in the apparent position of an object viewed along two different lines of sight, and is measured by the angle or semi-angle of inclination between those two lines.
A simple example is the speedometer in a car. When you are driving you can read your speedometer accurately, because you are staring straight at the speedometer, the way it was designed to be looked at. However, when your passenger looks at the speedometer, he/she/it will see something different; because the indicator is slightly raised off the surface, the relationship of the indicator to the surface will be distorted, and so it will appear that you are going slower than you actually are (assuming, of course, that you are driving on the correct site of the road). I won’t even get into why objects in the mirror are closer than they actually appear, but for now you can just assume that it’s a government conspiracy.
In a car, this is a simple case of right and wrong. The driver is right, and anyone who disagrees can get the hell out and walk. However, on a software project, that’s not always the case. As developers, we usually just assume that we are right and the business/executive/PM/QA/ people are idiots, but if anyone has the authority or persuasiveness to tell everyone else to get out and walk, it sure isn’t a bunch of sociologically-crippled developers.
Really, in a software project, everyone is usually a little bit right and wrong. Sure, there are often gen-u-ine jackasses out there, but they are usually a lot less common than we think, and we are usually right far less than we want to believe.
So we need to get everyone on the same page. Or reading the same book. But everyone speaks a different language, especially from one job description to another, so everyone needs their own version. We need to present the same information to everyone in a way to makes sense to them as individuals, and maybe even makes their life easier. Just watch a executive’s eyes glaze over as you explain iterative development to him, but put yourself in his shoes as he’s trying to explain why he needs some sort of metric, anything really, to know what the status of a project is and whether it’s falling behind schedule. All of that information is really the same stuff, just looking at it from a different angle to fill a different job need. You cannot reliably count on people to solve these problem themselves, because most people had an enormous aversion to putting themselves in someone else’s position, mostly because it throws a giant spotlight on everything they themselves maybe doing wrong. So let’s solve the problem with some software. You’ll still need to have people want to work together, but hopefully it will actually be easy for them this time around.
So there you go.