Posted on

Part III – Organizational Transformation – Challenges and Strategies

Transformation Priorities  

We talked in Part II of this blog series about elements of agile transformation with a focus on two main initiatives: process and technical agility. We laid out some ideas and details to consider and to understand approaches to scaling. But one question is still not answered – in what order of priority do you tackle these initiatives? Does it even matter?  

There are a lot of changes in the “trenches”, at the engineering level with adoption of technical practices, changing how we build, test and deploy the code. And at the time these changes are happening, the organization can be changing to support release trains, engineers are moved around, and new teams are formed. By doing so, release trains may start breaking up existing organizational entities managed by directors and executives.

Let’s look into some scenarios, link them to organizational culture types and discuss outcomes that we may expect, at least based on our humble experiences. 

Process Changes as Higher Priority

In this scenario, priority is given to process transformation over technical transformation to align engineers around scrum teams and form release trains. This obviously requires lot of preparation at the leadership and executive level as existing organizational entities and silos are broken. All this is done while teams and leadership still have a commitment to the business and customers. For example, we can’t stop on these promises while reorganizing in an effort of creating a better delivery model. This can be challenging and creates a lot of stress and potential burnout. Developers are under the gun to deliver, fix issues, deal with escalations, and yet the world around them is changing.  

At the leadership level, this can start creating “antibodies” and “non-believers”. Reasons for this could range from just not understanding how breaking established organizational models will create better value, to extreme situations where it may even be political. To understand the latter, we need to reference our Part I blog where we discussed Westrum’s organizational culture model where the first two models mentioned are power-oriented (pathological) and rule-oriented (bureaucratic).

Both models are basically based on a siloed mentality with often unhealthy relationships where either information is withheld, collaboration is low, or scapegoating is present. With a rule-oriented organization, each organization protects its own “turf”, where they have their own rules and any attempt for cooperation means others need to adopt those rules which may create friction. 

Leaders in these types of cultural environments often push back on changes since their “turf” is changing, and the rules and processes they created are not valid anymore. In some cases, some leaders may see breaking up existing teams as a loss of power and control. With this, they become demotivated or even they challenge process changes as they don’t see evidence of immediate positive impact on product quality or time-to-market. 

So executing big organizational changes first, changes which may not provide immediate tangible and measurable results, have some risks and may result with “antibodies” within leadership and teams themselves that may slow or sabotage the transformation. Thus, it becomes important to have the right strategy defined to turn these into forerunners of change.

In our experience we also see the HiPPO [1] effect emerging in these organizational cultures with top engineering leaders with authorities giving up on transformation efforts and falling back to old practices for doing business, which in return puts the company behind against the competition and the market pace. 

Technical Agility as Higher Priority 

In this scenario priority is given to technical transformation over big processes and organizational transformation forming release trains and values teams. Just to make it clear – we are not stating that process transformation is not done, but just that effort and energy is first put into work on “low hanging fruit” – fixing code quality and improving delivery capabilities. In this approach, the organization recognizes the existing technical challenges, long release cycle, or inadequate testing and agree on prioritizing these challenges first before doing bigger organizational changes. In this approach agile and technical coaches and DevOps engineers are typically hired to drive most of technical transformation:

  • Agile coaches will start helping teams embrace Scrum, help them understand how to break problems into smaller increments and how to deal with flow and apply lean principles. They will help limit work in progress (WiP) to allow a percentage of the capacity to address technical debt such as manual testing, complex branching, or slow, infrequent builds, to name some.
  • Technical coaches will pair with developers and help them start refactoring code and teach them how to embrace proper unit testing and advanced methods such as TDD and BDD frameworks for example. They will examine their branching strategies and teach how to move from long lived isolated branches to a more trunk-based model with CI and daily merges. 
  • DevOps engineers will start helping with a tools ecosystem, help automate build and release processes, and help with environments setup automation to enable continuous code integrations and deployments.

Above are typical examples of technical transformations which, when combined and well executed, will start demonstrating evidence of continuous deployment capabilities improvement.

In order to see the evidence of progress, monitor the changes and make sure to address any negative trends of teams falling back to old practices, a set of engineering metrics unified across teams must be established. These metrics mainly provide answers to two key questions:

  • What does my code quality look like?  The expectation is to see positive trends with regards to defect reduction, security issue reduction, increased unit test code coverage, and increase overall test automation.
  • How well are my teams transforming? This means teams embrace fast CI/CD with a reduction in build-cycle-time and increased number of builds, a positive trend with regards to pass/failed builds, story-cycle-time shows positive trends and so on. 

It becomes almost obvious that with proper adoption of technical practices along with coaching and servant leadership support to ensure teams have what they need, then positive results of the transformation become very measurable quickly. Ideally, key metrics are automated and updated on a daily basis (ideally by each integration build run) and displayed and visible within team spaces.  

Conclusion 

We looked into two prioritization cases, one where priority is given to organizational changes over adopting technical practices and fixing teams first. There is a risk with this approach, if an organization’s culture is power or rule oriented. While organizational changes are important to set the organization for success long term, they are quite disruptive for leaders and engineers and there is no immediate return on investment – by changing the organization we don’t improve code quality or time-to-market immediately. In this scenario, it is easy to see that people in doubt will become vocal and undermine the efforts and in extreme cases, division can be so deep that transformation efforts may fail. 

However, when we put priority on technical transformation first, and staggering organizational changes until we start seeing benefits of technical practices and DevOps we put in place, we are minimizing risks of disagreement and friction. Those potential non-believers or antibodies will not have arguments if we start seeing better code quality, more automation, less security issues, reduction in delivery cycle time and happy teams. Once we start seeing an indication of these key benefits (metrics are so important here), we can start executing organizational changes to set scrum teams around common goals, create release trains and focus on delivering value faster to customers. We focused these recommendations for organizations that may have experienced symptoms of those two Westrum’s cultural models, i.e., power or rule oriented. However, if an organization is supporting a generative culture with good information flow, high collaboration, and with servant leaders focused on eliminating impediments for teams, then transformation can be much easier to execute. These organizations see transformation as a business change and not just an engineering experiment.  


[1] Highest Paid Person’s Opinion

Posted on

Part II – Organizational Transformation – Challenges and Strategies

Transformation Strategy Elements and Their Priorities  

In the previous blog (Part I) we discussed organizational transformation and organizational culture as a factor that is often overlooked, yet is a factor that can greatly impact the outcome and  success of the agile transformation. But before we analyze that impact, lets briefly discuss key elements of a successful agile transformation.

Elements of Agile Transformation

There are articles and books written on this topic discussing process, business agility, change management, and technical agility. But for this blog, lets focus on a few that really matter.

Process Transformation  

  • Organizing teams for continuous delivery and self-efficiency. The most popular framework to achieve this is Scrum.  In Scrum teams are organized around the ability to deliver features quickly and desired level of quality. Adoption starts with reorganizing teams into smaller groups (versus a big monolithic development organization) with right skillset mix to achieve the above mentioned  objectives – speed and quality. Changing and reorganizing teams is a disruptive process (“Change is good…you go first”),  and there will be developers that may not embrace it at first. While talking  to a  bigger group of engineers about organizing into small teams, and the notion of shared responsibilities and collaboration, we experienced more than once, push back from at the back of the room with comments such as “coders like to work alone…”as they express their disinterest. But these instances are really outliers and for most part, engineers do tend to see benefits of scrum and with proper coaching, they start embracing it.

For small companies with a simple organizational structure, the transition to Scrum can be fairly straight forward. People know each other, often they are all collocated and they are used to dealing with frequent changes, comfortable with direct communication and may already have a “just do it” attitude. 

On the other hand, for larger companies with a complex structure and equally complex processes, these changes are much more challenging and may take time to fully transform across all departments and geographical locations. But even in this case, engineers can often see the “good” in the change. They embrace it, over time they improve it and ultimately become better at it. 

  • Beside teams of developers organizing in scrum teams using Bezos’ two pizza size rule[1], next process related change that is important to highlight here, is the ability to scale Agile in big organizations. This means organizing multiple scrum teams together to continuously deliver meaningful value to customers. Hence, the concept of a Release Train may be introduced to align scrum teams and other functions (development, DevOps, test, product and program management, service, etc.) in logical grouping with shared business and technology objectives. Release train may have up to 150 developers in large organization, with multiple release trains running concurrently.  Members of a cross-functional release train should seamlessly work together without traditional organizational boundaries or impediments (or “silos”) to complete all activities necessary to deliver value continuously, fast and with quality and security built-in. Further, the set of release trains’ activities can be organized around value streams where value is a content the train is delivering.  The value stream is also a reflection on how business is aligning a key product or portfolio strategic themes delivered  to customers over period of time. By definition, a value stream may include activities across multiple release trains. 

It is obvious that scaling Agile with release trains, value streams and associated changes, may require modifications of the existing organizational models especially if they aligned around technology, architectural components or existing product components. These organizations may have developers, test engineers and other functions working on these components that alone may not be releasable customer values. This is important to remember as we will later discuss organization culture models relationship with organizational changes introduced by implementing release trains. This may require reorganizing teams around the value they would deliver to customers.


[1] According to Bezos, ideal size of the team is the one that can be fed with two large pizzas 

Technical Transformation or Technical Agility 

Beside organizing teams and aligning organization around value streams where value is delivered by release trains, another element of successful transformation is technical transformation or adoption of advanced engineering practices. 

As we said earlier, the ultimate goal is to deliver valuable product increments to customers continuously (in frequent deployments), with quality and security built in. To do this, teams need to change the way they produce code. In waterfall-like models, developers will write code, pass it to test teams who will open defects for any bug they found during testing. These defects will go back to developers to fix them. When code is ready, software executables are built and provided to operation teams to deploy to a sandbox environment to do more integration testing . This process keeps going  until predefined release readiness goals are reached and software is finally ready for customer deployments by operation teams. All this takes time, promotes silos and isolates developers from software delivery process,  and ultimately from accountability for product quality.  Because it takes time and deadlines are tight, this often causes burnouts and stress conditions for people involved. 

Hence it is important that along with agile transformation, teams embrace engineering practices that sustain agile and ensures quality issues are fixed fast, when they actually happen. . This reduces turnaround time for delivering value to customers and makes developers accountable for a code quality. Some of most important technical practices teams need to learn are:

  • Automated Unit Testing – Teams should adopt xUnit test framework within which developers create unit tests pretty much for each line of code they write. One of the most popular models for embracing unit testing with full code coverage is adoption of Test-Driven Development (TDD). In this model, unit tests are written prior the code that is tested. Another good extension to TDD is Behavior Driven Development (BDD) which allows automation of acceptance tests that can be considered a contract between developers, product owner and business stakeholders. Adoption of these test frameworks, requires often mindset change,  but with proper technical coaching engineers quickly see the benefits and adopt.  
  • Continuous Integration (CI) – Teams need to have the ability to run fast CI builds that are triggered each time they commit their code which, if done properly, means running CI builds many times a day. Developers are encouraged to run their unit tests during these builds along with performing other analyses to discover code anomalies and security vulnerabilities. The feedback CI provides is critical. It is important developers act and fix these issues immediately, not wait for downstream testers to discover and pass information about code  issues in the form of a documented bug or defect. 
  • Automated Continuous Deployment (CD) – – While each developer is running CI builds on their code and cleaning it up as they get unit test feedback, it is important that code is continuously built and tested for integration between key components of the system they are building. To do that, a means of automating environment setup and code deployment are required. These days this is often automated by adopting infrastructure as a code paired with use of cloud platform and its related services.
  • Proper branching strategy –e.g.  Trunk based development. Developers tend to keep their code isolated from main or release branch in private or feature branches for a long time.  These practices prevent code integration and timely discovery of integration issues. Hence in trunk-based development developers are encouraged to integrate their code branches into the main daily (and after passing their unit tests) 
  • Security analysis – There are many tools available today that help with threat modeling  and finding timely security vulnerabilities in a developer code or open source they use. But, remember these tools must be properly integrated into CI/CD pipeline and developers are must look for their feedback and be accountable to fix issues. 

To make this technical transformation happen, two main things need to be provided: coaching and a proper engineering tools ecosystem that supports developers by seamlessly automating most of the process overhead.

There are other elements of successful transformation and other technical practices, but what is described in this blog is a good starting point helping us understand transformation priorities and risks discussed in Part III blog. 

Posted on

Part I – Organizational Transformation – Challenges and Strategies

Introduction

Many of us with passion for software organizational transformation, and a passion for helping teams transition from traditional waterfall or other “ancient” development models to contemporary agile and lean processes, have been reading books, blogs, white papers about these transformations. We often go to various online forums and follow threads on this topic. And by doing so, we find a lot of references about successful moves to Agile, Scrum, SAFe, embracing Lean or other initiatives and reading posts by passionate engineers talking about all the awesome positive outputs they got by adopting these methodologies. We embrace learning and trying to find best practices or develop a model that may apply to our own situation, will work for our next client or our own business. In this research journey we learn a lot about success stories or how startups are doing it and how quickly they come up with a model, a solution and adoption of new processes, tools or technical practices that put them on a path to success : delivering value to customers fast with consistent quality and built-in security.

But how many stories have we read about hidden problems that organizations are facing beyond just adopting new processes, tools and technical practices that enable them to automate everything?  Startups and small agile companies are one thing, but what about big companies, enterprises who have been in the software business for decades? Yes, we have learned quite a bit about Kodak and Nokia moments, and books were written about how they failed by not innovating fast enough and keeping up with emerging industry leaders and embracing new technologies fast enough. 

Change is Good…You go First!

But what about companies that may have good products, a solid product strategy, great existing market share but need to keep ahead of competition,  and therefore transform and learn how to move product out of the door faster, improve time to market and still keep quality under control. Typically these transformation stories begin with methodologies like Agile, Scrum, organizing teams around delivering value continuously, then DevOps, automated CI/CD , test driven development to improve product quality, shift-left security and testing, and so on. All great stuff. 

And that’s just the beginning of the list though. 

So how do we approach this? In what order do we implement these things? This is where the fun begins. You may have heard about the book from Mac Anderson and Tom Feltenstein “Change is Good…You go First.” Changes are good, but they are hard, they can be disruptive; especially when asking engineers who have grown accustomed to doing things a certain way to adopt a new way of doing things, new practices and learn unfamiliar methodology. These things often put them out of their comfort zone and they question whether it’s worth the discomfort. But eventually, engineers can be convinced once they learn it will make their life easier and empower them to reduce waste in their workflows they complained for years but nobody listened.

While those in the “trenches” who are actively utilizing the tools and methodologies may eventually embrace the change, other people in the organization need to buy into the strategy and change and be supportive in order for the organization to succeed. To discover challenges associated with this, we are moving upwards from engineers to management and executive leadership levels. 

Organizational Culture Can Generate “Transformational Friction”   

And to talk about challenges, we , undoubtably need to discuss organizational culture. One of the first things most of us would do to learn about company cultures is to search for companies who demonstrated great corporate culture or were proven to be successful in the past. Here are some statements from leaders and CEOs who have a great understanding of the value of embracing change:

“An organization’s ability to learn, and translate that learning into action rapidly, is the ultimate competitive advantage” Jack Welch former CEO of GE

“Good leadership requires you to surround yourself with people of diverse perspectives who can disagree with you without fear of retaliation” Doris Kearns Goodwin American biographer and historian

“We can change culture if we change behavior.” Aubrey Daniels Founder of ADI

All valuable and true insights. 

But as most of us know or may have experienced, when we integrate ourselves with an organization, we discover certain behaviors that characterize how work is done and how an organization performs from a software delivery performance perspective. These behaviors and performances are directly correlated to the core of the organization’s culture. American sociologist Ron Westrum researched the topic of organizational culture in the 80s and developed an organizational culture model which is very applicable to organizations of today:

  • Pathological or power-oriented organization. As the model indicates these organizations are all about top-down, silo mentality, messengers shot, information withheld to keep an org or individual look better, new ideas are crushed.
  • Bureaucratic or process-oriented organizations. These are organizations that have teams who follow the processes, but each organization may have their own set of rules and practices based on which they deliver and expect everybody else who works with them to adopt just their way. Any novelty is seen as a potential problem that should be avoided
  • Generative or Performance-oriented organizations. This organizational model demonstrates highly collaborative environment with shared risks, novelty being embraced, and failure is seen as an opportunity to improve and pivot to avoid in the future

Turning Non-believers” to Forerunners 

These models are important to understand, and as we look at our organizations through the lens of these models, we may see evidence of these associated behaviors. 

So how culture impacts transformation and what are potential risks when dealing with organization who examined some behaviors and what we do about them?

What to do if we discover we are dealing with power-oriented or process-oriented organization and the  transformation efforts start suffering from “non-believers”. How to overcome this and how to turn these “antibodies” into forerunners? 

So let’s get into the details and in Part II we will discuss elements of a good transformation strategy, possible approaches, risks, and recommendations that should be considered to mitigate risks of failure and overcome challenges due to these existing cultural models.