We've all heard discussions on "IT Agility" and how firms who have it are able to engage with their customers, beat their competition, achieve higher ROI, and execute their strategic plans. Today's silver bullet for IT agility is supposedly cloud computing. As in the past, the press and pundits are so gaga over this new concept that it's often portrayed as the panacea for IT agility, but we have heard similar panacea concepts before in our IT careers. Examples include; client-server computing, object oriented programming, business liaison roles, service oriented architectures and many other hot-topic IT concepts. None of these IT concepts ever achieved IT agility. However, I believe we are closer to being able to achieve IT agility than ever before. The difficult part is in defining what an agile IT organization looks like. The dictionary defines agility as the power of moving quickly and easily, with nimbleness. So, in the spirit of opinionated blogs, which is probably redundant and maybe an oxymoron, here's my top three enablers of IT agility.
1. Agile software development
I might as well start with the easiest topic, agile software development. The primary reason agile software development is successful is that it redefines how you gather requirements. The old waterfall methodology required you to gather all the requirements and obtain user sign off before starting design/development. The problem with this approach is that it is not reasonable, nor practical, for anyone to expect a business and IT team to adequately document all their possible requirements without seeing or visualizing the actual product or service. People naturally want to brainstorm and evolve ideas. They inevitably change their minds, put forth new ideas based on current feedback, expand concepts that look good, remove concepts that look bad, and basically iterate to define their final solution. Why do you think car manufacturers devote so much up front time to developing multiple models and prototypes of cars before manufacturing a new model car for sale? Leveraging agile software development aligns the SDLC with how people naturally want to define new things, be it a process, or piece of software. Of course, there are many other concepts of agile software development that are valuable, but this single concept improves the most frustrating business interaction with IT, namely requirements gathering. Improving this frustrating process improves the perception, and the reality, of IT agility.
2. Strategic leveraging of SaaS and PaaS
We have all heard why companies are leveraging the cloud. Some of the reasons include turning CapX into Opex, flexible demand based purchasing, and cost effective scalability. However, the biggest benefit is how the Software as a Service (SaaS) and Platform as a Service (PaaS) platforms enable business agility. You may ask why I didn't mention Infrastructure as a Service (IaaS). Personally, I believe IaaS solutions are not mature enough, yet, to enable IT agility. I expect that to change rapidly in the next few years.
So, let's talk about SaaS platforms. Agility in the SaaS world means quickly launching a strategic application like SFA, CRM, HRIS, or ERP. Does anyone remember how long it used to take to implement Siebel on-premise software, and what the failure rate was of those implementations? Speed to delivery wins, every time. I'm not saying SaaS providers have better features than on-premise (often they do), but rather that companies can quickly configure and start using their SaaS solutions, thereby quickly achieving the value that is only derived by using the product. Additionally, after quickly launching SaaS solutions, companies move into the "continuous improvement" phase where IT delivers constant iterative releases containing process and feature improvements for the business, rather than being stuck in the overly long phase that I call: "We will launch [software package] when it is perfect and meets every need we can think of, because [software package] is so hard to implement everyone knows we will never enhance it significantly after launch". Don't laugh, I guarantee your business knows this phase all too well.
Next up are PaaS platforms, where agility is even more apparent. No more worrying about spinning up a new development or test environment, or worrying about complicated OS/database/batch/patch synchronization across all environments. No lag time in procuring and installing servers and storage, or configuring backup. I could go on. Even more impressive, these multi-tenant architectures allow us to eliminate many of the IT development activities required to design/build scalability, redundancy, and recovery. Think about that...eliminating IT development and deployment activities, while increasing scalability, development speed and recoverability! How often do we get to eliminate IT activities? I can't recall another single IT innovation that eliminated so many activities in software development and deployment. All your industrial engineers know that simplification and elimination of process steps is the best way to improve high quality delivery, which is why I predict PaaS will eventually become the norm for application development in many industries. Again, speed to delivery wins. Of course, not every application fits for developing on top of PaaS. Low latency, high transactions per second, and batch intensive applications don't fit well on PaaS, yet. However, many other strategic applications can be built on PaaS, quickly and easily.
Another oft-overlooked benefit that PaaS and SaaS deliver is the reduction of disaster recovery (DR) effort by IT. Traditionally we build DR data centers and environments, annually test them with IT and business personnel, then document findings and spin up projects to implement improvements. Rinse and repeat, every year, to keep up with patches, upgrades and enhancements. Contrast that with your SaaS/PaaS providers where you either request a SAS70 from your vendor detailing their DR processes/results, or you ask for the vendor's results of their DR tests. I'm over simplifying, since you still have to perform your own DR testing on your integrations with the PaaS/SaaS providers, but the amount of IT time and cost saved by having the cloud provider do most of the DR work is immense. Why does this make IT more agile? Because now IT can invest this saved labor/time/money into activities that move the business forward, as opposed to activities which only reduce risk.
We all know that virtualization saves your company money in multiple areas. However, I believe the biggest benefit from virtualization is the agility it enables for the infrastructure team to deliver solutions quickly with high quality. No one wants to return to the days where it took weeks or months to procure, install, configure and secure new environments for a project or team. In today's virtualized server and storage environments, provisioning can often take minutes or hours at the most. This saves immense time and money, while enabling infrastructure teams to better meet project demands, peak processing time needs, and even reductions in outage timeframes by doing rolling upgrades with pieces of the virtual environment rather than taking down an entire environment all at once. All that equals agility for the business.
You'll probably notice I didn't talk about how to make the IT organization itself more agile for the business. That will be my topic for my next blog.