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

Agile versus Waterfall, Business Analysis and Project Management …?

Our clients regularly ask us about Agile versus Waterfall, Agile versus Business Analysis, or Agile versus Project Management.  Our answers come from our perspective that system development and the management of it have a different life cycle, each with several variations, that are combined into a specific approach, e.g., for a particular project.

Agile versus Waterfall

Our view is that whenever systems are developed, or parts of systems, the System Development Life Cycle (SDLC) is relevant.  Basically, the SDLC lays out the various activities that result in a system, e.g., Analysis, Design, Code, Test.  Agile delivers (small) pieces of a system frequently (say, once every two weeks), and thus traverses various SDLC activities repeatedly, i.e., in each Sprint.  Waterfall delivers the system in one go (“big bang”), and traverses SDLC activities one time through, one after the other. 

Our version of the SDLC is depicted below:

In our perspective, we don’t see Agile versus Waterfall.  Agile and Waterfall are similar in that they traverse the same SDLC activities.  In our view, Agile and Waterfall differ in their frequency of delivery, and thus how often they traverse the SDLC.  In certain situations, Waterfall may be more relevant; in others, Agile.

Agile versus Business Analysis

In Agile, say Scrum, the attention is focused on the Sprint.  The functionality that is to be delivered is typically brought into the Sprint as stories by way of Sprint Planning or Backlog Grooming.  Sprint Planning and Backlog Grooming start with stories that are (almost) ready to be worked on by the development team.  Stories are, in effect, specifications for the functionality that is to be developed.  The specifications should be based on Requirements.  Requirements and specifications should be developed using Business Analysis.

In our perspective, we don’t see Agile versus Business Analysis.  Agile is one approach to system development, which requires Business Analysis to take into account Requirements and to come up with good specifications for the functionality to be developed.  However, Business Analysis takes place before the Sprint.  Consequently, Business Analysis is generally not part of the Sprint, and Business Analysts are generally not part of the Sprint team.  But, they are needed.  So, in our perspective, it is Agile and Business Analysis.

Agile versus Project Management

With Agile, it is often not clear at the outset which exact functionalities will be delivered eventually, because requirements may shift over time, as users get more experience with the system.  Therefore, it is not clear how long such functionalities would take to deliver.  Consequently, it is argued that Project Management, with its focus on Scope, Schedule and Budget, is not relevant for Agile, i.e., Agile versus Project Management.

But, system development, when done with Agile or otherwise, still needs to be managed.  Decisions about what kinds of functionalities should be delivered, and when, must be made, along with how many people to have on the team(s), how much money to allocate, and what risks should (not) be taken.  Our view is depicted below:

In Agile environments, such decisions are made by the development team and the Product Manager (in Sprint Planning and Backlog Grooming). Scrum is often the approach that is used to manage each Sprint.  Sprint Planning and Backlog Grooming generally implements decisions, types of systems needed or business strategy, that are made by executives above the development team and Product Manager. So, in our perspective, it is Agile and Project Management.