SlideShare a Scribd company logo
1 of 49
Download to read offline
The Programmer's Bookshelf
Lisa Backer, DockYard
Lisa Backer,
Senior Software
Engineer
Image by Mystic Art Design from Pixabay
The Programmer's Bookshelf
The Pragmatic Programmer
Refactoring
The Cathedral & The Bazaar
The Programmer's Bookshelf:
Abridged
The Agile Manifesto
The Pragmatic Programmer The Pragmatic Programmer
(revised)
Refactoring Refactoring (revised)
The Cathedral & The Bazaar
20191999 2000 2001
Andy Hunt
Dave Thomas
The Pragmatic Programmer
The Pragmatic Programmer
Care About Your Craft
Provide Options, Don't Make Lame Excuses
Don't Live with Broken Windows
Remember the Big Picture
Make Quality a Requirements Issue
Invest Regularly in Your Knowledge Portfolio
DRY - Don't Repeat Yourself
Eliminate Effects Between Unrelated Things
There are No Final Decisions
Refactor Early, Refactor Often
https://www.merriam-webster.com/dictionary/pragmatic
The Pragmatic Programmer
The Cat Ate My Source Code
Photo by Shubhankar Sharma, Unsplash
Tip: Don't Live with Broken Windows
Photo by Maite Tiscar, Unsplash
Even if there's a fire raging, you don't
want to be the first one to make a mess
The Pragmatic Programmer
Photo by Maite Tiscar, Unsplash
"Striving to be better, oft we mar
what's well"
- King Lear 1.4
Image by Ahmad Ardity from Pixabay
Know When to Stop
Your Knowledge Portfolio
"An investment in knowledge always
pays the best interest"
- Benjamin Franklin
Your Knowledge Portfolio
Serious investors invest regularly - as a
habit.
Diversification is key to long-term success.
Smart investors balance their portfolios
between conservative and high-risk, high-
reward investments.
Investors try to buy low and sell high for
maximum return
Portfolios should be reviewed and
rebalanced periodically
"Every piece of knowledge must have a single, unambiguous,
authoritative representation within a system"
Photo by Tim de Groot, Unsplash
- The Evils of Duplication, The Pragmatic Programmer
DRY: Don't Repeat Yourself
Tip: There are No Final Decisions
Image by Alexas Fotos from Pixabay
https://pxhere.com/en/photo/444239
Martin Fowler
Kent Beck
By Rube Goldberg - The Duluth Herald (Nov. 1921) on the Internet Archive, Public Domain
Refactoring
"Programmers are
constantly in maintenance
mode. Our understanding
changes day by day."
- The Pragmatic Programmer
Photo by NeONBRAND on Unsplash
Refactoring
Refactoring
Tests
Change Commit
Refactoring
"Any fool can write code that a computer
can understand. Good programmers write
code that humans can understand."
Photo by Paolo Nicolello on Unsplash
Why Refactoring
Photo by Paolo Nicolello on Unsplash
To fix broken windows
To eliminate duplicated code
To make software easier to
understand
To find bugs
Add new features faster
What to tell your Manager
When NOT to Refactor
Photo by Luke van Zyl on Unsplash
Code that you only use rather
than modify
Rarely touched code
Small feature, big refactor
Rewriting as a better option
Photo by Markus Spiske on Unsplash
Refactoring: Code Smells
"If it stinks, change it."
-- Grandma Beck,
discussing child-rearing philosophy
https://pxhere.com/en/photo/823055
Refactoring: Pattern Catalog
Refactoring
Refactoring
Refactoring
Refactoring
Photo by Ben Dumond on Unsplash
Eric Raymond
Photo by Léa V on Unsplash
The Cathedral & The Bazaar
Photo by MAX LIBERTINE on Unsplash
The Cathedral & The Bazaar
"Given enough eyeballs, all
bugs are shallow."
- The Cathedral & The Bazaar
Photo by Artem Beliaikin on Unsplash
Linus's Law
"Release early. Release often. And listen to your customers."
Photo by Denis Chick on Unsplash
Photo by Jeroen Bosch on Unsplash
Territorial
Photo by Jeroen Bosch on Unsplash Photo by Joel J. Martínez on Unsplash
Territorial or Egoless?
Photo by Andre Hunter on Unsplash
"Enjoyment predicts efficiency"
The Cathedral & The Bazaar
Brilliant leaders amplify their vision through open source
Photo by BRUNO CERVERA on Unsplash
https://twitter.com/_ericelliott/status/1186991102890565632
The Programmer's Bookshelf
The Programmer's Bookshelf
Design Patterns: "Gang of Four": Gamma,
Helm, Johnson, Vlissides
The Mythical Man Month: Fred Brooks
Clean Code: Robert "Uncle Bob" Martin
Code Complete: Steve McConnell
Domain Drive Design: Eric Evans
Test Driven Development: Ken Beck
xUnit Test Patterns: Gerard Meszaros
Growing Object-Oriented Software, Guided
by Tests: Steve Freeman, Nat Pryce
Masterminds of Programming: Frederico
Biancuzzi
Seven Languages in Seven Weeks: Bruce Tate
The Art of Computer Programming: Donald
Knuth
The Agile Manifesto
And so many others...
Thank you!
Lisa Backer, DockYard
eshtadc @eshtadc
Image by Alexas Fotos from Pixabay

More Related Content

What's hot (6)

Better than google.
Better than google.Better than google.
Better than google.
 
Pdf 20211029 121135_0000
Pdf 20211029 121135_0000Pdf 20211029 121135_0000
Pdf 20211029 121135_0000
 
better than google
better than googlebetter than google
better than google
 
Be
BeBe
Be
 
better than google
better than googlebetter than google
better than google
 
Better than Google.
Better than Google.Better than Google.
Better than Google.
 

Similar to CascadiaJS: The Programmer's Bookshelf

Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learned
Wojciech Koszek
 
AWS Cloud Kata | Taipei - Getting to MVP
AWS Cloud Kata | Taipei - Getting to MVPAWS Cloud Kata | Taipei - Getting to MVP
AWS Cloud Kata | Taipei - Getting to MVP
Amazon Web Services
 

Similar to CascadiaJS: The Programmer's Bookshelf (20)

Programmer's Bookshelf - Remote Edition
Programmer's Bookshelf - Remote EditionProgrammer's Bookshelf - Remote Edition
Programmer's Bookshelf - Remote Edition
 
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
 
Make Tools
Make ToolsMake Tools
Make Tools
 
Resisting The Feature Creature
Resisting The Feature CreatureResisting The Feature Creature
Resisting The Feature Creature
 
Why do lazy developers write beautiful code?
Why do lazy developers write beautiful code?Why do lazy developers write beautiful code?
Why do lazy developers write beautiful code?
 
Openstack summit
Openstack summitOpenstack summit
Openstack summit
 
Moving Large Apps to React - NYC JS
Moving Large Apps to React - NYC JSMoving Large Apps to React - NYC JS
Moving Large Apps to React - NYC JS
 
Worse Is Better, for Better or for Worse
Worse Is Better, for Better or for WorseWorse Is Better, for Better or for Worse
Worse Is Better, for Better or for Worse
 
Worse is better, for better or for worse - Kevlin Henney
Worse is better, for better or for worse - Kevlin HenneyWorse is better, for better or for worse - Kevlin Henney
Worse is better, for better or for worse - Kevlin Henney
 
Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learned
 
JS Fest 2019/Autumn. Alexandre Gomes. Embrace the "react fatigue"
JS Fest 2019/Autumn. Alexandre Gomes. Embrace the "react fatigue"JS Fest 2019/Autumn. Alexandre Gomes. Embrace the "react fatigue"
JS Fest 2019/Autumn. Alexandre Gomes. Embrace the "react fatigue"
 
It is difficult
It is difficultIt is difficult
It is difficult
 
Rethinking Best Practices
Rethinking Best PracticesRethinking Best Practices
Rethinking Best Practices
 
Cloud Economics
Cloud EconomicsCloud Economics
Cloud Economics
 
AWS Cloud Kata | Taipei - Getting to MVP
AWS Cloud Kata | Taipei - Getting to MVPAWS Cloud Kata | Taipei - Getting to MVP
AWS Cloud Kata | Taipei - Getting to MVP
 
From dev to ops and beyond - getting it done
From dev to ops and beyond - getting it doneFrom dev to ops and beyond - getting it done
From dev to ops and beyond - getting it done
 
Portafolio
PortafolioPortafolio
Portafolio
 
Worse Is Better, for Better or for Worse
Worse Is Better, for Better or for WorseWorse Is Better, for Better or for Worse
Worse Is Better, for Better or for Worse
 
Worse Is Better, for Better or for Worse
Worse Is Better, for Better or for WorseWorse Is Better, for Better or for Worse
Worse Is Better, for Better or for Worse
 
Designer vs Developer
Designer vs DeveloperDesigner vs Developer
Designer vs Developer
 

Recently uploaded

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Recently uploaded (20)

Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 

CascadiaJS: The Programmer's Bookshelf