Upgrade to Pro — share decks privately, control downloads, hide ads and more …

From Zero to Hero: How to Get Your New Team up to Speed with Android

C887ad592770a197f114d0a1d3e3a5a7?s=47 Jorge Coca
September 16, 2016

From Zero to Hero: How to Get Your New Team up to Speed with Android

Starting a new Android app is always exciting: you have the opportunity to create an awesome app from zero... but it is also a lot of responsibility! Any step in the wrong direction might turn your new app into a disaster.
You need the right people on your team, you need the right technology and you need the proper setup.
Sounds easy, uh? Well... it's not! Many apps did not survive even this first step. Let me help you to identify the key elements to help your Android team succeed.

C887ad592770a197f114d0a1d3e3a5a7?s=128

Jorge Coca

September 16, 2016
Tweet

Transcript

  1. WindyCity DevCon 2016 | Jorge Coca FROM ZERO TO HERO

    HOW TO GET YOUR NEW TEAM UP TO SPEED WITH ANDROID
  2. WHAT’S THE KEY OF EVERY APP TO SUCCEED? • The idea

    • The right people • The right technology Page 2
  3. WHAT’S THE KEY OF EVERY APP TO SUCCEED? Idea People

    Technology Page 3
  4. TODAY WE WILL TALK ABOUT PEOPLE AND TECHNOLOGY Page 4

  5. None
  6. WHAT’S THE KEY OF EVERY APP TO SUCCEED? 85% 15%

    The Idea People Technology Page 6
  7. FIRST QUESTION HOW DO WE START? Page 7

  8. 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!
  9. CAN WE APPLY THIS TO SOFTWARE DEVELOPMENT? Page 9 SPRINT

    -1 SPRINT 0 SPRINT 1+ (and so on…)
  10. Page 10

  11. SPRINT -1 THE BEGINNING OF EVERYTHING Page 11

  12. SPRINT -1: THE BEGINNING OF EVERYTHING • Define your core values

    and culture • Define your MVP (Minimum Viable Product) • Define your hiring needs Page 12
  13. 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
  14. 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
  15. SPRINT -1: REALIZING YOU’RE A TEAM AND NOT A BUNCH

    OF INDIVIDUALS
  16. SPRINT -1: DEFINE YOUR HIRING NEEDS Page 16 Android !=

    Web != iOS
  17. 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
  18. SPRINT -1: THE “JUNIOR” ROLE • Eager to learn! • Has a

    strong programming core knowledge • Understands the value of the team Page 18
  19. 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
  20. 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
  21. SPRINT -1: THE DEFINITIVE GOAL ? J L ? Page

    21 Team Happiness Project Health
  22. 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
  23. SPRINT -1: SAY “HI” TO YOUR NEW ANDROID TEAM

  24. SPRINT 0 TIME TO GET REAL Page 24

  25. 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
  26. 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
  27. 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
  28. SPRINT 0: DECIDE AN ARCHITECTURE PATTERN TO FOLLOW “So, what’s

    the best architecture pattern? Which one should I pick?” Page 28
  29. 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
  30. SPRINT 0: TESTING “Testing?” Page 30

  31. SPRINT 0: TESTING

  32. 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
  33. SPRINT 0: TESTING “Should I test everything?” Page 33

  34. 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
  35. SPRINT 0: TESTING • JUnit • Robolectric • Espresso Page 35

  36. SPRINT 0: TESTING • Dependency Injection: • Roboguice • Dagger 1 • Dagger 2

    • Mocking: • Mockito • Power Mock Page 36
  37. SPRINT 0: DEPENDENCY INJECTION “ Why Dependency Injection?” Page 37

  38. SPRINT 0: DEPENDENCY INJECTION Page 38

  39. SPRINT 0: DEPENDENCY INJECTION “Imagine a real factory in real

    life… is it a Vehicle responsible for creating its own Engine?” Page 39
  40. SPRINT 0: DEPENDENCY INJECTION Page 40

  41. SPRINT 0: DEPENDENCY INJECTION & MOCKING “Why should I mock

    my dependencies?” Page 41
  42. SPRINT 0: DEPENDENCY INJECTION & MOCKING Page 42

  43. 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
  44. SPRINT 0: DEPENDENCY INJECTION & MOCKING Page 44

  45. SPRINT 0: INTERFACES ARE YOUR BEST FRIEND! Page 45

  46. SPRINT 0: INTERFACES ARE YOUR BEST FRIEND! • What if we

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

  48. Page 48

  49. SPRINT 0: INTERFACES ARE YOUR BEST FRIEND! Page 49

  50. SPRINT 0: INTERFACES ARE YOUR BEST FRIEND! Page 50

  51. SPRINT 0: CONTINUOUS INTEGRATION “How often should I run my

    tests?” Page 51
  52. 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
  53. SPRINT 0: CONTINUOUS INTEGRATION Page 53 •  Self hosted • 

    Free •  Complex configuration •  Outdated UI •  Cloud based •  Paid •  Easy setup •  Nice UI
  54. 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
  55. SPRINT 0: LIBRARY VS. APP VS. PRODUCT FLAVOR VS. BUILD

    TYPE Need to support multiple APPS with similar functionality? LIBRARY Page 55
  56. 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
  57. SPRINT 0: LIBRARY VS. APP VS. PRODUCT FLAVOR VS. BUILD

    TYPE Need to support DEV, QA and PROD environments? BUILD TYPE! Page 57
  58. SPRINT 0: LAST TIPS • Don’t reinvent the wheel • When choosing

    3rd party libraries, BETTER THINK TWICE! • Maintain coding standards Page 58
  59. 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
  60. SPRINT 0 “There’s only one thing left to do…” Page

    60
  61. Page 61

  62. SPRINT 0: TEST DEVICES • Don’t forget to get test devices

    • … and Samsung test devices • Because, you know, Samsung is “special” Page 62
  63. SPRINT 1+ THE “EASY” PART

  64. None
  65. 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
  66. 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
  67. SPRINT 1+: PERSONAL TIPS • We’re humans and we make mistakes,

    accept it! • Be always humble • Recycle yourself! • Enjoy life outside work! Page 67
  68. THEREFORE, I WOULD LIKE TO SAY THANKS TO…

  69. None
  70. WE’RE HIRING!!

  71. Page 71

  72. THANK YOU! Page 72