SlideShare una empresa de Scribd logo
1 de 111
Descargar para leer sin conexión
That’s not my code!
@MicheleTitolo
Thursday, May 15, 14
Thursday, May 15, 14
Thursday, May 15, 14
Thursday, May 15, 14
Thursday, May 15, 14
Thursday, May 15, 14
The Art of Code
Thursday, May 15, 14
Purpose
Thursday, May 15, 14
What are you trying to solve?
Thursday, May 15, 14
Fixing a bug?
Thursday, May 15, 14
Adding a new feature?
Thursday, May 15, 14
Updating a web API?
Thursday, May 15, 14
This helps focus your search
Thursday, May 15, 14
First thing’s first.
Thursday, May 15, 14
Does it build?
Thursday, May 15, 14
No! Wait!
Thursday, May 15, 14
You can and will learn a lot
before building
Thursday, May 15, 14
Meta Information
Thursday, May 15, 14
Who? What? When? Where?
Thursday, May 15, 14
Why? How?
Thursday, May 15, 14
Who? What? When? Where?
Thursday, May 15, 14
Who?
Thursday, May 15, 14
Source Control
Thursday, May 15, 14
git log
Thursday, May 15, 14
Or use a GUI
Thursday, May 15, 14
How many people?
Thursday, May 15, 14
Are all the commits by one
user?
Thursday, May 15, 14
Are the commit messages
useful?
Thursday, May 15, 14
Xcode File Headers
Thursday, May 15, 14
//
// MRTViewController.m
// Awesome App
//
// Created by Michele Titolo on 5/03/14.
// Copyright (c) 2014 Awesome Co. All rights reserved.
//
Thursday, May 15, 14
Find in Project
Thursday, May 15, 14
grep
Thursday, May 15, 14
Were the files mostly created
by one person?
Thursday, May 15, 14
Were they created by 17
people?
Thursday, May 15, 14
Too many cooks in the kitchen
Thursday, May 15, 14
Common encounters
Thursday, May 15, 14
One shop, two shop
red shop, blue shop
Thursday, May 15, 14
Bifurcated code
Thursday, May 15, 14
No source control?
No names in headers?
Thursday, May 15, 14
This tells you about the client
Thursday, May 15, 14
What?
Thursday, May 15, 14
Use the app
Thursday, May 15, 14
There will be things you don’t
understand until you use it.
Thursday, May 15, 14
Thursday, May 15, 14
Use the app
Thursday, May 15, 14
Ask questions
Thursday, May 15, 14
Identify edge cases
Thursday, May 15, 14
...because you will have to deal
with them
Thursday, May 15, 14
Oh, and write all of this down
Thursday, May 15, 14
Future you will thank you
Thursday, May 15, 14
When?
Thursday, May 15, 14
What iOS version?
Thursday, May 15, 14
What version was it built for?
Thursday, May 15, 14
Updating iOS 4 apps is a PITA
Thursday, May 15, 14
Backwards compatibility?
Thursday, May 15, 14
Is it using new stuff?
Thursday, May 15, 14
How is it checking version?
Thursday, May 15, 14
The further back, the more
fragile the code will be
Thursday, May 15, 14
Gaps in development?
Thursday, May 15, 14
If it went months untouched,
why?
Thursday, May 15, 14
Years?
Thursday, May 15, 14
Technical Debt
Thursday, May 15, 14
Where?
Thursday, May 15, 14
Contractors? In-House? Shop?
Thursday, May 15, 14
In-house -> out-of-house
Thursday, May 15, 14
Contractors - who?
Thursday, May 15, 14
Dev Shops
Thursday, May 15, 14
Outsourced?
Thursday, May 15, 14
Not written by someone who’s
native language is yours
Thursday, May 15, 14
i.e. “colour” vs “color”
Thursday, May 15, 14
iOS Experience?
Thursday, May 15, 14
Internationalization
Thursday, May 15, 14
What countries is the app
available?
Thursday, May 15, 14
What languages are
supported?
Thursday, May 15, 14
The Code
Thursday, May 15, 14
The fun part!
Thursday, May 15, 14
Why?
Thursday, May 15, 14
Who, What, When, Where
Thursday, May 15, 14
Just don’t jump to conclusions
Thursday, May 15, 14
How?
Thursday, May 15, 14
File
Structure
Thursday, May 15, 14
Xcode vs HD
Thursday, May 15, 14
Images
Thursday, May 15, 14
Make a map of where
everything is
Thursday, May 15, 14
Building
Thursday, May 15, 14
Does it compile?
Thursday, May 15, 14
...because it doesn’t always
Thursday, May 15, 14
Missing dependencies?
Thursday, May 15, 14
Weird build settings?
Thursday, May 15, 14
Warnings
Thursday, May 15, 14
Number
Thursday, May 15, 14
Severity
Thursday, May 15, 14
#warning
Thursday, May 15, 14
Comments
Thursday, May 15, 14
TODO, FIXME, ???, $#^@!
Thursday, May 15, 14
Documentation?
Thursday, May 15, 14
Headers
Thursday, May 15, 14
README
Thursday, May 15, 14
The .pch
Thursday, May 15, 14
Tests
Thursday, May 15, 14
Dependencies
Thursday, May 15, 14
Submodules
Thursday, May 15, 14
CocoaPods
Thursday, May 15, 14
???
Thursday, May 15, 14
The Art of Code
Thursday, May 15, 14
Who, What, Where, When,
Why, How
Thursday, May 15, 14
Art takes time
Thursday, May 15, 14
Art takes patience
Thursday, May 15, 14
Code takes time
Thursday, May 15, 14
Code takes patience
Thursday, May 15, 14
Thanks!
@MicheleTitolo
Thursday, May 15, 14

Más contenido relacionado

Más de Michele Titolo

Mastering the Project File (AltConf)
Mastering the Project File (AltConf)Mastering the Project File (AltConf)
Mastering the Project File (AltConf)
Michele Titolo
 

Más de Michele Titolo (20)

From iOS to Distributed Systems
From iOS to Distributed SystemsFrom iOS to Distributed Systems
From iOS to Distributed Systems
 
More than po: Debugging in LLDB
More than po: Debugging in LLDBMore than po: Debugging in LLDB
More than po: Debugging in LLDB
 
APIs for the Mobile World
APIs for the Mobile WorldAPIs for the Mobile World
APIs for the Mobile World
 
Swift Generics in Theory and Practice
Swift Generics in Theory and PracticeSwift Generics in Theory and Practice
Swift Generics in Theory and Practice
 
Protocols promised-land-2
Protocols promised-land-2Protocols promised-land-2
Protocols promised-land-2
 
Multitasking
MultitaskingMultitasking
Multitasking
 
Making friendly-microservices
Making friendly-microservicesMaking friendly-microservices
Making friendly-microservices
 
More Than po: Debugging in LLDB @ CocoaConf SJ 2015
More Than po: Debugging in LLDB @ CocoaConf SJ 2015More Than po: Debugging in LLDB @ CocoaConf SJ 2015
More Than po: Debugging in LLDB @ CocoaConf SJ 2015
 
The Worst Code
The Worst CodeThe Worst Code
The Worst Code
 
More than `po`: Debugging in lldb
More than `po`: Debugging in lldbMore than `po`: Debugging in lldb
More than `po`: Debugging in lldb
 
Can't Handle My Scale v2
Can't Handle My Scale v2Can't Handle My Scale v2
Can't Handle My Scale v2
 
Can't Handle My Scale
Can't Handle My ScaleCan't Handle My Scale
Can't Handle My Scale
 
Cocoa Design Patterns in Swift
Cocoa Design Patterns in SwiftCocoa Design Patterns in Swift
Cocoa Design Patterns in Swift
 
Mastering the Project File (AltConf)
Mastering the Project File (AltConf)Mastering the Project File (AltConf)
Mastering the Project File (AltConf)
 
APIs: The Ugly
APIs: The UglyAPIs: The Ugly
APIs: The Ugly
 
APIs: The good, the bad, the ugly
APIs: The good, the bad, the uglyAPIs: The good, the bad, the ugly
APIs: The good, the bad, the ugly
 
Mobile APIs
Mobile APIsMobile APIs
Mobile APIs
 
Practical Cocoapods
Practical CocoapodsPractical Cocoapods
Practical Cocoapods
 
API Jones and the Wireframes of Doom
API Jones and the Wireframes of DoomAPI Jones and the Wireframes of Doom
API Jones and the Wireframes of Doom
 
Mastering the Project File
Mastering the Project FileMastering the Project File
Mastering the Project File
 

Último

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
anilsa9823
 
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
 

Último (20)

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
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
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
 
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 🔝✔️✔️
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
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
 
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 ...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
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
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
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
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
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...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
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
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 

That's Not My Code!