Transcript
Page 1: Architecting apps - Can we write better code by planning ahead?

Architecting apps Can we write better code by planning ahead?

Paul Ardeleanu @pardel

Page 2: Architecting apps - Can we write better code by planning ahead?

Thank you

Page 3: Architecting apps - Can we write better code by planning ahead?

Architecting apps Can we write better code by planning ahead?

Paul Ardeleanu @pardel

Page 4: Architecting apps - Can we write better code by planning ahead?
Page 5: Architecting apps - Can we write better code by planning ahead?
Page 6: Architecting apps - Can we write better code by planning ahead?
Page 7: Architecting apps - Can we write better code by planning ahead?
Page 8: Architecting apps - Can we write better code by planning ahead?
Page 9: Architecting apps - Can we write better code by planning ahead?
Page 10: Architecting apps - Can we write better code by planning ahead?
Page 11: Architecting apps - Can we write better code by planning ahead?

Architecting apps

Page 12: Architecting apps - Can we write better code by planning ahead?
Page 13: Architecting apps - Can we write better code by planning ahead?
Page 14: Architecting apps - Can we write better code by planning ahead?
Page 15: Architecting apps - Can we write better code by planning ahead?

http://media.ofcom.org.uk/news/2015/five-years-of-tablets/

Page 16: Architecting apps - Can we write better code by planning ahead?

iOS apps available

Page 17: Architecting apps - Can we write better code by planning ahead?

100 000 000 000 app downloads

Page 18: Architecting apps - Can we write better code by planning ahead?

https://www.flickr.com/photos/officenow/2631533044/

Page 19: Architecting apps - Can we write better code by planning ahead?
Page 20: Architecting apps - Can we write better code by planning ahead?
Page 21: Architecting apps - Can we write better code by planning ahead?

http://www.tiobe.com/index.php/content/paperinfo/tpci/Swift.html

Page 22: Architecting apps - Can we write better code by planning ahead?

http://www.tiobe.com/index.php/content/paperinfo/tpci/Swift.html

Page 23: Architecting apps - Can we write better code by planning ahead?

http://www.apple.com/live/2015-june-event/

Page 24: Architecting apps - Can we write better code by planning ahead?

http://agilemanifesto.org

Page 25: Architecting apps - Can we write better code by planning ahead?
Page 26: Architecting apps - Can we write better code by planning ahead?

Solutions

A. Respect the process

B. Prototype

C. Divide & Conquer

D. Testing

E. Documentation

Page 27: Architecting apps - Can we write better code by planning ahead?

Respect the process

Page 28: Architecting apps - Can we write better code by planning ahead?

Ask the right questions

• usually starts with an idea / project requirement

• sell the vision to the team

• shoot the idea down and scale according to the platform constraints

• communication, communication, communication

• proposal

Page 29: Architecting apps - Can we write better code by planning ahead?

Application Definition Statement

Page 30: Architecting apps - Can we write better code by planning ahead?

Application Definition Statement

“A concise, concrete declaration of the app’s main purpose and its intended

audience.”

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/

Page 31: Architecting apps - Can we write better code by planning ahead?

Solve real problems

"An app must solve a user's problem clearly and elegantly."

Eric Hope, User Experience Evangelist, Apple

Page 32: Architecting apps - Can we write better code by planning ahead?

List of features

too manyfeatures?

Filter

Yes

ApplicationDefinitionStatement

Appfeatures

User journeys

Wirefames

Prototype

Page 33: Architecting apps - Can we write better code by planning ahead?

Prototype

Page 34: Architecting apps - Can we write better code by planning ahead?

Wireframes and/or Prototype

Page 35: Architecting apps - Can we write better code by planning ahead?

Wireframing

• identify main areas of the app

• identify screens

• identify relations between screens

• start from the simplest things and build up

• start from the main task of the app

Page 36: Architecting apps - Can we write better code by planning ahead?

Sketching

Page 37: Architecting apps - Can we write better code by planning ahead?

Sketching

Page 38: Architecting apps - Can we write better code by planning ahead?

Sketching

Page 39: Architecting apps - Can we write better code by planning ahead?

Sketching

Page 40: Architecting apps - Can we write better code by planning ahead?

Sketching

Page 41: Architecting apps - Can we write better code by planning ahead?

Sketching

Page 42: Architecting apps - Can we write better code by planning ahead?

Sketching

Page 43: Architecting apps - Can we write better code by planning ahead?

Sketching

Page 44: Architecting apps - Can we write better code by planning ahead?

Sketching

Page 45: Architecting apps - Can we write better code by planning ahead?

Sketching

Page 46: Architecting apps - Can we write better code by planning ahead?

Sketching

Page 47: Architecting apps - Can we write better code by planning ahead?

Sketching

Page 48: Architecting apps - Can we write better code by planning ahead?

Sketching

Page 49: Architecting apps - Can we write better code by planning ahead?

Sketching

Page 50: Architecting apps - Can we write better code by planning ahead?

More sketching

start

Splash screen

List of sequences

Add sequence

Sequenceedit

05:12start Timer

start

Add timer

Page 51: Architecting apps - Can we write better code by planning ahead?

Sketching

• start from the most important task

• identify main areas of the app

• identify screens

• identify relations between screens

• Don’t worry! You won’t get it right the first time

Page 52: Architecting apps - Can we write better code by planning ahead?

Prototyping

• Web based

• Visual

• Presentation based

Page 53: Architecting apps - Can we write better code by planning ahead?

Divide & Conquer

Page 54: Architecting apps - Can we write better code by planning ahead?

C4 Model

Page 55: Architecting apps - Can we write better code by planning ahead?

C4 Model

Page 56: Architecting apps - Can we write better code by planning ahead?

C4 Model

Page 57: Architecting apps - Can we write better code by planning ahead?
Page 58: Architecting apps - Can we write better code by planning ahead?
Page 59: Architecting apps - Can we write better code by planning ahead?

Black Box

• Avoid side effects

• Control inter-dependencies

• Improve testability

Page 60: Architecting apps - Can we write better code by planning ahead?

Don’t follow blindly

Page 61: Architecting apps - Can we write better code by planning ahead?

Playgrounds

Page 62: Architecting apps - Can we write better code by planning ahead?

Testing

Page 63: Architecting apps - Can we write better code by planning ahead?

Faster is always better

Page 64: Architecting apps - Can we write better code by planning ahead?

Faster is always better

Page 65: Architecting apps - Can we write better code by planning ahead?

TDD vs BDD

• Test-Driven Development

• Behaviour-Driven Development

Page 66: Architecting apps - Can we write better code by planning ahead?

TBD

To Be Determined

Page 67: Architecting apps - Can we write better code by planning ahead?

Documentation

Page 68: Architecting apps - Can we write better code by planning ahead?

UML

The Unified Modelling Language (UML) is a general-purpose modelling language in the field of software engineering, which is designed to provide a standard way to visualize the design of a system.

Page 69: Architecting apps - Can we write better code by planning ahead?

UML

Page 70: Architecting apps - Can we write better code by planning ahead?

Documentation

• Sanity

• Communication across multiple teams

• Inter-operability of features

• Good practices

• Sanity

Page 71: Architecting apps - Can we write better code by planning ahead?

Solutions

A. Respect the process

B. Prototype

C. Divide & Conquer

D. Testing

E. Documentation

Page 72: Architecting apps - Can we write better code by planning ahead?

Off by 1

Page 73: Architecting apps - Can we write better code by planning ahead?

Motivation

Page 74: Architecting apps - Can we write better code by planning ahead?
Page 75: Architecting apps - Can we write better code by planning ahead?
Page 76: Architecting apps - Can we write better code by planning ahead?
Page 77: Architecting apps - Can we write better code by planning ahead?
Page 78: Architecting apps - Can we write better code by planning ahead?
Page 79: Architecting apps - Can we write better code by planning ahead?

Your Why

Page 80: Architecting apps - Can we write better code by planning ahead?

Change one’s life

Page 81: Architecting apps - Can we write better code by planning ahead?

Charity

Page 82: Architecting apps - Can we write better code by planning ahead?

Help people

Page 83: Architecting apps - Can we write better code by planning ahead?
Page 84: Architecting apps - Can we write better code by planning ahead?

Solutions

A. Respect the process

B. Prototype

C. Divide & Conquer

D. Testing

E. Documentation

F. Motivation

Page 85: Architecting apps - Can we write better code by planning ahead?

Thank you!

}

twitter

[email protected]}blog


Recommended