So how can you avoid this problem? In this organization the only way the CIO could find out what was really happening on the project was to go to the source " she couldn't trust the status reporting hierarchy within her organization which was why she struck up a conversation with me to begin with. Experience had told her that traditional status reporting wasn't going to provide an accurate picture of what was actually happening, but at best provided a sanitized version.
I believe that green shifting is a significant contributor to project failure within many traditional IT organizations. If senior management is unable to find out the true status of a project, then they will be unable to bring resources to bear to fix the problem(s) before it's too late. Or, worse yet, they don't find out about the "walking dead" projects which have no hope of success and therefore should be cancelled immediately; instead these projects struggle along for months wasting resources and destroying morale.
In agile development organizations this problem is greatly reduced. Instead of writing status reports, most agile teams hold a 15-minute daily stand up meeting where each team member describes what they did yesterday, what they intend to do today, and what problems they are currently dealing with (if any). This meeting is called a "scrum" meeting and it is one of the primary practices of the Scrum methodology. Everyone on the team must attend the scrum meeting to provide status, and anyone external to the team who wishes to hear the current status is welcome to attend the scrum. If you don't attend the scrum meeting you won't hear the detailed status: nobody is going to invest their valuable time writing you a status report.
This approach scales very well. Large projects are split into sub-teams, and one person from each sub-team scrum meeting attends a "scrum of scrums" where status is reported up the hierarchy. Status is reported back down the next day by this person in the sub-team's scrum. If you rotate the responsibility for attending the scrum of scrums then you decrease the opportunity for a single person to act as a political filter which green shifts, or red shifts for that matter, your team's status. Similarly, the status within a department or division can be communicated via the scrum of scrums approach.
To summarize, in written reports information will "green shift" the more political filters it goes through between the sender and the recipient. If you're looking for a more open and honest report, then reporting status publicly via scrum meetings is a very good way to do so. Everyone on the team learns about what everyone else is doing, greatly reducing coordination problems, and senior management has the opportunity to find out exactly what is going on simply by attending the scrum. There's one primary challenge with this approach: Can management actually handle the truth?
The term "green shifting" was introduced to me at the Javapolis conference in Belgium in December of 2005. Two attendees and I were talking about political problems in software development and we started talking about this idea. Unfortunately I didn't get their names otherwise I would be attributing the source of this term to them. Anyway, if they happen to be reading this newsletter, please send me an email so I can acknowledge them as the source in future writings.