|
What is an Agile Culture? An agile software culture is one that questions everything on a continual basis, explores all of the available options, embraces what is necessary and dispenses with whatever is not useful. This attitude can be summarized in the single question: “Does this task directly contribute to the goal of delivering working software?” If you answer ‘yes’, then the task is useful to delivering software. If you answer ‘no’ …. well, you get the idea. Consider project tasks such as filling out time sheets or writing status reports. Do these contribute to tracking costs and issues on a project? Yes, definitely. But do they contribute to developing software? No, emphatically. They are not essential for development, and they are invariably obstacles because they take developers away from the tasks that do deliver software. I am not saying an organization should categorically dispense with these tasks. I am suggesting that other options for getting the same information do not stand in the way of delivering working software. Why do status reports have to be written on paper or emailed? Neither is a rich communication medium, and each is entirely one-way. Use face-to-face talking instead. (Can you imagine asking your spouse to write a status report rather than simply asking, “How was your day?”) A manager who spends 10 minutes verbally getting a status from a developer will have a much better understanding of the issues and goals involved than a written report can convey. And most status reports take at least 30 minutes per person to complete. If the manager needs to convert the conversation into prose for a management staff meeting, go for it! At least the developers are continuing to write software while the manager is transcribing. And time sheets? Not a problem…unless your comptroller insists on hourly accounting of work across a dozen work breakdown categories (e.g, compiling, testing, programming…). In most environments these distinctions are meaningless. If you are using JUnit to test & code your Java program, how do we distinguish compiling, testing and programming? They all occur at the same time! An agile culture focuses on delivering software. Gathering software metrics, doing time sheets, status reports and a hundred other tasks are all important in some corporate or infra-structure context, but not always in the context of delivering working software. An agile culture makes conscious, purposeful and ruthless decisions to minimize the “non-useful” tasks they will retain, fully aware that these do not directly contribute to delivering working software. |
|