SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
Inheriting Code
                            Anthony Eden




Tuesday, June 8, 2010
Who are you?




Tuesday, June 8, 2010
Explorer



Tuesday, June 8, 2010

You’ll need to be willing to travel down uncharted paths and create a map to find your way
out.
Historian



Tuesday, June 8, 2010

You’ll need to understand what got the code here.
Forensic Analyst



Tuesday, June 8, 2010

You’ll need to understand the motives by looking at the crime scene.
Psychic



Tuesday, June 8, 2010

You’ll need to read minds.
Sadist



Tuesday, June 8, 2010

You’ll need to be able to hurt the code.
Masochist
Tuesday, June 8, 2010

You’ll need to be able to withstand the pain that the code causes you.
Prepare



Tuesday, June 8, 2010

Adjust your mode of thinking.
Assume
                        nothing



Tuesday, June 8, 2010
You are not smarter,
                           just different


Tuesday, June 8, 2010

Put yourself in the mind of the author.
Keep an open mind about implementations that are different from how you might do it.
Understand why they may have written code in the way they did.
Learn



Tuesday, June 8, 2010
Read

Tuesday, June 8, 2010

Read the code
Read the documentation
Cause and Effect




Tuesday, June 8, 2010

What were the business needs that caused this code to be written?
What other factors were present when the code was written?
Find the dragons




Tuesday, June 8, 2010

What code was written to solve an immediate problem, but never refactored?
What code was written to old APIs?
What code was written in different styles by different developers?
Act



Tuesday, June 8, 2010
Resolve Dependencies
Tuesday, June 8, 2010
Run the test suite



Tuesday, June 8, 2010
Write tests where
                         there are none




Tuesday, June 8, 2010

Top down approach with Cucumber.
Bottom up approach with RSpec, Shoulda or plain Test::Unit.
If tests are already written then start
Regardless you’ll need both.
Simplify complex code




Tuesday, June 8, 2010

When a test is written you can refactor it.
Reduce




Tuesday, June 8, 2010

Reduce the amount of code.
Remove unused methods and classes.
Version control is your friend.
Have a rollback strategy




Tuesday, June 8, 2010

You will misunderstand the purpose of some of the code.
Be able to rollback easily.
Version control is essential.
Make small changes.
Make small
         changes




Tuesday, June 8, 2010

Small changes are easier to fix.
Small changes are easier to undo.
Compartmentalize
Tuesday, June 8, 2010

Break down monolithic code into smaller chunks.
Break down large features into smaller ones.
Protect
                                               the
                                              data


Tuesday, June 8, 2010

Along with code you’ll be inheriting data.
Write for maintainability
Tuesday, June 8, 2010

New features are always tested.
Follow conventions




Tuesday, June 8, 2010

Rails conventions are your friend.
Deploy Early,
     Deploy Often




Tuesday, June 8, 2010
Build a
          better
          legacy


Tuesday, June 8, 2010
Share knowledge




Tuesday, June 8, 2010

Pairing helps tremendously here
Perform code reviews
http://www.flickr.com/photos/natedreger/4272271989/
                              http://www.flickr.com/photos/atelier_tee/212176187/
                                http://www.flickr.com/photos/h-k-d/3617751660/
                              http://www.flickr.com/photos/vogelium/2623770180/
                          http://www.flickr.com/photos/9619972@N08/2636808004/
                            http://www.flickr.com/photos/emeraldrose/3587025487/
                              http://www.flickr.com/photos/mcgraths/3248483447/
                          http://www.flickr.com/photos/inhalingsounds/4444522392/
                            http://www.flickr.com/photos/rossinabossio/289756071/
                                 http://www.flickr.com/photos/wili/2628869994/
                           http://www.flickr.com/photos/fofurasfelinas/2549402702/
                             http://www.flickr.com/photos/ironrodart/4154904299/
                              http://www.flickr.com/photos/myrmician/228790898/
                         http://www.flickr.com/photos/29487767@N02/3644730871/
                            http://www.flickr.com/photos/teacherafael/2038442136/
                               http://www.flickr.com/photos/gamene/4015192611/
                        http://www.flickr.com/photos/shewatchedthesky/2835193235/
                               http://www.flickr.com/photos/myreflex/180524429/
                                 http://www.flickr.com/photos/tzofia/202684786/
                          http://www.flickr.com/photos/capedcrusader/3713232485/
                                 http://www.flickr.com/photos/jaxxon/93296381/
                                  http://www.flickr.com/photos/jbird/19650368/
                             http://www.flickr.com/photos/joeharper/3872936498/
                           http://www.flickr.com/photos/bassclarinetist/4448830860/
                        http://www.flickr.com/photos/winterofdiscontent/3301816514/
                         http://www.flickr.com/photos/74274915@N00/3554610230/
                               http://www.flickr.com/photos/tal_axl/4297212753/
                                http://www.flickr.com/photos/essjay/2397379457/



Tuesday, June 8, 2010

Contenu connexe

En vedette

Technical presen
Technical presenTechnical presen
Technical presenyuta090
 
Website validation
Website validationWebsite validation
Website validationmdabate
 
كتاب سلامة الاغذية للاطفال
كتاب سلامة الاغذية للاطفالكتاب سلامة الاغذية للاطفال
كتاب سلامة الاغذية للاطفالmansour dalgamouni
 
Meeting in Bulgaria - Troyan 24th may 2011
Meeting in Bulgaria - Troyan 24th may 2011Meeting in Bulgaria - Troyan 24th may 2011
Meeting in Bulgaria - Troyan 24th may 2011mary patta
 
Bow tie concepts training solutions
Bow tie concepts training solutionsBow tie concepts training solutions
Bow tie concepts training solutionsJ.K.M Nair
 

En vedette (6)

Technical presen
Technical presenTechnical presen
Technical presen
 
Website validation
Website validationWebsite validation
Website validation
 
Gl sourcing
Gl sourcingGl sourcing
Gl sourcing
 
كتاب سلامة الاغذية للاطفال
كتاب سلامة الاغذية للاطفالكتاب سلامة الاغذية للاطفال
كتاب سلامة الاغذية للاطفال
 
Meeting in Bulgaria - Troyan 24th may 2011
Meeting in Bulgaria - Troyan 24th may 2011Meeting in Bulgaria - Troyan 24th may 2011
Meeting in Bulgaria - Troyan 24th may 2011
 
Bow tie concepts training solutions
Bow tie concepts training solutionsBow tie concepts training solutions
Bow tie concepts training solutions
 

Similaire à Inheriting Code

What do we keep and what do we throw away?
What do we keep and what do we throw away?What do we keep and what do we throw away?
What do we keep and what do we throw away?Dean Shareski
 
IGNITE MySQL - Backups Don't Make Me Money
IGNITE MySQL - Backups Don't Make Me MoneyIGNITE MySQL - Backups Don't Make Me Money
IGNITE MySQL - Backups Don't Make Me Moneysarahnovotny
 
Html5 apps nikolaionken-08-06
Html5 apps nikolaionken-08-06Html5 apps nikolaionken-08-06
Html5 apps nikolaionken-08-06Skills Matter
 
What all that beta talk means for brands
What all that beta talk means for brandsWhat all that beta talk means for brands
What all that beta talk means for brandsAndy Whitlock
 
Mobile Strategy & Product Dev. - iRush
Mobile Strategy & Product Dev. - iRushMobile Strategy & Product Dev. - iRush
Mobile Strategy & Product Dev. - iRushAndrew Donoho
 
Rating system for determining whether to accept or reject objection raised by...
Rating system for determining whether to accept or reject objection raised by...Rating system for determining whether to accept or reject objection raised by...
Rating system for determining whether to accept or reject objection raised by...Tal Lavian Ph.D.
 
What Do We Keep and What Do We Throw Away
What Do We Keep and What Do We Throw AwayWhat Do We Keep and What Do We Throw Away
What Do We Keep and What Do We Throw AwayDean Shareski
 
User Experience and Agile Software Development
User Experience and Agile Software DevelopmentUser Experience and Agile Software Development
User Experience and Agile Software DevelopmentZee Spencer
 
why digital isn't about digital
why digital isn't about digitalwhy digital isn't about digital
why digital isn't about digitalAndy Whitlock
 
Libraries + Semantic Web = ?
Libraries + Semantic Web = ?Libraries + Semantic Web = ?
Libraries + Semantic Web = ?Richard Wallis
 
Fight Spam and Hackers!
Fight Spam and Hackers!Fight Spam and Hackers!
Fight Spam and Hackers!Liz Henry
 
5. fmp pre production
5. fmp pre production5. fmp pre production
5. fmp pre productionedan burrows
 
9.7 Things Every Programmer Should Know About User Experience
9.7 Things Every Programmer Should Know About User Experience9.7 Things Every Programmer Should Know About User Experience
9.7 Things Every Programmer Should Know About User ExperienceBurr Sutter
 
The Platypus Problem
The Platypus ProblemThe Platypus Problem
The Platypus ProblemJeff Eaton
 
Coaching for Life aka "Agile Coaching? Sure thing! What about Life Coaching i...
Coaching for Life aka "Agile Coaching? Sure thing! What about Life Coaching i...Coaching for Life aka "Agile Coaching? Sure thing! What about Life Coaching i...
Coaching for Life aka "Agile Coaching? Sure thing! What about Life Coaching i...Victoria Schiffer
 
Html5/CSS3 in shanghai 2010
Html5/CSS3 in shanghai 2010Html5/CSS3 in shanghai 2010
Html5/CSS3 in shanghai 2010Zi Bin Cheah
 
The sword and Other Tales
The sword and Other TalesThe sword and Other Tales
The sword and Other TalesLaurie Young
 
Growing and Fostering Software Craftsmanship
Growing and Fostering Software CraftsmanshipGrowing and Fostering Software Craftsmanship
Growing and Fostering Software CraftsmanshipCory Foy
 

Similaire à Inheriting Code (20)

HTML5 offline
HTML5 offlineHTML5 offline
HTML5 offline
 
What do we keep and what do we throw away?
What do we keep and what do we throw away?What do we keep and what do we throw away?
What do we keep and what do we throw away?
 
IGNITE MySQL - Backups Don't Make Me Money
IGNITE MySQL - Backups Don't Make Me MoneyIGNITE MySQL - Backups Don't Make Me Money
IGNITE MySQL - Backups Don't Make Me Money
 
Html5 apps nikolaionken-08-06
Html5 apps nikolaionken-08-06Html5 apps nikolaionken-08-06
Html5 apps nikolaionken-08-06
 
What all that beta talk means for brands
What all that beta talk means for brandsWhat all that beta talk means for brands
What all that beta talk means for brands
 
Mobile Strategy & Product Dev. - iRush
Mobile Strategy & Product Dev. - iRushMobile Strategy & Product Dev. - iRush
Mobile Strategy & Product Dev. - iRush
 
Rating system for determining whether to accept or reject objection raised by...
Rating system for determining whether to accept or reject objection raised by...Rating system for determining whether to accept or reject objection raised by...
Rating system for determining whether to accept or reject objection raised by...
 
What Do We Keep and What Do We Throw Away
What Do We Keep and What Do We Throw AwayWhat Do We Keep and What Do We Throw Away
What Do We Keep and What Do We Throw Away
 
User Experience and Agile Software Development
User Experience and Agile Software DevelopmentUser Experience and Agile Software Development
User Experience and Agile Software Development
 
why digital isn't about digital
why digital isn't about digitalwhy digital isn't about digital
why digital isn't about digital
 
Facespot
FacespotFacespot
Facespot
 
Libraries + Semantic Web = ?
Libraries + Semantic Web = ?Libraries + Semantic Web = ?
Libraries + Semantic Web = ?
 
Fight Spam and Hackers!
Fight Spam and Hackers!Fight Spam and Hackers!
Fight Spam and Hackers!
 
5. fmp pre production
5. fmp pre production5. fmp pre production
5. fmp pre production
 
9.7 Things Every Programmer Should Know About User Experience
9.7 Things Every Programmer Should Know About User Experience9.7 Things Every Programmer Should Know About User Experience
9.7 Things Every Programmer Should Know About User Experience
 
The Platypus Problem
The Platypus ProblemThe Platypus Problem
The Platypus Problem
 
Coaching for Life aka "Agile Coaching? Sure thing! What about Life Coaching i...
Coaching for Life aka "Agile Coaching? Sure thing! What about Life Coaching i...Coaching for Life aka "Agile Coaching? Sure thing! What about Life Coaching i...
Coaching for Life aka "Agile Coaching? Sure thing! What about Life Coaching i...
 
Html5/CSS3 in shanghai 2010
Html5/CSS3 in shanghai 2010Html5/CSS3 in shanghai 2010
Html5/CSS3 in shanghai 2010
 
The sword and Other Tales
The sword and Other TalesThe sword and Other Tales
The sword and Other Tales
 
Growing and Fostering Software Craftsmanship
Growing and Fostering Software CraftsmanshipGrowing and Fostering Software Craftsmanship
Growing and Fostering Software Craftsmanship
 

Dernier

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 

Dernier (20)

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 

Inheriting Code

  • 1. Inheriting Code Anthony Eden Tuesday, June 8, 2010
  • 2. Who are you? Tuesday, June 8, 2010
  • 3. Explorer Tuesday, June 8, 2010 You’ll need to be willing to travel down uncharted paths and create a map to find your way out.
  • 4. Historian Tuesday, June 8, 2010 You’ll need to understand what got the code here.
  • 5. Forensic Analyst Tuesday, June 8, 2010 You’ll need to understand the motives by looking at the crime scene.
  • 6. Psychic Tuesday, June 8, 2010 You’ll need to read minds.
  • 7. Sadist Tuesday, June 8, 2010 You’ll need to be able to hurt the code.
  • 8. Masochist Tuesday, June 8, 2010 You’ll need to be able to withstand the pain that the code causes you.
  • 9. Prepare Tuesday, June 8, 2010 Adjust your mode of thinking.
  • 10. Assume nothing Tuesday, June 8, 2010
  • 11. You are not smarter, just different Tuesday, June 8, 2010 Put yourself in the mind of the author. Keep an open mind about implementations that are different from how you might do it. Understand why they may have written code in the way they did.
  • 13. Read Tuesday, June 8, 2010 Read the code Read the documentation
  • 14. Cause and Effect Tuesday, June 8, 2010 What were the business needs that caused this code to be written? What other factors were present when the code was written?
  • 15. Find the dragons Tuesday, June 8, 2010 What code was written to solve an immediate problem, but never refactored? What code was written to old APIs? What code was written in different styles by different developers?
  • 18. Run the test suite Tuesday, June 8, 2010
  • 19. Write tests where there are none Tuesday, June 8, 2010 Top down approach with Cucumber. Bottom up approach with RSpec, Shoulda or plain Test::Unit. If tests are already written then start Regardless you’ll need both.
  • 20. Simplify complex code Tuesday, June 8, 2010 When a test is written you can refactor it.
  • 21. Reduce Tuesday, June 8, 2010 Reduce the amount of code. Remove unused methods and classes. Version control is your friend.
  • 22. Have a rollback strategy Tuesday, June 8, 2010 You will misunderstand the purpose of some of the code. Be able to rollback easily. Version control is essential. Make small changes.
  • 23. Make small changes Tuesday, June 8, 2010 Small changes are easier to fix. Small changes are easier to undo.
  • 24. Compartmentalize Tuesday, June 8, 2010 Break down monolithic code into smaller chunks. Break down large features into smaller ones.
  • 25. Protect the data Tuesday, June 8, 2010 Along with code you’ll be inheriting data.
  • 26. Write for maintainability Tuesday, June 8, 2010 New features are always tested.
  • 27. Follow conventions Tuesday, June 8, 2010 Rails conventions are your friend.
  • 28. Deploy Early, Deploy Often Tuesday, June 8, 2010
  • 29. Build a better legacy Tuesday, June 8, 2010
  • 30. Share knowledge Tuesday, June 8, 2010 Pairing helps tremendously here Perform code reviews
  • 31. http://www.flickr.com/photos/natedreger/4272271989/ http://www.flickr.com/photos/atelier_tee/212176187/ http://www.flickr.com/photos/h-k-d/3617751660/ http://www.flickr.com/photos/vogelium/2623770180/ http://www.flickr.com/photos/9619972@N08/2636808004/ http://www.flickr.com/photos/emeraldrose/3587025487/ http://www.flickr.com/photos/mcgraths/3248483447/ http://www.flickr.com/photos/inhalingsounds/4444522392/ http://www.flickr.com/photos/rossinabossio/289756071/ http://www.flickr.com/photos/wili/2628869994/ http://www.flickr.com/photos/fofurasfelinas/2549402702/ http://www.flickr.com/photos/ironrodart/4154904299/ http://www.flickr.com/photos/myrmician/228790898/ http://www.flickr.com/photos/29487767@N02/3644730871/ http://www.flickr.com/photos/teacherafael/2038442136/ http://www.flickr.com/photos/gamene/4015192611/ http://www.flickr.com/photos/shewatchedthesky/2835193235/ http://www.flickr.com/photos/myreflex/180524429/ http://www.flickr.com/photos/tzofia/202684786/ http://www.flickr.com/photos/capedcrusader/3713232485/ http://www.flickr.com/photos/jaxxon/93296381/ http://www.flickr.com/photos/jbird/19650368/ http://www.flickr.com/photos/joeharper/3872936498/ http://www.flickr.com/photos/bassclarinetist/4448830860/ http://www.flickr.com/photos/winterofdiscontent/3301816514/ http://www.flickr.com/photos/74274915@N00/3554610230/ http://www.flickr.com/photos/tal_axl/4297212753/ http://www.flickr.com/photos/essjay/2397379457/ Tuesday, June 8, 2010