Fred George shared his insights about moving beyond Agile, a state he calls “Programmer Anarchy”, at the Agile conference. Along with a few personal examples from his experience at Forward Technology he explained how this can lead to a very productive environment for solving complex problems, with substantial increase in business results.
Fred started his session with the Cynefin Framework, narrowing his focus on the complex problem-space, followed by a comparison between the traditional software development approach and the relatively newer Agile approach to tackle this space. Traditional methods dictate that the customer defines the project and hands it over to the development company for implementation – in agile, there is a partnership between the customer and the development company to drive the project. Programmer Anarchy, on the other hand, takes this to the extreme – the client just shows the business problem to the programming team and the team then takes over, drives the project, and is responsible for creating business value.
Fred cited this as an example:
“We (at Forward) had to rewrite a system that was previously on .NET and SQL Server. The team ended up using several technologies (Ruby, Clojure, Node.js, MySQL, MongoDB, etc). The core of the system was an Energy bill calculation logic, with several complex conditions and checks. In the original .NET system, this logic was all around the software – as a part of our rewriting exercise, we rewrote this core logic in Ruby in roughly 600 lines of code. Then we rewrote it in Clojure to be 300 lines of code. Then the same developer rewrote it in Clojure to be 200 lines of code and be cleaner than the previous implementation. And finally it does several things that the original system was intended to do, but never did!”
What manager allows you to rewrite the core of the system three times? No Manager. That’s why we don’t have managers!”
My point of view about this new and controversial approach is you have take into account several factors such as:
- Developers: how good they are?
- Corporate: what is the mindset of the company?
- Customer : how long will he be involved in the project?
I offered my services as consultant at one of the most traditional company in my country and they refused to accept working with Agile because they have many hierarchical structure and because of that they asked me what I supposed to do with all my managers and leaders? Being honest there are not managers and team leaders in Kanban, Scrum or XP so you can keep some of them but of course you should remove the others.
Then no every developer can work alone and being self-organized so that sometimes you need a facilitator.
Last but not least, I found many times with customer who are reluctant to be ready to help the team so in my opinion Product Owner is essential to the process.