Category archive

Agile - page 2

The State of Agile Software Development – Are we in a phase of Innovation Discontinuity?

in Agile

Hey, this post was originally published by the good folks at SD Times as an opinion piece. I appreciate the honor as well as being asked to contribute. I also appreciate those who helped a ton to edit including Maureen Upchurch and the marketing team at VersionOne. They helped me get it down to a more concise form. Below is the unedited version of the opinion piece, it has a few more links and some of my bad english and ramblings in all it’s glory. Please give it a read and let me know what you think. – Matt

Khan ... I mean ... AGILE!Unless you’ve been under rock, you might have noticed a heightened level of discourse abound in the agile software development community. There is always a healthy amount of naysayer banter surrounding Agile coming from those that have tried and failed or those that have been forced to “be agile” and fail or those who use the phrase “we’re Agile” and don’t know what the hell it means. But, if you’ve been paying attention over the last several months, you will have noticed more and more harsh words and general discomfort about the state of Agile coming from the pioneers and visionaries (early adopters) of agile software development.

A couple examples are Agile is Dead (Long Live Agility) by Dave Thomas and Tim Ottinger’s post I Want My Agile Back which has spawned it’s own Google+ page. Oh yeah, and I should shouldn’t forget, there’s The Anti Agile Manifesto which is a whole site unto itself. Now don’t get me wrong, these posts are not all negative, in fact I find them inspiring. Dave and Tim provide constructive facts and ideas to move forward. But just the fact that we are having this discussion shines a light on the state of Agile today.

So does the elevated level of scrutiny and general unhappiness in the software development community mean certain doom for Agile Software Development?

The most prevalent driver of angst that is causing intense, partisan politic like arguments are the concepts around Enterprise Agile or scaling agile. It is well known, that organizations need to address their Enterprise Agility — which means organizations can adapt rapidly and efficiently in response to business and or market changes. In fulfilling the need of Enterprise Agility — large organizations are working to adopt agile processes within software development and other departments. A number of frameworks and approaches have emerged to address the Enterprise Agile needs and as a part of this movement, a consultancy-economy has formed to help implement the frameworks. This makes agile software development purists uncomfortable. The fear is that the only thing the consultancies and frameworks are doing is providing middle management and PMOs what they always wanted — a heavy-weight, control-oriented, certified process that has the word “Agile” in it. This is exactly what the original anarchists who wrote the Agile Manifesto were trying to change.

As a coach in the field, I’ve seen reasons to be concerned. A couple examples I’ve seen are where some software development teams scoffing at the ideas of craftsmanship, or the inspect-and-adapt loop was being used as a management tool to force their views of improvement upon the teams. Even with my concerns, I don’t view the frameworks or consultancies as the core challenge around the state of Agile.

Instead, I think the concepts of Agile are at a point of innovation discontinuity. In 2006, Diana Larson wrote that Agile has crossed “The Chasm”[1] that exists in the Early Adopters phase of Everett Rogers’ Innovation Adoption Lifecycle[2]. I would definitely agree and I believe that that we are on the downward side of Late Majority curve. If someone simply looked at the Innovation Adoption Lifecycle, they might assume that this means Agile will simply die-off and yield to the next best thing. The problem with this belief is that it has been demonstrated that as a core technological innovation reaches the crest of the Early Majority curve — a whole new round of innovations emerge that improve and or change the original innovation; thus, continuously extending the lifecycle. At this point in the curve, a bubble forms — this bubble is called innovation discontinuity[3]. It’s a bubble where the original innovators demonstrate dissatisfaction to changes of their invention, while the new innovators morph the technology to meet the current and, hopefully, future needs of a changing market.

Point of Discontinuity

We can debate as to whether or not the move by the large organizations to adopt agile processes and practices have pushed us into this round of innovation and subsequent discontinuity. Or, was agile software development already in a period of innovation discontinuity and the ideas of Enterprise Agile have just exasperated it. At the end of the day, I’m not sure it matters — what does matter is that the agile community has grown substantially, and we need to base ourselves in the values and principles of the Agile Manifesto that have served us well over the past thirteen years.

At this point of innovation discontinuity, we need to focus our efforts and learning energies on several fronts. We need to renew the emphasis on agile engineering good practices and embrace the ideas of craftsmanship — without this, agility does not happen. We must practice relentless transparency — trust does not exist without it. We must get our executive and management ranks engaged — education is not enough. We must always put people first in that people are how things get done, not the processes. And finally, as Dave Thomas’ blog points out, we have to get back to the core of Agility — assess where you are, take a small step toward your goal, adjust based on learning, and repeat — all the while, making change easy with all decisions made.

I firmly believe Agile Software Development is not doomed. And it is imperative that if you are one of those who believe ardently in the founding values, principles, and practices of Agile Software Development — that now, more than ever — get involved in the community. Some discourse is valuable; however, we need to make sure the resulting conversations drive innovation not decay. At the end of the day, I think all we want to do is make better software and solutions that customers want to buy and we enjoy making[4].

[1] Agile Alliance Survey: Are We There Yet?, InfoQ, Diana Larsen, http://www.infoq.com/articles/agile-alliance-survey-2006

[2] Diffusion of Innovations, Wikipedia, http://en.wikipedia.org/wiki/Diffusion_of_innovations

[3] Technology Innovation S-curve, just Google it :). Great post about personal growth/innovation s-curve – http://blogs.hbr.org/2012/09/throw-your-life-a-curve/

[4] A reference to Bob Martin’s (a.k.a. Uncle Bob) “mushy” statement made in Snow Bird to close out the two day meeting that birthed the Agile Manifesto http://www.pmp-projects.org/Agile-Manifesto.pdf

Hey Buddy, 2001 Called and Wants Its Agile Back

in Agile/Resources
State of Agile

In the past couple months, and really over the last few years, the frustration level of where agile software development is heading has been growing. The good thing is that the frustration is not forcing folks to give up, instead we’ve seen some great conversations form and a desire to ensure that as we move into another round of innovation with technology, processes, and practices — now more than ever we need to understand the original agreement and intent of the Agile Manifesto.

Tonight I was given the opportunity to talk to the PMI Atlanta Agile Interest group. I really enjoyed it and I appreciate the discussions.

Please take a look at the presentation, and let me know if you want to chat. There’s some great talk to be had.

Best Day Ever

in Agile/Humor/Product Management/Project Management/Teams

My dog Mocha has a great tail — her fur is fawn colored and her tail has a white tip. My wife and I call Mocha’s tail the Happiness Meter. You see, you can tell how Mocha feels based on what her tail is doing. She has multiple wagging patterns:

TailPatterns

Every morning, when I wake up — Mocha is there with her tail going in the helicopter pattern. Yes, this means that she is extremely happy to simply be waking up to another day. She does this every day — to her every day is the BEST DAY EVER. The one thing to know about Mocha is that she’s getting older, she definitely has stiffness in her joints, she has a bum knee, and she suffers from bouts of mild pancreatitis. Even if Mocha went to bed not feeling well or wakes up stiff — her outlook is always, this is going to be the BEST DAY EVER.

We’ve all heard of the power of positive thinking — heck, there’s probably a couple hundred books on Amazon written about or referring to the power of positivity. But since we are humans, it’s difficult to squelch down the trials and tribulations of day. In the software development world, we talk about “the death march.” This is that project that drags on, is considered a failure before the first user even sees it, the one where the management tells folks to work on the weekend, the one where for every bug fixed someone finds two more. If you work in information technology, then you’ve been on one of these projects.

Now since you are reading an Agile blog, you are probably waiting for the Agile Punchline or to hear about the Agile Secret Sauce to help over come the challenges of these projects. Well, the reality is that Agile generally will expose problems earlier and maybe make you realize that this project is going to be painful and heading for certain doom. We hope that we course correct or try something different, but sometimes we are simply just in a bad place and cannot get out of the rut.

So while working on these projects, people come dragging in for another day of drudgery. Another day of running on the hamster wheel and not getting anywhere. Another day that the project is dragging us down — in fact, today just may end up as the worst day ever.

Remember, today didn’t start out as the worst day ever, it started as the BEST DAY EVER.

  • Today is the day that no matter what happens we will find something positive and see how today is better than yesterday.
  • Today we will find that our small failure is just that, a small failure — and we learn from it, and have a piece of knowledge that we didn’t have yesterday.
  • Today is the day that we celebrate finding defects, because those are defects our customers did not find.
  • Today is the day that we find joy in having to refactor some old crappy code, because we know that when the next developer visits that code — they’ll get to enjoy changing it, not dreading the fact that they are likely to break something.
  • Today is the day that we move one day closer to getting the project out the door.
  • Today is a great day to laugh with a coworker.
  • Today we admire what has been accomplished versus what is remains.
  • Today is going to be the BEST DAY EVER.

And if you don’t believe me, just ask Mocha.

Getting Blood From a Turnip – Agile DC Slides

in Agile/Resources
Facilitation Games

So this past Tuesday, I had the privilege and opportunity to talk to the AgileDC crowd about some fun facilitation techniques. It was a great session, primarily because everyone played along — so thanks for making it fun. Please let me know if you would like the original slides.

What Does Every Agile Development Team Want?

in Agile/Agile Engineering

Win! Duh, Winning!

Okay, I know that is so 2011. But it is only human nature to want to not be put in a losing position, in fact we talk a lot about winning. We are naturally competitive, some folks more so than others — you know who you are. This may be an evolutionary thing because of our need to be adaptive. I’m not saying we are totally dog-eat-dog. We like to be able to look back and see that we did our best or that we delivered the best as a team. In my opinion, we win when we meet or deliver beyond our own expectations as well as the expectations that we helped others to set.

As an agile development team, when we set commitments at the beginning of the iteration, we are setting expectations to win. If we miss our commitments — clearly we are not winning. This sometimes can be compounded when teams don’t even try to innovate and adapt in an effort to overcome our missed commitments. In these cases they are complacent, and they quit trying to get better, which means they clearly are not going to win. My guess is that most people on these teams are not very happy, and especially not happy to be on a losing team.

Let’s face it, winning is hard. Outsiders (a.k.a. stakeholders including customers, executives, management, and other teams) will levy expectations upon us and the team, many times these expectations seem unrealistic and, at times, seem maliciously imposed. Also, in order to win, you sometimes have to lose — winning takes practice, which means you and your team will likely fail before you win. Often winning is hard because we are trying to do so as a team. Becoming a team is a whole blog on it’s own; however, remember that in Agile we measure outcomes based on the team. So we win and lose together.

I am not really the one to ask about winning and I know there is not one single formula to winning. That being said, I have made some observations of winning teams, they are:

Set Proper Expectations. I think this goes without saying, we’ve talked about it before — part of being successful means setting the right expectations and having all the right parties in the room to agree together on expectations. This doesn’t mean that at times we shouldn’t stretch ourselves to be better, but the rules of winning should be agreed upon before we try to win.

Be Consistent. Now, you can consistently lose, but we are not primarily talking about losing here. When I say “be consistent,” maybe I should say “establish consistency.” In that we should establish consistency in both the Demand side and Supply side of the delivery equation. Smoothing out peaks and valleys improves the likelihood of meeting shared expectations and making the act of setting shared expectations easier.

Try. If you don’t try, you can’t win — ’nuff said. Well, let’s be a little more specific. Teams that don’t try to set the right expectations, or teams that waiver from their end goal because they are not on board simply will not win. These are the teams that are often the superheroes and they’ll end up within Sprint Burndowns that never reach zero.

Rely on Strengths of Team Members. Everyone on a team has different skills and strengths — both tangible and intangible. Although it is sometimes good to work outside your comfort zone so that you can develop, when teams constantly do this or team members take on activities that reside more in their weakness zone, it’s really hard to get things done and meet expectations. Try creating a skills catalog for your team and try out Strengths Finder. Doing this together and making it visible helps team members to put themselves and others in positions to win.

Embrace Adversity and Diversity. We should not only embrace adversity (a.k.a. challenges and failures), we should also embrace diversity (a.k.a. team member differences). When something goes wrong, it should always be a learning experience, even if that learning is, “we shouldn’t do that again.” A team that picks themselves up after failure and moves on is generally a stronger team in the end. From a diversity perspective, with Agile teams we look to build cross-functional expertise. Well, it’s also good to build cross-cultural teams. I’m not talking about putting someone on a team who is totally a bad fit, but instead — introduce a team member that will bring new ideas and approaches to solve a problem. Plus, with diversity generally comes new experiences — which is usually a good thing.

Tennis PracticePractice. It goes without saying, you don’t get good at something without some practice — look at professional sports teams. Yes, there are those of us who are naturals at certain things — but even the naturals need to practice. When we practice, we learn – we learn new ways, better ways, and ways not to do something. Yes, we might experience beginners luck every-now-and-then; however, by practicing what is often unnatural to us becomes natural — then we can focus on the next level of challenges.

Apply New Techniques and Tools. As we practice, we should always be looking to find a new way to do something or seek out opportunities to improve some aspect of what we do with tools. Although I work for a tool vendor, I’ll be the first to say that tools don’t always solve a teams problems — people have to solve the problem. But tools and new techniques can improve the way we do something or make a solution more reachable. Not to mention, new techniques and tools can make solutions more effective and efficient.

Put Our Best Foot Forward. Simply put, don’t put anything out there unless it is something you would put your name on and parade it in front of the world. A team I once worked with used to have “Good Code, Bad Code” sessions. This was a community of practice meeting where the developers would present examples of either good code or bad code. The author of the code generally remained anonymous; however, you were really nervous that it might be your code about to flash up on the screen as an example of bad code.  This type of discussion really forced everyone to raise their game, but at the same time if your code was brought up — you had the opportunity to discuss the circumstances and understand a different way.  Nonetheless, you always tried to put your best foot forward.

So those are the observations and experiences I’ve had around winning teams. In your experience, what makes up winning teams? Or, is something I said something you agree or disagree with? I really think teams want to be successful, it’s human nature. It doesn’t mean we always have to win, but it sure is fun and everything is easier.

Go to Top