xcode extreme programming - #pragmamark 2014, milan
DESCRIPTION
Speed up the development and increase the app quality are the keywords for success. Good points, not so simple to achieve…. eXtreme Programming (XP) is an agile discipline of software development based on values of simplicity, communication, feedback, courage, and respect. The software is built around the needs of the customer through a continuous release of working software and creating a learning loop that dramatically improves the quality of the final product. Some XP practices, like TDD and Continuous Integration, can benefit of the support of software tools and frameworks. In this session we will see how XCTest and Xcode Continuous Integration can streamline the process of the iOS XP team.TRANSCRIPT
Xcode eXtreme Programming
@giulioroggero
Milan, October 4 2014
CEO Agile ReloadedCTO MakeItApp.eu
Do you want to reach the island?
Motorboat?
How much time to build it?Do I need it?
Agile approach
MotorboadFinal product
Comfortable and fast
Rowing BoatMinimum viable product
Reliable and useful
RaftEmbarrassing Validate my hypothesis
Agile approach
MotorboadFinal product
Comfortable and fast
Rowing BoatMinimum viable product
Reliable and useful
RaftEmbarrassing Validate my hypothesis
Is the motorboat really useful?
Agile approach
FerryThe Useful Final product!
Cheap and capacious
Rowing BoatMinimum viable product
Reliable and useful
RaftEmbarrassing Validate my hypothesis
The product with value for the customer!
HOW?
Plan
Do
Check
Act
Deming Cycle
continuousimprovement
http://agilemanifesto.org
“Individuals and interactionsover
processes and tools”
The first value of Agile
http://agilemanifesto.org
“Working softwareover
comprehensive documentation”
The second value of Agile
A WAY TO FOLLOW?
eXtreme programming
XP
"XP is the practice and pursuit of effective simplicity, as applied to software development.”
Victor (from the XpMailingList)http://c2.com/cgi/wiki?ExtremeProgrammingPhoto by Yogendra Joshi
XPis a trial and
error programming
Photo by Giulio Roggero
design first
Photo by Scott McKittrick
write tests to that design
program
test
refactor
iterate!
Design
Write Test – Test Fail
Program
Run Test – Test Pass
Refactor-Test Pass
incremental
Spaghetti code
Clean code• Less bugs• Easy to understand• Simple to modify• Quicker loading time• Save time and money
What do you need?
• Cross functional team.• Customer involved.• Collaborative people.
XP Values
Communication
Simplicity
Courage
Feedback
XP Practices
• The Planning Game• Small Releases• Metaphor• Simple design• Testing• Refactoring
• Pair programming• Collective Ownership• Continuous Integration• Sustainable Pace• One-Site Customer• Coding Standard
XP Practices
• The Planning Game• Small Releases• Metaphor• Simple design
• Testing• Refactoring
• Pair programming• Collective Ownership
• Continuous Integration• Sustainable Pace• One-Site Customer• Coding Standars
TDD
Do you know what TDD is?
Yes 90%
Do you think TDD is a good practice?
Yes 75%
Do you use TDD?Yes 5%
CI
Source Control
Build
Test
Continuous Integration
Developers
XCTest
Developer on local Xcode
OS X Server
Xcode Bot
Push Monitor
Build and Test
Virtual and physical
Source Control
Build
Test
Continuous Integration
Developers
Git on OS X Server
XCode on OS X Server
XCode local
XCode on OS X Server
Xcode Continuous Integration
Multiple devices testing!
Demo
https://macserver.makeitapp.eu
Next steps…
www.agileday.it
Italian Agile Day 14-15 november 2014
http://www.extremeprogramming.org/
http://c2.com/cgi/wiki?ExtremeProgramming
http://nshipster.com/xctestcase/https://www.apple.com/osx/server/
https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/testing_with_xcode/Introduction/Introduction.html
https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide-continuous_integration/000-About_Continuous_Integration/about_continuous_integration.html#//apple_ref/doc/uid/TP40013292
Co-founder and CEO of Agile ReloadedCo-founder and CTO of MakeItApp.eu
@giulioroggero
Password: Elparainbow1