Concurrency: Past and Present
Brian Goetz discusses the difficulties of creating multithreaded programs correctly, incorrect synchronization, race conditions, deadlock, STM, concurrency, alternatives to threads, Erlang, Scala.
Tracking change and innovation in the enterprise software development community

Posted by Patrick Kua on May 22, 2008 02:33 PM
Agile methodologies introduce a newer role, typically called the "Agile Coach" that traditional methodologies will not focus on, or even mention. For those who have been working in an agile way for some time, it may seem like a natural complement, yet for those newer to this way of working it raises many questions like, "What's so important about an Agile Coach: What's wrong with a Line Manager, or a Team or Technical Lead: Why does Monster.com list 54 positions with this title:"Teams sometimes get so busy they get caught up in their usual routine. The coach looks for opportunities, working with the team to discover or try new things that may bring the team great benefits. He is also there to make sure that practices that already benefit the team aren't simply replaced and forgotten about, often combining them with new methods.
IBM software architect eKit: Grady Booch podcast, whitepapers, articles
Six Free Project Management Certification Training Courses
The Agile Business Analyst: Skills and Techniques needed for Agile
The End of Middleware: Freedom from IT Stacks as we know it
Scaling Agile on large teams & Being Agile every day Tracks @ QCon SF Nov 19-21
Teams often undervalue the power of success and appreciative inquiry. Iterations help bring closure, developing a rhythm that helps people recognise when they reach their goals (see Feedback). The celebration part of the iteration is often forgotten. Think about the positive impact events have where the entire team is celebrating the end of a project, or some other significant milestone (see Infectious). The agile coach celebrates with the team those little successes every day.
Introducing change requires a certain level of risk, and the responsible agile coach looks for ways of trying things that bring maximum value with minimum risk. He will often be the first to break the ice with a team, encouraging an atmosphere where everyone on the team feels safe to at least suggest, if not try, different ways of working.
Some of the agile practices seem fairly straight forward, yet often easy to get wrong without understanding why they bring what they bring. Often, simply trialling a practice for a decent length of time will give people a feel for the things that worked better for them, and what limitations the practice has (see Questioning). The agile coach provides the support and encouragement to help them through the initial period of trying out a new practice, sometimes helping them work through some of the more difficult parts of that practice.
All agile methodologies share a common thread incorporating quick cycles of feedback. The agile coach emphasises the importance of feedback mechanisms in all aspects of how a team works – everything from team interactions, processes and practices. Regular feedback helps teams adjust more effectively to their own unique circumstances.
The way of the agile zealot is not the same way of the agile coach. Instead of the zealot's command and control, the agile coach often guides teams, helping each person to discover lessons for themselves. He steers the team away from known traps and pitfalls, but he also understands that trial-and-error is a powerful teacher. H is for Humility : "Actually, it was the team that did the work, not me." The agile coach facilitates the team to help them accomplish their work. She should admit when they make mistakes or are wrong, and ensure credit for success goes to the right people. Arrogant coaches never last long on teams.
The agile coach brings enthusiasm and energy to teams, encouraging people to find a passion for the things they do, often seeded with his own energy to begin with. He will focus on understanding the limit of how much change a team is willing to accept and how effective his enthusiasm will be, careful not to be confused for the agile zealot. He is also constantly on the lookout for the right time to share his energy and enthusiasm.
There is rarely one way of doing things effectively, even when a team starts with the same set of practices. The agile coach helps teams adjust their own practices to better suit the team and the environment, based on their previous experiences and understanding of why.
The world holds a myriad of information about agile practices and principles, their adoption methods and challenges they present. The agile coach is familiar with a whole set of resources directing people to books, articles, and blog posts for the resources that will be most relevant to them.
The agile coach needs to listen to the team they're working with to really understand what they are going through, the things they like and the things they dislike. Sometimes it’s also helpful to reflect what she hears back to the team. She listens to each member, to understand what are their needs and fears, adjusting her priorities and activities in response to this. Sometimes this involves sharing it with others, or encouraging people to speak up for themselves.
The ultimate achievement for the agile coach is to make a team self sufficient and self sustained, capable of fine-tuning their own practices. To this end he will be looking for the right people to mentor and support, in a role that looks similar to the coach's.
Every group may contain someone who's going to be completely opposed to the presence of an agile coach, without any apparent good reason. The agile coach needs to be able to withstand the critics, and understand their needs and why they might be feeling threatened (see Listening, Questioning and Sensitive). She would work with them to make them feel heard, address their needs and to put them at ease. Resistant naysayers need to be encouraged to move on, and this too may be part of the coach’s job.
It's important to demonstrate that the activities the agile coach suggests are intended to be the best for the team (see Transparency), and it often helps for him to work as a part of the team and experience the same consequences of a decision made.
Seeing beyond the simple execution of practices, the agile coach brings an insight and understanding driven by a set of principles. Practices without principles generally bring little benefit, yet principles without practices are often difficult to achieve (see Guidance). She helps teams live out the principles by guiding them through a set of practices, helping them understand the value these add, and adjusting them to what works for the team and organisation.
Asking questions is a great way to help clarify heated or difficult situations (see Naysayers). The agile coach will often ask questions to help separate fact from opinion, or to get a better understanding of the situation at hand. Without asking questions, it's easy to jump to a conclusion that will not work for the team in the long run.
Retrospectives are a key practice that the agile coach draws upon to help the team learn about what they have done. Project retrospectives offer wisdom to new projects whilst interim or heartbeat retrospectives help a team respond quickly to an ever-changing environment, to remain and become even more effective. She also benefits from retrospectives with them highlighting what changes have been implemented, or at least bring to light common underlying issues that may repeat themselves time after time (see Listening).
The greatest agile coach respects the culture and environment the team works in (see Listening and Welcoming). She doesn't walk into a team demanding them to change the ways they work; she will first observe the situation before coming up with recommendations.
Being honest helps the agile coach build trust. He explains the reasons he does things to offer them insight to what they might gain by trying something new. When he explains the current situation, its similarity to past experience or a lesson previous learned, people feel safer accepting his suggestions, and are more likely to understand and "own" or internalize them. In some situations, it is also an important way to let them know that he is not trying to implement some hidden agenda or satisfy an ulterior motive.
Teams often have plenty of potential that remains untapped because of the system they work in. Through careful observation and respect for the current processes, the agile coach often unleashes the team’s potential abilities by helping them identify and remove systemic barriers.
Every methodology brings with it a set of terms used throughout. The agile coach keeps abreast of terms, acronyms and special words, mapping it back to whatever mental model the team uses. This is especially challenging where the new model and the existing mental model are not compatible, and may call for experiential teaching (see Zen).
When the agile coach is successful, the team brings new ideas to the table and actually executes them. An initial step for the agile coach will be trying to welcome and support new ideas that individuals suggest, protecting them from the harsh criticism that typically followed in the past.
Most agile coaches move around from team to team and need to fit in with different groups. Not only do they have to be approachable by different people, but they also have to ensure that what they say and how they act doesn't work to exclude people (see Sensitive). Strangers each come with their own concerns and motivations – the coach must be sufficiently self-aware to remain open to the untapped potential of each one.
Sharing stories plays a large role in the way knowledge moves between cultures, and is one technique the agile coach often draws upon to help spread knowledge and understanding. Some of the stories might be based on experiences and interactions with previous teams, while others might simply be presented as a metaphor to help explain a concept.
Some lessons need to be experienced to help people learn - providing advice isn't as effective as creating a safe environment in which people can make mistakes without dire consequences. To this end the agile coach may use a technique like the Socratic method to help people find appropriate solutions for their own problems.
Patrick Kua is a software developer, trainer and coach for Thoughtworks. Patrick is passionate about adding value to the teams he works with, and is passionate about people being passionate about the things that they enjoy. He believes it's even better when they align the things they enjoy with the things they do in their career. He has coached, lead and been a part of many teams practicing agile for the last three and half years.
Brian Goetz discusses the difficulties of creating multithreaded programs correctly, incorrect synchronization, race conditions, deadlock, STM, concurrency, alternatives to threads, Erlang, Scala.
Often the hardest part of changing technologies is language syntax differences. This new article provides Java developers with a transition guide to Actionscript which forms the foundation of Flex.
Neal Ford talks about having multiple languages running on one of the two major platforms: Java and .NET. He also presents the advantages offered by Ruby compared to static languages like Java or C#.
David Anderson talks about the history of Agile, the current status of it and his vision for the future. The role of Agile consists in finding ways to implement its principles.
Nick Sieger talks about the future of JRuby, Java Integration, and his work on JEE deployment tools for Ruby on Rails like Warbler.
Rustan Leino and Mike Barnett of Microsoft Research discuss the technology in Spec# and its futures.
Henrik Kniberg talks about 10 possible reasons to fail while doing Scrum and XP. Maybe the team does not have a definition of what Done means to them, or they don't know what their velocity is.
This article outlines 9 principles Marc Lammers discovered while building the world’s best field hockey team, mapping them to software development practices.
No comments
Reply