SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Andere mochten auch (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
 

Ähnlich wie Inheriting Code

Html5 apps nikolaionken-08-06
Html5 apps nikolaionken-08-06Html5 apps nikolaionken-08-06
Html5 apps nikolaionken-08-06
Skills Matter
 
Findability in the Flow: Discovery through Linking
Findability in the Flow: Discovery through LinkingFindability in the Flow: Discovery through Linking
Findability in the Flow: Discovery through Linking
Mark Matienzo
 
Fight Spam and Hackers!
Fight Spam and Hackers!Fight Spam and Hackers!
Fight Spam and Hackers!
Liz Henry
 
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 2010
Zi Bin Cheah
 

Ähnlich wie 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
 
Findability in the Flow: Discovery through Linking
Findability in the Flow: Discovery through LinkingFindability in the Flow: Discovery through Linking
Findability in the Flow: Discovery through Linking
 
Beyond Search
Beyond SearchBeyond Search
Beyond Search
 
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
 
Geniuses are made not born 2
Geniuses are made not born 2Geniuses are made not born 2
Geniuses are made not born 2
 
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
 

Kürzlich hochgeladen

Kürzlich hochgeladen (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
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
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
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...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
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
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

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