SlideShare a Scribd company logo
SoftwareSoftware
MantenibleMantenible
Carlos Blé
@carlosble
About meAbout me
Developer, Speaker, Author, Trainer, Entrepreneur
Founder of Lean Mind
Software Craftsmanhip Community Member
Brought SoCraTes to the Canary Islands
Co-founder of Agile Canarias & Agile Spain
@carlosble
@carlosble
Why is it hard to maintain?Why is it hard to maintain?
1 - Don’t consider your audience
when writing new code
2- Don’t refactor every day
@carlosble
Consider your audienceConsider your audience
Don’t aim for reusability
●
Accidental Complexity
●
Painful generalizations
●
Premature optimizations
Standards are not
enough
●
Frameworks, Three tiers, MVC,
MVP...
●
File per class, small code units, PR,
metrics
●
Linters, Compilers, Coding
standards
●
Quality Attributes
@carlosble
Explicit domain core
✔
Names and abstractions
✔
Avoid primitives
✔
Domain Driven Design
✔
Design Principles
✔
Tests as documentation
✔
Framework agnostic
✔
Database structure agnostic
Paradigms don’t solve
the problem either
●
Imperative, Declarative
●
Multi-paradigm
Domain at the coreDomain at the core
- yes! also in the front-end- yes! also in the front-end
@carlosble
input
Data
Store
output
Infrastructure:
- Controller
- Component
- Action
- ViewModel
- Dispatcher
DOMAIN CORE
Infrastructure:
- Repository
- Mapper
- Client
- DTO
- Mailer
3rd
party
system
output
Service
Entity
Value Object
Entity
Delivery
mechanism
Domain core doesn’t know the outer layers
(clean architecture: mind dependencies’ direction)
Example: Interaction-Driven DesignExample: Interaction-Driven Design
@carlosble
Image from Sandro Mancuso, author of IDD
https://dzone.com/articles/introducing-interaction-driven-design
You’re wrong anyway, refactor please!You’re wrong anyway, refactor please!
It’s about ROI
●
Avoid analysis paralysis
●
Small thoughtful changes keep the
project on the green field
●
We re-discover the business as we
work on it
●
Code is the single source of truth
Balance
●
Aim for decent quality, not
perfection
●
Technical debt under control
●
Proud of a well-done job
●
Control your optimism
@carlosble
Every day
●
Warm up reading yesterday’s
code, like a kata
●
Automatic changes with an IDE
●
Pair review, Pair programming
Pick your battles
●
The low hanging fruit
●
Refactor to understand the code
●
Discard your changes when
needed
●
Delete all the lines you safely could
●
If it works don’t touch it
Thank you!Thank you!
@carlosble

More Related Content

Similar to Maintainable software

The 360 Developer
The 360 DeveloperThe 360 Developer
The 360 Developer
enteritos
 
Open source ml systems that need to be built
Open source ml systems that need to be builtOpen source ml systems that need to be built
Open source ml systems that need to be built
Nikhil Garg
 
Mastering Agile Practices to Build High Performing Teams
Mastering Agile Practices to Build High Performing TeamsMastering Agile Practices to Build High Performing Teams
Mastering Agile Practices to Build High Performing Teams
AgileThought
 
Master Technical Recruiting Workshop: How to Recruit Top Tech Talent
Master Technical Recruiting Workshop:  How to Recruit Top Tech TalentMaster Technical Recruiting Workshop:  How to Recruit Top Tech Talent
Master Technical Recruiting Workshop: How to Recruit Top Tech Talent
RecruitingDaily.com LLC
 
Craftsmanship 2016 -BestBrains Café-møder
Craftsmanship 2016 -BestBrains Café-møderCraftsmanship 2016 -BestBrains Café-møder
Craftsmanship 2016 -BestBrains Café-møder
BestBrains
 
Craftsmanship 2016 - BestbBrains Café-møde
Craftsmanship 2016 - BestbBrains Café-mødeCraftsmanship 2016 - BestbBrains Café-møde
Craftsmanship 2016 - BestbBrains Café-møde
Rikke Veng Petersen
 
Why Isn't Clean Coding Working For My Team
Why Isn't Clean Coding Working For My TeamWhy Isn't Clean Coding Working For My Team
Why Isn't Clean Coding Working For My Team
Rob Curry
 
Machine Learning Vs. Deep Learning – An Example Implementation
Machine Learning Vs. Deep Learning – An Example ImplementationMachine Learning Vs. Deep Learning – An Example Implementation
Machine Learning Vs. Deep Learning – An Example Implementation
Synerzip
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
Ahmet Bulut
 
Nearshore presentation (feb 2013)
Nearshore presentation (feb 2013)Nearshore presentation (feb 2013)
Nearshore presentation (feb 2013)Peter Stroeve
 
How to Plan for Hyper Growth Success by Slack Software Engineer
How to Plan for Hyper Growth Success by Slack Software EngineerHow to Plan for Hyper Growth Success by Slack Software Engineer
How to Plan for Hyper Growth Success by Slack Software Engineer
Product School
 
Sdlc to agile transtion
Sdlc to agile transtion Sdlc to agile transtion
Sdlc to agile transtion
Vinod Sankaranarayanan
 
Requirements: Whose job are they anyway?
Requirements: Whose job are they anyway?Requirements: Whose job are they anyway?
Requirements: Whose job are they anyway?
allan kelly
 
Distributed Agile Teams
Distributed Agile TeamsDistributed Agile Teams
Distributed Agile Teams
Brian Estep
 
Turning Passion Into Words
Turning Passion Into WordsTurning Passion Into Words
Turning Passion Into WordsBrian Hogan
 
Requirements: Whose job are they anyway?
Requirements: Whose job are they anyway?Requirements: Whose job are they anyway?
Requirements: Whose job are they anyway?
allan kelly
 
Effective entrepreneurship for developers
Effective entrepreneurship for developersEffective entrepreneurship for developers
Effective entrepreneurship for developersCarlos Ble
 
Java Multithreading Developer.pdf
Java Multithreading Developer.pdfJava Multithreading Developer.pdf
Java Multithreading Developer.pdf
ssuser3e259f
 

Similar to Maintainable software (20)

The 360 Developer
The 360 DeveloperThe 360 Developer
The 360 Developer
 
Good behaviors
Good behaviorsGood behaviors
Good behaviors
 
Open source ml systems that need to be built
Open source ml systems that need to be builtOpen source ml systems that need to be built
Open source ml systems that need to be built
 
Mastering Agile Practices to Build High Performing Teams
Mastering Agile Practices to Build High Performing TeamsMastering Agile Practices to Build High Performing Teams
Mastering Agile Practices to Build High Performing Teams
 
Master Technical Recruiting Workshop: How to Recruit Top Tech Talent
Master Technical Recruiting Workshop:  How to Recruit Top Tech TalentMaster Technical Recruiting Workshop:  How to Recruit Top Tech Talent
Master Technical Recruiting Workshop: How to Recruit Top Tech Talent
 
Craftsmanship 2016 -BestBrains Café-møder
Craftsmanship 2016 -BestBrains Café-møderCraftsmanship 2016 -BestBrains Café-møder
Craftsmanship 2016 -BestBrains Café-møder
 
Craftsmanship 2016 - BestbBrains Café-møde
Craftsmanship 2016 - BestbBrains Café-mødeCraftsmanship 2016 - BestbBrains Café-møde
Craftsmanship 2016 - BestbBrains Café-møde
 
Why Isn't Clean Coding Working For My Team
Why Isn't Clean Coding Working For My TeamWhy Isn't Clean Coding Working For My Team
Why Isn't Clean Coding Working For My Team
 
Machine Learning Vs. Deep Learning – An Example Implementation
Machine Learning Vs. Deep Learning – An Example ImplementationMachine Learning Vs. Deep Learning – An Example Implementation
Machine Learning Vs. Deep Learning – An Example Implementation
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
Nearshore presentation (feb 2013)
Nearshore presentation (feb 2013)Nearshore presentation (feb 2013)
Nearshore presentation (feb 2013)
 
How to Plan for Hyper Growth Success by Slack Software Engineer
How to Plan for Hyper Growth Success by Slack Software EngineerHow to Plan for Hyper Growth Success by Slack Software Engineer
How to Plan for Hyper Growth Success by Slack Software Engineer
 
Sdlc to agile transtion
Sdlc to agile transtion Sdlc to agile transtion
Sdlc to agile transtion
 
Requirements: Whose job are they anyway?
Requirements: Whose job are they anyway?Requirements: Whose job are they anyway?
Requirements: Whose job are they anyway?
 
Distributed Agile Teams
Distributed Agile TeamsDistributed Agile Teams
Distributed Agile Teams
 
Turning Passion Into Words
Turning Passion Into WordsTurning Passion Into Words
Turning Passion Into Words
 
Requirements: Whose job are they anyway?
Requirements: Whose job are they anyway?Requirements: Whose job are they anyway?
Requirements: Whose job are they anyway?
 
Effective entrepreneurship for developers
Effective entrepreneurship for developersEffective entrepreneurship for developers
Effective entrepreneurship for developers
 
Java Multithreading Developer.pdf
Java Multithreading Developer.pdfJava Multithreading Developer.pdf
Java Multithreading Developer.pdf
 
Java Developer
Java DeveloperJava Developer
Java Developer
 

More from Carlos Ble

Gestión de proyectos
Gestión de proyectosGestión de proyectos
Gestión de proyectos
Carlos Ble
 
Carbon offsetting
Carbon offsettingCarbon offsetting
Carbon offsetting
Carlos Ble
 
BDD - Test Academy Barcelona 2017
BDD - Test Academy Barcelona 2017BDD - Test Academy Barcelona 2017
BDD - Test Academy Barcelona 2017
Carlos Ble
 
Distinguir entre Problema y Solución
Distinguir entre Problema y SoluciónDistinguir entre Problema y Solución
Distinguir entre Problema y Solución
Carlos Ble
 
ES6 Simplified
ES6 SimplifiedES6 Simplified
ES6 Simplified
Carlos Ble
 
Behavior Driven Development - Material de clase PMA
Behavior Driven Development - Material de clase PMABehavior Driven Development - Material de clase PMA
Behavior Driven Development - Material de clase PMA
Carlos Ble
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweek
Carlos Ble
 
TDD in the Web with Python and Django
TDD in the Web with Python and DjangoTDD in the Web with Python and Django
TDD in the Web with Python and Django
Carlos Ble
 
Charla Tdd Uji 032010
Charla Tdd Uji 032010Charla Tdd Uji 032010
Charla Tdd Uji 032010
Carlos Ble
 

More from Carlos Ble (9)

Gestión de proyectos
Gestión de proyectosGestión de proyectos
Gestión de proyectos
 
Carbon offsetting
Carbon offsettingCarbon offsetting
Carbon offsetting
 
BDD - Test Academy Barcelona 2017
BDD - Test Academy Barcelona 2017BDD - Test Academy Barcelona 2017
BDD - Test Academy Barcelona 2017
 
Distinguir entre Problema y Solución
Distinguir entre Problema y SoluciónDistinguir entre Problema y Solución
Distinguir entre Problema y Solución
 
ES6 Simplified
ES6 SimplifiedES6 Simplified
ES6 Simplified
 
Behavior Driven Development - Material de clase PMA
Behavior Driven Development - Material de clase PMABehavior Driven Development - Material de clase PMA
Behavior Driven Development - Material de clase PMA
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweek
 
TDD in the Web with Python and Django
TDD in the Web with Python and DjangoTDD in the Web with Python and Django
TDD in the Web with Python and Django
 
Charla Tdd Uji 032010
Charla Tdd Uji 032010Charla Tdd Uji 032010
Charla Tdd Uji 032010
 

Recently uploaded

Hierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power SystemHierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power System
Kerry Sado
 
PROJECT FORMAT FOR EVS AMITY UNIVERSITY GWALIOR.ppt
PROJECT FORMAT FOR EVS AMITY UNIVERSITY GWALIOR.pptPROJECT FORMAT FOR EVS AMITY UNIVERSITY GWALIOR.ppt
PROJECT FORMAT FOR EVS AMITY UNIVERSITY GWALIOR.ppt
bhadouriyakaku
 
A review on techniques and modelling methodologies used for checking electrom...
A review on techniques and modelling methodologies used for checking electrom...A review on techniques and modelling methodologies used for checking electrom...
A review on techniques and modelling methodologies used for checking electrom...
nooriasukmaningtyas
 
Swimming pool mechanical components design.pptx
Swimming pool  mechanical components design.pptxSwimming pool  mechanical components design.pptx
Swimming pool mechanical components design.pptx
yokeleetan1
 
TOP 10 B TECH COLLEGES IN JAIPUR 2024.pptx
TOP 10 B TECH COLLEGES IN JAIPUR 2024.pptxTOP 10 B TECH COLLEGES IN JAIPUR 2024.pptx
TOP 10 B TECH COLLEGES IN JAIPUR 2024.pptx
nikitacareer3
 
AIR POLLUTION lecture EnE203 updated.pdf
AIR POLLUTION lecture EnE203 updated.pdfAIR POLLUTION lecture EnE203 updated.pdf
AIR POLLUTION lecture EnE203 updated.pdf
RicletoEspinosa1
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
JoytuBarua2
 
Self-Control of Emotions by Slidesgo.pptx
Self-Control of Emotions by Slidesgo.pptxSelf-Control of Emotions by Slidesgo.pptx
Self-Control of Emotions by Slidesgo.pptx
iemerc2024
 
ACEP Magazine edition 4th launched on 05.06.2024
ACEP Magazine edition 4th launched on 05.06.2024ACEP Magazine edition 4th launched on 05.06.2024
ACEP Magazine edition 4th launched on 05.06.2024
Rahul
 
Modelagem de um CSTR com reação endotermica.pdf
Modelagem de um CSTR com reação endotermica.pdfModelagem de um CSTR com reação endotermica.pdf
Modelagem de um CSTR com reação endotermica.pdf
camseq
 
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
ssuser7dcef0
 
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressionsKuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
Victor Morales
 
sieving analysis and results interpretation
sieving analysis and results interpretationsieving analysis and results interpretation
sieving analysis and results interpretation
ssuser36d3051
 
PPT on GRP pipes manufacturing and testing
PPT on GRP pipes manufacturing and testingPPT on GRP pipes manufacturing and testing
PPT on GRP pipes manufacturing and testing
anoopmanoharan2
 
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTSHeap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Soumen Santra
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
Massimo Talia
 
DfMAy 2024 - key insights and contributions
DfMAy 2024 - key insights and contributionsDfMAy 2024 - key insights and contributions
DfMAy 2024 - key insights and contributions
gestioneergodomus
 
bank management system in java and mysql report1.pdf
bank management system in java and mysql report1.pdfbank management system in java and mysql report1.pdf
bank management system in java and mysql report1.pdf
Divyam548318
 
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
dxobcob
 
BPV-GUI-01-Guide-for-ASME-Review-Teams-(General)-10-10-2023.pdf
BPV-GUI-01-Guide-for-ASME-Review-Teams-(General)-10-10-2023.pdfBPV-GUI-01-Guide-for-ASME-Review-Teams-(General)-10-10-2023.pdf
BPV-GUI-01-Guide-for-ASME-Review-Teams-(General)-10-10-2023.pdf
MIGUELANGEL966976
 

Recently uploaded (20)

Hierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power SystemHierarchical Digital Twin of a Naval Power System
Hierarchical Digital Twin of a Naval Power System
 
PROJECT FORMAT FOR EVS AMITY UNIVERSITY GWALIOR.ppt
PROJECT FORMAT FOR EVS AMITY UNIVERSITY GWALIOR.pptPROJECT FORMAT FOR EVS AMITY UNIVERSITY GWALIOR.ppt
PROJECT FORMAT FOR EVS AMITY UNIVERSITY GWALIOR.ppt
 
A review on techniques and modelling methodologies used for checking electrom...
A review on techniques and modelling methodologies used for checking electrom...A review on techniques and modelling methodologies used for checking electrom...
A review on techniques and modelling methodologies used for checking electrom...
 
Swimming pool mechanical components design.pptx
Swimming pool  mechanical components design.pptxSwimming pool  mechanical components design.pptx
Swimming pool mechanical components design.pptx
 
TOP 10 B TECH COLLEGES IN JAIPUR 2024.pptx
TOP 10 B TECH COLLEGES IN JAIPUR 2024.pptxTOP 10 B TECH COLLEGES IN JAIPUR 2024.pptx
TOP 10 B TECH COLLEGES IN JAIPUR 2024.pptx
 
AIR POLLUTION lecture EnE203 updated.pdf
AIR POLLUTION lecture EnE203 updated.pdfAIR POLLUTION lecture EnE203 updated.pdf
AIR POLLUTION lecture EnE203 updated.pdf
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
 
Self-Control of Emotions by Slidesgo.pptx
Self-Control of Emotions by Slidesgo.pptxSelf-Control of Emotions by Slidesgo.pptx
Self-Control of Emotions by Slidesgo.pptx
 
ACEP Magazine edition 4th launched on 05.06.2024
ACEP Magazine edition 4th launched on 05.06.2024ACEP Magazine edition 4th launched on 05.06.2024
ACEP Magazine edition 4th launched on 05.06.2024
 
Modelagem de um CSTR com reação endotermica.pdf
Modelagem de um CSTR com reação endotermica.pdfModelagem de um CSTR com reação endotermica.pdf
Modelagem de um CSTR com reação endotermica.pdf
 
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
 
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressionsKuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressions
 
sieving analysis and results interpretation
sieving analysis and results interpretationsieving analysis and results interpretation
sieving analysis and results interpretation
 
PPT on GRP pipes manufacturing and testing
PPT on GRP pipes manufacturing and testingPPT on GRP pipes manufacturing and testing
PPT on GRP pipes manufacturing and testing
 
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTSHeap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
 
DfMAy 2024 - key insights and contributions
DfMAy 2024 - key insights and contributionsDfMAy 2024 - key insights and contributions
DfMAy 2024 - key insights and contributions
 
bank management system in java and mysql report1.pdf
bank management system in java and mysql report1.pdfbank management system in java and mysql report1.pdf
bank management system in java and mysql report1.pdf
 
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
一比一原版(Otago毕业证)奥塔哥大学毕业证成绩单如何办理
 
BPV-GUI-01-Guide-for-ASME-Review-Teams-(General)-10-10-2023.pdf
BPV-GUI-01-Guide-for-ASME-Review-Teams-(General)-10-10-2023.pdfBPV-GUI-01-Guide-for-ASME-Review-Teams-(General)-10-10-2023.pdf
BPV-GUI-01-Guide-for-ASME-Review-Teams-(General)-10-10-2023.pdf
 

Maintainable software

  • 2. About meAbout me Developer, Speaker, Author, Trainer, Entrepreneur Founder of Lean Mind Software Craftsmanhip Community Member Brought SoCraTes to the Canary Islands Co-founder of Agile Canarias & Agile Spain @carlosble
  • 4. Why is it hard to maintain?Why is it hard to maintain? 1 - Don’t consider your audience when writing new code 2- Don’t refactor every day @carlosble
  • 5. Consider your audienceConsider your audience Don’t aim for reusability ● Accidental Complexity ● Painful generalizations ● Premature optimizations Standards are not enough ● Frameworks, Three tiers, MVC, MVP... ● File per class, small code units, PR, metrics ● Linters, Compilers, Coding standards ● Quality Attributes @carlosble Explicit domain core ✔ Names and abstractions ✔ Avoid primitives ✔ Domain Driven Design ✔ Design Principles ✔ Tests as documentation ✔ Framework agnostic ✔ Database structure agnostic Paradigms don’t solve the problem either ● Imperative, Declarative ● Multi-paradigm
  • 6. Domain at the coreDomain at the core - yes! also in the front-end- yes! also in the front-end @carlosble input Data Store output Infrastructure: - Controller - Component - Action - ViewModel - Dispatcher DOMAIN CORE Infrastructure: - Repository - Mapper - Client - DTO - Mailer 3rd party system output Service Entity Value Object Entity Delivery mechanism Domain core doesn’t know the outer layers (clean architecture: mind dependencies’ direction)
  • 7. Example: Interaction-Driven DesignExample: Interaction-Driven Design @carlosble Image from Sandro Mancuso, author of IDD https://dzone.com/articles/introducing-interaction-driven-design
  • 8. You’re wrong anyway, refactor please!You’re wrong anyway, refactor please! It’s about ROI ● Avoid analysis paralysis ● Small thoughtful changes keep the project on the green field ● We re-discover the business as we work on it ● Code is the single source of truth Balance ● Aim for decent quality, not perfection ● Technical debt under control ● Proud of a well-done job ● Control your optimism @carlosble Every day ● Warm up reading yesterday’s code, like a kata ● Automatic changes with an IDE ● Pair review, Pair programming Pick your battles ● The low hanging fruit ● Refactor to understand the code ● Discard your changes when needed ● Delete all the lines you safely could ● If it works don’t touch it