Fredrik Wendt
fredrik@growing-agility.com
@wendtse
Team Performance
The 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 easily
Humans don't scale
Computers scale easily
Humans don't scale
Humans are expensive
Computers 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 is
an approach to delivering software that
reduces the cost, time and risk
of 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: Ubuntu
Install : Eclipse, Git,
: Java8
Controlled
Development
Environment!
✔ 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

Impact of CD, Clean Code, ... on Team Performance