xcode extreme programming - #pragmamark 2014, milan

44
Xcode eXtreme Programmin @giulioroggero Milan, October 4 2014 CEO Agile Reloade CTO MakeItApp.eu

Upload: giulio-roggero

Post on 27-Nov-2014

352 views

Category:

Software


0 download

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

Page 1: Xcode eXtreme Programming - #pragmamark 2014, Milan

Xcode eXtreme Programming

@giulioroggero

Milan, October 4 2014

CEO Agile ReloadedCTO MakeItApp.eu

Page 2: Xcode eXtreme Programming - #pragmamark 2014, Milan

Do you want to reach the island?

Page 3: Xcode eXtreme Programming - #pragmamark 2014, Milan

Motorboat?

How much time to build it?Do I need it?

Page 4: Xcode eXtreme Programming - #pragmamark 2014, Milan

Agile approach

MotorboadFinal product

Comfortable and fast

Rowing BoatMinimum viable product

Reliable and useful

RaftEmbarrassing Validate my hypothesis

Page 5: Xcode eXtreme Programming - #pragmamark 2014, Milan

Agile approach

MotorboadFinal product

Comfortable and fast

Rowing BoatMinimum viable product

Reliable and useful

RaftEmbarrassing Validate my hypothesis

Is the motorboat really useful?

Page 6: Xcode eXtreme Programming - #pragmamark 2014, Milan

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!

Page 7: Xcode eXtreme Programming - #pragmamark 2014, Milan

HOW?

Page 8: Xcode eXtreme Programming - #pragmamark 2014, Milan

Plan

Do

Check

Act

Deming Cycle

continuousimprovement

Page 9: Xcode eXtreme Programming - #pragmamark 2014, Milan

http://agilemanifesto.org

“Individuals and interactionsover

processes and tools”

The first value of Agile

Page 10: Xcode eXtreme Programming - #pragmamark 2014, Milan

http://agilemanifesto.org

“Working softwareover

comprehensive documentation”

The second value of Agile

Page 11: Xcode eXtreme Programming - #pragmamark 2014, Milan

A WAY TO FOLLOW?

Page 12: Xcode eXtreme Programming - #pragmamark 2014, Milan

eXtreme programming

XP

Page 13: Xcode eXtreme Programming - #pragmamark 2014, Milan

"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

Page 14: Xcode eXtreme Programming - #pragmamark 2014, Milan

XPis a trial and

error programming

Photo by Giulio Roggero

Page 15: Xcode eXtreme Programming - #pragmamark 2014, Milan

design first

Photo by Scott McKittrick

Page 16: Xcode eXtreme Programming - #pragmamark 2014, Milan

write tests to that design

Page 17: Xcode eXtreme Programming - #pragmamark 2014, Milan

program

Page 18: Xcode eXtreme Programming - #pragmamark 2014, Milan

test

Page 19: Xcode eXtreme Programming - #pragmamark 2014, Milan

refactor

Page 20: Xcode eXtreme Programming - #pragmamark 2014, Milan

iterate!

Page 21: Xcode eXtreme Programming - #pragmamark 2014, Milan

Design

Write Test – Test Fail

Program

Run Test – Test Pass

Refactor-Test Pass

incremental

Page 22: Xcode eXtreme Programming - #pragmamark 2014, Milan

Spaghetti code

Page 23: Xcode eXtreme Programming - #pragmamark 2014, Milan

Clean code• Less bugs• Easy to understand• Simple to modify• Quicker loading time• Save time and money

Page 24: Xcode eXtreme Programming - #pragmamark 2014, Milan

What do you need?

• Cross functional team.• Customer involved.• Collaborative people.

Page 25: Xcode eXtreme Programming - #pragmamark 2014, Milan

XP Values

Communication

Simplicity

Courage

Feedback

Page 26: Xcode eXtreme Programming - #pragmamark 2014, Milan

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

Page 27: Xcode eXtreme Programming - #pragmamark 2014, Milan

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

Page 28: Xcode eXtreme Programming - #pragmamark 2014, Milan

TDD

Page 29: Xcode eXtreme Programming - #pragmamark 2014, Milan
Page 30: Xcode eXtreme Programming - #pragmamark 2014, Milan

Do you know what TDD is?

Yes 90%

Do you think TDD is a good practice?

Yes 75%

Do you use TDD?Yes 5%

Page 31: Xcode eXtreme Programming - #pragmamark 2014, Milan
Page 32: Xcode eXtreme Programming - #pragmamark 2014, Milan

CI

Page 33: Xcode eXtreme Programming - #pragmamark 2014, Milan

Source Control

Build

Test

Continuous Integration

Developers

Page 34: Xcode eXtreme Programming - #pragmamark 2014, Milan
Page 35: Xcode eXtreme Programming - #pragmamark 2014, Milan

XCTest

Page 36: Xcode eXtreme Programming - #pragmamark 2014, Milan
Page 37: Xcode eXtreme Programming - #pragmamark 2014, Milan

Developer on local Xcode

OS X Server

Xcode Bot

Push Monitor

Build and Test

Virtual and physical

Page 38: Xcode eXtreme Programming - #pragmamark 2014, Milan

Source Control

Build

Test

Continuous Integration

Developers

Git on OS X Server

XCode on OS X Server

XCode local

XCode on OS X Server

Page 39: Xcode eXtreme Programming - #pragmamark 2014, Milan

Xcode Continuous Integration

Page 40: Xcode eXtreme Programming - #pragmamark 2014, Milan

Multiple devices testing!

Page 41: Xcode eXtreme Programming - #pragmamark 2014, Milan

Demo

https://macserver.makeitapp.eu

Page 42: Xcode eXtreme Programming - #pragmamark 2014, Milan

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

Page 43: Xcode eXtreme Programming - #pragmamark 2014, Milan

Co-founder and CEO of Agile ReloadedCo-founder and CTO of MakeItApp.eu

@giulioroggero

Page 44: Xcode eXtreme Programming - #pragmamark 2014, Milan

Password: Elparainbow1