Tag archive

Scrum

10 Causes of Chaos in Agile Software Development

in Agile/Agile Engineering/Product Management/Project Management/Teams by

“Everything is so chaotic”
“Seems like we are constantly in a state of chaos.”
“Is agile always crazy and chaotic?”

Chaos is a word I hear a lot lately while working with software development teams that are either initially adopting agile software development or possibly undergoing a Lean/Agile reshaping to improve their existing agile approaches. I am often asked if the chaos will subside, and — the good news, it will — to a certain extent. But to best understand when things will slow down (or even if they’ll slow down), it’s good to explore some of the causes that make things chaotic with software development.

And in my world, there’s no better way to assess than to make a top 10 list:

1. New Teams Forming.

New Team

This one is obvious — as people come together to work with one another there’s a feeling out period. Usually during this period, teams are learning how to collaborate and work through conflicts. In addition to the people learning to work with one another, there are plenty of established organizational structure and culture barriers that slow the progress of a team forming.

2. Process Learning.

Complex Process

Another obvious one. Although most agile process frameworks (e.g. Scrum or Extreme Programming) are fairly easy and well documented, it takes time and practice to learn the mechanics. Couple this with #1, and well — there can be some real challenges to getting things done.

3. HEAVY Learning Mode.

Tired Student

This may seem redundant, but it really cannot go under emphacized. In addition to learning about each other and learning the process frameworks, as engineers — we are constantly learning about technologies, learning about our products, learning about our customers, well — just getting smarter. Needless to say, this all adds up.

4. Greenhorns.

Crab Fishing Greenhorn

If you ever have watched the Deadliest Catch on Discovery Channel, you get to see the struggles and pains of the first time deckhands – called Greenhorns. They are often way over their heads, running into challenges around every corner, and are just flat out exhausted. In addition to physically and mentally killing themselves, they are trying to prove themselves. Well, this is true with just about every new team member. Not only are they dealing with items 1-3 above, the intensity of the learning is magnified and until they have some wins and time under their belt, chaos exists.

5. When Quality is NOT Built-In.

Rolex Quality Built In

It is my opinion that in software development, over the years we’ve invented this approach to quality that is “risky and invites failure.” [1] Yes, I stole that — in most software development shops, quality is something that is done by different people to ensure “separation of duties” and because of the mentality that developers make bad testers. Couple that with the attitude that QA Engineers can’t or don’t necessarily need to know how to code, we have what we do today — a ton of end-of-stream testing, out-of-band automation efforts, and honestly, even the staunches of agile shops struggling with testing and ensuring quality. Without quality weaved into the Design>Build>Test cycle, we tend to see a lot more of these noisy things called Defects. Defects take a ton more time and energy than building it right in the first place.

6. Quality Automation Doesn’t Exist.

Sonar Dashboard

Without automation your going to find it almost impossible or at least extremely constraining to effectively and efficiently deliver with quality in a predictable manner. Similar to the “build quality in” challenges, teams often struggle because of their estimation processes calls quality out separately (which makes it a target for evil doers) and often it doesn’t account for the work around automation. Many organizations adopting agile software development don’t have an automation strategy for their legacy code. Therefore, they tend to have bouts of analysis paralysis around the problem space or they simply say, “our product or software is too hard to automate the testing” — so they won’t try. The other challenge around automation is some see it solely as an end-of-line UI automation thing where a couple engineers work on it — test automation is a holistic challenge and needs to be treated as such.

7. Lack of Cadence.

Perpetual Motion - Agile CadenceWhen teams are starting out, they don’t realize that the first thing to establish is their cadence — get their schedule in place and time box everything. The cadence surrounds the process touch points that require formal communication which help us to build habits; thus, making the process aspects of agile software development more muscle memory. If you feel like you are always in meetings or your iteration meetings are not occurring at the same Bat-Time and same Bat-Place, it might be time to reset — your cadence is lost.

8. Unpredictable Release Cycles.

Roll Dice

This one is an enigma, because there are teams I run into that say, “our product is to large and complex to release in short cycles” and then there are those that say, “we just release when we have to, it could be twice today or two weeks from now.” Looking at these two statements, they appear to be opposite in cause — however, it all comes down to #7 above and understanding what is the ideal batch size that reduces thrashing, allows for tighter alignment amongst teams, reduces “Integration Hell”, and prevents the amoeba style releases that never seem to end.

9. Deadline Rich Environment.

Deadline

Projects are the problem — or at least the traditional sense and meaning of a project drives the idea of fixed scope and fixed schedule. Let’s look at the PMI definition of what is a project?

It’s a temporary group activity designed to produce a unique product, service or result.

A project is temporary in that it has a defined beginning and end in time, and therefore defined scope and resources.

At the end of the day, we drive our business off the idea of push for a date — we get emails from colleagues asking “when?”, we get emails from tools telling us “now!”, and we have other teams telling us “yesterday!” Ultimately, projects drive expectations which are generally dates, we can’t seem to get away from them until everyone realizes, we should design and define scope to fit the schedule, not the schedule to fix the scope — because the schedule usually flexes in these situations not the scope.

10. Estimation (and for that matter, Capacity) is Not Understood.

Voodoo-doll

We often see teams measuring productivity units of time versus being measured as units of value. This is the case even in mature agile shops. Everyone is so focused on trying to come up with a voodoo formula to determine capacity of a team or organization and another voodoo formula to normalize story points across teams in order to build a long-term plan based on the cooked up numbers. The funny thing is that in many cases the approach used for estimation doesn’t really changed once an organization starts using agile — everyone continues to predictively plan what we really don’t know. Agile Software Development is an adaptive approach to estimation and capacity. We work with what we know, we measure value, we assess complexity, and we often simply size efforts based on relative uncertainty. If people would just keep it simple, try to get all stories to the same level or near the same level of certainty, and do the same with the to-do’s (a.k.a. tasks and tests) — then in a couple iterations, teams should be able to just count the stories and count the to-dos accomplished within a time box and use that for planning. Oh, if only it could be that simple … it is.

Okay, this was just my brainstorming or brain dump (literally) of ten things that cause chaos in software development, in particular in the situations where an agile adoption or reshaping is underway. Just keep in mind, change is constant in business — now, more so than ever. Software development is complex, so are people. The great thing about tomorrow is, we don’t know what is going to happen. So, just practice and keep in mind, if today is bad — then there’s tomorrow.

If Your Title Rhymes with “leaf”, “erector”, or “resident” – You Should Learn About Agile and Lean

in Agile/Project Management/Teams by

If you are reading this blog, then you are either part of an Agile transformation or you are someone considering an agile transformation. If you are someone that works in a management or simply a position of authority at your organization, if you don’t know much about Agile or Lean except that they are the latest buzzwords that don’t seem to go away — well, you should learn more about them. Because, the words might change a little, but the practices and principles have been around for a while and they are not going to go away anytime soon.

Agile and Lean are a set of ideas and principles that shape principles which guide our behaviors and foster the frameworks by which teams use to get things done. These have come about because there’s a recognition that trying to build things that are a result of complex cognitive thinking cannot be done well and in a timely manner to keep up with the demands of consumers. Couple these demands with an exponentially growing and aggressive competitive marketplace — the concepts of focusing on building the right thing and eliminating the waste that keeps us from delivering things right have naturally emerged. Agile and Lean are not old ideas, there’s been a ton of learning and shaping of these ideas and principles. New frameworks and or practices emerge daily as our products evolve and the people creating them do the same.

Why Should You Learn Agile and Lean?

clone_dollyHave you ever said, “Dolly is a great leader and worker, I wish we could just clone her and have ten Dolly’s.”

Or, how about, “I wish our team would just make a decision and get it done.”

Well, Agile and Lean values promote:
[list][list_item icon=”fa-star”]Empowerment[/list_item][list_item icon=”fa-star”]Trust[/list_item][list_item icon=”fa-star”]Commitment[/list_item][list_item icon=”fa-star”]Quality[/list_item][list_item icon=”fa-star”]Value[/list_item][list_item icon=”fa-star”]Team Work[/list_item][list_item icon=”fa-star”]Transparency[/list_item][/list] All of these things involve, giving teams information and the vision, and then getting out of the way to let them deliver.

Another thing to note about the values above are that they are generally practiced by all organizations and you’ll find aspects of each word above within the corporate mission statements. By learning more about Agile and Lean, you can learn how to help your teams or leadership leverage the organizations’ values and adapt those advocated throughout Agile and Lean adoptions.

The predominant reason organizations and teams adopt agile is to respond better to change — that is market changes. The other reasons are productivity and quality, all things that help us make products people want to buy, at the price they are willing to pay, and ultimately with the right level of quality that help mitigate long-term cost of supporting. A byproduct of agile adoptions is improved morale.

How You Learning Agile and Lean Can Help

cycle, loop or feedback conceptAgile and Lean advocates shrinking the feedback loops which improve communications amongst departments and ultimately help your employees make better decisions. Well, you understanding when the feedback loops happen, your role in the feedback loops, and the types of information shared at the different levels of the organization can help you keep yourself out of the way from the team. What I mean by this is that when sometimes things are going right, we’ll go back to what we are comfortable with and understand — and generally this means metrics and reports that may be costly to gather and result in anti-patterns for good team work.

The other value of you learning about Agile and Lean is that you can help facilitate the adoption by being a good leader and facilitating change practices. Keeping a level head when things aren’t going right, and providing guidance as to how best support the teams.

What Should You Do to Learn?

There’s a ton of reading materials out there. Just keep in mind that there’s a lot of books, articles, and blogs that focus on the practices and not as much on the strategic and scaling aspects around agile. This spaces is growing as organizations have realized that not only is there the “build better software” value, but the planning and practices around Enterprise Agile give organizations a framework to make better investments and harness the short feedback loops to improve ROI.

To help get you started, here are a few resources that have been recommended to me and I can vouch for their value of learning:

The Agile Executive Whitepaper, Jim Magers, VersionOne. Nice quick read and primer / introduction to agile.

The Concise Executive Guide to Agile, Israel Gat. Nice quick read that provides a deeper dive than the Agile Executive whitepaper.

Scaling Software Agility: Best Practices for Large Enterprises, Dean Leffingwell. Foundations for the Scaled Agile Framework (SAFe) which is being advocated as a framework for leveraging Agile and Lean in the enterprise.

Principles of Product Development Flow, Donald Reinerstsen. Helps explain the way Agile and Lean works in Product Development.

Training – Agile for Executives Workshop, VersionOne. This is a workshop that I’ve performed as well as my colleagues and it’s aimed at being a concise four hour session aimed at ensuring Executives understand the history, underpinnings, and execution models surrounding of Agile and Lean.

Words Mean Things – Waterfall

in Agile/Project Management by

If you are someone who is passionate about Agile, the word “Waterfall” is usually used in a derogatory manner or, at least, when you use it — you are making the stink eye. On the converse, if you are someone who practices what is popularly known as “Waterfall” Project Management you generally get offended or defensive when the phrase “Waterfall” is used.

Here’s how the conversation plays out:

Agile Practitioner – There’s no way I’ll ever work on a Waterfall project.

Waterfall Practitioner – There’s no way I’ll ever work on that Agile project.

Agile Practitioner – Waterfall projects are never successful and I hate being told what to do.

Waterfall Practitioner – Well at least we do work and don’t practice that Agile witchcraft and all that kumbaya mumbo-jumbo.

Agile Practitioner – Well, your mama said Waterfall is for losers.

Waterfall Practitioner – Don’t be talking about my mama …

[chaos ensues]

Winston and Murphy

The sad part about this dialog is that although it’s somewhat fictitious — I’ve heard similar arguments at organizations and with colleagues that work across all spectrums of the project management continuum. The funny part about the dialog above and, in particular, the word Waterfall — no one is really clear who started calling it Waterfall. It’s obvious that when diagramming out a sequential process, it looks like a waterfall.

waterfalldiag

Often, people credit Dr. Winston Royce with waterfall, especially with respects to software engineering when, in 1970, he wrote a part in a white paper that describes this project management approach (read it here). The funny thing is that he goes on in that same white paper that is credited for starting the waterfall practices to describing how risky it is and that in order to mitigate the risks, each stage of the process should do things iteratively and incrementally.

Waterfall Project Management is really Sequential Project Management. Meaning we perform a sequence of activities and there are generally stages, maybe with sign-offs, and usually hand-offs to another group of people that are charged with performing the next sequence and consuming the output of the previous sequence. Some refer to this as Traditional Project Management, but in most environments its called Waterfall.

I’m not going to discuss the differences between the two and which approach I think is better — it should be clear since you are reading an agile blog. I will say that I think that the merits of each approach are obvious and each approach has challenges. The usage of one approach over the other really depends on the project and possibly the people engaged. What I am going to say is that the world we all live in today, it is very likely that we’ll have a mix of projects using a more Agile approach and one using a more Sequential approach. Sometimes, we’ll have to join forces and combine the output of these approaches into one. Of course, we are learning and adapting ways to do this, but that too is another discussion altogether.

Let’s face it, when words start dividing people, we probably shouldn’t use them any more. Instead call the project management approaches what they are – iterative and incremental, or sequential, or continuous, or simply ad-hoc. Also, be aware that moniker we place on people isn’t really on the people, it’s on the processes by which they may operate in and they may be really comfortable in that process. Generally, they’ve put in a lot of blood and sweat to make it work. Sometimes we need to put the monikers aside and focus on “individuals and interactions over process and tools” (crazy how I got the Agile Manifesto into this blog, isn’t it?).

For now on, be aware and instead of calling it Waterfall, try Sequential Project Management or even Traditional Project Management — unless you want to get in an argument about “your mama.”

Presentation – Doc is a Four Letter Word

in Agile/Resources by
Documentation Formula

So it’s no secret, I like to talk — and here’s a fun one I’ll do with different groups. This is a session that I have had the honor to do in a number of settings that presents ideas and techniques teams can us to help overcome the quagmire of documentation. Hopefully help folks rationalize what documents are required and those that are not. Look over the slides and let me know if you would like me to come talk to your group. I can be reached at matt@agilebacon.com.
 

This is an Agile Team. Any Questions?

in Agile/Humor by

ThisIsAnAgileTeam

Agile teams can get totally fried in the wrong culture. So be sure you are not only addressing the practices around agile, but the people and culture are just as important.  Read about Behavior and Cultural impacts on making good stuff, especially with Agile Teams.

1 2 3 6
Go to Top