Friday, August 2, 2013

Business Enablement through Release Management

Ever since IT became self-aware (no, not like Skynet in the Terminator) it has been striving to make itself more and more efficient.  The “Aha!” moment for every IT organization comes when it realizes that business thinks it is too slow and delivers little value.  After much introspection, new promises are made, commitment to customer service is renewed, processes are modified and streamlined, resources are trained, and so on…  Everything runs great for awhile only to be repeated a couple of years later.

In the recent years, when the technology became more business user friendly, IT organizations realized that the best thing they could do for the business was to let it have a piece of the action.  “Business Enablement” became the thing to do.  The idea was to let the business users actually make changes to some parts of the IT systems.  According to James Taylor, a thought leader in the decision management space, “business enablement means putting the business users, those who understand the business and how it needs to change, in a position to make the changes they want and need without IT being a roadblock."(http://www.ebizq.net/blogs/decision_management/2006/08/heres_a_quick_way_to_deliver_b.php)

Many organizations have struggled with enabling its business users in the way James Taylor describes it.  Many have tried, yet many have failed.  Those that are successful not only introduce the right technology solutions but also modify many of its processes to ensure that business users can actually do what they need with little or no IT involvement.  Simplification and streamlining of the processes, automation, and modernization are the keys to a successful business enablement initiative.  Introducing the right business enablement technology is, of course, beside the point.

Typically, the biggest obstacle to making business enablement work well is the IT Release Management process.  It is often too rigid and cumbersome, requires a small army to execute, and takes a long time.  Business doesn't want to wait months for its often simple changes to be moved to production.  This is not what business enablement is all about.  Yet, IT, rightly so, doesn't want to let anything get into production without proper testing and validation.  And here, at these crossroads is where most business enablement initiatives die.

But there is a way to solve this…  The simple solution is to provide a shortcut to production for most if not all the changes made by the business.  The diagram below depicts a high level process for achieving this.


It really doesn’t matter what tools are employed or what types of changes are made.  This process should be able to handle most situations.  The idea here is simple.  To streamline the movement of business artifacts from development to production, several steps need to be taken.
  1. Establish a Business Development Environment, a location where business users can make changes to elements of IT systems under their control and test the impacts of these changes 
  2. Once the changes are ready, provide an automated way to execute as many regression tests as necessary to validate that the changes do not impact any existing systems 
  3. Enable an automated way to execute performance / load tests to ensure that changes do not adversely impact established NFRs 
  4. Ensure stakeholders validate that the changes do not break current systems’ functionality 
  5. Upon successful completion of all the tests, provide an automated way to deploy changes to production
Ideally, this process should take a few hours, a couple of days at the most.  It should shortcut the existing Release Management process that normally takes weeks to complete.  The goal is to introduce changes into production as quickly as possible.  Of course, not every change is eligible for such first class treatment.  The basic guiding principles for a shortened release management lifecycle should be:

  • If a change is confined to business owned elements only and no changes by IT are needed, the change is eligible for the streamlined release 
  • If any IT changes are required, the regular release management process should be followed

While this process is simple from a high level perspective, there is a lot of hard work that needs to go into it to make it operational.  Automation of testing and release management functions is never simple, fast, or straightforward.  It usually takes months or even years to reach a point where it will cover 80% of IT systems and business functions.  Yet, without automation, the process as described above cannot work.  There is not going to be anything fast or streamlined about manual testing of business changes.  On the other hand, the culture change required to make this process work can be daunting.  Not many IT organizations will be willing to make this kind of a leap.

Business enablement can be achieved without a streamlined release management process.  However, business agility cannot.  Businesses cannot move as quickly as they can and react rapidly to a changing business climate without a way to introduce changes to IT systems in days rather than months.  Those that can leverage business enablement and release management processes to their advantage will inevitably come out ahead.

Thursday, July 18, 2013

Achieving True Business and IT Partnership

Business and IT have a long history of conflict.  Ever since computers became available to solve business problems and formalized IT organizations were created to support this mission, business and IT groups found themselves at odds.  How often have we heard these statements?

“Business’ expectations are unrealistic”
“All business cares about is dates”
“Business doesn't understand how IT operates”
Or…
“IT never delivers anything on time”
“IT can’t deliver anything for less than $100K”
“IT processes are too complex and get in the way”

We know that the best way to deal with this conflict is to establish a true partnership between business and IT organizations.  Yet, few companies are successful in achieving such symbiotic relationship.  Why?  There are many reasons for this.  However, none is more relevant than IT’s desire to control the entire software delivery lifecycle.  No, your eyes do not deceive you.  I indeed contend that many problems will be solved if IT gives up some control over how software is delivered into production.

I can hear the accusations of heresy right now.  I can feel the wrath of IT purists enraged with such preposterous ideas.  I can hear IT managers grinding their teeth in response to business infringing on their domain.  Hold your angry rhetoric for just a bit longer.  I will explain my reasoning shortly.

In this day and age, software packages have become so sophisticated that more and more features are aimed at non-IT people.  Many systems include rules engines, BPM capabilities, scripting languages, etc.  IT no longer has to reinvent the wheel to provide business the features it needs.  As I argued in my earlier post, Death of Custom Software Development, IT organizations have to become more and more integration rather than custom development focused.

This argument can be extended further.  IT no longer has to control the entire software delivery lifecycle.  Enable the business to make changes to rules, processes, static values, web pages, printed communications, etc., and you will enter a brave new world of true partnership.  It’s that easy!  Let the business control its own domain with minimal support from IT and let IT control the technology and infrastructure.  The two will intersect when they truly need each other.  IT will start playing a true supporting role by enabling the business to be productive and ensuring that changes business is about to introduce will not have a negative impact on everything else.  Business will start looking at IT as an enabling partner, not just an expensive scapegoat.  Everyone will hold hands and sing Kumbaya.

Of course, a lot needs to be done to achieve this Utopian society.  Roadmaps need to be created, reviewed, and approved.  Next generation packages need to be procured and implemented.  Business users that will be empowered to make changes will need to be identified and trained.  Significantly simplified and streamlined release management processes need to be created.  Culture needs to change.

It is a long and arduous journey, but it is well worth the effort.  Think about how much work IT does today that should really be done by the business.  Let the business finally be the master of its own domain.  And for the first time in many years, business will have no one but itself to blame for defects and missed deadlines!

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!

Friday, August 31, 2012

The Architect Manifesto

IT architecture is a well defined profession. It was in existence ever since computers were first created in the 1940s and software needed to be developed for them. While it became more formalized only in the 1980s, the profession took huge steps forward in the last 30 years. Today, the world of IT architecture includes such disciplines as SOA, integration architecture, system architecture, data architecture, security architecture, etc. Yet, despite all of its different facets, IT architecture core practices, goals, and approaches remain the same across all of its disciplines.

There are several key principles that help us become successful as IT architects. No matter what problems we face, no matter what types of solution we need to apply, no matter what technologies we use, these general guidelines should always be followed. This forms the basis for the Architect Manifesto.

My research indicates that there have been multiple attempts at defining an Architect Manifesto. None of them seem to have succeeded or gained traction. Yet, I am certain that we, as architects, need the guiding light of a set of principles that will guide us in everything we do. We already unconsciously understand and follow them, but a formal definition will strengthen and inspire us. This is my attempt at verbalizing what we already know and apply in everyday work – the Architect Manifesto.

We, IT architects, guide the design and evolution of computer systems. We strive to achieve maximum value for our business partners through this work. We constantly discover better ways to architect systems. As a result, we have come to value:

Simplicity over complexity
Pragmatism over perfectionism
Thinking out of the box over applying the same approaches to every problem
Developing technology agnostic solutions over making technology driven decisions
Delivering solutions to the business problems over concentrating purely on technology deliverables
Looking at the big picture over getting too deep into details
Long term, strategic thinking over short term, tactical thinking

That is, while there is a place for the tactics on the right, we should strive towards approaches on the left.

I would appreciate feedback from all of the architects out there to make this manifesto more complete and relevant.

Wednesday, January 12, 2011

SOA & Cloud Symposium Podcast

SOA and Cloud Symposium podcast published. Listen to it at http://soasymposium.com/podcast2011.php. This podcast is part of the International SOA and Cloud Symposium Conference Series and the upcoming SOA Governance (Prentice Hall Service-Oriented Computing Series from Thomas Erl) book launch.

Tuesday, July 27, 2010

Architectural Thinking

I recently had to give an Architectural Thinking course. As I was putting the materials together, I wondered – what really makes a good architect? What is the difference? Is it personality, totality of experiences, different wiring, or natural inclination?

I always believed that while good architecture skills can be taught, it is the way we think that differentiates us and makes us good architects. Our natural ability to understand the problem and determine the right solution is the magic formula. This – and this alone – distinguishes good architects in our midst. You don't have to have "architect" in your job title or even be in IT to be a good architect. You can understand the technology in minute detail, know all the design patterns, possess tremendous depth of experience, have in-depth knowledge of various design techniques, etc. All this can be taught or acquired. At the end of the day, however, it is your approach to problem solving and the way you think that will make you stand out among your peer architects.

Why do I put such a heavy emphasis on the thinking style? To help you understand, we need to take a step back and define "architecture". According to Wikipedia, "the software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships between them." Many books, articles, and white papers provide a definition of architecture as well. However, in my opinion, these definitions are too complex and do not truly reflect the nature of architecture. My personal definition is very simple: architecture is a high level view of a technical solution to a business problem.

What does the definition of architecture have to do with our approach and thinking style? Everything! Taking all the specifics of how we actually deliver architectural solutions out of conversation, to do our job well we simply need to determine the right technical solution to the right business problem. We need to consider all the possibilities when addressing a business problem – what is there today, what is missing, what problem are we really trying to solve, is the current process the most efficient, what would deliver the most value, are we solving the right problem?.. We should be able to look at the problem from a very high level, abstract ourselves from the underlying technology or processes, and envision the most effective and efficient solution. As in the old adage, we should see the forest for the trees. Once the "ideal" solution is found, we can start concentrating on its details and understanding technology implications. Many times, we will discover that our vision cannot be readily implemented due to technology limitations, insufficient process maturity, and a host of other factors. Do not despair, however. Your vision becomes the solution goal state, and you would need to create a roadmap to get there.

Undoubtedly, some of you will disagree with the approach presented above. I can hear the arguments now – "You must consider the current situation to determine the right solution to the problem", "The project has a limited scope, and thinking broader is impractical", "The technology landscape should be considered upfront to design the most effective solution", etc. However, if we are to find the right technical solution, we must shed the old baggage. It is very hard to find new and innovative solutions if you cannot think outside the current box. To a large extent, the architectural thinking principles are grounded in the definition of what makes a good architect.

Architecture is an art, not a science. Therefore, a good architect is more of an artist – creative, imaginative, someone who can paint with a big brush. In my opinion, the characteristics and approaches listed below are the true differentiating factors among architects.
  • Abstract thinking – this is the #1 quality of a good architect. You must be able to see the big picture and understand it abstractly, absent of many details that can cloud your judgment.

  • Out-of-the-box thinking – many situations require us to be creative and innovative in our approaches. Good architects should be able to adapt to new situations easily and come up with the right solutions regardless of the situation.

  • Clarity of vision – you, as an architect, should be able to clearly envision the solution and all of its implications including business process, technology, low level design, development, and potential phased delivery.

  • Strength of convictions – architects should always try to do things right the first time, oppose inappropriate or wrong decisions, and stand up for what they believe are the right architectural solutions.

  • Critical thinking – architects should always cast a critical eye towards their domain. You should challenge everything. Nothing should remain status quo or off limits. There are always opportunities for improvement. Don’t miss them because you feel comfortable with the current situation or are used to doing things a certain way.

  • Problem solving skills – architects are problem solvers. Good architects strive to solve problems in the minimalist way, i.e. reaching the right solution in the most efficient manner. Even better architects ensure that they are solving the right business problem.

  • Soft skills – this one is obvious. Good architects should have excellent soft skills to work well with the diverse audiences they are exposed to every day.

As in the everlasting nature vs. nurture debate, I believe good architects cannot be made – a large portion of what makes architects stand out is ingrained in how we think, act, and approach problems. To be truly effective, we should practice all the elements of architectural thinking and exhibit all the traits of a good architect.