I recently shared my experience on building and sustaining an effective Enterprise Architecture program with a group of Enterprise Architects and IT leaders at NOREX Select Enterprise Architecture Workshop. Below is the link to the content I presented.
http://www.slideshare.net/LeoShuster/implementing-effective-enterprise-architecture
Advanced Software Architecture Blog
Discussions and thoughts related to SOA, Enterprise Architecture, design patterns, service/application testing and management, software development methodologies, new trends in architecture, state of IT, and technology in general.
Wednesday, January 15, 2014
Wednesday, September 18, 2013
Introduction to Enterprise Architecture
Last week I was privileged to give a lecture at Kent State University on the topic of Enterprise Architecture. Coming into the lecture, I felt that this topic would be too high level for most students. However, I was pleasantly surprised with the level of interaction, understanding, and passion that the students exhibited. I posted the presentation on SlideShare in case anyone wanted to borrow any of the slides or use it as-is. All I ask is for proper attribution...
Here's the link: http://www.slideshare.net/LeoShuster/introduction-to-enterprise-architecture-26319680. Enjoy!
Here's the link: http://www.slideshare.net/LeoShuster/introduction-to-enterprise-architecture-26319680. Enjoy!
Thursday, August 22, 2013
A Roadmap to Business Agility
I hope my avid readers noticed that as I discussed Business Enablement and IT simplification in my last two posts (Business Enablement through Release Management and Achieving True Business and IT Partnership), there was a common thread that ran through both of these articles. It was maximization of business agility. But what is business agility and why is it so important? In my simple definition, it is company’s ability to react quickly to changing market conditions. Every organization strives to introduce new products or services before its competitors, change prices at a drop of a hat, offer innovative solutions, be flexible, and so on. Those companies that are more agile become leaders, those that are not become extinct.
I’ve argued that enabling business users to make changes to IT systems themselves and providing a streamlined deployment process goes a long way towards achieving business agility. However, the more astute readers will note that there has to be a more holistic approach to achieving business agility. And they would be right! In fact, there are many approaches and models to maximize an organization’s business agility. Doing a Google search on “business agility” brings up hundreds of relevant articles. All of them approach this topic from different perspectives, and all of them have merit. In this discussion, I will present an alternative to maximizing business agility – simple, yet powerful roadmap to move the organization forward.
My model consists of two variables – Business Enablement and IT Complexity. The hypothesis that is being proposed by it is very simple – by increasing Business Enablement and reducing IT Complexity, you will maximize your organization’s business agility. The visual representation of this model is shown below.
As you can see, on the way towards maximum agility, each organization will pass through a variety of states.
These maturity phases are all very high level, but you can see how and where the progress should be made to achieve the next level of maturity. The maturation process makes business increasingly more and more self sufficient while at the same time mandating simplification of IT. Without Business Enablement and IT Complexity variables moving in the right direction, the subsequent phases on the maturity curve cannot be reached. The proof of this hypothesis is provided below.
The IT Complexity component of the equation has to be explained a bit further, as it carries a very specific meaning in this model. There are many elements contributing to IT Complexity. They may include number of systems, number of interfaces, diversity of platforms, supported technologies, etc. My simple definition of IT Complexity is the amount of effort required to introduce a unit of change to IT systems. A unit of change is a measure of a basic change that can be made to a system’s functionality. Each organization may have a different notion of a unit of change, which is why using this measure helps generalize this approach across a variety of IT organizations.
Some IT environments can be so complex and tightly interconnected that even the simplest change can take a lot of effort. On the other hand, there may be organizations with such well defined systems and clear boundaries around them that changes can be made quickly with little or no impact on the outside world. Most organizations, however, will find themselves somewhere in the middle of the two extremes.
The reason IT Complexity plays a prominent role in the business agility model presented here is simple. The faster and easier that changes can be made to IT systems, the more agile the entire organization can become. In fact, by simplifying the IT environment and introducing next generation technologies such as Business Rules, BPM, Cloud Computing, etc. you will decrease the time required to make changes to IT systems. I’ve argued this exact point in the Death of Custom Software Development post.
The bottom line is that by striving to increase Business Enablement and reduce IT Complexity you will ultimately maximize your organization’s business agility. Why? Simply because by increasing Business Enablement, you enable business to react faster to any situation, and by decreasing IT Complexity, you make IT more efficient. Putting these two variables together leads to maximum business agility.
The path towards business agility is neither straight nor simple. The distance between each maturity level on the model is measured in years, not months. The journey requires significant investment of time and resources, strong backing of IT and business leaders, deep commitment from everyone involved, and a lot of hard work. But the results are worth the effort. If you had to choose between the market leadership, mere survival, or extinction, where would you want your company to be? My guess is that market leader is where everyone wants to be. To achieve this, you will need to follow the simple roadmap outlined above.
I’ve argued that enabling business users to make changes to IT systems themselves and providing a streamlined deployment process goes a long way towards achieving business agility. However, the more astute readers will note that there has to be a more holistic approach to achieving business agility. And they would be right! In fact, there are many approaches and models to maximize an organization’s business agility. Doing a Google search on “business agility” brings up hundreds of relevant articles. All of them approach this topic from different perspectives, and all of them have merit. In this discussion, I will present an alternative to maximizing business agility – simple, yet powerful roadmap to move the organization forward.
My model consists of two variables – Business Enablement and IT Complexity. The hypothesis that is being proposed by it is very simple – by increasing Business Enablement and reducing IT Complexity, you will maximize your organization’s business agility. The visual representation of this model is shown below.
As you can see, on the way towards maximum agility, each organization will pass through a variety of states.
- Highly IT Dependent
- Business depends on IT to perform even the simplest tasks
- Process Dependent
- All processes are defined and understood
- Business and IT both follow consistent and repeatable processes
- Enabled & Largely Independent
- Business is self sufficient in most operations
- Needs to rely on IT in some situations
- Self Sufficient & Automated
- Business can perform all the critical functions with little or no IT involvement
- IT plays a supporting role
These maturity phases are all very high level, but you can see how and where the progress should be made to achieve the next level of maturity. The maturation process makes business increasingly more and more self sufficient while at the same time mandating simplification of IT. Without Business Enablement and IT Complexity variables moving in the right direction, the subsequent phases on the maturity curve cannot be reached. The proof of this hypothesis is provided below.
The IT Complexity component of the equation has to be explained a bit further, as it carries a very specific meaning in this model. There are many elements contributing to IT Complexity. They may include number of systems, number of interfaces, diversity of platforms, supported technologies, etc. My simple definition of IT Complexity is the amount of effort required to introduce a unit of change to IT systems. A unit of change is a measure of a basic change that can be made to a system’s functionality. Each organization may have a different notion of a unit of change, which is why using this measure helps generalize this approach across a variety of IT organizations.
Some IT environments can be so complex and tightly interconnected that even the simplest change can take a lot of effort. On the other hand, there may be organizations with such well defined systems and clear boundaries around them that changes can be made quickly with little or no impact on the outside world. Most organizations, however, will find themselves somewhere in the middle of the two extremes.
The reason IT Complexity plays a prominent role in the business agility model presented here is simple. The faster and easier that changes can be made to IT systems, the more agile the entire organization can become. In fact, by simplifying the IT environment and introducing next generation technologies such as Business Rules, BPM, Cloud Computing, etc. you will decrease the time required to make changes to IT systems. I’ve argued this exact point in the Death of Custom Software Development post.
The bottom line is that by striving to increase Business Enablement and reduce IT Complexity you will ultimately maximize your organization’s business agility. Why? Simply because by increasing Business Enablement, you enable business to react faster to any situation, and by decreasing IT Complexity, you make IT more efficient. Putting these two variables together leads to maximum business agility.
The path towards business agility is neither straight nor simple. The distance between each maturity level on the model is measured in years, not months. The journey requires significant investment of time and resources, strong backing of IT and business leaders, deep commitment from everyone involved, and a lot of hard work. But the results are worth the effort. If you had to choose between the market leadership, mere survival, or extinction, where would you want your company to be? My guess is that market leader is where everyone wants to be. To achieve this, you will need to follow the simple roadmap outlined above.
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.
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.
- 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
- 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
- Enable an automated way to execute performance / load tests to ensure that changes do not adversely impact established NFRs
- Ensure stakeholders validate that the changes do not break current systems’ functionality
- Upon successful completion of all the tests, provide an automated way to deploy changes to production
- 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!
“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.
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.
I would appreciate feedback from all of the architects out there to make this manifesto more complete and relevant.
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.
Subscribe to:
Posts (Atom)