Modern Developer | May 18, 2017

Succeed by Failing: How to Speed Your Software Development -- And Why It Matters

By: Alexa Morales


The way to succeed in business these days is to fail. Not just once but often, and quickly.

So say many experts, among them Siddhartha Agarwal, vice president of product management and strategy for Oracle Cloud Platform.  To beat the competition, companies need to produce innovative products and experiences for their customers, and the only way to get there ahead of anyone else is by producing innovation-boosting software faster than the competition.

“One, I need to be able to get new functionality out to my constituents really fast,” says Agarwal. “Two, I need to get applications out without taking too much time or effort (avoiding provisioning infrastructure, installing/configuring software, finding technical resources to program application). And three, I need to make sure my user community is engaged in experiencing, testing, and providing feedback on these applications—making them a part of my QA team.”

So where does failure come in? “What I mean by failing fast is that business executives want to experiment with 12 to 15 different projects, get them out to market in weeks to months, get feedback from the user community, and only move forward with two or three of these projects,” says Agarwal. “The surviving projects have the biggest chance of success, since users were part of validating the prototype. Those two or three have the best chance of making a powerful impact and differentiating me from my competition.”

3 Tips For Accelerating Development

Cloud computing has solved many problems that once hindered software development—ordering development environments, and installing, configuring, and maintaining hardware and software, for starters—by simply making those available on-demand, and with little to no management required. This makes it possible to do the kind of quick, iterative development Agarwal says businesses need.

“The upside for cloud-native approaches is they take that development cycle down to weeks and days, and make the users for whom these applications are built a part of the development team,” says Agarwal.

Agarwal, who spends a lot of his time talking to customers about their cloud development projects, highlights three top priorities for developing at warp speed.

1. Deliver in smaller chunks. Thanks to agile methodologies that began trending more than a decade ago, rapid prototyping and short releases at regular intervals are widely accepted practices. The idea is to prioritize capabilities that must be built versus nice-to-haves, and to think in terms of apps or components that can easily be taken to market.

Development teams shouldn’t be asked to write monolithic applications because “it becomes very hard for them to deliver new functionality to you quickly, which is what you need,” says Agarwal. Giving developers the ability to break the application into self-contained pieces that deliver value on their own “gives them the ability to task these little pieces independently, to deploy these pieces independently, and to scale these pieces better and faster,” he says. “They can stitch together these pieces over time to give you the larger or holistic application that delivers on your business needs.”

2. React to feedback. Those overseeing cloud-native projects must participate actively in the process. “Faster delivery means feedback and guidance is needed sooner rather than later,” Agarwal says. “You will be forgiven by your audience if they see even small amounts of value, and they realize their input is being considered to constantly iterate and enhance what is being delivered to them,” he says, so don’t strive for perfection—especially at the expense of speed: “Iterative is good.”

3. Change the culture. In order to fail fast, iterate frequently, and respond to feedback, you need an organizational culture that is willing to jettison “how it’s always been done.” Agarwal provides the example of a company with several hundred salespeople who made onsite visits to help customers identify the products they needed to order. The company built a mobile application for those sales reps, “but the application didn’t fly because the reps were used to being in front of customers and felt that was the only way to sell,” says Agarwal.

“In order for you to be able to think about fail fast or to improve productivity in your organization, you have to have a culture open to adopting new technology,” he says. “This cultural shift goes up and down the organizational structure.”

That mobile app? It could have increased sales productivity by allowing reps to check past orders, outstanding invoices, and other relevant data before calling on a customer—without logging into five different systems. But if your head of sales says “why do I need to do things differently, because what I am doing has been working for the past 25 years,” there’s a good chance your new app won’t get the chance to fail—let alone iterate and succeed.

How the Right Cloud Services Can Help

On the front end of the cloud-native development cycle, organizations need a cloud environment that enables developer collaboration, helps developers speed the release of high-quality functionality, and gives managers and executives visibility into the progress of projects.

“Scrum is a very common agile methodology for building applications where teams break down delivery into sprints, or segments of work,” Agarwal says. “A cloud service for developers should be built for continuous delivery and managing scrums, sprints, and backlogs—including ‘burndown charts’ to visualize how goals are being achieved.”

Customizable dashboards giving both developers and executives insight into progress also are key. Such dashboards, notes Agarwal, help executives answer critical questions about the bottom line of a cloud-native project, including what is happening, whether the project is on track, and when the next release is scheduled.

Availability and uptime are critical as well. Here, too, the right cloud solution makes faster delivery possible by enabling operations teams and developers to predict when the application might be headed toward a problem. “You want to be able to quickly diagnose the root cause of an outage by using a unified platform that brings together user experience data, performance data from the web, database tiers, and logs across the various servers involved in a transaction, and uses machine learning to predict potential failures,” says Agarwal. This helps reduce the mean time to repair and increase the mean time between failures—two key metrics for delivering on cloud service-level agreements, he adds.

Beat Your Competition By Leveraging Your User Community

Ultimately, faster application development in the cloud lets executives test a hypothesis, differentiate their business from the competition, and go to market with a strategy that has a significantly higher chance of success.

That’s where an open, modern, and easy approach to cloud-native development truly pays off, according to Agarwal. “Some executives guess at the new functionality that will help them win, whereas the iterative release of functionality with significant user engagement enables executives to eliminate the need for a crystal ball when making crucial business investments,” he says. “Oracle’s unique investments in cloud-native application development enable iterative discovery and delivery and give executives confidence in their initiatives.”

Alexa Weber Morales is director of developer content at Oracle. Morales is the former editor in chief of Software Development magazine and has more than 15 years of experience as a technology content strategist and journalist.

More about Alexa Morales
This is a syndicated post, view the original post here