{"id":614,"date":"2018-10-13T11:14:51","date_gmt":"2018-10-13T11:14:51","guid":{"rendered":"http:\/\/janbosch.com\/blog\/?p=614"},"modified":"2018-10-13T11:14:51","modified_gmt":"2018-10-13T11:14:51","slug":"stop-customizing-your-system-configure-it-instead","status":"publish","type":"post","link":"https:\/\/janbosch.com\/blog\/index.php\/2018\/10\/13\/stop-customizing-your-system-configure-it-instead\/","title":{"rendered":"Stop Customizing Your System! Configure It Instead!"},"content":{"rendered":"<figure id=\"attachment_615\" aria-describedby=\"caption-attachment-615\" style=\"width: 1910px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-615\" src=\"https:\/\/janbosch.com\/blog\/wp-content\/uploads\/2018\/10\/crane-homes-1512044_1920.jpg\" alt=\"\" width=\"1920\" height=\"580\" srcset=\"https:\/\/janbosch.com\/blog\/wp-content\/uploads\/2018\/10\/crane-homes-1512044_1920.jpg 1920w, https:\/\/janbosch.com\/blog\/wp-content\/uploads\/2018\/10\/crane-homes-1512044_1920-300x91.jpg 300w, https:\/\/janbosch.com\/blog\/wp-content\/uploads\/2018\/10\/crane-homes-1512044_1920-768x232.jpg 768w, https:\/\/janbosch.com\/blog\/wp-content\/uploads\/2018\/10\/crane-homes-1512044_1920-1024x309.jpg 1024w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><figcaption id=\"caption-attachment-615\" class=\"wp-caption-text\">Image credit: pixabay<\/figcaption><\/figure>\n<p>Although mass-market companies have figured this out long ago, companies offering their software-intensive systems to a smaller group of powerful customers are often under significant pressure to customize their systems for individual customers.<\/p>\n<p>There are at least three reasons why customizing your system for each individual customer used to be a good idea. First, when closing the initial deal with the customer, the sales process typically requires a back and forth in terms of concessions and pricing. Offering customization of the software can be an effective mechanism to maintain pricing levels while giving the customer something that makes her or him feel special and unique.<\/p>\n<p>Second, the customization itself often needs to be conducted by the company selling the system and is, of course, not free. Especially in situations where the company is organized in a central organization and market companies, providing the customization is a very effective approach for market companies to generate revenue.<\/p>\n<p>Third, whenever there is a need to update the software in the system, the market company will need to repeat the customization for the new version of the software. In that sense, customization is a gift that keeps on giving from a revenue perspective.<\/p>\n<p>When stepping back, it is obvious that from a narrow, short-term perspective, customization may make a lot of sense, but from a broader, long-term perspective it is a bad idea. Although this has been true in almost all cases over the years, more recently, the adoption of continuous deployment makes it even more important to stop customizing. Again at least three reasons why we should stop customizing.<\/p>\n<p>First, it doesn\u2019t make sense from a financial perspective. In most companies, customization monetized through a markup on the salary cost of the engineers doing the work. Even if you manage to have a 100% margin, the revenue driven by these engineers pales in comparison to product R&amp;D. In a company with an R&amp;D budget that is 5% of the company\u2019s revenue, it means that every \u20ac spent in R&amp;D has to result in 20\u20ac of revenue for the company. Even if it may look good on paper to sell the engineer hours for a factor 2 of the cost, it is much less valuable than investments in product R&amp;D.<\/p>\n<p>Second, customization severely complicates continuous deployment as it requires the customization to be repeated for every release of the software. In most cases, this is prohibitively expensive for your company and your customers, resulting in a situation where customer will do everything they can to avoid upgrading their software. This, in turn, results in you being required to maintain many releases of the software, sometimes ranging over a decade or more.<\/p>\n<p>Third, as I described in <a href=\"https:\/\/janbosch.com\/blog\/index.php\/2018\/10\/05\/enough-efficiency-already-focus-on-effectiveness\/\">last week\u2019s blog post<\/a>, R&amp;D needs to shift from focusing on efficiency to focusing on effectiveness. That requires continuous deployment and a constant flow of data from the systems in the field to determine that the system as well as features are generating the value for customers. Realizing this fast feedback loop is impossible when every customer has a unique customization of the system.<\/p>\n<p>Instead of customization, we need to adopt configuration. This requires us to architect the system in such a way that features that are used by some customers, though not all, are configuration items in the system. Customer unique functionality should be built at the other end of a stable product interface, so that the product can evolve continuously while the customer unique functionality can stay the same and work against the stable interface.<\/p>\n<p>Concluding, if you customize your products and systems for each customer, it is time to stop this practice. Instead, re-architect your systems to provide the main points of variation as configuration settings and introduce a stable interface for customer unique functionality (the true customer-specific customization). Failing to do so keeps you stuck in the old ways of working, which simply is not competitive in the long run. You need continuous deployment and a quantitative data channel back from your systems in the field in order to maximize the effectiveness of your R&amp;D.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Although mass-market companies have figured this out long ago, companies offering their software-intensive systems to a smaller group of powerful customers are often under significant pressure to customize their systems for individual customers. There are at least three reasons why customizing your system for each individual customer used to be a good idea. First, when &#8230; <a title=\"Stop Customizing Your System! Configure It Instead!\" class=\"read-more\" href=\"https:\/\/janbosch.com\/blog\/index.php\/2018\/10\/13\/stop-customizing-your-system-configure-it-instead\/\" aria-label=\"Read more about Stop Customizing Your System! Configure It Instead!\">Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"generate_page_header":"","footnotes":""},"categories":[4,8,10],"tags":[],"_links":{"self":[{"href":"https:\/\/janbosch.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/614"}],"collection":[{"href":"https:\/\/janbosch.com\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/janbosch.com\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/janbosch.com\/blog\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/janbosch.com\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=614"}],"version-history":[{"count":1,"href":"https:\/\/janbosch.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/614\/revisions"}],"predecessor-version":[{"id":616,"href":"https:\/\/janbosch.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/614\/revisions\/616"}],"wp:attachment":[{"href":"https:\/\/janbosch.com\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/janbosch.com\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=614"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/janbosch.com\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}