How to increase agility and speed in your organization by applying DevOps principles. How to go faster and be more flexible to the needs of your business. Easy steps to reduce bottlenecks, release faster and with more confidence.
Improve visibility
Measure state
Minimize constraints
Improve collaboration
Enable action
Practice change
Focus
Automate
7. Communicate
• Talk about delivery, issues and improvement
• Sell ideas, everyone who buys in is a stakeholder and a customer
• Talk to product teams about the cost of technical debt
• backlog, bugs, lack of documentation
• Chat - nothing beats realtime
• Standup rooms, team rooms, team standup rooms
• History/async helps - it’s self-documenting and remote-friendly
• Regular pairing, code review
8. Show and Tell
• Visibility for simpler and more passive communication
• Reduce communication time
• Reduce decision time
• Reduce investigation time
• Start with Post-its/Whiteboard, iterate
• Notifications where necessary - alerts vs checking
• Correlate data to create meaning
9. Measure
• Discover limiting constraints (bottlenecks), friction, lag, waste
• Start with the basics: How long from dev to prod?
• Bugs per release / LOC per release / cyclomatic complexity
• Onboarding a dev takes a week
• Adding a server takes 3 weeks
• 5 days to start a new project
• Measure by hand if you have to at first
• Find a baseline to progress from
10. Minimize Constraints
• Remove or minimize bottlenecks once discovered
• Hypothesize and validate
• Documentation / Tools / Automation
• Data and power in the hands of whoever needs it
• Ask data questions of data, not people
• People are often a constraint
• Empower people - Build Trust
• Everyone's job is enabling the business
11. Practice Change
• Make change minimal and frequent
• Variables vs hard code
• Separate code and config
• Break the monolith down
• Avoid batch changes, study your use case
• Practice deployments / code review / retrospectives
• Fire drills!: Staff member leaves / datacentre down
12. Focus
• Remove disruption to allow for engagement
• Clean alerts / Define severity / Scrutinize every escalation / Parse logs
• Don't just backlog, icebox - if it’s important you won’t forget about it
• Define roles - proper governance allows for action - rotate occasionally
• Let your talent work - provide empowerment and time
• Standups are important, but try doing them through async chat
• Measure a need and hire help or dedicate resources
13. Automate
• Do you really need manual QA?
• Analyze holistically, improve incrementally
• Focus on the pipeline
• Promoted builds
• Config management
• Never touch prod
• Notifications
14. Celebrate!
• Build on your momentum and progress by reflection and
sharing
• Improvement is awesome! Faster iteration means more to
celebrate
• Failure hurts less the more you do it and the less it costs
• Share with the entire organization, wins help everyone
• Give kudos to your champions, testers and early adopters -
they’re your best customers
15. The Advanced Class
• Tools can help once you’re off to the races
• Jenkins + plugins is a powerhouse:
• Build metrics - stats on all builds
• Plot - graph progress
• Join - breakup jobs and aggregate results
• SLOCCount - LOC counts
• Violations - static analysis
• HTML publisher - show it all off
Objective: Share an understanding or vision - the idea that things can go faster
Talk about delivery
Make it known it’s a concern of yours
Find out who’s interested
Find allys
Once you get traction, you’ll have to deal with improving communication and communicating issues - next section
Technical debt: - 20% new features - 80% existing features
You will need feedback and buy in
Objective: Visibility for simpler and more passive communication
reduce communication time
reduce decision time
reduce investigation time
dashing / geckoboard / new relic / kibana / sentry / airbrake
jenkins radiator / dashboard / project statistics
Correlate - deploys with server performance and user experience
Push vs pull - zapier / deadmanssnitch
Objective: Discover limiting constraints, lag, waste
Start with the basics: Change lead time
Bugs per release / LOC per release / cyclomatic complexity
Find friction/bottlenecks/constraints
Scalability, ease of onboarding, context switching
Adding a server takes 3 weeks
Onboarding a new dev takes a week
Switching projects takes a day
Stopwatch, time command, subtracting timestamps
People are often a constraint
Objective: repeatability and consistency are key to improvement
selenium / browserstack
browsershots / wraith
jenkins / circle / travis
Objective: Build on momentum and progress by reflection and sharing
Jenkins plugins
The groundwork for going fast
Nothing can be fast without being properly engineered
Starts with a commitment to quality and trust
Incremental improvement