Deming, Agile and SAFe

W._Edwards_Deming
W Edwards Deming

This week was a big week in my quest for lifelong learning – one in which the learning should prove beneficial to my furtherance of agile values and principles; a week that I think I will think of a the week of Deming since I completed my reading of two of Deming’s books – Out of the Crisis and The Essential Deming – and I also completed my Scaling Agile Framework (SAFe) training in which I saw Deming’s face and quotes about a half a dozen times. SAFe itself can be thought of more of a homage to Deming’s work with systems than a software development framework or, perhaps more accurately, Deming’s systems thinking as it applies to software development.

While I will shortly take the SAFe examination test, I am certain that my recent completion of two of Deming’s books will serve me well when I take the exam. In fact, I am inclined to wonder if a healthy knowledge of Deming and deep knowledge of Agile and Scrum may be, while not enough to pass with flying colors, at least enough to merit a passing score. If for nothing else, there is a big value to SAFe training in that it will expose a huge number of people to Deming than might otherwise not find him, though in all candor I cannot imagine that anyone truly interested in creating high quality software would not find Deming on their on quest for knowledge and improvement. I find it somewhat sad the number of people in management who I have personally had to introduce Deming to over the years. Then again, if the folks I help become agile had prior knowledge of Deming would they have a need for me?

How I Know You Are Flailing at Agile

As a consultant I try my best to keep abreast of industry trends in technology and software development. Often one of the best ways to observe trends is to check out job boards to see what positions are being posted. For example, job postings can show trends in programming languages. You can see which companies are trying to make Agile transformations (How many big financial companies can hire multiple coaches in Foster City?). You can see which companies have caught the “DevOps” bug and you can tell which companies are flailing and failing their Agile transformations.

How can I tell which companies are failing? When you see multiple posts for the same position over time is a good indicator. For example, you see a post for an Agile Coach that goes unfilled for months. While good ones can be hard to find and take some time, a position open for months can be telling that good coaches are avoiding the company. Most good coaches can very quickly size up a company’s commitment to Agile and avoid those situations where they are likely to fail no matter how good a coach they are. They can sense the fundamental dysfunction. Sometimes you will see a posting one day and the same posting a few short months later. Chances are whoever was chosen didn’t last and that certainly raises red flags.

Sometimes the title that is advertised will show a company’s inherent failure to grasp Agile. You will see a ton of advertisements for Scrum Master or Project Manager. I personally love these as they serve the same purpose as someone wearing a “Stupid” sign in that we know to avoid both. Advertising for a Scrum Master or Project Manager indicates that the company searching understands neither position. The good thing is that if one is only interested in doing Agile then one can save time by avoiding these.

Once I drove nearly two hours for an interview with a company that does only “Agile” projects. During one of the many lengthy interviews, I was asked, “What would happen if we gave you a waterfall project?” “Well for one thing you would not be 100 percent Agile anymore.”

The interview went downhill from there – a waste of a lot of people’s time. Advertising for a Scrum Project Manager would have saved everyone!

Lately I have been seeing another title that gives me pause – Technical Project Manager, especially in the context of Agile companies. I have been a part of and witnessed many abject failures of software development projects (maybe why Project Management should be replaced by Product Management). On none of these have I ever thought that maybe, just maybe, if we had a Project Manager that had more technical knowledge we would have snatched victory tron the jaws of defeat. And the colleagues I talk to agree.

Project Managers have the least amount of authority in making projects successful. A Technical Project Manager is kind of like blaming the weatherman for the rain. It is a silly tactic by management to deflect blame from them. Agile transformation is difficult because it needs change from management and change of culture. Hiring Technical Project Managers is a red herring that distracts an organization from the real work to be done, pushing the transformation finish line even farther away. And finding the kind of person who can successfully straddle tech and management is a tall order, especially when people who know what Agile transformations are all about and who will see through you and realize you are merely flailing at Agile.

Larry Apke

Too Many Bright Shiny Objects (BSOs)

 

As an Agile Coach who has worked at his fair share of large companies, I spend a lot of time researching what can go wrong with an Agile transition. One of the things that I don’t recall being mentioned is the sheer number of projects that some companies try to run concurrently. I have actually worked at more than one company that bragged about how many projects they were able to juggle at one time. These organizations are great at starting work, but very poor at delivering work as if there were some kind of incentive for the number of projects started versus the number delivered. Unfortunately, this is often the case with companies measuring and paying bonuses based on the number of projects they are working on as opposed to how many actually deliver any value.

The problem is huge and is a confluence of some very bad management decisions and assumptions – management deciding there is value in chasing every opportunity (every bright shiny object – BSO), management assuming that people can effectively work multiple projects (for instance, someone on four projects can be 25% effective on each one) and management obsessively making sure that everyone is 100% busy 100% of the time.

The truth of the situation is that most BSOs are not very valuable. Studies have shown that 64% of software features are “rarely or never used”. This would seem to me to open up the opportunity to slim down the number of concurrent projects to just those that would be used and would provide the most “bang for the buck.” This is something that truly Agile organizations understand, but doesn’t get much press. Perhaps if we stop trying to be everything to everybody then we could focus our efforts on those things truly important. What is the point of instituting the discipline necessary for agile software development if we don’t exhibit the same discipline when choosing what to develop? In other words, building the wrong things right is almost as bad as building the right things wrong.

The next problem is that people are treated like widgets. I had one VP once mention in a meeting that “developers are a commodity that I can snap my fingers and replace at a moment’s notice anywhere in the world.” Not true. People are not widgets or commodities, especially in software development where the productivity of a single developer can be as much as 10x higher than another (even when adjusted for education and experience). Try to get that with a factory worker or brick layer. The truth is that when you pull people in too many directions that their productivity decreases due to increased communication overhead and context shifting. It is even more pronounced in an “Agile” transformation. It doesn’t take a rocket scientist to note that a person on three projects (and three project teams) would need to attend three times as many standups, reviews, retrospectives, etc.

Lastly, organizations seem obsessed with making sure that everyone is 100% billable to projects. In order to be 100% billable this means that someone must take on more work and projects than they can concentrate effectively on. The number of people who literally brag about how busy they are is astounding, as if there were some value in not being able to effectively plan one’s time to be effective as opposed to just busy. It is not the individuals fault; they are merely following the lead of the organization that tracks hours. God forbid someone is not 100% busy because they could be next on the chopping block. And mark my words; companies that track such things will always be going through some kind of employment convulsion from time to time if for no other reason than companies that are not effective are more vulnerable to market changes (why they thirst for agile in the first place, but they never make the changes that would allow them to drink). 100% busyness results in queues, in work waiting. We brag about keeping someone 100% busy – why not brag about keeping our computer CPUs at 100%? Because it is ludicrous. As Demarco aptly points out in his book Slack, efficiency is the enemy of effectiveness and it is about availability not busyness.

As I have stated many times before, the problem of chasing BSOs is that the people in charge of making decisions about software development simply have no clue what software development is all about and what works. Running too many projects concurrently is a sure way to never deliver anything. If you want to be effective delivering, instead of just looking busy, cut down the absolute number of projects you are currently implanting. The results will astound.

In “Getting the Most out of Your Product Development Process”, Adler studied a dozen companies over 8 years, including Raychem, Motorola, Harley-Davidson, Hewlett-Packard, General Electric, AT&T, Ford, General Motors and NEC. Their conclusions:

First, projects get done faster if the organization takes on fewer at a time. Second, investments to relieve bottlenecks yield disproportionately large time-to-market benefits. Third, eliminating unnecessary variation in workloads and work processes eliminates distractions and delays, thereby freeing up the organization to focus on the creative parts of the task. The result: Business units that embraced this approach reduced their average development times by 30% to 50%.

 Ever wonder why coaches always harp on small, co-located, dedicated and stable team? Now you know. They do it because it simply works better.

Want to be Agile? Reduce your number of concurrent projects and replace this approach with small, co-located, dedicated team and see a reduction in development times by 30-50%. More importantly, when people are able to focus the quality of the work increases tremendously, allowing for better and faster delivery in the future.

How Would You Rate Your Organization?

larry apke, devops, cultural shift, agile doctor, software development

larry apke, devops, cultural shift, agile doctor, software development

While browsing the 2014 State of DevOps Report, the authors referred to a study by a Professor Westrum of Eastern Michigan University called A Typology of Organizational Cultures. In this article, Westrum studied the flow of safety information within hospitals, how that flow could be classified into an organizational typology and what effect that typology had on organizational safety. His conclusion was that:

“Because information flow is both influential and also indicative of other aspects of culture, it can be used to predict how organizations or parts of them will behave when signs of trouble arise. From case studies and some systematic research it appears that information culture is indeed associated with error reporting and with performance, including safety.”

The table below summarizes Westrums types:

Pathological

Bureaucratic

Generative

Power Oriented

Rule Oriented

Performance Oriented

Low cooperation

Modest cooperation

High cooperation

Messengers shot

Messengers neglected

Messengers trained

Responsibilities shirked

Narrow responsibilities

Risks are shared

Bridging discouraged

Bridging tolerated

Bridging encouraged

Failure leads to scapegoating

Failure leads to justice

Failure leads to inquiry

Novelty crushed

Novelty leads to problems

Novelty implemented

In the DevOps Report, they tracked the ability to be successful with DevOps to the three organizational types Westrum mentions: Pathological, Bureaucratic and Generative.

They found, unsurprisingly I might add, that the ability to successfully transition to a DevOps culture was tied to the organizational culture, with the most success seen by Generative organizations.

 “DevOps” is now the new buzzword, but the 2014 State of DevOps Report (and Westrum’s typology) reinforce that DevOps is clearly a cultural shift and that large organizations, which tend to be pathological as a rule (with some of the more noble ones merely bureaucratic) will only implement “DevOps” in name only or as a repackaging of the existing operational silo.

While the authors of the DevOps Report tied Westrum’s typology to DevOps implementation, the relationship between culture and a larger organizational adoption of Agile are crystal (pun intended) clear. I would go so far to say that in my extensive experience with organizational transitions to Agile that until the issues of culture are addressed by upper management (by a C-Level Executive – perhaps a CAO) then even attempting to make an Agile transition is not only destined to fail, but more than likely, fail in spectacular fashion.

At issue is not whether you can get some short term gains at the team level, but that without cultural support, whatever gains made will be unsustainable.

In my experience there are a few things likely to happen:

  • First, you will optimize the team at the expense of the system. There is little benefit to creating code faster if it cannot be deployed (hence the new DevOps push).
  • Second, you will optimize team speed at the expense of quality. In Pathological and Bureaucratic organizations the shift to quality is unlikely to be embraced so creating features faster only increases technical debt faster.
  • Third, as the novelty of the Agile implementation fades (think Hawthorne effect), what you are left with is a group of individuals who are increasingly disgruntled by the consistent failure of the larger organization and upper management to remove even the most fundamental impediments. What’s the point of showing people a better way to create software and then not allowing those people to actually do it? It is at best incompetent and at worst borderline criminal.

I suspect that a great deal of the backlash Agile has received of late is directly tied to Pathological and Bureaucratic late adopters flailing at a transition to Agile.

My advice? Ask yourself, or, better yet, ask your employees to honestly rate your organization with regards to Westrum’s typology

If you are identified as Pathological or Bureaucratic, address your culture issues first before embarking on Agile transformation.

Agile coaches can help if they are allowed to work directly with upper management to help them to change the culture, but having them work directly with teams (without addressing culture) is like sowing seeds on a footpath.

“Are You Crazy?!” – Project vs Product Focus

eco-data, larry apke, agile doctor, product focus

eco-data, larry apke, agile doctor, product focus

When You Have A Project Focus

Coach: If we take some time to learn and adopt excellent software development practices like BDD/TDD, CI and refactor some our code to remove some technical debt, we will be able to development higher quality software and deliver it to our customers faster.

Project Manager: Are you crazy?! We are already behind schedule! We cannot take on anymore work. This would increase our risk of delivering desired functionality!

Coach: But fixing some of these issues will allow the team to create better code and reduce the cost of delivering in the future.

Project Manager: Future. I am concerned with the delivery next quarter. After this project is completed, we transfer the code to the maintenance team. Let them do this work, I don’t want it charged to my project. Besides, the development team on this project will be disbanded at the end of the project.

Coach: Are you crazy?! Disbanding the team? All the progress we have made as a team is lost as soon as you disband the team. You cannot build a quality product when you keep shuffling teams! Keep them together and bring the work to them.

Project Manager: How much are we paying you? We need to save some money.

When You Have A Product Focus

Coach: If we take some time to learn and adopt excellent software development practices like BDD/TDD, CI and refactor some our code to remove some technical debt, we will be able to development higher quality software and deliver it to our customers faster.

Product Owner: That sounds awesome! I will work together with the team to understand the long term return on investment of doing these things, we will create some stories to handle this work and prioritize appropriately.

See what I mean?

Larry Apke

Technical Debt in the Real World

technical debt, larry apke, agile

technical debt, larry apke, agile

I came across a video the other day that compares the relative devastation caused by two similar earthquakes – a recent 6.0 magnitude earthquake in August 2014 in Northern California and a 6.1 magnitude one in that same month in Yunnan Province, China. The differences are astounding. I created a simple table below to show the particulars.

California

China

Deaths

0 619

Homes Destroyed

4

25,800

To what do we attribute the differences in outcomes in response to similar events? The difference is one of quality. Homes in China are built quickly with only cursory inspections while those in the United States, especially those in earthquake prone areas, are built to exacting standards.

Being a huge proponent of software quality, I could not help but think of the connection between this and code quality and technical debt. In my mind, this is an example of the dangers of technical debt personified. Yes, they build habitable homes in China, but they are not built with the requisite quality necessary to withstand an earthquake. In this case, the corresponding loss is horrific in loss of life and loss of quality of life.

We can see the same things in software development. In our rush to complete our features, we take shortcuts in quality, building, as it were, houses that will not be able to withstand earthquakes.  In the case of software it is rare that the technical debt created has cost of human life, but it certainly can manifest itself in a cost to the quality of life. And much like the house that cannot withstand an earthquake, poor quality code may look fine from the outside, hiding the cost that will be paid at a later date.

Not a day goes by where we do not see some of the “earthquakes” in the world of software – the recent hacks into Apple, Target, JP Morgan Chase et al ad nauseum should provide some adequate examples. And these are just the flashy incidences that we hear about in the media.

Please don’t think I am making light of the devastation in China. My heart goes out those affected by this terrible tragedy. I take this very seriously, as I take the concept of technical debt very seriously. My hope is that us folks who make software for a living can see the similarity and leverage it to continue the fight for high quality software development. Let’s not continue making brittle houses – figuratively and literally.

Larry Apke