Monday, April 29, 2013

Death of Custom Software Development

(Disclaimer: This post is largely based on an excerpt from my contribution to the upcoming book from Thomas Erl's Service-Oriented Computing series, Next Generation SOA: A Real-World Guide to Modern Service-Oriented Computing.)

Until very recently, the typical approach for many corporate IT departments when dealing with a business problem has been – code first, ask questions later.  Many enterprise systems have been custom coded in the past.  But this trend is changing.  Companies realize that biggest value is gained from leveraging existing vendor or cloud-based solutions and integrating them into useful business solutions. 

The transformation from a development to integration mentality moves companies up the maturity curve significantly.  Agility is gained by purchasing or leasing the necessary foundational capabilities and customizing them to meet business needs.  IT no longer spends majority of its time building solutions, finding bugs, and deciding which SDLC is better.  Instead, IT teams can concentrate on delivering business value.

Organizations that adopted the integration first mentality are also forced to determine their competitive advantage strategies.  Michael Porter identified three types of business capabilities that should be considered in designing a business strategy.  They are base, competitive and differentiated capabilities.  Base capability is one that is foundational to the business, without which a business cannot operate.  This includes accounting, finance, HR, etc. as well as basic customer facing capabilities that are taken for granted.  Competitive capabilities are those that allow companies to remain competitive with each other.  For example, banks typically match each other’s lending products, interest rates, depository vehicles, etc.  Differentiated capabilities allow companies to stand out and separate themselves from each other.  In banking, examples of this include bill pay features, innovative product offerings, customer service, etc.  Michael Porter argued that companies want to be as good and efficient as its competitors in the base and competitive capabilities, but they want to excel in the differentiated capabilities to win.  Investment strategies should also match this philosophy.  Minimal necessary investments should be made in base and competitive capabilities that allow businesses to remain on par with others, but maximum possible investment should be made into increasing the degree of differentiation.

IT investment strategies should match those of its business partners.  Therefore, IT should consider which capabilities its investments support.  Just as with the business side, IT should minimize its spending on base and competitive capabilities and maximize spending to support differentiation.  The coding and integration strategies are also impacted by these decisions.  While base and competitive capabilities should almost never be custom coded, differentiated capabilities can, and oftentimes, should be.  In the modern world, however, custom development most often takes shape of configuration or scripting, as in business process design, business rules development, and vendor package configurations.  Little room is left to coding new functionality from scratch.

Service-orientation becomes a significant factor when companies adopt an integration mindset.  It becomes the central theme of everything that happens within an enterprise.  IT assets become a loosely coupled collection of vendor products, SaaS, services, mashups, and legacy applications.  Service-oriented middleware and SOA governance become key players in every project, initiative, and program.

Finally, the company’s entire culture must change.  Everyone, from business and IT leadership to sales people and developers, must embrace the integration first mentality. Without it, there will constant infighting between the development and integration clans.  Philosophical battles will ensue.  But if clear direction is given to the organization and business and IT stand shoulder to shoulder, there will be very little choice but to accept the change.

One CIO I worked for issued a very clear and concise statement of direction to his IT organization related to software development decision criteria: "Reuse before buy before build."  Everyone understood and embraced it.  The IT organization understood what decisions took priority over others.  Business stakeholders started asking questions like "Are there software assets we can reuse for this effort?" and "What vendor solutions exist for this problem?"  The entire organization adopted the integration first mentality as a result of the CIO's guidance.

While software development will never completely disappear, most IT organizations supporting mature businesses need to shift towards the integration first culture.  Let's face it, IT groups are not in the business of software development -- they are in business of supporting their business.  IT needs to concentrate on delivering business value, not building custom software!