{"id":21236,"date":"2018-10-15T10:25:09","date_gmt":"2018-10-15T15:25:09","guid":{"rendered":"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/"},"modified":"2018-10-15T10:25:09","modified_gmt":"2018-10-15T15:25:09","slug":"modular-architectures-make-you-agile-in-the-long-run","status":"publish","type":"post","link":"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/","title":{"rendered":"Project to Product: Modular Architectures Make You Agile in the Long Run"},"content":{"rendered":"<figure>\n<div class=\"feature-image\"><img decoding=\"async\" class=\"aligncenter size-full\" src=\"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/2018\/10\/mik-kersten-project-to-product-blog-series-850x357.png\" alt=\"Project to Product: Modular Architectures Make You Agile in the Long Run\"><\/div>\n<\/figure>\n<p><i><span style=\"font-weight: 400\">Gene Kim, one of the authors of <a href=\"https:\/\/www.amazon.com\/DevOps-Handbook-World-Class-Reliability-Organizations-ebook\/dp\/B01M9ASFQ3\">The DevOps Handbook<\/a>, once told me that organizations that require a developer to take 10 people out to lunch to get an API change done appear to have lower IT performance. We hypothesized that an overly high &#x201C;lunch factor&#x201D; would impede DevOps transformations, and added some questions on this to the 2017 State of DevOps Report to learn more about the role of architecture in DevOps. <\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400\">The conclusion in the report reads, &#x201C;Loosely coupled architectures and teams are the strongest predictor of continuous delivery.&#x201D; My colleagues Alan MacCormack, Carliss Baldwin, and Dan Sturtevant at the Harvard Business School have devised a way to measure and visualize architecture quality and its &#x201C;cost of ownership&#x201D; consequences that goes far beyond the &#x201C;lunch factor.&#x201C;<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400\">My upcoming book, <\/span><\/i><a href=\"http:\/\/projecttoproduct.org\/\"><i><span style=\"font-weight: 400\">Project to Product<\/span><\/i><\/a><i><span style=\"font-weight: 400\">, builds on these findings, examining the intersection between software architecture, organizational structure and business strategy. &#xA0;A key foundation for the <a href=\"https:\/\/flowframework.org\/\">Flow Framework&#x2122;<\/a> featured in the book is the state of the art in software architecture and how it relates to business value delivery. <\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400\">In the first guest post in this series, Dan Sturtevant &#x2013; founder and CEO of&#xA0;<em><a href=\"http:\/\/www.silverthreadinc.com\/\">Silverthread<\/a>, a company that&#xA0;<\/em>helps software leaders to improve cost of ownership, reduce cyber-risk, and gain control of complex software portfolios &#x2013; summarizes some of the latest research and learnings on how architecture and modularity interact with value streams. &#x2014;<\/span><\/i> <i><span style=\"font-weight: 400\"><strong>Mik Kersten, co-founder and CEO, Tasktop<\/strong><\/span><\/i><\/p>\n<p><span style=\"font-weight: 400\">The <\/span><a href=\"https:\/\/puppet.com\/resources\/whitepaper\/2017-state-of-devops-report\"><span style=\"font-weight: 400\">2017 State of DevOps Report <\/span><\/a><span style=\"font-weight: 400\">noted that loosely coupled architectures spur team performance by making it &#x201C;easy to modify or replace any individual component or service without making corresponding changes to [those] that depend on it.&#x201D;<sup>1&#xA0;<\/sup><\/span><span style=\"font-weight: 400\">Put another way, systems with degraded modularity are incredibly difficult to change because pulling one thread always seems to lead to another headache. Engineers give up after months of fruitless investigation and failed changes. When architectural complexity proliferates, systems are no longer understandable. Teams can&#x2019;t communicate about them, learning curves grow, morale plummets, and staff turnover increases.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Over the past 15 years, our research team, led by Carliss Baldwin and Alan MacCormack at the Harvard Business School, have devised methods for measuring modularity and its erosion. We scanned thousands of code bases and found architectural flaws in many. We investigated how architecture degradation impacts business outcomes. This included studies of defects and safety,<sup>2&#xA0;<\/sup><\/span><span style=\"font-weight: 400\">developer productivity and development staff turnover,<\/span><span style=\"font-weight: 400\"><sup>3&#xA0;<\/sup>vulnerability,<sup>4<\/sup><\/span><span style=\"font-weight: 400\">&#xA0;the ability to drive new revenue,<\/span><span style=\"font-weight: 400\"><sup>5<\/sup> and de facto vendor lock-in.<\/span><span style=\"font-weight: 400\"><sup>6&#xA0;<\/sup><\/span><span style=\"font-weight: 400\">Our team also recently founded Silverthread Inc. Over the past three years, Silverthread has helped more than 75 commercial and US federal government customers gain visibility, quantify the cost of ownership and risk, and regain control of their development projects.<\/span><\/p>\n<p><span style=\"font-weight: 400\">These experiences have convinced us that that long-term agility is possible only if you&#x2019;re employing an agile product architecture. Not everyone shares this view. In the past decade, agile practitioners have focused intensely on improving software development processes and not so much on technical health. We&#x2019;ve worked with several large organizations in which the application of lean principles produced underwhelming results. This is because velocity measurement, planning poker, attacking defect backlogs, Kanban cards, pair programming, or sprint-based planning does little to attack the root cause of problems that are inherently structural. If humans can&#x2019;t easily understand or modify their code, teams might be using the best agile practices, but their ability to respond to market demands will be far from agile. Technical debt will weigh down the value stream&#x2019;s performance.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Here, I introduce sophisticated ways to visualize and quantify software modularity and its erosion. These techniques can help you identify architectural-complexity hotspots. I highlight research that has measured economic impact and helped organizations improve architectural outcomes. And I discuss how to use quantitative software design analysis to help teams decide if and when to refactor or rewrite software, using objective financial models of the likely return on investment (ROI).<\/span><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/#Principles_of_Architectural_Health\" >Principles of Architectural Health<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/#Detecting_Architectural-Health_Problems\" >Detecting Architectural-Health Problems<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/#The_Cost_of_Complexity\" >The Cost of Complexity<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/#Architectural_Agility_for_DevOps\" >Architectural Agility for DevOps<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/#Acknowledgments\" >Acknowledgments<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/#Sign_up_to_the_Product_To_Project_newsletter\" >Sign up to the Product To Project newsletter<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Principles_of_Architectural_Health\"><\/span><b>Principles of Architectural Health<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400\">Today&#x2019;s enterprise software systems are so large that no one person can understand how everything works. There are no laws of physics to constrain solutions. Software systems are complex networks of unbounded abstractions with huge numbers of interconnections.<\/span><\/p>\n<p><span style=\"font-weight: 400\">So, designers use well-accepted architectural principles to gain control of this complexity. These principles allow decomposition of a complex system into more understandable chunks so that teams of cognitively bounded humans can work on different parts as independently as is practical. They also ensure that changes don&#x2019;t propagate in unintended ways, creating defects and rework and slowing down future adaptation.<\/span><\/p>\n<p><span style=\"font-weight: 400\">We&#x2019;ve learned to ask three key questions when assessing architectural health. Is the system modular or loosely coupled in terms of the connections between components? Are the components organized hierarchically&#x2014;with a clear sense of those at the top, middle, and bottom? Are the components well designed and not unnecessarily complex?<\/span><\/p>\n<p><span style=\"font-weight: 400\">Imagine a system so complex that a human would need an IQ of 400 to understand it completely. To cope with this complexity, we adopt a <\/span><i><span style=\"font-weight: 400\">healthy architecture <\/span><\/i><span style=\"font-weight: 400\">(see Figure 1a), which is structured into modules, each managed by a small team of people with IQs of 100. Each module has a simple API that hides its internal complexity, letting other teams use a simplified mental model. The code base is laid out hierarchically so that inter-team relationships are clear and evolution is manageable. <\/span><\/p>\n<p><span style=\"font-weight: 400\">In the <\/span><i><span style=\"font-weight: 400\">unhealthy architecture<\/span><\/i><span style=\"font-weight: 400\"> in Figure 1b, one module has grown too big, requiring an IQ of 200 to understand what&#x2019;s going on and reliably anticipate side-effects of changes. In addition, APIs have been circumvented, exposing external teams to this growing internal complexity. Finally, cyclicality has been introduced, destroying the orderly hierarchy and creating complex communication and coordination requirements.<\/span><\/p>\n<figure id=\"attachment_9814\" aria-describedby=\"caption-attachment-9814\" style=\"width: 862px\" class=\"wp-caption alignnone\"><img class=\"lazyload\" alt height=\"485\" data-src=\"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/2018\/10\/modular-blog_figure-1.png\"><figcaption id=\"caption-attachment-9814\" class=\"wp-caption-text\">FIGURE 1. Architectural health. (a) This healthy architecture is structured into modules, each of which is manageable by a small team of people with IQs of 100. (b) In this unhealthy architecture, it&#x2019;s hard to understand what&#x2019;s going on and reliably anticipate side effects of changes.<\/figcaption><\/figure>\n<p><span style=\"font-weight: 400\">In software systems, entropy naturally turns healthy designs into unhealthy designs, unless proactive measures are in place to stop this evolution. Even the most well-designed systems erode over time. This slowly and imperceptibly increases the cognitive demands on developers, requiring everyone to increasingly rely on incomplete mental models. These breakdowns increase the potential for changes to propagate across the system, compounding errors, generating unpredictable behaviors, and creating tension across the organization. Because it&#x2019;s unrealistic to staff teams with people with IQs of 400 to anticipate such issues, the problems perpetuate, and the architecture continues degrading.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Figure 1a is similar to the whiteboard drawings engineers use every day. Unfortunately, over 80 percent of the code bases we scan look more like Figure 1b. Idealized pictures reflect flawed mental models. Developers don&#x2019;t see the hidden structure responsible for unanticipated side effects, frozen code, dead-locked organizations, and premature obsolescence.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Detecting_Architectural-Health_Problems\"><\/span><b>Detecting Architectural-Health Problems<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400\">Unmapped, unpredictable linkages between software components are the root cause of macro-level complexity. To attack this complexity, we must understand these hidden relationships. At a structural level, code is made up of entities and directional relationships between them&#x2014;&#x201C;B uses A.&#x201D; Entities include functions, classes, datatypes, source files, and so on. Relationships arise through calls, inheritance, instantiation, and other programmatic techniques. If B uses A, then B depends on A to get its job done. If A doesn&#x2019;t perform as expected, then B&#x2019;s functionality might suffer. In turn, entities that depend on B might also suffer. In essence, linkages between entities increase the potential for changes to propagate through a system, creating unintended behaviors.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Modern code bases contain millions of entities and billions of paths between them. The most problematic of these paths are cyclical. The components along such paths both depend on, and are depended on by, many other components. As a code base grows, these cyclical groups&#x2014;which we call <\/span><i><span style=\"font-weight: 400\">cores<\/span><\/i><span style=\"font-weight: 400\">&#x2014;can proliferate as modularity and hierarchy erode, causing hundreds or thousands of source files to become mutually interdependent. In these cores, changes have strong, reinforcing ripple effects. A single change to a file can impact thousands of others, in distant parts of the system. Critically, this complexity can&#x2019;t be detected through inspection or code reviews. It&#x2019;s made visible only by tracing relationships between files across the system and its associated organizational groups.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Baldwin, MacCormack, and John Rusnak pioneered a visualization and analysis method that reveals a code base&#x2019;s hidden structure.<sup>7<\/sup><\/span><span style=\"font-weight: 400\"> This method makes it clear which components are upstream in the system (depended on by others), which components are downstream (dependent on others), the system cores&#x2019; location and size, and the degree to which the system as a whole is loosely coupled, versus being integral or monolithic. The method leverages a network-analysis technique called <\/span><i><span style=\"font-weight: 400\">Design Structure Matrices<\/span><\/i><span style=\"font-weight: 400\"> (DSMs). DSMs capture directed relationships between system components. They provide both visual information about a system and quantitative metrics that capture its structure.<\/span><\/p>\n<figure id=\"attachment_9815\" aria-describedby=\"caption-attachment-9815\" style=\"width: 914px\" class=\"wp-caption alignnone\"><img class=\"lazyload\" alt height=\"489\" data-src=\"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/2018\/10\/modular-blog_figure-2.png\"><figcaption id=\"caption-attachment-9815\" class=\"wp-caption-text\">FIGURE 2. Design Structure Matrices for a commercial code base (a) before refactoring and (b) after refactoring. The dots above the diagonal indicate cyclical dependencies; the red square indicates the significant cores.<\/figcaption><\/figure>\n<p><span style=\"font-weight: 400\">Figure 2 shows DSMs for two releases of an Olympus software product&#x2014;before and after highly successful refactoring effort. Each DSM displays all the files in this system&#x2014;more than 4,500 of them&#x2014;in a square matrix. The dots represent a direct dependency between two files (for example, if file A uses file B, a dot appears in row A and column B). We sort files using algorithms that take into account their level of coupling and position in the system hierarchy. This results in a view in which as many dots as possible are below the diagonal. The dots above the diagonal indicate cyclical dependencies. Files that are part of the same cyclic group can be clustered together to show the system cores. In Figure 2, the red squares indicate the large cores.<\/span><\/p>\n<p><span style=\"font-weight: 400\">In Figure 2a, the core is more than 800 files, or 15 percent of the system. Figure 2b shows that Olympus&#x2019;s successful refactoring effort split this core into two smaller ones with 250 and 150 files. In essence, our methods let us demonstrate that this refactoring significantly reduced cognitive complexity and the potential for changes to propagate. Our methods also let organizations make financial projections of the value released in such efforts; such projections are critical for projecting the ROI of refactoring projects.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"The_Cost_of_Complexity\"><\/span><b>The Cost of Complexity<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400\">Architecture erosion has serious cost-of-ownership and risk consequences. Consider IronBridge,<\/span><span style=\"font-weight: 400\">3<\/span><span style=\"font-weight: 400\"> a successful firm that developed and maintained a large product platform with 20,000 files. In this organization, one team faced significant performance challenges. Compared to other teams, it was more likely to miss schedules and ship buggy code. It had also experienced multiple unsuccessful modernization efforts. This team was responsible for sub-systems containing approximately 2,600 files.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Our analysis found that 2,000 of those files were part of a large core. Historical scans revealed that this issue originated more than a decade prior and had grown over time. More than 100 developers were contributing new features and bug fixes to this core, creating a large extended team with combinatorially difficult communication requirements. Interviews revealed that even the most experienced developers had mental models that differed significantly from the actual relationships in the code base and from the mental models held by others.<\/span><\/p>\n<p><span style=\"font-weight: 400\">To study this complexity&#x2019;s cost, we mined information from the firm&#x2019;s management systems. After controlling for traditional code-quality metrics, we found that the core files had substantial performance challenges regarding quality, productivity, and cost:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The files had three times as many defects.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Developers experienced a 60 percent decline in productivity and spent 70 percent of their time fixing defects (versus 20 percent in the periphery).<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">More than 80 percent of the commits failed integration tests.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Not surprisingly, this complexity and the performance challenges it generated ultimately had a very human cost. Turnover among the developers who worked mostly in the core was 10 times greater than that for developers who worked elsewhere.The combination of decreased productivity and increased effort on non-value-added activities creates a recipe for a severe competitive disadvantage. Confronted with competitors that possess healthy architectures and thus are more agile, firms that resist tackling complexity are likely to sow the seeds of their own destruction.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Architectural_Agility_for_DevOps\"><\/span><b>Architectural Agility for DevOps<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400\">Agile processes have deservedly received much attention because they&#x2019;re a better way to run development. However, 15 years of research and commercial projects have taught us that agile processes aren&#x2019;t always enough to make a project agile. The analysis of thousands of commercial, government, and open-source systems has led us to the following conclusions.<\/span><\/p>\n<p><span style=\"font-weight: 400\">First, maintaining a healthy organization requires managing architectural health as a code base grows. We&#x2019;ve never encountered a project or system that performed well when architecture degradation was significant.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Second, architectural agility can provide a competitive advantage. We often see competitive products with similar functionalities but very different architectural-health profiles.<sup>8<\/sup><\/span><span style=\"font-weight: 400\">&#xA0;<\/span><span style=\"font-weight: 400\">Differences in nonessential complexity typically correlate with differences in innovation and market success.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Third, architecture degradation can lead to technical bankruptcy. We recently scanned a 50-year-old US federal government code base with a core of 11,000 files. Predictive analytics suggested that a typical change would take more than 80 days (versus 15 required for a three-week sprint) and that 80 percent of resources were being wasted fighting fires. Follow-up conversations validated these projections and revealed that the organization had been hamstrung for five years.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Finally, as Olympus demonstrated in Figure 2, refactoring can make a big difference.<\/span><\/p>\n<p><span style=\"font-weight: 400\">If you simply use agile processes in a non-agile product architecture, you&#x2019;ll get faster at delivering nonvalue. Architecture will become the biggest bottleneck to your DevOps transformation. You need a balanced focus on agile process and agile architecture. With this approach, your organization can sustain excellence and succeed at the pace of delivery enabled by DevOps.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Acknowledgments\"><\/span><b>Acknowledgments<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400\">I&#x2019;m grateful to Mik Kersten for sharing his unique insights on coordination and collaboration across large enterprises. I also thank the members of the Agile Alliance Technical Debt Initiative for sharing their thoughts on agile and technical health over the past three years.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Sign_up_to_the_Product_To_Project_newsletter\"><\/span><b>Sign up to the Product To Project newsletter<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400\">This is the third blog in a series promoting the genesis of Mik&#x2019;s book <\/span><a href=\"https:\/\/www.amazon.com\/gp\/product\/1942788398\/ref=as_li_qf_asin_il_tl?ie=UTF8&amp;tag=itrevpre-20&amp;creative=9325&amp;linkCode=as2&amp;creativeASIN=1942788398&amp;linkId=ffdc9afd5d2bc7ae3d2336db701fd0c0\"><i><span style=\"font-weight: 400\">Project To Product<\/span><\/i><\/a><i><span style=\"font-weight: 400\">. <\/span><\/i><span style=\"font-weight: 400\">If you missed the first two blogs, <\/span><a href=\"\/mik-kersten\"><span style=\"font-weight: 400\">click here<\/span><\/a><span style=\"font-weight: 400\">. And to ensure you don&#x2019;t miss any further blogs, you can receive future articles and other insights delivered directly to your inbox by signing up to the <\/span><a href=\"https:\/\/go.tasktop.com\/Mik-Kersten-List-Signup.html\"><span style=\"font-weight: 400\">Project To Product newsletter<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Pre-order the book today by clicking on the front cover below:<\/span><\/p>\n<p><a href=\"https:\/\/www.amazon.com\/Project-Product-Networks-Transform-Business\/dp\/1942788398\"><img class=\"lazyload\" alt height=\"309\" data-src=\"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/2018\/07\/project-to-product_mik-kersten.jpg\"><\/a><\/p>\n<p><b><i>A version of this article was originally published in the January\/February 2018 issue of IEEE Software<\/i><\/b><b>: D.Sturtevant, &#x201C;Modular Architectures Make You Agile in the Long Run&#x201D;, <\/b><b><i>Software IEEE<\/i><\/b><b>, vol. 35, no. 1, pp. 104-108, <\/b><b>&#xA9;IEEE 2017,<\/b><span style=\"font-weight: 400\"> IEEE doi:<\/span><a href=\"https:\/\/doi.org\/10.1109\/MS.2017.4541034\"><b>10.1109\/MS.2017.4541034<\/b><\/a><span style=\"font-weight: 400\"> &#x2013; <\/span><a href=\"https:\/\/ieeexplore.ieee.org\/document\/8239949\"><span style=\"font-weight: 400\">Original article<\/span><\/a><\/p>\n<p><b>References<\/b><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">N. Fosgren et al., 2017 <\/span><i><span style=\"font-weight: 400\">State of DevOps Report<\/span><\/i><span style=\"font-weight: 400\">, Puppet, 2017; puppet.com\/resources\/whitepaper\/state-of-devops-report.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A. MacCormack and D.J. Sturtevant, &#x201C;Technical Debt and System Architecture: The Impact of Coupling on Defect-Related Activity,&#x201D; J. Systems and Software, Oct. 2016, pp. 170&#x2013;182.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">D.J. Sturtevant, &#x201C;System Design and the Cost of Architectural Complexity,&#x201D; PhD dissertation, MIT, 2013.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A. Akaikine, &#x201C;The Impact of Software Design Structure on Product Maintenance Costs and Measurement of Economic Benefits of Product Redesign,&#x201D; master&#x2019;s thesis, MIT, 2010.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">S.M. Gilliland, &#x201C;Empirical Analysis of Software Refactoring Motivation and Effects,&#x201D; master&#x2019;s thesis, MIT, 2015.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">C.W. Berardi, &#x201C;Intellectual Property and Architecture: How Architecture Influences Intellectual Property Lock-In,&#x201D; PhD dissertation, MIT, 2017<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">C. Baldwin, A. MacCormack, and J. Rusnak, &#x201C;Hidden Structure: Using Network Methods to Map System Architecture,&#x201D; <\/span><i><span style=\"font-weight: 400\">Research Policy<\/span><\/i><span style=\"font-weight: 400\">, vol. 43, no. 8, 2014, pp. 1381&#x2013;1397.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A. MacCormack, C. Baldwin, and J. Rusnak, &#x201C;Exploring the Duality between Product and Organizational Architectures: A Test of the &#x2018;Mirroring&#x2019; Hypothesis,&#x201D; <\/span><i><span style=\"font-weight: 400\">Research Policy<\/span><\/i><span style=\"font-weight: 400\">, vol. 41, no. 8, 2012, pp. 1309&#x2013;1324.<\/span><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Gene Kim, one of the authors of The DevOps Handbook, once told me that organizations that require a developer to take 10 people out to lunch to get an API change done appear to have lower IT performance. We hypothesized that an overly high &#x201C;lunch factor&#x201D; would impede DevOps transformations, and added some questions on&#8230;<\/p>\n","protected":false},"author":233,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","footnotes":""},"categories":[521,9544,9543],"tags":[],"class_list":["post-21236","post","type-post","status-publish","format-standard","hentry","category-lean-agile","category-project-to-product-shift","category-value-stream-management"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.4 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Modular Architectures Make You Agile in the Long Run - Tasktop Blog<\/title>\n<meta name=\"description\" content=\"How to visualize and quantify software architecture modularity and its erosion to lay the foundations for a successful Agile transformation.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Project to Product: Modular Architectures Make You Agile in the Long Run\" \/>\n<meta property=\"og:description\" content=\"How to visualize and quantify software architecture modularity and its erosion to lay the foundations for a successful Agile transformation.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/\" \/>\n<meta property=\"og:site_name\" content=\"Planview Blog\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/pages\/Planview-Inc\/89422974772\" \/>\n<meta property=\"article:published_time\" content=\"2018-10-15T15:25:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/2018\/10\/mik-kersten-project-to-product-blog-series-850x357.png\" \/>\n<meta name=\"author\" content=\"Tasktop Blogger\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Planview\" \/>\n<meta name=\"twitter:site\" content=\"@Planview\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tasktop Blogger\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/modular-architectures-make-you-agile-in-the-long-run\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/modular-architectures-make-you-agile-in-the-long-run\\\/\"},\"author\":{\"name\":\"Tasktop Blogger\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#\\\/schema\\\/person\\\/35676ea677995199889c0b6456156ce2\"},\"headline\":\"Project to Product: Modular Architectures Make You Agile in the Long Run\",\"datePublished\":\"2018-10-15T15:25:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/modular-architectures-make-you-agile-in-the-long-run\\\/\"},\"wordCount\":2722,\"publisher\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/modular-architectures-make-you-agile-in-the-long-run\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/media.planview.com\\\/tasktop_blog\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/mik-kersten-project-to-product-blog-series-850x357.png\",\"articleSection\":[\"Enterprise Agile Planning\",\"Project to Product Shift\",\"Value Stream Management\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/modular-architectures-make-you-agile-in-the-long-run\\\/\",\"url\":\"https:\\\/\\\/blog.planview.com\\\/modular-architectures-make-you-agile-in-the-long-run\\\/\",\"name\":\"Modular Architectures Make You Agile in the Long Run - Tasktop Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/modular-architectures-make-you-agile-in-the-long-run\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/modular-architectures-make-you-agile-in-the-long-run\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/media.planview.com\\\/tasktop_blog\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/mik-kersten-project-to-product-blog-series-850x357.png\",\"datePublished\":\"2018-10-15T15:25:09+00:00\",\"description\":\"How to visualize and quantify software architecture modularity and its erosion to lay the foundations for a successful Agile transformation.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/modular-architectures-make-you-agile-in-the-long-run\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.planview.com\\\/modular-architectures-make-you-agile-in-the-long-run\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/modular-architectures-make-you-agile-in-the-long-run\\\/#primaryimage\",\"url\":\"https:\\\/\\\/media.planview.com\\\/tasktop_blog\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/mik-kersten-project-to-product-blog-series-850x357.png\",\"contentUrl\":\"https:\\\/\\\/media.planview.com\\\/tasktop_blog\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/mik-kersten-project-to-product-blog-series-850x357.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/modular-architectures-make-you-agile-in-the-long-run\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.planview.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Project to Product: Modular Architectures Make You Agile in the Long Run\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#website\",\"url\":\"https:\\\/\\\/blog.planview.com\\\/\",\"name\":\"Planview Blog\",\"description\":\"Leading the conversation on digital connected work\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.planview.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#organization\",\"name\":\"Planview\",\"url\":\"https:\\\/\\\/blog.planview.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blog.planview.com\\\/wp-content\\\/uploads\\\/2015\\\/06\\\/planview-logo-black.png\",\"contentUrl\":\"https:\\\/\\\/blog.planview.com\\\/wp-content\\\/uploads\\\/2015\\\/06\\\/planview-logo-black.png\",\"width\":280,\"height\":66,\"caption\":\"Planview\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"http:\\\/\\\/www.facebook.com\\\/pages\\\/Planview-Inc\\\/89422974772\",\"https:\\\/\\\/x.com\\\/Planview\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#\\\/schema\\\/person\\\/35676ea677995199889c0b6456156ce2\",\"name\":\"Tasktop Blogger\",\"url\":\"https:\\\/\\\/blog.planview.com\\\/author\\\/tasktop-blogger\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Modular Architectures Make You Agile in the Long Run - Tasktop Blog","description":"How to visualize and quantify software architecture modularity and its erosion to lay the foundations for a successful Agile transformation.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/","og_locale":"en_US","og_type":"article","og_title":"Project to Product: Modular Architectures Make You Agile in the Long Run","og_description":"How to visualize and quantify software architecture modularity and its erosion to lay the foundations for a successful Agile transformation.","og_url":"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/","og_site_name":"Planview Blog","article_publisher":"http:\/\/www.facebook.com\/pages\/Planview-Inc\/89422974772","article_published_time":"2018-10-15T15:25:09+00:00","og_image":[{"url":"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/2018\/10\/mik-kersten-project-to-product-blog-series-850x357.png","type":"","width":"","height":""}],"author":"Tasktop Blogger","twitter_card":"summary_large_image","twitter_creator":"@Planview","twitter_site":"@Planview","twitter_misc":{"Written by":"Tasktop Blogger","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/#article","isPartOf":{"@id":"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/"},"author":{"name":"Tasktop Blogger","@id":"https:\/\/blog.planview.com\/#\/schema\/person\/35676ea677995199889c0b6456156ce2"},"headline":"Project to Product: Modular Architectures Make You Agile in the Long Run","datePublished":"2018-10-15T15:25:09+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/"},"wordCount":2722,"publisher":{"@id":"https:\/\/blog.planview.com\/#organization"},"image":{"@id":"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/#primaryimage"},"thumbnailUrl":"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/2018\/10\/mik-kersten-project-to-product-blog-series-850x357.png","articleSection":["Enterprise Agile Planning","Project to Product Shift","Value Stream Management"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/","url":"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/","name":"Modular Architectures Make You Agile in the Long Run - Tasktop Blog","isPartOf":{"@id":"https:\/\/blog.planview.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/#primaryimage"},"image":{"@id":"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/#primaryimage"},"thumbnailUrl":"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/2018\/10\/mik-kersten-project-to-product-blog-series-850x357.png","datePublished":"2018-10-15T15:25:09+00:00","description":"How to visualize and quantify software architecture modularity and its erosion to lay the foundations for a successful Agile transformation.","breadcrumb":{"@id":"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/#primaryimage","url":"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/2018\/10\/mik-kersten-project-to-product-blog-series-850x357.png","contentUrl":"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/2018\/10\/mik-kersten-project-to-product-blog-series-850x357.png"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.planview.com\/modular-architectures-make-you-agile-in-the-long-run\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.planview.com\/"},{"@type":"ListItem","position":2,"name":"Project to Product: Modular Architectures Make You Agile in the Long Run"}]},{"@type":"WebSite","@id":"https:\/\/blog.planview.com\/#website","url":"https:\/\/blog.planview.com\/","name":"Planview Blog","description":"Leading the conversation on digital connected work","publisher":{"@id":"https:\/\/blog.planview.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.planview.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/blog.planview.com\/#organization","name":"Planview","url":"https:\/\/blog.planview.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.planview.com\/#\/schema\/logo\/image\/","url":"https:\/\/blog.planview.com\/wp-content\/uploads\/2015\/06\/planview-logo-black.png","contentUrl":"https:\/\/blog.planview.com\/wp-content\/uploads\/2015\/06\/planview-logo-black.png","width":280,"height":66,"caption":"Planview"},"image":{"@id":"https:\/\/blog.planview.com\/#\/schema\/logo\/image\/"},"sameAs":["http:\/\/www.facebook.com\/pages\/Planview-Inc\/89422974772","https:\/\/x.com\/Planview"]},{"@type":"Person","@id":"https:\/\/blog.planview.com\/#\/schema\/person\/35676ea677995199889c0b6456156ce2","name":"Tasktop Blogger","url":"https:\/\/blog.planview.com\/author\/tasktop-blogger\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/posts\/21236","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/users\/233"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/comments?post=21236"}],"version-history":[{"count":0,"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/posts\/21236\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/media?parent=21236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/categories?post=21236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/tags?post=21236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}