Tuesday, March 14, 2017

Application Development Done Right

In a previous article, entitled DevOps as the Ultimate Panacea?, I described how developing code without thinking about the current needs of the end user as well as the future needs once they've become accustomed to using your application ends up not only frustrating them but also can result in customer churn and ultimately lower revenues.  In this article, I'd like to describe something simple that I came across today that shows a definite degree of effort to do quite the opposite.

Recently, we had a severe snowstorm, one with blizzard-like conditions, which is unheard of in central New Jersey.  Being responsible adults, my wife and I went to the grocery store to stock up on essentials (read:  chips, chocolate, etc.) in case we get stuck at home.

As we were ringing up our order, the cashier mentioned to us that the store has a mobile application.  Since both of us are in technology oriented professions, we were skeptical about the need for a grocery store mobile application.  But then the cashier told us two things that immediately caught our ear:

  1. The application will allow us to search for a specific item and, if the location where we shop carries the item, it will also tell us in what aisle and where in that aisle the item will be located.

  2. We can associate digital coupons with the application so that we don't have to worry about collecting those strips of paper that spew out whenever we scan our loyalty card at other grocery chains, much less keep them organized, etc.  All we need to do is scan a single QR code at the register; the appropriate coupons are consumed and the savings automatically applied to our bill.

These two features are enough for us to justify the 25 minute drive to this particular chain, which is something we've only done once every two months at best in the past.  This is in spite of the fact that there are two major chains (without digital capabilities like the two items mentioned above) currently within 5 minutes of our house currently.

Although it's possible for these capabilities to have simply "sprung from the head of Zeus," it's more likely that the software development methodology facilitated this wonderful end result.  Implementing methodologies such as Test Driven Development and Behavior Driven Development provide a constant feedback loop to give the developers a chance to see user behaviors in near real time in order to make changes as needed.

Of course, this feedback loop is useless without a mechanism to deploy new builds of applications fast enough to keep up with the rate of change in the development of the applications in question.  This is where release automation comes into play.  A fully implemented, fully automated CICD process is essential for ensuring that companies can develop at the "speed of change" so that they aren't overtaken by their competition.

While our grocery bill won't do much to add to the bottom line of this particular grocery chain, if you multiply the effect it's had on us by the number of people like us who are hearing about this for the first time, you can see how this could have an impact over time.  And this is possible only because someone took the time to consider the shopping experience; how it could be improved in a very real way for their customers; and then provided the necessary structure internally to give the development teams the ability to fully realize their vision.

Monday, March 6, 2017

It's Easier to Fail at DevOps than it is to Succeed

Slippery when wet
Since the term DevOps was coined in Belgium back in 2009, it is impossible to avoid the term whether in discussions with colleagues or in professional trade magazines.  And during the years while this movement has gained momentum, many things have been written to describe what elements of a DevOps strategy are required for it to be successful.

Yet in spite of this, there is an interesting data point worth noting: not many organizations feel there is a need for DevOps.  In a Gartner report entitled DevOps Adoption Survey Results (published in September 2015), 40% of respondents said they had no plans to implement DevOps and 31% of respondents said they hadn't implemented it but planned to start in the 12 months after the survey was conducted.

That left only 29% who had implemented DevOps in a pilot project or in production systems, which isn't a lot.

"Maybe it's because there truly isn't a need for DevOps," you say.  While that may have been true if DevOps were around in the beginning of last decade, the consumerization of IT and other types of "instant gratification" technology advances would dictate otherwise.  In fact, in a 2014 presentation entitled CEO Resolutions for 2014 — Time to Act on Digital Business, Gartner analyst Mark Raskino told a group of CxOs in various industries that (paraphrased) they need to either constantly innovate, or they will rapidly become irrelevant.  All it takes is one stumble to be overtaken by their competitors who recognize the need to think like a technology company whether or not they are one.

Let's drill down a bit.  Even though DevOps means far more than application release processes, Agile development methodologies have changed the landscape of software development such that the promote and release functions are now often the bottleneck.  It is here that automation can have the biggest impact, yet many organizations haven't addressed this to its fullest extent.  In a report by IDG Research entitled Market Pulse Research: The State of DevOps (published in August 2013), 36% of respondents said that their release processes were completely manual and 53% said they were only partially automated.  The kicker is that they all recognized that automated application release is a key enabler to the successful implementation of a DevOps strategy.

What is the real problem here?  It would seem that many organizations are looking for ways to successful achieve the nirvana of DevOps when they should instead focus on how to avoid failure.  They are charging forward without protecting the flanks, and as a result they are getting hamstrung.

What are some of the reasons why DevOps can fail to take hold?  While there is hardly the same quantity on the pitfalls to avoid as there is on what it takes to be successful, Cognizant published a great whitepaper containing six key things to watch out for when embarking on your DevOps journey.  These items are on pages 2 and 3, and are a "must read" even if you're already immersed in implementing DevOps at your organization.  Another great article published in Computer Weekly discusses the business and technology challenges when implementing DevOps.  From the article, "for enterprises entrenched in the old way of software development, adopting a DevOps style of working isn't going to be easy for CIOs without buy-in from the whole IT department."

I could not agree more.  Focusing on the goal is fine, but for something that requires such a huge shift in the way multiple departments work it needs to be recognized that there are many more ways to fail than there are to succeed.