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
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
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