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 Gunjan Doshi & Deborah Hartmann on Jan 25, 2007 03:01 AM
It has been few months since your teams started using Agile or aspects of Agile process. Everyone in the organization is very happy with the rollout: developers, product managers, information architects, QA, upper management. You think your team has developed an optimal process and can now cruise on auto-pilot. Not so fast! If you're not careful, the party could be over sooner than you think.This article will focus on behavior patterns that enable teams to realize the most benefits of Agile rollout and sustain the experience. This article assumes that you have already implemented Agile process in your organization.
Agile Development: A Manager's Roadmap for Success
Effective Management of Static Analysis Vulnerabilities and Defects
Give-away eBook – Confessions of an IT Manager
Ebook: Scaling Agile with C/ALM
Successful practitioners will have noticed that Agile relies heavily on discipline, rather than genius. For this reason, there is an emphasis on the practice of the basics: putting people first, focusing on value, delivering high-quality work frequently, and reflecting regularly to continue improving. Average teams, even in the early stages of Agile implementation, can achieve dramatic performance improvement if they are disciplined. As we do these things, the effects of our words and actions actively create, and re-create over time, the environment in which our teams and projects operate.
Many have noted that learning often follows this pattern.1:
As we keep practicing Agile disciplines like pair programming, TDD, and plannning with User Stories, we build up a web of interrelated, mutually reinforcing behaviours which together yield more than the sum of their individual parts. These can have more far-reaching effects than we might at first have imagined. Once we have experienced some of these compounded benefits, the question is how do we sustain the benefits and keep improving? The tool for answering this is the retrospective, wherein we can determine not only what went wrong... but also what went right: things we want to reinforce and continue doing.
Enter 'Agile Karma', to borrow an idea from an ancient tradition.
Agile Karma: the cosmic principle according to which the experience of project participants improves or degrades in each iteration according to their actions (or failure to act) in previous iterations.
Good karma looks different for different teams, and for different players on the team. This is because, while the underlying principles remain the same, each team will find different ways to enact them. That's why it's important to do retrospectives, and not only to look at what's broken, but to answer the question: "what went well?" or "what do we want to keep?" Such an exercise helps the team surface and celebrate the things they are doing, perhaps unconsciously, which actually play a key factor in the success of their teamwork.
We start here by looking at some examples that we'd consider good Agile karma for the customer team, and work our way through the different team roles. What would your team's good karma profile look like?
The customer is the "driver" of the product or project, maintaining and tuning the vision, and communicating it to the team and providing feedback as they work. Usually the customer team is made up of Product managers, Information architects, QA, Usability engineers, member services etc.
The development team consists of not just coders, but everyone whose skills are required to create a potentially shippable product at the end of iteration. This team makes decisions about how to provide the functionality requested by the customer.
The Tech Lead probably knows the team and the technology better than they know Agile. This lends them an advantage over the Consultant Coach in highly political situations, and may balance their lack of expertise with the Agile practices.
The Consultant Coach is an experienced "hired gun" who can shepherd a team or an organization through the challenges of Agile adoption. This may shorten the learning curve and smooth the way, but it is no replacement for the team's own learning, which will remain and guide the process once the coach leaves.
This role proved tricky to define - it can look so different in each context - often it's really several of the other roles mixed together. We've decided it warrants separate treatment, and have put it aside for now. (In the meantime, we'd be interested in reader suggestions).
Upper Management is a key stakeholder in every project, but has the least control over what gets delivered. By providing strong support to the implementation effort, management can keep the channels of communication open and be in a position to respond rapidly to major obstacles when they arise.
Gunjan Doshi works as the Vice President of Product Development and Process Excellence for Community Connect Inc., a social networking company based in New York city. He is responsible for the managing and leading a team of 30 programmers, project managers and quality assurance analysts. In past, he has customized and rolled out agile methodologies across several teams at various organizations. He is passionate about continuous learning and growth. He blogs at http://www.gunjandoshi.com
Deborah Hartmann is an Agile practitioner and coach living in Toronto and working in Canada and the US. Deborah is passionate about making work both valuable and enjoyable. She's been the Agile Community Editor for InfoQ.com since April 2006.
Photo credit: photo by william biscorner www.creations-photos.com.
1Alistair Cockburn was one of the first to introduce the Aikido model, called shu-ha-ri, to many Agilists.
Note: For the sake of simplicity, we have used the following terminology:
Iteration: also known as "sprint" in Scrum
Customer: corresponds to "product owner" in Scrum
Coach: corresponds to Scrum Master or team lead, though sometimes Project Managers move into this role
Standup meetings: daily status meetings, known in Scrum as "daily scrums"
There are many variants on this role. I usually suggest the common denominator is that the PM provides the team with resources and priorities, and takes away from the team obstacles and results.
Normally Project Manager is not a role but a function. Regarding to Scrum, the Scrum Master should be the Project Manager, e.g. there should NOT be an extra Project Manager next to a Scrum Master. Because in Scrum tradional project management has shifted into coaching. Anyway look up a description of the Scrum Master role.
> Regarding to Scrum, the Scrum Master should be the Project Manager Depending on your definition of PM, true enough. On the other hand, in some environments, where Agile is a really different paradigm from the status quo, a ScrumMaster can really use a "blocker" in management, to tackle sticky organizational obstacles and let the ScrumMaster get on with the work of helping Product Owners and Teams deliver software. I guess I'm thinking of a "champion" role... sometimes it's helpful to turn the PM into this champion, and put a a second person in the ScrumMaster role. Hopefully, over time this duality is resolved and one of them can move on to new challenges :-) Again, how you define PM influences what happens to the PM role when you go Agile, imo. deb
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.
3 comments
Watch Thread Reply