Bindings, Platforms, and Innovation
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
Tracking change and innovation in the enterprise software development community
Posted by Deborah Hartmann on Dec 06, 2006 06:24 AM
A lively debate is underway among the folks at ThoughtWorks. Starting with Dr. Jim Webber, noted author and ThoughtWorks' top SOA consultant, complaining of religiosity among unnamed colleagues. Does the rise of "Agile religion" signal that the moment has arrived to retire the "Agile" label?For those that have the agile religion, it is routine to express to others why they are not "agile" because they're not doing precisely 72.799 hour iterations, or because they have code coverage of less than 83.002% or other arbitrary measures. That is counter productive. Instead we should be encouraging good behaviour as a general practice, not enforcing it through religion and the humiliation of non-conformists that most religions - including agile - engender. Sensible software engineers do the things that make projects successful and we should maintain that, but without the dogma.
Fellow ThoughtWorker Jeff Santini called Jim out in the comments, disputing the existence of an "Agile religion":
I hear alot of talk about the Agile Religion, but I have yet to hear from anyone who actually subscribes to it. ...
You said you are not Agile because you don't believe in it's religion and you don't accept its dogma. Yet I AM Agile and I also don't believe in its religion nor do I accept its dogma. As a matter of fact I don't have any idea what its religion or dogma are.
In light of the above statement either we have different understandings of what it means to be Agile, or there is something besides these two issues that determines Agility.
But seriously, the Agile Manifesto mentions some pretty good guidelines in my opinion to keep teams focused on delivering software rather than adhering to a (potentially dogmatic) methodology.
To which Jim responded:
I don't think I can call myself agile because others who are agile would find my practices different. For example, I subscribe to (enough) architecture and design; I am also wary of YAGNI as a way to shelve important design decisions under the belief they can be magically retrofitted later. I also like quiet focussed areas in whcih to work, and I'm sure there are other ways I'm sure that I disagree with the orthodoxy.
I don't mean to convey any disrepect for agile practices. As I said in my blog post I like (most of) the engineering and planning practices that agile teams use. But I don't fully subscribe to ADD working environments or full time pairing etc. That is why I am an agile atheist.
Jeff Patton, another top ThoughtWorks' consultant and reknown product designer, shortly thereafter authored there Is No Spoon, why the best software design and development process is all in your head. Using the spoon bending scene from the Matrix as a backdrop, he presented a compelling argument that the highest performing teams do not follow a consistent process. Much of the blog entry is drawn from suspicions confirmed at a UserInterface11 conference presentation by Christine Perfetti. :
The UIE folks expected to find that the highest performing design teams had the best processes; but in fact they found that high performing design teams might not follow a consistent process at all. What they did have was a big toolbox full of techniques and tricks, and a history of adaptation and improvisation. She went on to say that in organizations that had a documented methodology, they could almost predict poor performance.
Colleagues say that Patton is a big fan of Shu Ha Ri, a concept drawn from the martial art of Aikido, whose three levels of learning progressing to mastery roughly translate as:
For those that believe that Shu Ha Ri applies to the discipline of software development, rigid adherence to Agile practices is 'Shu', the first and furthest stage from mastery. Patton wrote:
Deep down in my heart, I know that there's really no process. That I'll really have control over my process when I let it bend and sway like a blade of grass. When I focus on the objectives of my software I try to transcend the process.ThoughtWorks is a consultancy whose "chief geek" is an Agile Manifesto founder, and which differentiates itself through use of Agile methodologies. It seems doubtful that Martin Fowler's brainchild would need to consider a realignment - moving the company's public image away from being an "Agile consultancy", but others have already made this move.
Agile Development: A Manager's Roadmap for Success
5 Ways to Ensure Application Performance
Effective Management of Static Analysis Vulnerabilities and Defects
The Agile Business Analyst: Skills and Techniques needed for Agile
I thought Patton's definition of "software success" (taken from the blog post) was interesting:
'We knew we?d delivered successfully not when the ?EAR file as uploaded to the server,? but when we saw end users successfully working with the software on a daily basis.'
Depends on the scope of a project I suppose, but for me, I would add to that sentence "and in 5 years' time".
That draws in concerns such as flexibility of design, level and quality of documentation, ability to accomodate increasing volumes, anticipation of change, etc.
A lot of these things are anathema to the Agile dogmatist mindset (you ain't gonna need it!), and, dare I say it, the typical consultancy mindset (I've used my glorious methodology, now the maintenance guys can take over and I'll move on to the next gig - but first I'll blog about how great I feel about it.)
Given the investment in money, people and time for software of any real significance, just having something that is good enough today is, not, well, good enough.
The point that 'Agile' is now an overused cliche is well made. As is the use of 'Waterfall' to paint any project that doesn't call themselves 'Agile'. They're just labels that lazy people use to pigeonhole - kind of like music genres!
The key to Shu Ha Ri is realizing that it's a process and that it cannot be rushed. Agile the term means nothing, it's like saying "Martial Arts". The actual methodologies like XP and Scrum are like the individual arts themselves -- Aikido and Wing Chun to name a couple. Nobody ever suggests that we should remove the term "Martial Arts" because it doesn't really define anything itself. And nobody suggests we stop teaching Aikido or Wing Chun because the top UFS and Pride champions are mixed martial artists who study many forms and tune them into their own personal styles. The fact is, only Shu can be taught. Ha and Ri must be found throughout a person's career. Furthermore, even new teams with masters must begin at Shu, as "Shu" is the only common language that the team can use to communicate with each other. The team will find their way to Ha and Ri as they learn to work with each other. The same is true with all individual interactions. In Canada we say "Hello" (Shu) by default when we meet someone new, whereas we may greet a long time friend with a knuckle shake without even meeting eyes (Ri). So Agile must remain, but we must understand what it means. We have to keep the commercialization of the term from blurring the meaning of Agile. Furthermore, we must respect the differences of the various methodologies, realizing that each has its merits and weaknesses on almost a case-by-case basis. Different team, different project, different methodology. The realization that there is no single methodology for every team and project is exactly what makes it agile. Cheers, Clinton
I become more agile when I can react better and faster to changes. For example, if some upfront design provides me that, I'm all for it. I guess we shouldn't forget about the reasons when we apply some of the guidelines/recommendations/rules.
One of my colleagues, Brendan Lawlor, just blogged about a relevant topic: How Mumbo Jumbo is Conquering Software Engineering
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.
This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.
This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.
This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.
After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.
IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.
Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.
4 comments
Watch Thread Reply