android developer skills, techniques, and patterns
TRANSCRIPT
![Page 1: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/1.jpg)
Ancestry Android Developer Skills, Techniques, and Patterns
because it’s not all about the code
![Page 2: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/2.jpg)
About Ancestry
Ancestry is the largest provider of family history and personal DNA testing, harnessing the information found in family trees, historical records, genetics and health history to help people gain a new level of understanding about their lives. Ancestry has more than 2 million paying subscribers across its family history websites and
approximately 1.2 million DNA samples in the AncestryDNA database. Since 1996, more than 16 billion records have been added, and users have created more than 70 million family trees on the Ancestry flagship site and its affiliated international websites. Ancestry offers a suite of family history products including Archives, Fold3,
Newspapers.com and AncestryDNA sold by its subsidiary, Ancestry.com DNA, LLC, and the AncestryHealth product, offered by its subsidiary AncestryHealth.com, LLC.
· Ancestry has more than 1,300 employees located around the world, with 1,000 employees in Utah; 175
employees in San Francisco, California and approximately 70 employees in Dublin, Ireland.
![Page 3: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/3.jpg)
A day in the life at Ancestry
• Let’s take a stroll…
![Page 4: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/4.jpg)
Morning time
• Get a drink, put your headphones on
• Time to grab a story
• Sprints
• Agile Manifesto
![Page 5: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/5.jpg)
Story
• Yikes. The feature in the story is bigger than we sized it
• “Build or buy”
• Third party libraries
• How to choose?
![Page 6: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/6.jpg)
How to find libraries• Primarily
• Git hub - codepath/android_guides
• android-arsenal.com
• Secondarily
• Google it…
• Github search
![Page 7: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/7.jpg)
How to choose libraries• Who developed it?
• Google, Square, Jake Warton
• Big names (Facebook - flatbuffers)
• How complex is it?
• Do other developers respond to it at stackoverflow? Reddit?
• Github… How many stargazers? When last updated?
![Page 8: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/8.jpg)
Putting out fires
• Embedded QA finds a nasty bug
• Is it in the store build?
• Check Crashlytics (fabric.io)
![Page 9: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/9.jpg)
It’s a bad one :(• Bug is in the store build and crashlytics shows it is
widespread
• Gotta halt work on the story. You created a feature branch right?
• git flow (Thank you Vincent Driessen)
• NPE (Maybe Kotlin for the next app)
• Fix or Bandaid?
![Page 10: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/10.jpg)
Bandaid it!
• Get it stop crashing for the users now
• Make a new bug to get to the bottom of it later
![Page 11: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/11.jpg)
No! Fix it!• Geez, you want to be a good engineer don’t you?
• Variables include
• Time
• Team
![Page 12: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/12.jpg)
Get some more eyes on it• You made a change
• Can’t just check it in to the Master, that’s sacred
• Even if you really want to
• Get it on it’s own branch
• Have other devs inspect it first
• Then merge!
![Page 13: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/13.jpg)
Make a new build• Build machine makes a new build for the store
• QA gets their hands on it and tests your changes
• Thumbs up or down
• Inform Project Manager
• She’s sitting between you and your users
![Page 14: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/14.jpg)
Lunch!• It’s actually important
• Solo if your in the groove or really busy
• Shaky Leaf cafe (soon to get Pizza oven!)
• Otherwise hang with team and talk shop
• Well ok, maybe you can talk about other stuff too
![Page 15: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/15.jpg)
Lunch++• Ping pong
• Foosball
• Yoga
• Back massages
• Soccer
![Page 16: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/16.jpg)
Back to the story• I’ve added a third party library that’s going to save me some
time! Huzzah!
• But now I’m faced with a design decision
• Material Design Pattern
• UX Designer
• Refactor some other stuff around the area you are working in
![Page 17: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/17.jpg)
Patterns• Minimal disruption
• Use the pattern that is already there
• If it needs refactoring, think about the consequences of doing it now
• Easy? Go ahead
• Not so easy? Make a tech story
![Page 18: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/18.jpg)
Design Patterns• Keep you ears open
• Some patterns in Java are anti-patterns in Android
• Factory
• Singleton (not as bad as you think!)
• Adapter
• Iterator
• Observer
![Page 19: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/19.jpg)
Think about testing• QA will love you
• Unit tests
• JUnit
• Dagger
• Save a lot of headache
• FORCE yourself to do them
![Page 20: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/20.jpg)
“So how is it going?”
• PM wants to see how the work is progressing
• May want to head him off at the pass
• Better to get input as soon as you make some headway
• Law - All changes are make to handle the further they are away from the end user
![Page 21: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/21.jpg)
Story created In Progress Almost Done After merging
![Page 22: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/22.jpg)
And don’t be like this
![Page 23: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/23.jpg)
Backend API
• The story needs some more data from the backend
• REST
• Documentation is either old, bad, or nonexistent
• What to do?
![Page 24: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/24.jpg)
Collaboration• Agile Manifesto - “The most efficient and effective method of
conveying information to and within a development team is face-to-face conversation.”
• Feature Teams vs. Core Teams
• Embedded Backend/UX/QA/PM
• Division of Labor
• See what the iOS team has done!
• Learn a little Objective-C and Swift
![Page 25: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/25.jpg)
Your not just Android
• You are mobile!
• Radicalized Fanboyism is bad!
![Page 26: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/26.jpg)
![Page 27: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/27.jpg)
Collaborate
• Break out of the “introverted” stereotype
• Not good for you
• Not good for the company
• Don’t spin your wheels. Not getting it? Ask!
![Page 28: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/28.jpg)
Take a break• Pay the cat tax
• Videos
• Conference
• Performance Patterns
• Design Patterns
![Page 29: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/29.jpg)
Head to the meeting
• PM has a list of cool features he wants in
• Size the stories
• Fibonacci numbers
• Myth of the man-hour
![Page 30: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/30.jpg)
Wrap it up• Put finishing touches
• Write up the test case
• Make it good one. No half-asses. Think edge cases
• Check it in, make a pull request
• Mark it (Target Process) and let QA take over
![Page 31: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/31.jpg)
Go home.
• Do something else
• Dig into something you ran into that day you didn’t fully understand
• Make a list of these
![Page 32: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/32.jpg)
Strange Days
![Page 33: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/33.jpg)
It’s Thursday! Tech day!
• Code rot, technical debt
• Tech story
• I wanna do <xyz>
![Page 34: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/34.jpg)
Super Huge Refactors
• Suck in some help from the feature teams
• Cooperation with other PM’s
• Tech days for weeks
• Test! Test! Test!
![Page 35: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/35.jpg)
FedEx Days
• You got 24 hours to deliver
![Page 36: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/36.jpg)
Mobile Hack-a-thon
• Like FedEx Days but you get to sleep at night
• Collaboration
![Page 37: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/37.jpg)
Ancestry Engineers Conference
• 2 Days every summer
• San Fran, Ireland, UK, Germany
• Free shirt!
• Can do your own presentation
• Get to stand up and rant if you want
• Play time
![Page 38: Android Developer Skills, Techniques, and Patterns](https://reader035.vdocument.in/reader035/viewer/2022070515/587b45321a28ab9c0e8b68f9/html5/thumbnails/38.jpg)
In Conclusion• Skills
• Android SDK, Java, Third-party libs, JSON, SQL
• Communication/Collaboration, Agile Processes
• Techniques
• Check with the team and PM’s as you go
• Testing
• Patterns
• Follow what Google has already set as an example
• Passion!