impact of cd, clean code, ... on team performance

63
Fredrik Wendt [email protected] @wendtse Team Performance The Impact of Clean Code & CD

Upload: fredrik-wendt

Post on 13-Aug-2015

141 views

Category:

Software


0 download

TRANSCRIPT

Fredrik [email protected]

@wendtse

Team PerformanceThe Impact of Clean Code & CD

What do you see is trending?

What does your dev team(s) talk about?

#TechnicalExcellence

Trends of 2014:

✔ Clean Code & Soft-ware Craftsmanship

✔ DevOps

✔ Continuous Delivery

✔ Docker & Vagrant

✔ Scaling Agile

✔ Microservices

For each trend:– What is it?– Possible impact?– How to do it?

Big picture

Technical Excellence

Trends of 2014:

✔ Clean Code & Soft-ware Craftsmanship

✔ DevOps

✔ Continuous Delivery

✔ Docker & Vagrant

✔ Scaling Agile

✔ Microservices

✔ Clean Code & Soft-ware Craftsmanship

✔ DevOps

✔ Continuous Delivery

✔ Docker & Vagrant

✔ Scaling Agile

✔ Microservices

The primary recipient of the source code your team(s) write?

What's the main challenge for that source code to be put to effective use?

The primary recipient of the source code your team(s) write?

What's the main challenge for that source code to be put to effective use?

Why?

✔ Lower barrier to entry

✔ Higher quality

✔ Fewer bugs

✔ Less firefighting

✔ Higher throughput

✔ Job satisfaction

90%!

Write to read

Computers scale easilyHumans don't scale

Computers scale easilyHumans don't scale

Humans are expensiveComputers aren't

Why?

✔ Lower barrier to entry

✔ Higher quality

✔ Fewer bugs

✔ Less firefighting

✔ Higher throughput

✔ Job satisfaction

How?

✔ Pair programming

✔ Code reviews

✔ Book circles

✔ Online courses

✔ Coding dojos

Tools

A fool can write code

that a computer can understand.

Good programmers write code

that humans can understand.

- Martin Fowler

DevOps

more features

faster, sooner

stable systems

24/7 availability

What?

Changing how IT operates, in order to win as a whole!

✔ Systems Thinking, Flow

✔ Feedback

✔ Experimentation &Learning

What?

Changing how IT operates, in order to win as a whole!

✔ Systems Thinking, Flow

✔ Feedback

✔ Experimentation &Learning

How?

✔ Collaboration

✔ Automation

✔ Progressive Deployment

✔ Continuous Testing

✔ Continuous Delivery

✔ Continuous Monitoring

✔ Clean Code & Soft-ware Craftsmanship

✔ DevOps

✔ Continuous Delivery

✔ Docker & Vagrant

✔ Scaling Agile

✔ Microservices

Continuous Delivery isan approach to delivering software that

reduces the cost, time and riskof delivering incremental changes to users.

C. Integration

C. Delivery

C. Deployment

C. Integration: ability to integrate easily

C. Delivery: release on demand

C. Deployment: release is default

C. Integration: build?

C. Delivery: deploy, upgrade?

C. Deployment: incremental change?

C. Integration: build?

C. Delivery: deploy, upgrade?

C. Deployment: feature! A/B

How?

✔ Version Control Everything

✔ Automate just about Everything

✔ Pipeline – Value Stream Map

✔ Clean Code & Soft-ware Craftsmanship

✔ DevOps

✔ Continuous Delivery

✔ Docker & Vagrant

✔ Scaling Agile

✔ Microservices

Enables fast,

low-risk deployments

of incremental changes

✔ Clean Code & Soft-ware Craftsmanship

✔ DevOps

✔ Continuous Delivery

✔ Docker & Vagrant

✔ Scaling Agile

✔ Microservices

Hardware Hardware

Host OS Host OS

Hypervisor Docker Engine

Guest OS Guest OS

Bins/Libs Bins/Libs

App A App B

Bins/Libs Bins/Libs

App A App B

Virtualization Containerization

Hardware Hardware

Host OS Host OS

Hypervisor Docker Engine

Guest OS Guest OS

Bins/Libs Bins/Libs

App A App B

Bins/Libs Bins/Libs

App A App B

Hardware Hardware

Host OS Host OS

Hypervisor Docker Engine

Guest OS Guest OS

Bins/Libs Bins/Libs

App A App B

Bins/Libs Bins/Libs

App A App B

Hardware Hardware

Host OS Host OS

Hypervisor

Guest OS Guest OS

Bins/Libs Bins/Libs

App A App B

Bins/Libs Bins/Libs

App A App B

Bins/Libs

App A

Bins/Libs

App A

Bins/Libs

App A

Bins/Libs

App A

ProdStageCIDevel »»»

Docker

✔ Isolated deployment unit

✔ Fully (version) controlled environment

✔ Same configuration mechanism

✔ Same tools used by Dev and Ops

Docker

✔ Microservices

✔ Orchestration circus

✔ May add complexity to development work

Describes how to setup one or more machines.

Base box: UbuntuInstall : Eclipse, Git,

: Java8

ControlledDevelopmentEnvironment!

✔ Clean Code & Soft-ware Craftsmanship

✔ DevOps

✔ Continuous Delivery

✔ Docker & Vagrant

✔ Scaling Agile

✔ Microservices

Lots of people

working on

one product

Non-trivial:

✔ Integration

✔ Dependencies

✔ Synchronization

✔ Orchestration

Slicing and dicing?

✔ Clean Code & Soft-ware Craftsmanship

✔ DevOps

✔ Continuous Delivery

✔ Docker & Vagrant

✔ Scaling Agile

✔ Microservices

Microservices

✔ No one clear crisp definition

✔ NOT monolith

✔ Own lifecycle

✔ Manage it's own data

✔ Belongs to one team

✔ Team performance – ability to deliver value in a period of time, with sustainable pace

Better understand where VALUE lies & what it is,

and when we do,how to realize it

✔ Shorter cycles

✔ Faster learning (dev, ops, biz)

✔ Lower risk, safer development

Better understand what VALUE is & where it lies,

and when we do,how to quickly realize it

✔ Shorter cycles

✔ Faster learning (dev, ops, biz)

✔ Lower risk, safer development