Showing posts with label Continuous Improvement. Show all posts
Showing posts with label Continuous Improvement. Show all posts

Monday, August 22, 2016

Agile2016 Things

BTW, have you watched "Stranger Things" yet? Amaze-balls!
I’ve had two great opportunities to learn and reflect this summer. The first was the Agile2016 Conference, and the second came 3 weeks later when I took my family on a beach vacation. Those two weeks have allowed me to mentally prepare for what happened today: I went from zero direct reports to four who, along with my technical lead that reports to our Director of Engineering, comprise the team that I will be leading in developing cloud-hosted solutions for Walmart’s brick-and-mortar stores. It will be my first time leading a team in my current capacity, much less leading one where the majority of the team members are brand new to both each other and the company itself. Here are some things I’ve decided to try with my new team.

I actually want to try a whole bunch of things that Jurgen introduced in his opening keynote, but this is the one I’m starting with. I’m working on mine now and, on Wednesday, my tech lead and I will present ours to the team. We’ll give them about a week, and then they’ll share theirs. I will keep mine up-to-date in a digital format that I can share with any other new team members that arrive in the future, as well as all of my friends here on the Internet.
I’ve joined the Slack team, followed them on Twitter, joined the Facebook group, and plan on getting involved with their open source repo on GitHub. I’m not sure what exactly I’m going to do with all this, but I’ve got the sticker on my laptop that reminds me everyday to Make People Awesome; Deliver Value Continuously; Make Safety a Prerequisite; and Experiment & Learn Rapidly. I’ll be re-watching Joshua’s mid-conference keynote when I share it with the team and perusing his slides for further hints and advice on how I can implement Modern Agility on my team.

The conversation in the Agile community has been trending more and more to value, but I most like the term that David Hussman used: impact. Before our team builds anything, we’ll define the impact it will have once it’s been delivered. We won’t work on things that don’t have impact, and we won’t call it done until we’ve validated whether or not the impact was made. 

4) Shorten Improvement Cycles
Following the conference, I had lunch with Woody Zuill of #NoEstimates and #MobProgramming fame. He talked about the process by which Mob Programming came into existence. He was trying to help the team learn how to identify what’s working and what’s not by holding short, daily retrospectives. By narrowing the timeframe for inspecting and adapting, the team could more easily pinpoint daily activities that were beneficial or not. As a software engineer, I see the daily retrospective as the algorithm that produced the solution of Mob Programming, and I want to see what kind of results it produces when I provide my team as the input to that algorithm.

Coming back full circle to Jurgen’s “Managing for Happiness” keynote, I want to use the Celebration Grid approach in our fortnightly retrospectives to highlight learning. I’ve grown accustomed to the “Fail Fast” language that permeates the Agile community, though I always use the Spotify language of “fail fast to learn fast to improve fast”. Well, if you fail fast but don’t learn from it then it’s not useful, so why not focus on the learning and not the failure?

Those are my five action items following a weeklong conference, a week of restful reflection, and challenge of leading a brand new team for the first time. If you attended #Agile2016, what were your takeaways? If you’ve ever been in a situation similar to mine, what advice do you have for me? I look forward to hearing from you!

Monday, June 8, 2015

Life after your First Agile Project

This blog post is adapted from a workshop/presentation I recently led at the May NWA PMI Professional Development Day.



So, you just finished your first Agile project in a Waterfall organization. Now what? Let me put my Agile Coach hat on and tell you, “It depends.” It depends on whether or not it was a positive experience and how supportive the overall organization is of this “Agile thing”. Let’s run through a few possible scenarios.

Agile Sucks



You may be one of the many people whose first exposure to Agile is a negative one. Maybe your team was uncooperative. Maybe there were too many practices that were too new for the team to successfully adopt. Maybe the organization was so un-Agile that your team got exhausted from trying to swim upstream the whole time. Or maybe your team never really became an Agile team; you were a bunch of silo’d individual contributors with Waterfall mindsets trying a new front-end to the same process you’ve always used to get the job done. Whatever the reason, all you know for sure is that Agile sucks. It simply does not work; not for you, maybe not for anyone.

As an Agile Coach, I am sincerely bummed if this was your experience. I wish I could have been there to help make sure you knew why you were adopting Agile, not just how to go through the motions. I wish I could have been your heat shield, to protect you from the Agile defeatists and remove organizational impediments for you. I wish I could have helped you through the forming and storming stages of a team into norming and performing, so that you could benefit from a team who, corny as it sounds, was greater than the sum of its parts. I wish I could have helped you learn how to continuously improve not all at once, but incrementally.

But I wasn’t there, so what will you do? I hope that you will take pause and consider the possibility that those Agile proponents can’t all be crazy. What did they do or have that you didn’t? What might you have missed? Get involved in virtual and physical Agile communities, remain open-minded, and stuff your toolbox with as many practices and approaches as you can. Study the Agile Manifesto and its principles and recognize that what it’s defining is a mindset, not a methodology. You have to be Agile before you can successfully do Agile.

Agile Recipe



Maybe you had some success with Agile – or at least you think you did – and you want to keep doing it with all your future project teams. What really happened is you ran a successful Scrum project, and you’re ecstatic that you found a working recipe that will turn any team into a high-performing team. The team followed the Scrum Guide to the letter and there’s no doubt in your mind that this is what Agile is all about. Agile is Scrum, Scrum is Agile. If you follow the exact same approach, you are confident you will have similar results with your next team. After all, this is the same company, same culture, same organization support and/or impediments. Why shouldn’t you expect the same results?

The short answer is because it’s not the same team. Even if some of the people are the same, if the make-up of the team isn’t exactly the same then it’s a different team. You’ll be starting back at the forming stage with a new backlog, maybe even a new Product Owner, and there’s no guarantee that this group of people will interpret and embrace the Scrum Guide the same way the old team did. Hopefully you learned enough about teaching, coaching, and/or facilitation from your last team that you can guide this new team through the same pitfalls in a faster, safer way. Hopefully you learned Servant Leadership skills that will help you get buy-in from the team to try this new thing. Hopefully.

Hopefully you learn by the end of this project how much more successful the project would have been if you would have kept your previous team together. There is a cost associated with breaking up a high-performing team and knocking everyone back to the forming stage. There are also reasons that you may want to incur that cost in order to reap specific benefits, but “because the project ended” is not one of those reasons.

Keep the Scrum Team



Not only did you have success with the team, the team became a family. You are now a high-performing Scrum team that knows the process and each other so well that you couldn’t dream of breaking them up. You manage to keep the team together for the next project, and you hit the ground running.

This is great, but you have to be careful. If you have decided that Scrum is the be-all end-all of Agile then, eventually, the team will begin to stagnate. Scrum ceremonies will become ritualistic instead of productive, thought-provoking team activities. Group-think may begin to crop up, and the electric feeling of respectful debate will flicker out of the team. Some team members may become too comfortable, others restless. If you don’t do something, you’ll lose everything you fought to keep.

My hope is that you learn that Agile isn’t about following a recipe. It’s about starting with a recipe and making it your own. It’s about evolving the way you cook, trying new flavors, and learning how to transition from cook to chef. Hopefully you find all the success you were looking for and more, because our successes motivate us to keep going, keep trying.

Become comfortable with mining for conflict and facilitating conflict to unearth change that will make the team better. Stay in tune with the latest ideas and do your best to keep the team in the “Learning Zone”.

Grow the Agile Team

credit: universal studios

Perhaps you’re one of the rare few who, by the end of your first Agile project, recognize already that the team should be together and should not be limited to just Scrum. Perhaps you’ve already begun incorporating aspects of Lean, Kanban, DevOps, Lean Startup, Lean Enterprise, eXtreme Programming, or any number of other Agile approaches to help your team stretch and grow. You have a vision for how amazing your team can be – a unicorn among horses – and you recognize that Agility is a journey, not a destination.

The team can only become so awesome before running into major roadblocks within the organization. The team can become locally optimized, but the benefits will be limited until the entire system is optimized. After all, this is a Waterfall organization – you can run whatever methodology you like within your team, but there’s still an overall process that must be respected.

You’ll soon find that, in order to best help the team, you have to spend less time with the team and more time fixing the environment they live in. Maybe it’s the dependent teams – adjacent teams doing similar work or component teams, such as Security, Infrastructure, or Release teams. Maybe the Operations team is pushing back, trying to drive constancy at the sake of functionality. Maybe it’s the way work is approved and projects are formed that prohibit the team from responding to customer requests and market demands as quickly as they are capable. Maybe there are leaders or others in the organization that are afraid of change and, consequently, are passively or actively sabotaging the spread of Agile.

If you are successful, you will find that organizational Agility provides orders of magnitude greater than a single Agile team. You’ll find that what the team does rarely have as great an impact on their performance as the environment in which they operate.

Monday, September 8, 2014

"I Like that Old Time Rock 'n Roll"

I'm am constantly amazed with the power of first impressions. As much as we may try to avoid it, the initial impressions we get when we're first introduced to a person, place, or idea tend to stick with us for the rest of our lives. This sentiment is embodied in the classic Bob Segal hit, "Old Time Rock and Roll". The song starts with its thesis:

"Just take those old records off the shelf, I'll sit and listen to 'em by myself. Today's music ain't got the same soul; I like that old time Rock 'n Roll"


This same phenomenon happens in Agile as well. When people think of Agile Transformations being hindered by first impressions, they usually jump to those who "didn't do it right", who failed and were left with a bitter taste in their mouth. I would argue that, in the long-term, the more hazardous first impression comes from those who have greater-than-anticipated success with the first thing they try. From that point on Agile is defined solely by what they did the first time.

Let's say your first approach was Scrum - and I mean by-the-Scrum-Guide Scrum. It works so well for you that you scoff at Kanban, DevOps, or anything else that violates your 5 ceremony, 3 role, pure and holy Agile approach. Nevermind that you are supposed to be looking for ways to improve every Sprint. Nevermind that the best way to improve team performance is adjustments to the process, not the people. "I'm sorry, you don't use time boxes?" "How do you plan without using User Stories?" "Clearly you don't know what Agile means."

I find it telling that the first line in the Agile Manifesto states that "we are uncovering better ways of developing software by doing it and helping others do it" (AgileManifesto.org, emphasis added). They didn't say that they had uncovered the best way of developing software, they were in the never-ending process of uncovering better ways. They didn't come up with the Manifesto by getting doctorate degrees and jumping into a think tank, they came up with it based on their experiences in doing it and helping others.

I find it highly narcissistic for anyone to have claimed the best way to do anything. Given how long mankind has been on the earth and the fact that nothing has yet been proven beyond improvement, saying that you've "figured it out" means you're either selling something, deluding yourself, or both. Those who really get Agile know that it's about the journey, not the destination. If you keep reliving the glory days of your first Scrum team then you'll never give proper attention to challenging the status quo and innovating the next big idea for delivering software in a better way.

I know, I know, it's hard to give up those first impressions, the glory days, the golden years when everything was perfect and your selective memory hadn't kicked in yet. But you have to if you want long-term success. It's risky business, but somebody's got to do it.

Monday, April 7, 2014

Discord in Agileland

I've seen a lot of blog posts and articles circulating about how horrible the state of Agile has become. The central theme to these is that the term "Agile" has moved away from the principles that they established to the practices that are commonly used by "Agile" teams and organizations. I'd like to gently suggest that we not throw the baby out with the bath water.

Look, I totally get it. I really do. A quick glance at my own blog's history will tell you that I'm a huge advocate of sticking to the Agile principles and paradigm. Adopting practices, techniques, frameworks, or methodologies without internalizing the Agile Manifesto and its Principles is an exercise in diminishing returns (if any). However, it's also very difficult to ascertain how well an organization has internalized Agile into its culture. Like the saying goes, "The proof is in the tasting of the pudding," meaning that Agile teams do, in fact, behave differently because of how they've internalized Agile.

Theological Agility
"You will respect the sacred parchment" -- 5 reasons Agile is like a cult
One of the better blog posts that I've read on the subject was written by Dave Thomas, one of the Agile Manifesto's original signatories. In "Agile is Dead (Long Live Agility)", he writes, "Once the Manifesto became popular, the word agile became a magnet for anyone with points to espouse, hours to bill, or products to sell. It became a marketing term, coopted to improve sales in the same way that words such as eco and natural are. A word that is abused in this way becomes useless—it stops having meaning as it transitions into a brand."

People have exploited the agile brand to push their own agendas, that's for sure. All too often these days you meet someone trying to sell a practice or approach who can't name more than a couple of the Agile Principles (if any). I have personally trained people on Agile who had "heard so much about it", yet had never heard of such a thing as the Agile Manifesto.

So yes, we do need to work on getting back to our roots. However, that does not make all practices and approaches evil. This way of thinking is way too theological for an approach that must be practically applicable.

Making a living off of changing people's lives is not a crime against Agile. Furthermore, there are some practices that have existed for long enough that I would consider a team to be un-Agile or a low-maturity Agile team if they weren't doing them.

By their Fruits
By their fruits ye shall know them - Agile Teams have Agile practices, produce quality value, and are happy!
In his blog post "The Corruption of Agile", Andrew Binstock writes about the evils of building a brand off of Agile. He states that teams can be doing Agile practices without being Agile, and they can be Agile without doing Agile practices. My confusion is: how do you know a team is Agile if they aren't acting Agile? Practices such as TDD and Continuous Integration enable the team to deliver the values stated in the Agile Manifesto and its principles. If a team's not doing them, what are they doing to get there? Do they inspect and adapt on a regular basis? Are they striving to deliver something to their customers every 2 weeks to 2 months (with a preference for the shorter timescale)? How do you know they are Agile if their practices aren't Agile?

Agile practices can be a good gauge for a team's Agility. I do not advocate their use as the only metric of Agility, but they provide a good starting point for assessing a team. If a team is using Scrum and has implemented TDD and Continuous Integration, it's going to take a fair amount of convincing for me to believe they aren't "Agile", for how did they get to that point if they weren't continuously improving? Perhaps they were Agile at one time and had grown stale, but there is certainly evidence that they were at least Agile at one point in time.

Keep an Open Mind
Do we need to focus on our roots, the foundation of Agile culture that will breed lasting success in our teams? Absolutely! Our people should be consistently reminded of what it means to be Agile to ensure they are adapting towards greater Agility instead of away from it. Are people who introduce practices, approaches, and techniques that enable and empower a team to become more Agile inherently evil? Absolutely not! A team that understands what Agility is can tell when someone's trying to pull one over on them versus a person who genuinely has their best interests at heart.

I love going to conferences and learning about the latest and greatest in the Agile world. I love being a part of a community that is so obsessed with making people's lives better. I love the healthy debate and pragmatism that comes with experience. And I loathe those who are clearly pushing their own agenda without a reality check or an understanding of what Agile is really all about. I think it's time we took a more measured approach to our criticism, understanding that not all Agile consultants are wolves in sheep's clothing; indeed, more of them than you think are just trying to make the world a better place.

Tuesday, January 7, 2014

Group Affirmations - Good or Bad?

Have you ever been in a meeting where everyone is talking the whole time but nothing gets accomplished? Of course you have. Have any of those meetings consisted of everyone agreeing with everything? Maybe, maybe not. I have. Lately, I have a lot. Let me explain.

I've been in meetings with other Agile supporters discussing what it is we want to accomplish within the company and how we're going to do it. All too often, these discussions turn into someone saying something and everyone else agreeing and elaborating on it - similar to the Improv principle of "Yes, and...".

I have mixed feelings on these meetings. When I first left one of these meetings, I left feeling pumped up and enthusiastic about the work that was ahead of me. However, after several more of these meetings, I began to leave feeling frustrated and annoyed. We were talking a lot but saying nothing. We weren't generating action items or progressing the cause in any way.

I've titled these types of meetings "Group Affirmations", and I think I've come to the conclusion that they can be useful in moderation to help inspire and uplift a group of people who need a morale boost. However, Group Affirmations do not produce any real results and can have detrimental effect when over-used. I'm still forming a conclusion, though, and would love to hear your thoughts.

Thursday, January 2, 2014

New Year's Resolution: Kaizen!

If old acquaintance be forgot and never thought upon then you're not holding retrospectives correctly.
I've never been a fan of making New Year's Resolutions - their short life spans are clichéd for a reason. I've also been reading Scott Adam's new book "How to Fail at Almost Everything and Still Win Big", and one of the major themes in the book is that goals are for losers; winners use systems. This resonates with the Agile principle of continuous improvement through inspecting and adapting.

So my New Year's Resolution this year is not a goal, but truly a resolution. I resolve to exercise personal Kaizen. Continuous improvement has been a major part of my life for as long as I can remember, but it hasn't always carried the urgency associated with Kaizen. I'm going to experiment more so that I can fail more so that I can learn more. I'm going to schedule Introspectives (1-person Retrospectives) on a regular basis whereby I can challenge my own personal status quo.

I wouldn't be an Agile Coach if I didn't encourage each of you to adopt Kaizen as a New Year's resolution as well. If you don't like the commitment associated with that term, can you commit to trying it just for January? Each Friday in January, I challenge you to hold your own Introspective. Ask yourself what you did well and what you could have done better. You may have made good decisions, but did you make the best ones? Did you have an answer for each time you were asked "Why"?

I'll be sharing the results of my own Introspectives every Friday this year. What I share may not be comprehensive, seeing as how I don't have the time to write out all the context for my results, but I'll share as much as I can within reason. I'll also work hard to blog frequently between Introspectives in an attempt to get more of a dialogue going than I've been able to in the past.

If you decide to take on my challenge, please share your results with me. You can comment on my blog, message me on LinkedIn, or tweet me @MLCarey321. I'd love to see the effects of personal Kaizen in your life!

Tuesday, November 12, 2013

Agile Complements

I was recently asked to explain the relationship between Agile and Innovation. I was intrigued by the question as I've never really tied the two together. In thinking about it, I've concluded that Agile complements many things, but it doesn't necessarily drive any of them.

The Role of Practices

The Agile Manifesto clearly states that one who considers themselves Agile values "Individuals and Interactions over Processes and Tools". However, we know that there is some value inherent in Processes and Tools, primarily in the behaviors that they reinforce. Given it's popularity, let's take Scrum as an example. Scrum has a highly prescriptive process that still manages to leave a lot up to the team. Sprint Planning reinforces commitments and transparency; the Daily Scrum reinforces face-to-face communication and self-managing teams; Sprint Reviews reinforce feedback loops within the team, as well as with stakeholders and customers; Sprint Retrospectives reinforce continuous improvement; the Sprints themselves reinforce small time-boxes; and on and on and on.

If you want to reinforce something positive at work, whether it be innovation, elimination of waste, any of the items listed below, or pretty much anything else, you can find an Agile process, tool, or practice that will reinforce it. With Innovation, you can take the practices of Capacity Allocation and Spikes to explicitly include time and effort for innovation into your process. This is assuming we're talking about developing innovative things, in addition to a Retrospective or other feedback mechanism for innovating the process and team themselves.

However, it is possible - and happens all too frequently - that teams adopt these processes, tools, and practices superficially, thus obtaining little, if any, of the intended benefit. In order to effectively reinforce behaviors, those behaviors have to already exist as part of your culture.

The Role of Culture

I've blogged multiple times about the difference between doing Agile things and "Being Agile" ("Agile: The Book vs. The Movie", "Understanding the 'Why?'", "Descriptive versus Prescriptive", "I Madge I'll - Agile Posers", etc). To deliver the best results possible, your team has to be Agile - they can't just superficially adopt an Agile implementation. When asked to explain Agile, they should go to the manifesto first and the day-to-day second. At the risk of getting too theological, Agility is a state of being and influences all aspects of a person's life (at least at work). Simply put, you have to establish a culture of Agility, where the principles are embedded in your company's DNA.

The same is true of Innovation or anything else. When people think of innovative companies they think of companies that have a culture of Innovation. Innovating isn't something you do as much as it's part of who you are. Of course their processes, tools, and practices reinforce Innovation, but that's a byproduct of something deeper.

As I said before, you can use tools from the Agile toolbox to help drive Innovation, but it can't just be lip service. If your company was built on Innovation (and it probably was) then get back to your roots and tell that story; remind people where they came from. Make Innovating seem natural, like coming home and eating comfort food.

No Silver Bullet

I'm going to be going more in-depth in the coming months on the idea that no one Agile implementation should be seen as a Silver Bullet. Before you implement anything, ask yourself "Why?"; what result or behavior are you hoping to get from it? Understand that different Agile processes, practices, and tools have their own strengths and weaknesses. Sometimes you'll have to blend different solutions to make something new that fits your needs. Sometimes you'll have to invent something that hasn't been done before. Most importantly, you will always have to examine what you're doing and ask what you need to change to be better. Keep the mantra "Never Perfect; Always Better".

Can Agile help drive Innovation? Sure. But some approaches will do that better than others. Begin with the end in mind, but remember that this is a journey and you don't know what you don't know. Be willing to adapt, but don't lose sight of your vision. If it sounds hard, that's because it is; if this were easy then we wouldn't be having this conversation!

What do you think?

Seriously, what do you think? Please tell me! I really don't like the "thought leader in a vacuum" setup. What I've shared here is the result of my learning and experience, but I recognize I don't know everything. I crave the perspectives of others. I want your insights, suggestions, criticisms, reinforcements - all of it. Leave a comment or tweet me @MLCarey321.

Thursday, October 10, 2013

Muscle Memory vs. Muscle Confusion

The most popular Agile methodology in practice today is Scrum, which relies heavily on ceremonies. Any decent Agile coach working with a new Scrum team will drill these ceremonies into them in an effort to get the most out of the framework. They drive cadence, alignment, continuous improvement, transparency, etc. One of the big benefits of doing this is that it becomes a part of their routine. They no longer have to figure out how they're going to align on a daily basis; plan their work; communicate with their customer; inspect and adapt; etc. All of those things are "baked in" to the framework. Because there's so little prescribed, it's easy to pick up and repeat forever. By making those things rote, you develop a sort of Agile "muscle memory".

Wax on, wax off, stand up for 15 minutes
Muscle memory is a condition where a task is repeated so frequently that it can be performed unconsciously. Just think of Mr. Miagi and Daniel-san in The Karate Kid. Mr. Miagi had a lot of landscaping work to be done, and Daniel wanted to learn Karate. As luck would have it, the motions required of a Karate black belt are the same as sanding decks, staining fences, and washing cars - who knew? Right as Daniel is ready to throw in the towel, Mr. Miagi attacks him Daniel's muscle memory kicks in to save himself from being pounded by a Karate master. Likewise, those Scrum ceremonies become reflexive and help new Agile practitioners focus on the hard task of developing new software instead of thinking about how they're going to go about "Being Agile".

However, too much of a good thing can be bad. Once that muscle memory kicks in, it makes it harder for our Agile "muscles" to grow. The body has optimized how to do the repetitive thing, and doing it more doesn't really result in any added strength. This is a problem that strength trainers and body builders are familiar with. Your workout routine can't be too routine or you'll plateau. You have to introduce what's called "muscle confusion".

Muscle confusion is the concept of varying the types of exercises you do, as well as the number of sets and reps of those exercises, to avoid muscle memory and keep building muscle by tearing it and letting it repair stronger. If muscle memory kicks in then it becomes harder to tear the muscles. You see this concept manifest in workout regimens such as P90X and Cross Fit. One of the difficult things to get right, though, is the right amount of muscle confusion. Switching 100% of your exercises 100% of the time won't get you optimal performance.

I liken muscle confusion to a Kaizen mindset in Agile. You have to have an urgency about change, but it has to be small, incremental change in order to be effective. Change too little and muscle memory sets in - boring scrums, useless retros, tedious planning, etc. Change too much and the disruption causes everything to start falling apart.

P90X and Cross Fit are not for everyone. You will have to determine as a team how much change you can handle on a sprint by sprint basis. Some will change almost daily, others will be lucky to successfully adapt on one thing per sprint. As long as you're being honest with yourselves, that's fine. Just beware of muscle memory and muscle confusion. Optimize the change, and there are no limits to how much you can grow your Agile strength.

Thursday, September 26, 2013

I Madge I'll - Agile Posers

When I meet someone who wants to talk about Agile I start by asking, "What do you know about Agile?" Most of the time I begin to hear those key buzzwords the newly indoctrinated are so proud to spout off: "It's where, instead of Waterfall," said with a grin and a wink, "your scrum has sprints and they stand up and there's no requirements and you demo and it's amazing!" I often think to myself, "Seriously? Why do these people think this?" So recently I decided to apply Occam's Razor and ask what the simplest answer is. My conclusion? Somebody told them this.

Consultant Speak*


Okay, so I don't think anyone told them something quite so incoherent as what I put, but they definitely started out with 1) a specific methodology in mind, almost certainly Scrum, and 2) an unholy amount of buzzwords and Agile vocabulary to accentuate just how different Agile is from the dreaded Waterfall. I get it - you're probably (relatively) new to Scrum and you're super excited about it and want the whole world to know how it changed your life. Unless, of course, you're a consultant who's trying to confuse a potential client into throwing money at you to turn their IT shop around. Tsk, tsk.

"...It's Not What You SAY, It's What You HEAR!"
The problem is these people don't know what Agile is. They don't fully understand what it is they're saying. All they know is that if they keep saying certain words with enough conviction then people will think they know what they're talking about. It reminds me of the game "Mad Gab". In case you're not familiar, players in the game read words on a card that don't really make any sense. They're not supposed to. The words on the cards, said with the correct inflection and pacing, are supposed to sound just like a commonplace phrase that your team is trying to guess. For example, these new, hopeful, and largely ignorant future Agilists are saying "I Madge I'll" in hopes that you'll hear "I'm Agile"! The problem is they aren't.

Agile Posers


I was recently working with a fellow Agile Coach (I know, I don't care for the term, either, but I'm not sure what else to call him) and we were collaboratively taking notes via Google Docs. On occasion we would have an impromptu discussion in the document due to a tangent that our notes took us on. One such tangential conversation was about Agile Posers. It went a little something like this:
"‘how to spot an agile poser’ (consultant-speak?)
1.one who pretends to be someone who's not. 2. who tries to fit in but with exaggeration
urban dictionaryl33t speakpwned you, you poser
'5. Someone whos acts like someone they’re not,but not realizing that there being fake, basically a loser trying to fit in.' - UrbanDictionary.com
'6. A poser is someone who tries hard to be something they arent. Usually, posers call other people posers because they are jealous that the person they called a poser is more skater/stoner/goth/punk/rocker/grunge/Agile/etc. than they will ever be.' - UrbanDictionary.com
posers often fool themselves first.  they aren't always (deliberately) not
ask probing questions.  why do you like it, what was good, test their belief."
On the off-chance any of my readers are Trekkies...
Our conversation went on to include things such as mining for conflict and Open Space sessions as means to help draw out and coach Agile posers. Take another look at definition #5. These are the people I'm talking about here. Those who want to be Agile, who hear about it and crave to belong. They'll ask anyone who claims to be Agile what that means and they'll cling to whatever they're told. So what's the take-away here? Tell them the right thing!

Being Agile vs. Doing Scrum


When people ask me what Agile is, I always go to the Manifesto and backing Principles first. I emphasize over and again that Agile is a way of thinking, a paradigm, a perspective, an approach. Yes, there are implementations and yes, Scrum is the most popular by far and yes, there are those who will tell you that the definition of Agile is Scrum. I'm here to tell you that it's not.

So what's the harm in people thinking Agile is just Scrum? Scrum's not all that bad. Of course it's not. I love Scrum, it's helped my organization tremendously. The problem with believing that Agile is just Scrum is it sends you on a quest to be the best implementer of a set of practices. Your Retros will eventually dry up because you can't get any more Scrum-like. But you'll keep doing them because "that's Scrum." You have to understand why Scrum is set up the way it is. Why you're asked to perform certain ceremonies. You have to know in what direction to Adapt when you Inspect in your Retros. And, most importantly, you have to be willing to break the rules like an artist once you've mastered them. You have to be willing to try things that are not in the Scrum Guide. You need Kaizen!

I'm Right!.. Am I Right?


As per usual, I don't have much to go on here other than my experiences and the stories I hear from others. So I want to know: What does being an "Agile Poser" mean to you? Have you experienced those "Mad Gab" Agile enthusiasts? Have I hit the mark on being Agile versus doing Scrum, or am I way off base? I want to know what you think, and I want to use your ideas to make myself better (being completely transparent here). Please leave a comment or shoot me a message on LinkedIn. I'd love to hear from you.



* I received some feedback that this post was offensive to consultants. I would like to clarify that I am not trying to group all consultants together and say that they are all this way. I am basing this on conversations I've had with people who were introduced to Agile by these types of consultants; observations from a friend who is a former consultant; and my first-hand experience with sub-par consultants. I know there are amazing consultants out there - I've met them, too, and admire the work they do - but there are an alarming number of consultants out there who do fit this bill.

Tuesday, August 13, 2013

Taming the Wild West: the Differences between Agile and Cowboy Coding

One of the strongest arguments for Agile is that it’s not Waterfall. However, not everything that isn't Waterfall is Agile, a fact that’s not always understood. This misunderstanding hurts the Agile brand when people familiar with only Waterfall begin associating all other methodologies, including a lack thereof, as Agile. I want to be very clear about this: Agile is not Cowboy Coding, and Cowboy Coding is not unique to Agile teams. It is important both to understand how Agile and Cowboy Coding are different and what Cowboy Coding looks like so that you can identify it on your teams (yes, even Waterfall teams).

The Loner

One of the easiest signs of a Cowboy Coder is that he’s a loner. He may be working under the name of Agile, but there are no Agile methodologies or frameworks I’m aware of that support such behavior. In fact, the backing principles of the Agile Manifesto state, “Business people and developers must work together daily throughout the project”; “Build projects around motivated individuals”; “The most efficient and effective method of conveying information to and within a development team is face-to-face conversation”; “The best architectures, requirements, and designs emerge from self-organizing teams”; and “At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.” The manifesto, its principles, and all Agile methodologies and frameworks I know of are very human-centered with an emphasis on collaboration.

If you have a loner on your team that insists on working in a silo, there’s a possibility that you have a cowboy in your midst. Try to rein them in using mandatory meeting/ceremonies that promote meaningful conversations and practices like Pair Programming. If they absolutely refuse then you will likely end up spending considerable time managing the work around them – holding ad hoc conversations, formal code reviews, knowledge transfer workshops, etc. – with diminishing returns.

Straight to Production

Working directly with Production code or with a source code repository that isn't versioned is a bad idea. Don’t get me wrong, I love Continuous Delivery and working off the trunk, but a software development team must be very mature and disciplined to make this work. They use feature toggles and branching by abstraction to protect code that isn’t ready for Production. They build test suites around the code so that each commit is verified against regression. They do their due diligence to make sure that a change isn't going to blow up if it’s pushed to Production. Cowboys, simply put, don’t.

If you find yourself consistently in a situation where the same person or people are making changes directly to Production without due diligence then you might just be working with Cowboys. Have them read up on DevOps and Continuous Delivery so they can learn the right way to get changes to Production quickly. Emergency situations that require quick, non-vetted changes to Production should be avoided at all costs.

Wastes of Time


The Cowboy will often refer to Testing and Documentation as a waste of time. They may even commit the cardinal sin of Agile, reciting the Manifesto blasphemously: “‘Working software is the primary measure of progress’; anything else is just a waste of time!” To those people, I would ask them to define “working”. Does it pass the Acceptance Criteria associated to the work (or did you even bother to ensure you had Acceptance Criteria)? Can anybody actually use it, or is it too buggy or complex? Is anyone other than yourself aware of the assumptions made around input, output, workflow, etc.?

Without proper testing and documentation, you can’t prove your software works nor can anybody understand how it works. With that being said, if your tests and documentation don’t contribute to the value and usability of the software then they are, in fact, a waste of time. Focus your testing efforts on tests that actually stand a chance of failing and finding vulnerabilities. Don’t spin your wheels creating “write-only” documentation. This is the approach that Agile espouses; anyone who says tests and documentation are altogether useless is operating with a Cowboy mindset, not an Agile one.

“Emergent Architecture”

One of the backing principles to the Agile Manifesto states “The best architectures, requirements, and designs emerge from self-organizing teams”. There are those who believe this means “just make it up as you go.” That’s not entirely accurate. There still needs to be intelligent design, and that design needs to make the software as easy to comprehend and maintain as possible. As another principle clarifies, “Continuous attention to technical excellence and good design enhances agility.” This means having a thorough understanding of the latest design patterns and practices. It means taking the time to refactor working code into something better. It means taking a little bit of time up-front to design what you think will work and adjusting as you go.

Agile developers do not shoot from the hip. They take pride in their applications; they have a sense of ownership. They will throw research spikes, read books, build proofs-of-concept, attend conferences – do what it takes to build the right thing in the right way. You’ll spot a Cowboy by their purposeful lack of direction, sticking code wherever they please with the sole purpose of “getting something to work” so they can move on to the next thing. If they do it in the name of “emergent architecture” then call shenanigans. That’s not architecture, it’s just reckless.

Somewhere to Hang their Hat

The good news is that cowboys can be tamed if they can come to appreciate the practices, tools, and frameworks that Agile provides. Cowboys won’t jump on the bandwagon just for the heck of it. There will always be some that refuse to be tamed, but many will see the benefits and forsake their wandering ways once you give them a safe place to hang their hat.

One of the great things about reformed Cowboys is they are used to developing quickly and cross-functionally. If you arm them with XP practices, Agile tools, a Kaizen mindset, and continued training and development, they can become model developers that contribute quality software time after time.

Just don’t make the mistake of trying to get them to do something for which there is no tangible benefit. They don’t take too kindly to that.

Friday, August 2, 2013

Understanding the “Why?”

"Would you tell me, please, which way I ought to go from here?"
"That depends a good deal on where you want to get to," said the Cat.
"I don't much care where –" said Alice.
"Then it doesn't matter which way you go," said the Cat.
"– so long as I get somewhere," Alice added as an explanation.
"Oh, you're sure to do that," said the Cat, "if you only walk long enough."

I've written a couple of blog posts on understanding the principles of Agile, the “book version”, as it were, in order to achieve the success that is associated with Agile. If you've been in the Agile arena for any significant amount of time, you know there are a lot of disagreements as to the “How” of Agile. There are many different methodologies, frameworks, tools, and practices out there to support Agile teams. Some believe this is because people simply disagree on how to best implement Agile and, in some cases, this is true. Others understand Agile was never intended to be “One Size Fits All”. There are many options because there are many teams and each team must determine what solution works best for them – and evolve that solution over time in the spirit of Continuous Improvement.

This means you cannot determine “How” you want to implement Agile until you understand the needs of the team. “We need to have a Daily Scrum.” Why? If you can’t answer this then it’s not going to bring as much benefit as it should. If you understand the Daily Scrum as a touch-point to align across team members; identify risks and dependencies the team is encountering; and jump-start communication that will occur throughout the day then it becomes a stale and stagnant status update meeting.


My recommendation to Agile teams, and all human beings for that matter, is to not adopt something without understanding the “Why?” behind it. True Agile teams do not do things for the sake of doing them. They do them for a reason and nothing is sacred; if a tool or practice outlives its usefulness then it must be “put out to pasture” so as to not get in the way of the team’s continued growth. By regularly re-evaluating the usefulness of your current implementation, you also get the benefit of being open to new things. No matter how good your team is, they will never be as good as the team they could be.