38
Better ways of developing software or, coding like a unicorn @cote June 2016 1 Slides: http://cote.io/unicorn-coding/

Better ways of developing software

Embed Size (px)

Citation preview

Page 1: Better ways of developing software

Better ways of developing softwareor, coding like a unicorn

@coteJune 2016

1 Slides: http://cote.io/unicorn-coding/

Page 2: Better ways of developing software

• @cote – Director, Marketing at Pivotal

• Former industry analyst at 451 Research and RedMonk

• Corporate strategy and M&A at Dell

• Former software developer• More: cote.io/podcasts,

http://cote.io, [email protected], The Register DevOps column.

Hello!

2

Page 3: Better ways of developing software

3

Meanwhile, in business-land…

Page 4: Better ways of developing software

4

“Silicon Valley is coming….We are going to work hard to make our services as seamless and competitive as theirs.”

-Jamie Dimon, CEO@JPMC, 2015 letter to shareholders

Page 5: Better ways of developing software

“If advantages eventually disappear, it only makes sense to have a process for filling your pipeline with new ones. This in turn means that, rather than being an on-again, off-again mishmash of projects, your innovation process needs to be carefully orchestrated.”- Prof. Rita McGrath, “Transient Advantage,” HBR, June 2013

“Cloud Native” is IT’s answer to transient advantage

5

Since 2000, 52% of the F500 are no longer on

the list

Sources: “Transient Advantage,” above; F500 figure from 2014 Constellation Research Summary, R. “Ray” Wang, Feb. 2014.

Page 6: Better ways of developing software

Cloud Native Business Theory

(1.) In an era of transient advantage, the inherit agility of software is one of the best strategic tools.

(2.) However, software in large organizations does not currently “work like that.”

(3.) The fix is changing how we think of the process of software, supported by cloud native technologies & practices.

6

Page 7: Better ways of developing software

7

Page 8: Better ways of developing software

It’s not much of an IT department, but I’m sorta attached to it…

8

Page 9: Better ways of developing software

Source: Gartner press release, Aug 2015; “The Agile Advantage,” MeriTalk/Accenture, May 2015; Cutter Consortium, July 2015.

IT is failing to meet the transient advantage needs of the business

What is your IT organization's

role in business innovation?75% of

application development supporting digital business will be built not bought by 2020

9

Page 10: Better ways of developing software

A user-centric, small batch approach creates a software defined business

10 Source: Pivotal Labs, March 2016. See also “Agile Transformation in the Age of the 3rd Platform,” Al Hilwa , IDC, Feb 2016 (unpublished)

Exploration Discovery

Feedback Loop

Page 11: Better ways of developing software

Continuous DeliveryRelease once every 6 months

More Bugs in production

Release early and oftenHigher Quality of Code

DevOpsNot my problem

Separate tools, varied incentives, opaque process

Shared responsibilityCommon incentives, tools, process and

culture

MicroservicesTightly coupled components

Slow deployment cycles waiting on integrated tests teams

Loosely coupled componentsAutomated deploy without waiting on

individual components

Platform, Standard Practices & Tools, Cloud Native Culture

Trad

ition

al IT

Clo

ud N

ativ

e

Page 12: Better ways of developing software

The Process

12

Page 13: Better ways of developing software

“We spent a lot of time talking about technology, but technology really isn't the meat of the conversation that needs to occur.” Matt Curry, Allstate

13Source: Matt Curry quote from Feb 2016 TheNewStack interview; “Agile Transformation in the Age of the 3rd Platform,” Al Hilwa , IDC, March 2016.

Page 14: Better ways of developing software

Benchmark your agile behaviors, plan catching-up as needed

Source: “Town Hall: Agile in the Enterprise,” Mike West, Nathan Wilson, Thomas Murphy, Dec 2015, Gartner AADI US conference.14

Page 15: Better ways of developing software

Discovering & delivering the software your customer actually wants

• Most organizations emphasize building to plan

• In reality, the “plan” constantly evolves

• Learning organizations explore & experiment

How most businesses think they’re doing

How smart businesses know they’re doing

15

Page 16: Better ways of developing software

Use small batch thinking, at all levels

• Weekly, even daily deploys to production

• Deploy to production each time, avoid waterscrumfall

• Relies on:- Product approach- Small batch oriented

pipeline and process- Cloud native automation

Inception

Hypothesize

Validate w/real use(r)s

Did it work?

Sources: “Good Software is a Series of Little Failures,” Coté, April 2016; The Lean Startup, Eric Ries, 2011. The Lean Enterprise, Barry O'Reilly, Jez Humble, and Joanne Molesky. See also overview of this approach at the IRS from Dec 2015.16

Page 17: Better ways of developing software

Small Batches Reduce Risk & Increase Controls

17

Five risks that small batches reduce

1. Bug swarms – less software leads to faster fixing.

2. Useless software – don’t wait 6+ months to find out, find out every 24 hours.

3. Stymied Innovation – daily opportunities to learn and innovate.

4. Budget overruns – check in daily on ROI, projections. Shut it down early and re-try if needed.

5. Schedule elongation – if you ship every day, guaranteed, how can you ever be late?

Source: "Dear Developers, Small Batch Releases Are Your Friend," Coté, Feb 2016, also in The Register.

"There have obviously been culture shocks. What is more interesting though is that the teams that tend to have the worst culture shock are not those typical teams that you might think of, audit or compliance. In fact, if you’re able to successfully communicate to them what you’re doing, DevOps and all of the associated practices seem like common sense. [Auditors] say, 'Why weren’t we doing this before?’”

"DevOps Enterprise Adoption at E*TRADE,”InfoQ/DOES, Jan 2016.

Page 18: Better ways of developing software

DevOps, the word defines itself

18

(1.)DevOps is the practice of operations and development engineers participating together in the entire service lifecycle, from design through the development process to production support.

(2.)DevOps is also characterized by operations staff making use of many of the same techniques as developers for their systems work.

Source: “What Is DevOps?,” The Agile Admin, Dec 2011. For more: Effective DevOps, Jennifer Davis, Katherine Daniels, May, 2016; see The Practice of Cloud System Administration, chapter 8 for an in-depth definition and discussion. Also, see Damon Edward's 2012 piece "Use DevOps to Turn IT into a Strategic Weapon.” Also, The Phoenix Project for a story of DevOps in the style of The Goal.

Page 19: Better ways of developing software

Defining DeveOps by practices & goals, part 1

19

Page 20: Better ways of developing software

Defining DeveOps by practices & goals, part 2

20

Page 21: Better ways of developing software

Go big with small batches

Sources: "Ford teams with Pivotal, bets on Cloud Foundry," Larry Dignan, ZDNet, Dec 2015;”Application Modernization, Service By Microservice," Forrester, Dec 2015. See also BMC Software case study in The Concise Executive Guide to Agile and Cutter Executive Report, Vol. 9, No. 9, 2008.

"We did an analysis of hundreds of projects over a multi-year period. The ones that delivered in less than a quarter succeeded about 80% of the time, while the ones that lasted more than a year failed at about the same rate. We're simply not very good at large efforts.”

-Dev leader, large financial institution

21

“…sped up software development times from months to weeks using agile techniques.”

Page 22: Better ways of developing software

The Tools

22

Page 23: Better ways of developing software

23

Sources: "The New Developer Landscape: Understanding the Modern Software Developer," Al Hilwa, March 2016. See also: "Application Modernization, Service By Microservice," Kurt Bittner and Randy Heffner, Dec 2015, Forrester. See the“The RedMonk Programming Language Rankings: January 2016” for popular programming languages.

Page 24: Better ways of developing software

A microservices approach gives you organizational agility, at the expense of architectural complexity

24

Benefits• Decoupling service

releases, teams• Faster innovation cycles• Composite applications

vs. monolithic apps

Problems• The one about the

murder mystery• Incompatible APIs• You still need other

people to do work

It’s worth solving the problems if you want the benefits…and it’s possible!

Page 25: Better ways of developing software

The Application Framework promises

Codebase Dependencies Config Backing Services

Build, Release,

RunProcesses Port

BindingConcurrenc

y

DisposabilityDev/Prod

Parity Logs Admin Processes

Source: “The Twelve-Factor App.”

• A set of best practices for developing and deploying cloud-native software.

• Practices translate into platform features and workflow requirements.

25

Page 26: Better ways of developing software

A deep look at the cloud platform value line

26Source: Pivotal; "Technical Dive into Cloud Native Application Platforms," Brian Gracely, Wikibon, Sep 2015. See also "The cloud-native future," Casey West, O'Reilly Radar, Aug 2015

Page 27: Better ways of developing software

Transforming:

27

Page 28: Better ways of developing software

Transformation starts with “management”

• Leading change management

• Setting, communicating, tracking goals

• Dramatic organization change, gradually

Sources: Leading the Transformation, 2015; “Management’s Job is orchestrating the ‘why,’” 2015; The Concise Executive Guide to Agile, 2010.28

“At the end of the day, we are just looking to start by changing one behavior, which can get the momentum spinning to drive a much larger cultural change.” -Matt Curry, Allstate

Page 29: Better ways of developing software

Staffing: There is no talent shortage

F100 CTO: “But Netflix has a superstar dev team, we don’t!”

@adrianco:“We hired them from you.”

Source: @blueboxjesse, Oct 2014. See also “There is no talent shortage.”29

Page 30: Better ways of developing software

To change, you must actually changeOr, how t-shirts jump-start digital transformation

“I can’t tell you what having a leader stand-up in front of an organization with a hoodie and t-shirt does to cultural change. It all the sudden makes it OK for everyone within that organization to participate in change.”

-Matt Curry, Allstate

30 Source: “How Allstate Upped Productivity By Killing Meetings & Wearing T-Shirts,” Coté, June 2016.

Page 31: Better ways of developing software

Dealing with legacy: the stuff that makes all the money

Quarantine

• Low impact applications

• Lacks good testing, risky to change

• Change resistant priorities

Migration Strategies

• Virtualize & re-platform to control costs and maximize management

• API gateways combined with the strangler pattern

• Portfolio management (cf. The Three Horizons)

Sources: “DevOps isn't just about the new: It's about cleaning up the old, too,” Coté, April 2016; The Cloud Native Journey, Coté, 2016; Escape Velocity, Geoffrey Moore, Sep 2011 and "To Succeed in the Long Term, Focus on the Middle Term," Geoffrey Moore, August 2007. 31

Page 32: Better ways of developing software

Cloud native approaches speed up the whole process, more efficiently than previously possible

Source: “Deployments We Can Believe In,” Diego Lapiduz, 18F, June 2015; see also “Barriers to DevOps in Government,” Coté, Oct 2015; Humana keynote, CF Summit 2015; Gregg Otto at CF Summit NA 2016.

18F/cloud.govATO reduction from

9-14 months to 2-3 days

• Humana Cue Apple Watch app:

“Two people built the app and got it into the AppStore in five weeks.”

• Large financial institution on PCF: 145 apps with 2 ops people

• “We get features in days, not weeks, and scale takes minutes, not months.” –Gregg Otto, Comcast

32

Page 33: Better ways of developing software

For more: transforming to cloud native

(1) GreenfieldProjects

(2) Dealing with

Legacy

(3)Corporate

Transformation

Get the free booklet at http://cote.io/pivotal33

Page 34: Better ways of developing software

34

Page 35: Better ways of developing software

Thanks!@cote | [email protected]: http://cote.io/unicorn-coding/

“We are uncovering better ways of developing software by doing it and

helping others do it.”- The Agile Manifesto, 2001

35

Page 36: Better ways of developing software

A cloud native platform is composed of three layers, supporting the entire life-cycle of an application from development to production

12 factor apps & Microservices

Container Orchestration

Infrastructure Automation

Polyglot buildpacks & Spring Cloud

Elastic Runtime/Diego

BOSH

Cloud NativeApplication Frameworks

Cloud NativeRuntime Platform

Cloud NativeOperations

Cloud Native Empowered CultureSource: slides in this section based on “Patterns of Cloud Native Architecture,” Agile 2015. See also : "Technical Dive into Cloud Native Application Platforms," Brian Gracely, Wikibon, Sep 2015. See also "The cloud-native future," Casey West, O'Reilly Radar, Aug 2015 36

Page 37: Better ways of developing software

Pivotal Cloud Foundry, layers & capabilities

37

Application Framework

Runtime Platform

Infrastructure Automation

Infrastructure

Dev

Dev

Ops

BOSH

Spring BootSpring Cloud

Contract: 12 factor app

Contract: BOSH Release

Contract: Cloud Provider Interface

IT Ops

Culture Cloud Native Framework Tools

Go

Source: “Get Started on Pivotal's Cloud Foundry Stack,” Coté/The New Stack, Jan 2016.

Page 38: Better ways of developing software

Pivotal Labs & Pivotal Cloud FoundryWorldwide, cross industry adoption

And many more...

38