Chapter 1. What Is the Modern IT Complexity Dilemma?

The complexity of modern IT systems supporting modern applications can impact your customers, your partners, your employees, and the quality and security of your application. And the simple act of maintaining, growing, and maturing IT systems inevitably makes them more complex.

The IT complexity dilemma refers to the challenges businesses face when trying to manage and optimize their IT operations. The increasing complexity of modern IT systems has made it difficult for businesses to keep up with technology changes and make necessary updates to their infrastructure, in turn making it difficult for them to realize their desired return on their technology investments. Business pressures have caused IT organizations to focus increasingly on creating new features and focus less on resolving ongoing problems and upgrading existing architectures. This has led to a buildup of technical debt, which can have consequences such as slowed business processes, increased IT costs, and even system failures. Addressing this complexity dilemma is essential, but it is not easy.

There are several measures that businesses can take to mitigate the effects of the IT complexity dilemma, including investing in automation technologies, establishing standard operating procedures, and hiring skilled IT professionals. By taking these steps, businesses can improve their ability to manage and optimize their IT operations, minimizing the negative impacts of complexity.

However, even with these measures in place, businesses will still face challenges in managing their IT operations due to the growing complexity of modern IT systems. By attempting to mitigate the effects of this complexity, businesses can improve their efficiency, security, and competitiveness in today’s IT environment.

As we will discuss later in this chapter, technical debt is at the core of the complexity dilemma: indeed, technical debt and complexity go hand in hand. And as you will see, dealing effectively with technical debt involves much more than just refactoring code.

Technical debt is a metric that describes everything that interferes with an application’s smooth operation and customer experience. In other words, it is everything that makes the application complex or fragile, thereby contributing to operational complexity, complicating customer experiences, or simply making the application more difficult to enhance, expand, and improve.

But before we can talk about ways to reduce complexity, it’s important to understand how IT organizations are structured in modern enterprises, and how the operations and development teams within the IT organization interact to create a working system.

The Structure of Modern IT Organizations

IT organizations vary considerably in size and shape. A modern IT organization uses DevOps methodologies. The organization is typically a relatively flat, matrix-type structure in which teams of developers and operators work together closely. To keep up with the fast pace of customer demand and technological change, both teams need to adapt quickly. The development team needs to be able to build new systems and applications and repair and upgrade existing systems quickly. The operations team must be able to not only deploy and manage those systems rapidly but also detect and resolve problems when they occur. A close working relationship between development and operations is critical to maintaining this speed.

However, natural separations start taking shape as applications grow in complexity and the organization grows in size. Traditional divisions between development and operations begin to formalize, and the space between the two groups expands.

In the past, a flat management structure has been able to assist the organization in keeping the communications channels flowing, encouraging dialog among the development, operations, security, and product leadership teams. But as the organization grows, keeping the management structure flat and responsive becomes harder and harder.

Management and organizational structures are required to keep the growing organization operational. Formalized processes help yield consistent results and plans. Yet, these same structures and processes create a natural blockage to communication flow. This blockage makes it harder for the organization to function. Teams split, and organizational distancing limits cooperation and communication. This limits growth.

Ironically, the biggest inhibitor to growth is, in fact, growth. The organizational structure gets more complex, and the application gets more complex.

Since an IT organization is only as good as the management that drives it, it is essential to have a strong and effective management team in place. This team is responsible for steering the organization in the right direction, setting goals and objectives, and ensuring that all aspects are running smoothly.

The management team must also adapt to changes quickly and respond to new market demands effectively. They must work across organizational boundaries, and operate in unison with all product, development, operational, and support teams.

How the IT organization is structured varies considerably based on the nature of the business. The type of company (software focused, SaaS focused, nonsoftware focused, etc.) is the biggest indicator of the structure of the IT organization.

The Role of Software Development in IT Organizations

Within an IT organization, the structure and responsibility of the development team is related to the nature of the business and the structure of the rest of the company. The development team may have a limited role in managing internal processes and systems, or it may be an integral part of the company’s core business model. This means there is no one-size-fits-all organizational structure that defines a modern IT organization.

But we can generalize. For this discussion, we’re going to define three types of businesses:

  1. Nonsoftware-focused IT organizations

  2. Non-Software-as-a-Service (SaaS) software-focused IT organizations

  3. SaaS-focused IT organizations

In the following sections, we will explore the characteristics of each type of company and the IT organization, structure that tends to occur in each.

In practice, you will likely find that your circumstances lead to an amalgam of two or three of these types.

Business type 1: The nonsoftware-focused IT organization

Type 1 is a business with a primary purpose other than producing, selling, or operating software. This includes nearly all nontechnology-focused companies, such as banks, restaurants, stores, taxi services, airlines, railroads, media companies, etc. The mission of a nonsoftware company is not technology focused. It may use software as a tool internally to manage sales, marketing, manufacturing, or other business processes, but software is secondary to its primary business.

As such, there are no large application development teams. There is an IT organization, and within that are relatively small (compared to the overall size of the company) development and operations teams, but only a small portion of the company’s resources are invested in IT systems and personnel.

Figure 1-1 illustrates this. The company leadership has bigger things to focus on, leaving IT leadership to manage these small development and operations teams.

A non software focused company
Figure 1-1. A nonsoftware-focused company

For these more traditional nonsoftware-based enterprise companies, the IT organization has a purely supportive role. It is primarily operations focused, though it may also have some development capabilities. Tooling and operational processes are the central areas of concern.

Business type 2: The non-SaaS software IT organization

The primary purpose of the second type of business is creating software that it sells to other people or companies. It typically does not operate the software for its customers; instead, the software (which does not require a significant backend SaaS-like application to function) is operated directly by the customer.

Examples of this type of software include popular workplace applications such as Microsoft Word and Adobe Illustrator, as well as games (such as Angry Birds), music applications, and ebook readers. It may also include tools like antivirus software, firewalls, and news aggregators.

A non-SaaS software organization has a software- or engineering-focused mission. These organizations have high-caliber application development teams, but typically do not have a strong operations team. Because the software they produce is operated by customers, not by the company itself, there is no need for a large operational focus.

A generic IT organization provides tools and processes that support the company as a whole. Part of its role is to provide support for the product development teams (as well as sales/marketing, etc.), but it does not directly contribute to product development or operations. Figure 1-2 shows this structure.

A non-SaaS software company
Figure 1-2. A non-SaaS software company

Non-SaaS software companies have a strong focus on application development teams, but these are not DevOps teams; they are independent software development teams that produce software that is sold and delivered to customers. The IT organization is small and supports the company as a whole, including the development and operation of tools for internal use; it is separate and isolated from the product development teams.

Business type 3: The SaaS-focused IT organization

The third type of business is a company whose primary purpose is to create a SaaS application or to operate customer software. This includes business-to-business (B2B) companies providing services such as inventory management, financial planning, communications, and sales infrastructure. Examples of SaaS products and companies include Intuit QuickBooks, Slack, Shopify, Mailchimp, and Salesforce.

There are also business-to-consumer (B2C) SaaS companies providing entertainment, retail shopping, and social media services. Examples of B2C SaaS companies include Amazon (retail), Netflix, Facebook, and Twitter.

A highly functional SaaS organization requires a high-caliber application development team and a high-caliber operations team. The two teams must cooperate to succeed. Figure 1-3 shows the typical organizational structure.

A SaaS focused organization
Figure 1-3. A SaaS-focused organization

The application development teams in a SaaS company are typically proportionately large groups that require substantial investments in engineering and product management. Each team owns a part of the overall SaaS application and builds, tests, deploys, operates, and maintains only the services it is responsible for. Operations teams provide a smooth operations infrastructure that supports the development teams. The enterprise’s focus is typically primarily on the software development teams. These companies may have separate IT organizations to support business processes, but the application development teams are not part of that organization.

In these high-tech, software-driven companies, the application development teams are a core component of the enterprise. Given its importance, this group reports high in the company’s organizational hierarchy.

Notice that some companies fit into multiple categories. For instance, Microsoft offers SaaS services (Office 365) and non-SaaS software (Microsoft Word and Halo). Amazon offers B2C services (Amazon retail) and B2B services (AWS), along with non-SaaS services (Kindle readers). Additionally, a company like Charles Schwab may offer investment software as a service, yet also focus on general financial services and investments. These enterprises may have different divisions that appear to be separate companies, each structured differently, or they may have a hybrid structure. Keep in mind that the categories discussed here are generalizations.

Development and Operations in the IT Organization

Within an IT organization, the development and operations teams are focused on driving the tooling and resources needed to operate the company, including building applications necessary for the company to run. The responsibilities of these teams and the processes they follow depend on where the company fits within the three types of organizations we just discussed, as do the types of talent they attract.

Development

There is a direct correlation between the amount of focus your company places on software development and the availability of high-quality technical talent and software leadership available to your organization. The best software developers, architects, and software leaders tend to gravitate toward the much more lucrative opportunities in SaaS application development and other software-centric companies.

This means that organizations in which software plays only a secondary role in the mission find it difficult to attract and retain software talent. Often this means the organization as a whole suffers. Yes, there are high-quality, talented developers in these organizations, but they are much harder to locate and hire. This tends to result in there being less innovation and fewer creative solutions to problems in these types of organizations. Rather than being state-of-the-art, the software applications created in such organizations tend to be fairly prosaic, supportive applications.

The caliber of your IT development team is critically important in determining the sophistication of the applications your organization can support, and your organization’s ability to respond to the inevitable increase in complexity that occurs over time.

The result is that organizations in which software is a secondary part of the business rather than the primary focus tend to be more sensitive to the IT complexity dilemma.

Operations

Operations teams, on the other hand, tend to attract high-quality talent based on how central the organization’s operational aspects are to the business focus. This means SaaS companies, which are highly dependent on high-quality operations teams, tend to attract higher-quality operational talent than organizations in which operations are secondary to the goals of the business.

Less attractive o operational talent are nonsoftware companies that require a significant internal software infrastructure to keep the organization running smoothly. This includes organizations such as banks and other financial firms where the software infrastructure is critically important and must stay operational.

Even less attractive to operational talent are companies that produce “boxed” software that is operated on customer computers and systems, rather than in internal operational environments.

This makes sense. SaaS companies rely heavily on highly performant operational environments and invest heavily in these areas. This investment, and the opportunities it produces, attracts top operational engineering talent to these organizations. Organizations that are less operations focused need less investment in this area, and hence don’t attract as much interest.

The traditional operational landscape is changing, however. Many traditional operational capabilities are now handled by outsourced infrastructure, such as SaaS applications and cloud service providers. Additionally, newer tooling and capabilities automate a large portion of basic operational requirements.

Infrastructure as Code (IaC) and Operations as Code (OaC) tools help with this effort, and strive to make operational setup and basic operational responsibilities automated and repeatable. This improves overall operational reliability. Additionally, since scripts and script-like descriptions drive IaC and OaC, these capabilities encourage code as documentation and knowledge sharing of the operational environments involved. Finally, since IaC and OaC generalize the operational aspects of an application into code-like capabilities, they allow the use of standardized and well-understood development processes, such as revision management. Revision management allows tracking and correlating failures to changes, reducing mistakes, increasing security and traceability, and improving overall accountability and performance.

The role of DevOps in the modernization of the enterprise

DevOps is a term in wide use in modern organizations. It describes, in part, the collaboration between development and operations teams within an organization. The intent of DevOps is to break down the traditional barriers that exist between these two groups and encourage collaboration and cooperation, allowing them to work together more effectively and efficiently. This leads to faster problem solving, increased efficiency and responsiveness, and overall higher application quality and availability. DevOps is becoming the norm in modern IT organizations.

In a DevOps organization, individual teams each own some portion of the application. In modern applications, these components are typically services. The individual teams are responsible for the development, testing, deployment, operation, and ongoing support of the services assigned to their care.

Figure 1-4 shows the organizational structure at a software company that uses DevOps principles. As such, it describes the same sort of SaaS company described back in Figure 1-3. The primary difference is that both the development aspects and most of the operational aspects of ownership are assigned to the same team under the engineering and product leadership organization. There is still a very thin operations support organization, but the job of this organization is not to manage the operations of the application; rather, its role is to provide tools and assistance to the product teams that own and operate the individual services.

Merging the responsibility for the development and operations of individual services into a single organization in this way lowers the communication barriers that typically existed in the past between the development and operations teams, improving the organization’s overall performance and reliability.

A DevOps focused software company
Figure 1-4. A DevOps-focused software company

Now that we understand more about how modern IT organizations are structured, we can talk about the problem complexity poses in these organizations and how complexity impacts the long-term viability and success of the organization.

The Advent of Complexity

It’s hard to pinpoint exactly when complexity begins to creep in within a young IT organization, but it’s usually tied to some decision that is meant to reduce time to market or cost to market, at the expense of some further work or cost later on. This kick starts the slow and inexorable growth in complexity. For larger, more established enterprises, introducing complexity is typically tied to incorporating technology into the established processes. In either case, the increase in complexity is linked to an increase in technical debt.

Technical Debt: The Key to Complexity

In software development, technical debt is the cost of additional rework caused by choosing an easy, limited, or suboptimal solution now, rather than using a better approach that would take longer or cost more money to implement up front.

Ward Cunningham originally coined the term. According to Ward, “technical debt includes those internal things that you choose not to do now, but which impede future development if left undone.”

The code development aspect of technical debt only captures a small part of it. Technical debt applies to all aspects of modern application design, development, and long-term operation.

For SaaS and other cloud-centric applications, the long-term operational impact is a significant driver of technical debt. The longer an application operates, the greater the technical debt, and the greater an application’s technical debt, the greater the negative impact on the long-term operation of the service.

When a development team at a SaaS company decides to add a new capability to an application but takes shortcuts in the architecture to launch the capability more quickly, it is adding to the technical debt of the application and the company as a whole. Unless a concerted effort is made to resolve the technical debt by completing the proper design and architecture, it will accumulate until it hinders development and operational processes.

Technical debt is similar to financial debt. In moderation, it can be handled and the cost can be dealt with. But if technical debt is not repaid, it can accrue “interest” in the form of additional technical debt—and just as with financial debt, if you accrue too much interest, you can no longer afford to repay the debt. Too much technical debt makes the changes necessary to resolve (or pay back) the technical debt harder and more expensive to implement.

Let your financial debt grow too large, and you will go broke. Let your technical debt grow too large, and your application will become unsupportable, unsustainable, and unmaintainable.

How does technical debt grow?

Technical debt can grow naturally and quietly during the normal product development process. Every project that contributes to a product also contributes to its technical debt—even adding a simple feature enhancement. This is illustrated at the top of Figure 1-5: during normal product development, work and outputs are added to the product, and some amount of debt is added to the stack of technical debt.

Sometimes, a project is done in a “quick and dirty” manner, such as when a new feature is added without proper design in order to get it out the door quickly. In these cases, the project adds more debt. Sometimes, the project can even add more technical debt to your application than the amount of real value it provides. This is the case with the example project shown in the middle of Figure 1-5.

The flow of technical debt during product development
Figure 1-5. The flow of technical debt during product development

To keep technical debt from growing without bounds, some effort needs to be added to each project to reduce the technical debt. Keeping your technical debt at a sustainable level requires constant investment in reducing the technical debt over time.

This constant flow of increasing and decreasing technical debt is one of the reasons why it can sneak up on a product. If more debt is regularly added than is reduced from the backlog, the debt will grow, yet the growth may not be noticeable. It’s not until the debt has grown to a point where it starts having a negative impact on your product that you will notice how much has accumulated. At this point, it may be too large to deal with effectively and easily.

Each project can either increase or decrease the technical debt within a system. In a full, high-quality project, the planned work often includes doing all the work necessary, along with working on reducing some amount of related technical debt. When the work is completed, the application’s technical debt is lower than before. This is illustrated in Figure 1-6: the work completed for the project is larger than the project itself, and the extra effort is put toward reducing the size of the technical debt. This is a project that’s dealing with technical debt in a healthy way.

A full complete project has to plan to reduce technical debt
Figure 1-6. A full/complete project has to plan to reduce technical debt

Unfortunately, many projects are much more quick and dirty. They are designed to only complete as much work as is absolutely necessary, leaving the rest to be completed later. In fact, a common project management philosophy involves building a minimum viable product, or MVP—an approach that essentially dictates that you do as little product work as possible to get a functional product out the door.

The result is work that is not completed. More often than not, this increases the overall technical debt of the application. This phenomenon is illustrated in Figure 1-7. Here, the work completed is only part of that required by the project, and it is accompanied by an equal amount of work not done. This additional important work which was not completed ends up increasing the overall technical debt in the project.

A quick and dirty project often increases technical debt
Figure 1-7. A quick and dirty project often increases technical debt

Depending on the types of projects undertaken, the amount of technical debt associated with a product will vary over time, sometimes decreasing, sometimes increasing. The more full, high-quality projects that are completed, the lower the overall technical debt will be. The more quick and dirty projects that are used to implement functionality, the higher the resulting technical debt will be.

The negative impact of technical debt

Sometimes, deciding to build a simpler solution now and delaying a longer-term implementation (as depicted in Figure 1-7) is advantageous. It allows you to get a solution out to customers earlier, so the company can start monetizing the change and receive customer input on what they like and do not like, which can be fed into a later, more ambitious solution. This is analogous to the idea that borrowing money is advantageous if you use the money to contribute to a greater cause, such as purchasing a home; paying some interest on borrowed money is fine, as long as the money you borrowed is put to good use. Similarly, managing some technical debt is useful and appropriate as long as the project that generates that debt adds value to your product and your company. Technical debt, like financial debt, becomes a problem when left unresolved: it increases in cost and gets harder to deal with over time.

Continuing with the financial metaphor, technical debt becomes a problem when it builds up to the point where the cost of managing and servicing the debt becomes too great and impedes your ability to invest in future projects. When too many quick and dirty projects rule your project plan, and projects designed to reduce debt are not staffed in your company, your technical debt starts to become unmanageable. If this goes on for too long, technical debt overwhelms the project, as shown in Figure 1-8.

Technical debt overwhelming the project
Figure 1-8. Technical debt overwhelming the project

In this scenario, servicing the debt becomes the dominant role of your team, and you spend little or no time contributing to improving the product. Your debt is too large to be effectively managed, and the product suffers.

The Organizational Pain of Complexity

Technical debt and complexity go hand in hand. So do complexity and organizational pain. While technical debt is not a complete picture of application complexity, the growth of technical debt is tied very closely to the growth of application complexity.

As your application gets more and more complex, many things happen to it:

It becomes brittle.

A complex application is subject to minor issues quickly escalating into major problems. While most applications operate in a well of a positive feedback cycle, a complex application’s operational well turns into a negative feedback cycle, where it’s difficult to deal with even small problems. As Figure 1-9 shows, a stable application tends to stay in the valley between the two hills representing application failure, building success upon success, while a brittle application is ready to roll off the top of the hill into failure at the smallest of nudges.

Application brittleness leads to instability and failure
Figure 1-9. Application brittleness leads to instability and failure
Fewer engineers have complete knowledge of the application.

Only the most senior engineers, those who have been working on the application the longest, have a broad understanding of how the complete application works. As time goes on, their knowledge becomes diluted: it may be less accurate, higher level, or more specialized. As an application grows in complexity, maintaining detailed knowledge of the application as a whole is no longer possible for single individuals.

The knowledge that engineers do have about the application becomes obsolete more quickly.

Complex applications change frequently, and engineers’ knowledge about how the application works quickly becomes outdated.

It gets harder to bring new engineers up to speed.

Complex applications have long learning paths. This is not only because there is more to learn, but also because the knowledge new engineers need to become productive is more distributed, and often anecdotal and out of date.

The net result of these issues is higher organizational pain. This pain translates into poor-quality changes, less-motivated staff, and, ultimately, staff turnover. Higher turnover means an additional need to recruit and train new engineers, which gets harder as the pain increases. Brittleness leads to lower availability, and customer-visible issues and failures.

Messy desk syndrome

Imagine you have a perfectly clean desk. Now, take a sheet of paper and set it in the corner. Is your desk messy? No, not yet. Now take 50 other related sheets of paper and sit them on top of the one sheet in the corner. Is your desk messy? No, not yet. Now imagine you have more papers, but these don’t go with the stack in the corner; they are for different projects. So you put them in different locations on the desk that seem to make sense, just single sheets in single locations. Then, over time, you put more papers and documents and books and folders and pictures, one at a time, on the desk. If you don’t know where something goes, you just put it in a new location. You’ll figure it out later. Now your desk is messy. In fact, it’s extremely messy.

This happened because you didn’t have a plan from the beginning, and decided to just “wing it” along the way. You made your desk messy simply by using and working on it. The moral of the story? Unless you have a solid plan for organizing the papers on your desk established at the beginning, and you stick with it, sooner or later your desk will become messy, one sheet at a time.

The same thing happens with organizational pain: it grows quickly when you don’t have an architectural plan from the beginning and you take things as they come. You “wing it,” metaphorically speaking. The result is that you add to your technical debt, and hence your organizational pain, simply by working on and building the application.

Every action you take contributes to that organizational pain, little by little. Your technical debt grows a bit at a time until it becomes overwhelming.

Let’s change our login process to allow saving login credentials in the user’s browser.

Let’s add this new feature to that menu.

Users would prefer that this feature works in three steps rather than the current four steps. Let’s combine two of the steps.

We need to remove the per-session limit on this resource.

We don’t have time to build this full feature now, but we can build this smaller feature, which will make many customers happier. We can do the rest later.

Let’s release this feature this way first, and then we can collect input from customers and modify it to make it more user friendly as we get more input.

Any one of these statements could correspond to a simple set of changes that makes perfect sense at the time. It might not have any obvious impact on overall technical debt at all.

But the little changes…and the little debt…and the little impact…they add up, like the little pieces of paper and other items on your desk. As with the desk that starts clean and ends up messy, each action you take may, individually, seem perfectly benign. Those actions may look perfectly acceptable. But over time, as a whole, they become overwhelming.

Complexity in an IT Organization

Complexity grows in IT organizations as well. First, it creeps into your application. As your application grows more complex, so does the infrastructure needed to run the application. So your IT operations become more complex. And your engineering organization becomes more complex. Thus, managing your IT gets more complex.

What started as a simple change in the needs of your application balloons into the growth of a complex IT organization.

As complexity increases, the ability of the organization to change direction quickly and respond to new demands diminishes. A once-agile organization becomes less agile.

Over time, an agile organization thus evolves into either a rigid organization—one that fears and rejects change, in an effort to keep the system stable and supported—or a fragile organization, where every minor change risks breaking a larger system or process, limiting the ability to adjust and grow. This is illustrated in Figure 1-10.

An agile organization may fail over time by becoming either rigid or fragile
Figure 1-10. An agile organization may fail over time by becoming either rigid or fragile

Almost independent of the specific company, complexity and technical debt correspond to a lowered ability to respond to market and competitive demands.

Why is this true? There are typically two reasons why application complexity leads a company to lower agility.

First, when an organization has overly complex applications, changes to those applications are increasingly likely to cause problems. Small changes and small adjustments cause large failures and outages to occur. This makes the organization hesitate. Changes go through additional review cycles, changes get consolidated, changes that don’t show clear value are discarded as too dangerous. Rather than having a “Yes, we can try that!” attitude, the organization adopts a much more conservative view. “No, not unless it’s absolutely necessary” becomes the more likely position.

This reaction is intended to keep the application from failing. It’s the company’s response to keeping the application robust—the fewer changes you make, the safer the application is.

As a result, the application development process slows down considerably. This makes the application—and the company—significantly less agile than its competitors.

Second, if the organization doesn’t naturally slow down and continues to make changes, those changes become increasingly risky. Because of the application complexity, the organization may make changes without fully understanding what’s involved in them. This leads to dangerous changes, and these changes break things. The organization doesn’t slow down and become conservative, but instead moves forward recklessly. The result? Application availability suffers and customer issues increase. Technical debt also increases, feeding into the complexity and creating a vicious circle. Complexity leads to brittleness which leads to failures which lead to technical debt which leads to complexity.

IT Death

So technical debt leads to complexity, and complexity leads to organizational pain. This all ultimately leads to IT death.

But what does IT death look like?

IT death is what happens to an organization when the pain of complexity sends the organization into a state of ineffectualness. It cannot improve, it cannot grow, and hence it stagnates. Since its competitors will continue to grow, an organization’s stagnation ultimately leads to its death.

There are many examples of where this has happened.

Xerox, long the leader in producing photocopiers for large organizations, suffered from an inability to pivot from copiers to the personal computer (PC). Despite the fact that the modern PC user interface was originally conceived at Xerox’s Palo Alto Research Center (PARC), the company was unable to compete with Microsoft and Apple in developing a PC operating system. Arguably, without Xerox PARC, there would be no Apple Macintosh computer, yet Xerox’s inability to pivot kept it from capitalizing on this innovation.

And it’s not just technology companies that suffer this fate. Firestone, the tire company, was facing the difficult task of modernizing its tire creation process in light of radial tire technology created by one of its competitors, Michelin. Firestone bogged down and could not update its processes to handle the new technology. Try as it might, it kept making tires that customers did not want, and its business suffered. Ultimately, Firestone was absorbed by Bridgestone. This is an example of what Harvard Business Review calls active inertia.

Many other highly innovative companies have fallen into the trap of IT death by losing their ability to innovate. Hewlett-Packard, one of the founding companies of Silicon Valley—the heart of technical innovation across the world—experienced this problem, falling into a slow death spiral.

Polaroid suffered a similar fate when it failed to innovate new camera technology, as did Blockbuster Video, which failed to recognize the importance of video streaming technology, and the bookstore Borders, which was overwhelmed by the innovation of upstart Amazon.com.

Technical debt and complexity slow down innovation. They keep companies from staying competitive, which ultimately results in their eventual downfall, and potentially even death.

What Makes a Mature IT Organization

A mature IT organization is agile. It can make decisions quickly and easily, stick by those decisions until organizational needs dictate a change, and implement them quickly and effectively.

Why is it important for a mature IT organization to be agile? When agility is hampered, companies fall into two traps that can bring them down:

  • Lack of competitive offerings

  • Unsafe security vulnerabilities

Let’s look at each of these more closely.

Competitive offerings

Maintaining competitiveness is critical to a modern application. This is because the pace of change is accelerating. Technology is advancing rapidly, and new competitors are constantly emerging. Your competitors are moving faster than ever before, and if you can’t keep pace with them you will quickly fall behind and soon become irrelevant. Keeping pace means moving faster and faster, which means being able to adapt and change as the situation demands.

Customers are constantly pushing for more features, lower prices, and better quality. You need to be able to respond to these demands to remain competitive.

New ideas are the lifeblood of a competitive company. When a new idea comes up, you need to be able to quickly adjust and adapt to enable the new idea. This requires agility.

Customers are looking for innovation when it comes to making a buying decision. Companies that appear innovative are more likely to get the customer’s business. This means you need to respond to customer requests and customer needs quickly. Failing to do this will not only cause you to lose customers, but will also cause you to lose your credibility in the industry.

Agility is essential to maintaining a thriving business.

Security vulnerabilities

Your competitors aren’t the only ones innovating. Bad actors are innovative as well.

Never before has the IT infrastructure of our valuable applications been at such great risk to security vulnerabilities and the actions of bad actors as it is today. Bad actors are not only growing in numbers; they are growing in sophistication as well. Bad actors are just as creative at coming up with new ways to attack your application as your competitors are at coming up with new ways to attack your business success.

Bad actors are constantly innovating, improving their attack vectors, and exposing the vulnerabilities of our applications.

As a company and the owner of your application, you must constantly innovate as well, to keep your applications safe and secure. You have to constantly strive to keep one step ahead of the bad actors, and this too requires agility.

Summary

Hence, the IT complexity dilemma. IT agility is critical to building a successful company, yet that very success itself adds technical debt and complexity, and this complexity leads to either rigidity or fragility. An organization that falls prey to either of these will be outpaced by its competitors in terms of innovation, and ultimately it will die. To be successful in the long term, a company must manage the IT complexity dilemma.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.223.195.97