Slide 1

Slide 1 text

WindyCity DevCon 2016 | Jorge Coca FROM ZERO TO HERO HOW TO GET YOUR NEW TEAM UP TO SPEED WITH ANDROID

Slide 2

Slide 2 text

WHAT’S THE KEY OF EVERY APP TO SUCCEED? • The idea • The right people • The right technology Page 2

Slide 3

Slide 3 text

WHAT’S THE KEY OF EVERY APP TO SUCCEED? Idea People Technology Page 3

Slide 4

Slide 4 text

TODAY WE WILL TALK ABOUT PEOPLE AND TECHNOLOGY Page 4

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

WHAT’S THE KEY OF EVERY APP TO SUCCEED? 85% 15% The Idea People Technology Page 6

Slide 7

Slide 7 text

FIRST QUESTION HOW DO WE START? Page 7

Slide 8

Slide 8 text

HOW DO WE START? THE TRIATHLON METAPHOR Page 8 •  Months of training •  Definition of goals •  Motivation •  Race preparation •  Packet pickup •  Prepare setup •  Swim •  Bike •  Run •  Enjoy!

Slide 9

Slide 9 text

CAN WE APPLY THIS TO SOFTWARE DEVELOPMENT? Page 9 SPRINT -1 SPRINT 0 SPRINT 1+ (and so on…)

Slide 10

Slide 10 text

Page 10

Slide 11

Slide 11 text

SPRINT -1 THE BEGINNING OF EVERYTHING Page 11

Slide 12

Slide 12 text

SPRINT -1: THE BEGINNING OF EVERYTHING • Define your core values and culture • Define your MVP (Minimum Viable Product) • Define your hiring needs Page 12

Slide 13

Slide 13 text

SPRINT -1: DEFINE YOUR CORE AND CULTURE VALUES • People will want to work with you because: • They share the company’s vision and believe in the same goals • They can see an opportunity to grow, personally and professionally Page 13

Slide 14

Slide 14 text

SPRINT -1: DEFINE YOUR MVP (MINIMUM VIABLE PRODUCT) • It will be easier to get people on board • It will generate excitement • It will easier to explain your vision Page 14

Slide 15

Slide 15 text

SPRINT -1: REALIZING YOU’RE A TEAM AND NOT A BUNCH OF INDIVIDUALS

Slide 16

Slide 16 text

SPRINT -1: DEFINE YOUR HIRING NEEDS Page 16 Android != Web != iOS

Slide 17

Slide 17 text

SPRINT -1: HOW TO DO AN INTERVIEW? • DON’T DISCRIMINATE! • Ask questions that are relevant to your business and the project • Ensure that the candidate is familiar with the latest trends in the platform • Make sure that the candidate will be a good fit in the team Page 17

Slide 18

Slide 18 text

SPRINT -1: THE “JUNIOR” ROLE • Eager to learn! • Has a strong programming core knowledge • Understands the value of the team Page 18

Slide 19

Slide 19 text

SPRINT -1: THE “SENIOR” ROLE • Brings expertise and experience to the team • Should be a mentor for the team • Always willing to • Learn • Listen and consider new ideas • Assume he/she is not always right Page 19

Slide 20

Slide 20 text

SPRINT -1: THE DEFINITIVE GOAL • Exclude toxic people from the team • Enable paths for growing within the company • Training is key! Specially in the tech field, where there are changes constantly! Page 20

Slide 21

Slide 21 text

SPRINT -1: THE DEFINITIVE GOAL ? J L ? Page 21 Team Happiness Project Health

Slide 22

Slide 22 text

SPRINT -1: THE TEAM “A group becomes a team when each member is sure enough of himself and his contribution to praise the skills of the others” Norman Shidle Page 22

Slide 23

Slide 23 text

SPRINT -1: SAY “HI” TO YOUR NEW ANDROID TEAM

Slide 24

Slide 24 text

SPRINT 0 TIME TO GET REAL Page 24

Slide 25

Slide 25 text

SPRINT 0: WHAT IS IT? • Decide an architecture pattern to follow • Start creating UI/UX documents • Define your coding standards and processes • Agree on what tools should be use in the initial setup • Create a high level backlog of the project Page 25

Slide 26

Slide 26 text

SPRINT 0: DECIDE AN ARCHITECTURE PATTERN TO FOLLOW • Every Android app is “user-interface” driven, so the main patterns to be considered are: • MVC (Model View Controller) • MVP (Model View Presenter) • MVVM (Model View ViewModel) Page 26

Slide 27

Slide 27 text

SPRINT 0: DECIDE AN ARCHITECTURE PATTERN TO FOLLOW THE COMMUNITY => MVP • Tons of tutorials explaining how to apply MVP for Android • Easier to understand GOOGLE => MVVM • Google released Data Binding as part of the Android core framework • Reduces the amount of code Page 27

Slide 28

Slide 28 text

SPRINT 0: DECIDE AN ARCHITECTURE PATTERN TO FOLLOW “So, what’s the best architecture pattern? Which one should I pick?” Page 28

Slide 29

Slide 29 text

SPRINT 0: DECIDE AN ARCHITECTURE PATTERN TO FOLLOW “It does not matter, there’s no right or wrong answer. They’re just different points of view to solve the same problem: how to build a UI-driven application. As a team, make an inform decision, learn the pattern and apply it. Don’t reinvent the wheel!” Page 29

Slide 30

Slide 30 text

SPRINT 0: TESTING “Testing?” Page 30

Slide 31

Slide 31 text

SPRINT 0: TESTING

Slide 32

Slide 32 text

SPRINT 0: TESTING It’s 2016, testing should be out of the questions. Yes, test test TEST!!!! It is a way to catch mistakes, and ensure you don’t make the same mistake twice Page 32

Slide 33

Slide 33 text

SPRINT 0: TESTING “Should I test everything?” Page 33

Slide 34

Slide 34 text

SPRINT 0: TESTING • The ultimate goal should be to test everything, but if you need to focus on something • Businees logic first • Then UI/UX testing Page 34

Slide 35

Slide 35 text

SPRINT 0: TESTING • JUnit • Robolectric • Espresso Page 35

Slide 36

Slide 36 text

SPRINT 0: TESTING • Dependency Injection: • Roboguice • Dagger 1 • Dagger 2 • Mocking: • Mockito • Power Mock Page 36

Slide 37

Slide 37 text

SPRINT 0: DEPENDENCY INJECTION “ Why Dependency Injection?” Page 37

Slide 38

Slide 38 text

SPRINT 0: DEPENDENCY INJECTION Page 38

Slide 39

Slide 39 text

SPRINT 0: DEPENDENCY INJECTION “Imagine a real factory in real life… is it a Vehicle responsible for creating its own Engine?” Page 39

Slide 40

Slide 40 text

SPRINT 0: DEPENDENCY INJECTION Page 40

Slide 41

Slide 41 text

SPRINT 0: DEPENDENCY INJECTION & MOCKING “Why should I mock my dependencies?” Page 41

Slide 42

Slide 42 text

SPRINT 0: DEPENDENCY INJECTION & MOCKING Page 42

Slide 43

Slide 43 text

SPRINT 0: DEPENDENCY INJECTION & MOCKING • What if we need to test with an Engine that works? • What if we need to test with an Engine that does not work? • What if we need to test with that breaks half way there? • What if… Page 43

Slide 44

Slide 44 text

SPRINT 0: DEPENDENCY INJECTION & MOCKING Page 44

Slide 45

Slide 45 text

SPRINT 0: INTERFACES ARE YOUR BEST FRIEND! Page 45

Slide 46

Slide 46 text

SPRINT 0: INTERFACES ARE YOUR BEST FRIEND! • What if we need the same vehicle in three versions: • Combustion Engine • Hybrid • Full Electric Page 46

Slide 47

Slide 47 text

SPRINT 0: INTERFACES ARE YOUR BEST FRIEND! Page 47

Slide 48

Slide 48 text

Page 48

Slide 49

Slide 49 text

SPRINT 0: INTERFACES ARE YOUR BEST FRIEND! Page 49

Slide 50

Slide 50 text

SPRINT 0: INTERFACES ARE YOUR BEST FRIEND! Page 50

Slide 51

Slide 51 text

SPRINT 0: CONTINUOUS INTEGRATION “How often should I run my tests?” Page 51

Slide 52

Slide 52 text

SPRINT 0: CONTINUOUS INTEGRATION • Locally, before opening a pull request • Remotely, when you open a pull request • Sanity check: it does not hurt if you run your test after merging to “master” Page 52

Slide 53

Slide 53 text

SPRINT 0: CONTINUOUS INTEGRATION Page 53 •  Self hosted •  Free •  Complex configuration •  Outdated UI •  Cloud based •  Paid •  Easy setup •  Nice UI

Slide 54

Slide 54 text

SPRINT 0: CONTINUOUS INTEGRATION “No matter what, do the setup at the very beginning of the project. It will save you lots of headaches” Page 54

Slide 55

Slide 55 text

SPRINT 0: LIBRARY VS. APP VS. PRODUCT FLAVOR VS. BUILD TYPE Need to support multiple APPS with similar functionality? LIBRARY Page 55

Slide 56

Slide 56 text

SPRINT 0: LIBRARY VS. APP VS. PRODUCT FLAVOR VS. BUILD TYPE Every app needs to provide different variants? Free vs. Paid? Amazon vs. Play Store? PRODUCT FLAVOR! Page 56

Slide 57

Slide 57 text

SPRINT 0: LIBRARY VS. APP VS. PRODUCT FLAVOR VS. BUILD TYPE Need to support DEV, QA and PROD environments? BUILD TYPE! Page 57

Slide 58

Slide 58 text

SPRINT 0: LAST TIPS • Don’t reinvent the wheel • When choosing 3rd party libraries, BETTER THINK TWICE! • Maintain coding standards Page 58

Slide 59

Slide 59 text

SPRINT 0: LAST TIPS • Analytics, analytics, analytics! • Keep your certificates in a safe place! • Material Design • Prepare distribution channels to get early feedback • HockeyApp, Play Store Beta, Dropbox… Page 59

Slide 60

Slide 60 text

SPRINT 0 “There’s only one thing left to do…” Page 60

Slide 61

Slide 61 text

Page 61

Slide 62

Slide 62 text

SPRINT 0: TEST DEVICES • Don’t forget to get test devices • … and Samsung test devices • Because, you know, Samsung is “special” Page 62

Slide 63

Slide 63 text

SPRINT 1+ THE “EASY” PART

Slide 64

Slide 64 text

No content

Slide 65

Slide 65 text

SPRINT 1+: TECHNICAL TIPS • Don’t forget what you’ve learned during Sprint -1 and Sprint 0 • Do & Review Pull Requests, no matter how small they are • If you see something broken, fix it, even if it is not “your code” Page 65

Slide 66

Slide 66 text

SPRINT 1+: TEAM TIPS • Retrospective meetings must be constructive! • Address issues as soon as possible • Keep people motivated! • To say “thanks” it’s free ;) Page 66

Slide 67

Slide 67 text

SPRINT 1+: PERSONAL TIPS • We’re humans and we make mistakes, accept it! • Be always humble • Recycle yourself! • Enjoy life outside work! Page 67

Slide 68

Slide 68 text

THEREFORE, I WOULD LIKE TO SAY THANKS TO…

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

WE’RE HIRING!!

Slide 71

Slide 71 text

Page 71

Slide 72

Slide 72 text

THANK YOU! Page 72