SlideShare una empresa de Scribd logo
1 de 125
Descargar para leer sin conexión
DEVELOPER
How great teams get s%*t done
@svenpet
Sven Peters
DevOps Advocate
JOY
The last
10
years
The Cloud
Container
Microservices
Security &
Governance
You build it,
you run it.
DEVELOPER
COGNITIVE
LOAD
BACK<
Productivity
to
Bethlehem Steel
1898
Bethlehem Steel
Frederick
Winslow Taylor
Bethlehem Steel
Bethlehem Steel
Bethlehem Steel
400%
increase
Workers
only doing repetitive task
Productivity New roles
Managers
doing the thinking
years ago
125
Productivity
T-shirt
sizes
Story
points
Developer
Lines of
code
Issues to
done
Cycle
time
Deployment
frequency
Developer
10% more story points
20% faster pull request reviews
Thank you Taylor
DEVELOPER EXPERIENCE
BACK<
DevJ
to
oy
DEVELOPER JOY
Dev
Progress
Dev
Quality
Dev
Value
TECHNICAL
DEBT
of dev time used for
10%
of dev teams manage
42% TECHNICAL
DEBT
of dev time used for
10%
of dev teams manage
42% TECHNICAL
DEBT
It all starts out
nicely
package com.miguelcatalan.materialsearchview;
import android.app.Activity;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import java.lang.re
fl
ect.Field;
import java.util.List;
/**
* @author Sven Peters
*/
public class MaterialSearchView extends FrameLayout implements Filter.FilterListener {
private MenuItem mMenuItem;
private boolean mIsSearchOpen = false;
public MaterialSearchView(Context context) {
this(context, null);
}
public MaterialSearchView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
mUserQuery = s;
startFilter(s);
MaterialSearchView.this.onTextChanged(s);
}
}
It all starts out
nicely
/**
* Return true if search is open
*
* @return
*/
public boolean isSearchOpen() {
return mIsSearchOpen;
}
/**
* Open Search View. This will animate the showing of the view.
*/
public void showSearch() {
showSearch(true);
}
/**
* Open Search View. if animate is true, Animate the showing of the view.
*
* @param animate
*/
public void showSearch(boolean animate) {
if (isSearchOpen()) {
return;
}
//Request Focus
mSearchSrcTextView.setText(null);
mSearchSrcTextView.requestFocus();
if (animate) {
AnimationUtil.fadeInView(mSearchLayout, AnimationUtil.ANIMATION_DURATION_MEDIUM
@Override
public boolean onAnimationStart(View view) {
return false;
}
/**
* Return true if search is open
*
* @return
*/
public boolean isSearchOpen() {
return mIsSearchOpen;
}
/**
* Open Search View. This will animate the showing of the view.
*/
public void showSearch() {
showSearch(true);
}
/**
* Open Search View. if animate is true, Animate the showing of the view.
*
* @param animate
*/
public void showSearch(boolean animate) {
if (isSearchOpen()) {
return;
}
//Request Focus
mSearchSrcTextView.setText(null);
mSearchSrcTextView.requestFocus();
if (animate) {
AnimationUtil.fadeInView(mSearchLayout, AnimationUtil.ANIMATION_DURATION_MEDIUM
@Override
public boolean onAnimationStart(View view) {
return false;
}
Sometimes it
ends in a mess
}
Your coding guidelines
caught this.
Your coding guidelines
caught this, right?
Team
Class names
Are CamelCase
Prefix private variables with underscore
Private variables
Single Responsibility Principal
A class should have one and only one job
Don’t assemble String with +
Use either .format or % instead
No line longer than 120 characters
Line length
Don’t use line continuations
Break up long lines using parentheses ()
No Tabs
4 spaces are for indention
Are lowercase. The can contain underscores
Variables and function name
Python Coding Guidelines
You’re doing
code reviews.
You’re doing
code reviews, right?
export default function DateTimeSlider({ onChangeCallback, timeZone,
time_min, time_max, autoUpdateSlider }: DateTimeSliderProps) {
const [timeWindow, setTimeWindow] = React.useState<number>(30 * 60)
const [value, setValue] = React.useState<number[]>(
[time_min, time_min + timeWindow],
);
const handleSliderChange = useCallback((
event: Event,
newValue: number | number[],
activeThumb: number) => {
if (!Array.isArray(newValue)) {
return;
}
+ var counter = 5;
+ var factorial = 1;
+ while (counter > 1)
+ factorial *= counter—;
+ const clamped = Math.min(newValue[0], time_max - timeWindow);
+ setValue([clamped, clamped + timeWindow]);
+ }
}, [timeWindow, time_min, time_max]);
const throttledValue = useThrottle<number[]>(value, 200)
WTF @sven?
export default function DateTimeSlider({ onChangeCallback, timeZone,
time_min, time_max, autoUpdateSlider }: DateTimeSliderProps) {
const [timeWindow, setTimeWindow] = React.useState<number>(30 * 60)
const [value, setValue] = React.useState<number[]>(
[time_min, time_min + timeWindow],
);
const handleSliderChange = useCallback((
event: Event,
newValue: number | number[],
activeThumb: number) => {
if (!Array.isArray(newValue)) {
return;
}
+ var counter = 5;
+ var factorial = 1;
+ while (counter > 1)
+ factorial *= counter—;
+ const clamped = Math.min(newValue[0], time_max - timeWindow);
+ setValue([clamped, clamped + timeWindow]);
+ }
}, [timeWindow, time_min, time_max]);
const throttledValue = useThrottle<number[]>(value, 200)
This code is ugly
export default function DateTimeSlider({ onChangeCallback, timeZone,
time_min, time_max, autoUpdateSlider }: DateTimeSliderProps) {
const [timeWindow, setTimeWindow] = React.useState<number>(30 * 60)
const [value, setValue] = React.useState<number[]>(
[time_min, time_min + timeWindow],
);
const handleSliderChange = useCallback((
event: Event,
newValue: number | number[],
activeThumb: number) => {
if (!Array.isArray(newValue)) {
return;
}
+ var counter = 5;
+ var factorial = 1;
+ while (counter > 1)
+ factorial *= counter—;
+ const clamped = Math.min(newValue[0], time_max - timeWindow);
+ setValue([clamped, clamped + timeWindow]);
+ }
}, [timeWindow, time_min, time_max]);
const throttledValue = useThrottle<number[]>(value, 200)
It would be nicer if
you’d use a for loop
Don’t be a jerk.
Who has been bullied by a jerk?
Jerks are the reason
people hate code reviews.
Team
Reviewer Author
ASSUME COMPETENCE
EXPLAIN REASONING
BE CONSTRUCTIVE
NO
BULLYING
DEVELOPER
JOY
Better Reviews
Team
Test
Test
Build & Test
TEST FAILED
Re-run Test
TEST PASSES
Create PR
.skip test
Add comment to PR
Flaky Test
Detector
Flaky Test
FlakeOff
Houston, we have a flaky test
DEBUG
FRUSTRATION
DEVELOPER
JOY
Better Tooling
Dev Flow
Code
Dev Flow
Code Build & Test Deploy
hours to minutes minutes to seconds
Review
Dev Flow
Code Build & Test Deploy
hours to minutes minutes to seconds
Review
days
Team
3 days
average from opening to merge a pull request
3 days
working on something else
and go back.
Open Pull Request
Fixing height of the screen
Open Pull Request
Adding user setting functionality
Open Pull Request
Optimising performance for chrome
@alice
@tom
@alice
@tanja
@mark
Puneet Arora
Team lead
Open Pull Request
Fixing height of the screen
Open Pull Request
Adding user setting functionality
Open Pull Request
Optimising performance for chrome
@alice
@tom
@alice
@tanja
@mark
Puneet Bot
3 days
From
To
1.2 days
WAIT
TIME
DEVELOPER
JOY
Faster Reviews
Flow
Traffic Flow: 191 (vehicles per minute)
Traffic Flow: 235
Traffic Flow: 360
Traffic Flow: 1099
Autonomous
Teams
Feature A
Platform
Feature C
Feature B
Testing
Autonomous Teams Highly Aligned
Designer
Tester
Ops
Developer
Autonomous Teams Highly Aligned
Designer
Tester
Ops
Developer
Developer
Developer
Developer
Team
Devs Exploratory Test
Automated Test A
Q
Devs Exploratory Test
Automated Test A
Q 🍹
Devs
Exploratory Test
Automated Test
Quality
Assistance
A
Q
Feature Test
Strategy
QA Engineer
Test Automation
Platform
Software Engineer on Test
DEVELOPER
COGNITIVE
LOAD
DEVELOPER
JOY
Quality Assistance
What users imagine
What users imagine
User stories
Running
software
Product Developers
Interviews
Research
Measurements
Experiments
Prototypes
Team
Make
Create
Make
Create
Wonder
Problem
Wonder
Problem
Explore
Solution
Make
Create
Impact
Measure
Wonder
Problem
Explore
Solution
Make
Create
Impact
Measure
Developer
Product
Goals, Signals,
Measures
Demos
Prototypes
Project kick off
Wonder Explore Make Impact
Demos
DEMO
OPEN
Everyone can join
OUTCOME
Show customer
value
CELEBRATE
Recognise great
work
GROUP
THINKING
Challenge the
solution
SESSION
REWORK
FRUSTRATION
DEVELOPER
JOY
Involve Everyone
What would
Taylor say?
If you can’t measure it,
you can’t improve it.
Peter Drucker
Time To Restore
Change Failure Rate
Start with DORA
Lead time for changes
Deployment Frequency
Ticket Cycle Time
From idea to deployment
How often do we deploy code to production
Deployment Frequency
Wait Time
Total of build time, deploy time, etc..
Keeping the lights on
Time spend on bugs, infra, etc.
Ratio between successful and failed deploys
Change Failure Rate
Bug resolutions
Critical bugs fixed
Incident Response Time
How fast are we reacting?
What’s the time to bring a service up again
Time to Restore
Important for the team?
Ask your developers
Measurements
& Baselines
The Wallboard
The Wallboard problem
QUALITY
METRICS
Check
Ops
Weekly team ritual
Ask your developers CheckOps
GitHub
Good Day Project
M T T
W F M T T
W F
Activities / day
How good was your day?
Review Deploy
Idea Code
3 days 1 day 3 days 2 days
12 days
Plan
Software development is not a production line
Measure what is important,
don’t make important what
you can measure.
Robert McNamara
Measure & Baseline
Ask your developers
Measuring
Developer Joy
Speed to ship quality code
Waiting time
Execution independence
Access to tools, processes, and practices
Effort managing external standards
Managing code, pipeline, infrastructure
Ramp up time
Developer satisfaction
Measuring
Developer Joy
Speed to ship quality code
Waiting time
Execution independence
Access to tools, processes, and practices
Effort managing external standards
Managing code, pipeline, infrastructure
Ramp up time
Developer satisfaction
Measuring
Developer Joy
Speed to ship quality code
Waiting time
Execution independence
Access to tools, processes, and practices
Effort managing external standards
Managing code, pipeline, infrastructure
Ramp up time
Developer satisfaction
Measuring
Developer Joy
Speed to ship quality code
Waiting time
Execution independence
Access to tools, processes, and practices
Effort managing external standards
Managing code, pipeline, infrastructure
Ramp up time
Developer satisfaction
Measuring
Developer Joy
Speed to ship quality code
Waiting time
Execution independence
Access to tools, processes, and practices
Effort managing external standards
Managing code, pipeline, infrastructure
Ramp up time
Developer satisfaction
Measuring
Developer Joy
Speed to ship quality code
Waiting time
Execution independence
Access to tools, processes, and practices
Effort managing external standards
Managing code, pipeline, infrastructure
Ramp up time
Developer satisfaction
Measuring
Developer Joy
Speed to ship quality code
Waiting time
Execution independence
Access to tools, processes, and practices
Effort managing external standards
Managing code, pipeline, infrastructure
Ramp up time
Developer satisfaction
Measuring
Developer Joy
Speed to ship quality code
Waiting time
Execution independence
Access to tools, processes, and practices
Effort managing external standards
Managing code, pipeline, infrastructure
Ramp up time
Developer satisfaction
Measuring
Developer Joy
Speed to ship quality code
Waiting time
Execution independence
Access to tools, processes, and practices
Effort managing external standards
Managing code, pipeline, infrastructure
Ramp up time
Developer satisfaction
Measuring
Developer Joy
Speed to ship quality code
Waiting time
Execution independence
Access to tools, processes, and practices
Effort managing external standards
Managing code, pipeline, infrastructure
Ramp up time
Developer satisfaction
Speed to ship quality code
Waiting time
Execution independence
Access to tools, processes, and practices
Effort managing external standards
Managing code, pipeline, infrastructure
Ramp up time
Developer satisfaction
Satisfaction
Speed to ship quality code
Waiting time
Execution independence
Access to tools, processes, and practices
Effort managing external standards
Managing code, pipeline, infrastructure
Ramp up time
Developer satisfaction
Importance Satisfaction
Satisfaction
Importance
Ramp up time
Wait time
Speed to ship
Managing code,
tools , pipelines
Access to tools
Execution independence
Managing external standards
Developer satisfaction
How is your
DEVELOPER JOY
bit.ly/developerjoy
?
Try to fix
things
DevEx
hack
20%
time
DevJoy
week
Include in
sprint
Try to fix
things
Spread
learnings
+
Measurements
Survey results
Survey results
Measurements
AUTONOMOUS
TEAMS
AUTONOMOUS
TEAMS
Fix things
AUTONOMOUS
TEAMS
Fix things
Dev
Progress
Dev
Quality
Dev
Value
Fix things
Dev
Progress
Dev
Quality
Dev
Value
DEVELOPER
JOY
Thank
you
DEVELOPER
Don’t forget to have fun.
JOY
Thank
you
bit.ly/developerjoy
@svenpet
DEVELOPER JOY

Más contenido relacionado

La actualidad más candente

General physiology lecture 3
General physiology lecture 3General physiology lecture 3
General physiology lecture 3Huang Yu-Wen
 
The Heart
The HeartThe Heart
The Heartkrismd
 
Respiratory system changes during exercises
Respiratory system changes during exercisesRespiratory system changes during exercises
Respiratory system changes during exercisesDr Usha (Physio)
 
knee joint anatomy and clinical
knee joint anatomy and clinicalknee joint anatomy and clinical
knee joint anatomy and clinicalShanika Bandara
 
Anatomy of pubic symphysis and sacroiliac joint (www.Am-medicine.com)
Anatomy of pubic symphysis and sacroiliac joint (www.Am-medicine.com)Anatomy of pubic symphysis and sacroiliac joint (www.Am-medicine.com)
Anatomy of pubic symphysis and sacroiliac joint (www.Am-medicine.com)Ammedicine Medicine
 
Upperlimb joint (shoulder joint).pptx
Upperlimb joint (shoulder joint).pptxUpperlimb joint (shoulder joint).pptx
Upperlimb joint (shoulder joint).pptxTazakka tanzim
 
Tissue fluid formation & Edema slideshare
Tissue fluid formation & Edema slideshareTissue fluid formation & Edema slideshare
Tissue fluid formation & Edema slideshareAnu Priya
 
The Lymphatic System &amp; Lymphoid Organs And Tissues
The Lymphatic System &amp; Lymphoid Organs And TissuesThe Lymphatic System &amp; Lymphoid Organs And Tissues
The Lymphatic System &amp; Lymphoid Organs And Tissuesmsu
 
Properties of skeletal muscle
Properties of skeletal muscleProperties of skeletal muscle
Properties of skeletal musclemariaidrees3
 
Ankle joint & joints of foot pdf lecture notes by Dr.N.Mugunthan
Ankle joint & joints of foot pdf lecture notes by Dr.N.MugunthanAnkle joint & joints of foot pdf lecture notes by Dr.N.Mugunthan
Ankle joint & joints of foot pdf lecture notes by Dr.N.MugunthanMUGUNTHAN Dr.Mugunthan
 
Anatomy of Radio ulnar joints
Anatomy of Radio  ulnar jointsAnatomy of Radio  ulnar joints
Anatomy of Radio ulnar jointsDINESH KUMAR D
 
Ankle and Tibiofibular Joint.pptx
Ankle and Tibiofibular Joint.pptxAnkle and Tibiofibular Joint.pptx
Ankle and Tibiofibular Joint.pptxMathew Joseph
 

La actualidad más candente (20)

Regulation of respiration
Regulation of respiration Regulation of respiration
Regulation of respiration
 
General physiology lecture 3
General physiology lecture 3General physiology lecture 3
General physiology lecture 3
 
Thermoregulation of Body
Thermoregulation of BodyThermoregulation of Body
Thermoregulation of Body
 
The Heart
The HeartThe Heart
The Heart
 
Respiratory system changes during exercises
Respiratory system changes during exercisesRespiratory system changes during exercises
Respiratory system changes during exercises
 
knee joint anatomy and clinical
knee joint anatomy and clinicalknee joint anatomy and clinical
knee joint anatomy and clinical
 
Joints and movements
Joints  and movementsJoints  and movements
Joints and movements
 
Upper limb bones
Upper limb bonesUpper limb bones
Upper limb bones
 
Anatomy of pubic symphysis and sacroiliac joint (www.Am-medicine.com)
Anatomy of pubic symphysis and sacroiliac joint (www.Am-medicine.com)Anatomy of pubic symphysis and sacroiliac joint (www.Am-medicine.com)
Anatomy of pubic symphysis and sacroiliac joint (www.Am-medicine.com)
 
Cardiac muscle tissue
Cardiac muscle tissueCardiac muscle tissue
Cardiac muscle tissue
 
Upperlimb joint (shoulder joint).pptx
Upperlimb joint (shoulder joint).pptxUpperlimb joint (shoulder joint).pptx
Upperlimb joint (shoulder joint).pptx
 
Tissue fluid formation & Edema slideshare
Tissue fluid formation & Edema slideshareTissue fluid formation & Edema slideshare
Tissue fluid formation & Edema slideshare
 
The Lymphatic System &amp; Lymphoid Organs And Tissues
The Lymphatic System &amp; Lymphoid Organs And TissuesThe Lymphatic System &amp; Lymphoid Organs And Tissues
The Lymphatic System &amp; Lymphoid Organs And Tissues
 
Properties of skeletal muscle
Properties of skeletal muscleProperties of skeletal muscle
Properties of skeletal muscle
 
Muscle physiology
Muscle physiologyMuscle physiology
Muscle physiology
 
Neuromuscular junction
Neuromuscular junctionNeuromuscular junction
Neuromuscular junction
 
Ankle joint & joints of foot pdf lecture notes by Dr.N.Mugunthan
Ankle joint & joints of foot pdf lecture notes by Dr.N.MugunthanAnkle joint & joints of foot pdf lecture notes by Dr.N.Mugunthan
Ankle joint & joints of foot pdf lecture notes by Dr.N.Mugunthan
 
Muscle Physiology.pdf
Muscle Physiology.pdfMuscle Physiology.pdf
Muscle Physiology.pdf
 
Anatomy of Radio ulnar joints
Anatomy of Radio  ulnar jointsAnatomy of Radio  ulnar joints
Anatomy of Radio ulnar joints
 
Ankle and Tibiofibular Joint.pptx
Ankle and Tibiofibular Joint.pptxAnkle and Tibiofibular Joint.pptx
Ankle and Tibiofibular Joint.pptx
 

Similar a Developer Joy - How great teams get s%*t done

Acceptance Testing With Selenium
Acceptance Testing With SeleniumAcceptance Testing With Selenium
Acceptance Testing With Seleniumelliando dias
 
Unit tests & TDD
Unit tests & TDDUnit tests & TDD
Unit tests & TDDDror Helper
 
Code Quality Practice and Tools
Code Quality Practice and ToolsCode Quality Practice and Tools
Code Quality Practice and ToolsBob Paulin
 
Django for mobile applications
Django for mobile applicationsDjango for mobile applications
Django for mobile applicationsHassan Abid
 
Introduction to test_driven_development
Introduction to test_driven_developmentIntroduction to test_driven_development
Introduction to test_driven_developmenthaochenglee
 
1 aleksandr gritsevski - attd example using
1   aleksandr gritsevski - attd example using1   aleksandr gritsevski - attd example using
1 aleksandr gritsevski - attd example usingIevgenii Katsan
 
Boost delivery stream with code discipline engineering
Boost delivery stream with code discipline engineeringBoost delivery stream with code discipline engineering
Boost delivery stream with code discipline engineeringMiro Wengner
 
A Guide to Event-Driven SRE-inspired DevOps
A Guide to Event-Driven SRE-inspired DevOpsA Guide to Event-Driven SRE-inspired DevOps
A Guide to Event-Driven SRE-inspired DevOpsAndreas Grabner
 
Testing ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NETTesting ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NETBen Hall
 
Никита Галкин "Testing in Frontend World"
Никита Галкин "Testing in Frontend World"Никита Галкин "Testing in Frontend World"
Никита Галкин "Testing in Frontend World"Fwdays
 
Tdd is not about testing (OOP)
Tdd is not about testing (OOP)Tdd is not about testing (OOP)
Tdd is not about testing (OOP)Gianluca Padovani
 
The Art of Unit Testing - Towards a Testable Design
The Art of Unit Testing - Towards a Testable DesignThe Art of Unit Testing - Towards a Testable Design
The Art of Unit Testing - Towards a Testable DesignVictor Rentea
 
Better Monitoring for Python: Inclusive Monitoring with Prometheus (Pycon Ire...
Better Monitoring for Python: Inclusive Monitoring with Prometheus (Pycon Ire...Better Monitoring for Python: Inclusive Monitoring with Prometheus (Pycon Ire...
Better Monitoring for Python: Inclusive Monitoring with Prometheus (Pycon Ire...Brian Brazil
 
Stopping the Rot - Putting Legacy C++ Under Test
Stopping the Rot - Putting Legacy C++ Under TestStopping the Rot - Putting Legacy C++ Under Test
Stopping the Rot - Putting Legacy C++ Under TestSeb Rose
 
Workshop quality assurance for php projects - phpdublin
Workshop quality assurance for php projects - phpdublinWorkshop quality assurance for php projects - phpdublin
Workshop quality assurance for php projects - phpdublinMichelangelo van Dam
 
Testing in FrontEnd World by Nikita Galkin
Testing in FrontEnd World by Nikita GalkinTesting in FrontEnd World by Nikita Galkin
Testing in FrontEnd World by Nikita GalkinSigma Software
 

Similar a Developer Joy - How great teams get s%*t done (20)

Acceptance Testing With Selenium
Acceptance Testing With SeleniumAcceptance Testing With Selenium
Acceptance Testing With Selenium
 
Unit tests & TDD
Unit tests & TDDUnit tests & TDD
Unit tests & TDD
 
Code Quality Practice and Tools
Code Quality Practice and ToolsCode Quality Practice and Tools
Code Quality Practice and Tools
 
Django for mobile applications
Django for mobile applicationsDjango for mobile applications
Django for mobile applications
 
Continuous Testing
Continuous TestingContinuous Testing
Continuous Testing
 
Introduction to test_driven_development
Introduction to test_driven_developmentIntroduction to test_driven_development
Introduction to test_driven_development
 
1 aleksandr gritsevski - attd example using
1   aleksandr gritsevski - attd example using1   aleksandr gritsevski - attd example using
1 aleksandr gritsevski - attd example using
 
Boost delivery stream with code discipline engineering
Boost delivery stream with code discipline engineeringBoost delivery stream with code discipline engineering
Boost delivery stream with code discipline engineering
 
Web-First Design Patterns
Web-First Design PatternsWeb-First Design Patterns
Web-First Design Patterns
 
A Guide to Event-Driven SRE-inspired DevOps
A Guide to Event-Driven SRE-inspired DevOpsA Guide to Event-Driven SRE-inspired DevOps
A Guide to Event-Driven SRE-inspired DevOps
 
Testing ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NETTesting ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NET
 
Никита Галкин "Testing in Frontend World"
Никита Галкин "Testing in Frontend World"Никита Галкин "Testing in Frontend World"
Никита Галкин "Testing in Frontend World"
 
Tdd is not about testing (OOP)
Tdd is not about testing (OOP)Tdd is not about testing (OOP)
Tdd is not about testing (OOP)
 
Fundamentals of unit testing
Fundamentals of unit testingFundamentals of unit testing
Fundamentals of unit testing
 
The Art of Unit Testing - Towards a Testable Design
The Art of Unit Testing - Towards a Testable DesignThe Art of Unit Testing - Towards a Testable Design
The Art of Unit Testing - Towards a Testable Design
 
Better Monitoring for Python: Inclusive Monitoring with Prometheus (Pycon Ire...
Better Monitoring for Python: Inclusive Monitoring with Prometheus (Pycon Ire...Better Monitoring for Python: Inclusive Monitoring with Prometheus (Pycon Ire...
Better Monitoring for Python: Inclusive Monitoring with Prometheus (Pycon Ire...
 
Stopping the Rot - Putting Legacy C++ Under Test
Stopping the Rot - Putting Legacy C++ Under TestStopping the Rot - Putting Legacy C++ Under Test
Stopping the Rot - Putting Legacy C++ Under Test
 
Agile testing
Agile testingAgile testing
Agile testing
 
Workshop quality assurance for php projects - phpdublin
Workshop quality assurance for php projects - phpdublinWorkshop quality assurance for php projects - phpdublin
Workshop quality assurance for php projects - phpdublin
 
Testing in FrontEnd World by Nikita Galkin
Testing in FrontEnd World by Nikita GalkinTesting in FrontEnd World by Nikita Galkin
Testing in FrontEnd World by Nikita Galkin
 

Más de Sven Peters

✊ Join the DEV-olution: A culture of empowered developers
✊ Join the DEV-olution: A culture of empowered developers✊ Join the DEV-olution: A culture of empowered developers
✊ Join the DEV-olution: A culture of empowered developersSven Peters
 
Team Shaping - Building a shared understanding
Team Shaping - Building a shared understandingTeam Shaping - Building a shared understanding
Team Shaping - Building a shared understandingSven Peters
 
Teams Flow, Stay in sync, async
Teams Flow, Stay in sync, asyncTeams Flow, Stay in sync, async
Teams Flow, Stay in sync, asyncSven Peters
 
The Hitchhiker's Guide to a Great Developer Career
The Hitchhiker's Guide to a Great Developer CareerThe Hitchhiker's Guide to a Great Developer Career
The Hitchhiker's Guide to a Great Developer CareerSven Peters
 
The Effective Developer - Work Smarter, not Harder
The Effective Developer - Work Smarter, not HarderThe Effective Developer - Work Smarter, not Harder
The Effective Developer - Work Smarter, not HarderSven Peters
 
How to Become a Conference Speaker
How to Become a Conference SpeakerHow to Become a Conference Speaker
How to Become a Conference SpeakerSven Peters
 
The Effective Developer - Work Smarter, Not Harder
The Effective Developer - Work Smarter, Not HarderThe Effective Developer - Work Smarter, Not Harder
The Effective Developer - Work Smarter, Not HarderSven Peters
 
5 Things: How to Rock Remote Work
5 Things: How to Rock Remote Work5 Things: How to Rock Remote Work
5 Things: How to Rock Remote WorkSven Peters
 
A Career Advice: Change is the Only Constant
A Career Advice: Change is the Only ConstantA Career Advice: Change is the Only Constant
A Career Advice: Change is the Only ConstantSven Peters
 
Be More Productive with Confluence
Be More Productive with ConfluenceBe More Productive with Confluence
Be More Productive with ConfluenceSven Peters
 
Less Process, more Guidance with a Team Playbook
Less Process, more Guidance with a Team PlaybookLess Process, more Guidance with a Team Playbook
Less Process, more Guidance with a Team PlaybookSven Peters
 
The Secret Sauce of Successful Teams
The Secret Sauce of Successful TeamsThe Secret Sauce of Successful Teams
The Secret Sauce of Successful TeamsSven Peters
 
Rise of the Machines - Automate your Development
Rise of the Machines - Automate your DevelopmentRise of the Machines - Automate your Development
Rise of the Machines - Automate your DevelopmentSven Peters
 
Kick-@$$ Sofware Development
Kick-@$$ Sofware DevelopmentKick-@$$ Sofware Development
Kick-@$$ Sofware DevelopmentSven Peters
 
The 5 Hottest Atlassian News from Summit 2014
The 5 Hottest Atlassian News from Summit 2014The 5 Hottest Atlassian News from Summit 2014
The 5 Hottest Atlassian News from Summit 2014Sven Peters
 
Atlassian - Software For Every Team
Atlassian - Software For Every TeamAtlassian - Software For Every Team
Atlassian - Software For Every TeamSven Peters
 
It's the culture, but not as you know it
It's the culture, but not as you know itIt's the culture, but not as you know it
It's the culture, but not as you know itSven Peters
 
Atlassian - The Latest & Greatest April 2014
Atlassian - The Latest & Greatest April 2014Atlassian - The Latest & Greatest April 2014
Atlassian - The Latest & Greatest April 2014Sven Peters
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git RightSven Peters
 

Más de Sven Peters (20)

✊ Join the DEV-olution: A culture of empowered developers
✊ Join the DEV-olution: A culture of empowered developers✊ Join the DEV-olution: A culture of empowered developers
✊ Join the DEV-olution: A culture of empowered developers
 
Team Shaping - Building a shared understanding
Team Shaping - Building a shared understandingTeam Shaping - Building a shared understanding
Team Shaping - Building a shared understanding
 
Teams Flow, Stay in sync, async
Teams Flow, Stay in sync, asyncTeams Flow, Stay in sync, async
Teams Flow, Stay in sync, async
 
The Hitchhiker's Guide to a Great Developer Career
The Hitchhiker's Guide to a Great Developer CareerThe Hitchhiker's Guide to a Great Developer Career
The Hitchhiker's Guide to a Great Developer Career
 
The Effective Developer - Work Smarter, not Harder
The Effective Developer - Work Smarter, not HarderThe Effective Developer - Work Smarter, not Harder
The Effective Developer - Work Smarter, not Harder
 
How to Become a Conference Speaker
How to Become a Conference SpeakerHow to Become a Conference Speaker
How to Become a Conference Speaker
 
The Effective Developer - Work Smarter, Not Harder
The Effective Developer - Work Smarter, Not HarderThe Effective Developer - Work Smarter, Not Harder
The Effective Developer - Work Smarter, Not Harder
 
5 Things: How to Rock Remote Work
5 Things: How to Rock Remote Work5 Things: How to Rock Remote Work
5 Things: How to Rock Remote Work
 
A Career Advice: Change is the Only Constant
A Career Advice: Change is the Only ConstantA Career Advice: Change is the Only Constant
A Career Advice: Change is the Only Constant
 
Be More Productive with Confluence
Be More Productive with ConfluenceBe More Productive with Confluence
Be More Productive with Confluence
 
Less Process, more Guidance with a Team Playbook
Less Process, more Guidance with a Team PlaybookLess Process, more Guidance with a Team Playbook
Less Process, more Guidance with a Team Playbook
 
The Secret Sauce of Successful Teams
The Secret Sauce of Successful TeamsThe Secret Sauce of Successful Teams
The Secret Sauce of Successful Teams
 
Rise of the Machines - Automate your Development
Rise of the Machines - Automate your DevelopmentRise of the Machines - Automate your Development
Rise of the Machines - Automate your Development
 
Kick-@$$ Sofware Development
Kick-@$$ Sofware DevelopmentKick-@$$ Sofware Development
Kick-@$$ Sofware Development
 
The 5 Hottest Atlassian News from Summit 2014
The 5 Hottest Atlassian News from Summit 2014The 5 Hottest Atlassian News from Summit 2014
The 5 Hottest Atlassian News from Summit 2014
 
Coding Culture
Coding CultureCoding Culture
Coding Culture
 
Atlassian - Software For Every Team
Atlassian - Software For Every TeamAtlassian - Software For Every Team
Atlassian - Software For Every Team
 
It's the culture, but not as you know it
It's the culture, but not as you know itIt's the culture, but not as you know it
It's the culture, but not as you know it
 
Atlassian - The Latest & Greatest April 2014
Atlassian - The Latest & Greatest April 2014Atlassian - The Latest & Greatest April 2014
Atlassian - The Latest & Greatest April 2014
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git Right
 

Último

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 

Último (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

Developer Joy - How great teams get s%*t done