39
Ancestry Android Developer Skills, Techniques, and Patterns because it’s not all about the code

Android Developer Skills, Techniques, and Patterns

  • Upload
    gdgut

  • View
    110

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Android Developer Skills, Techniques, and Patterns

Ancestry Android Developer Skills, Techniques, and Patterns

because it’s not all about the code

Page 2: Android Developer Skills, Techniques, and Patterns

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

A day in the life at Ancestry

• Let’s take a stroll…

Page 4: Android Developer Skills, Techniques, and Patterns

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

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

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

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

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

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

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

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

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

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

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

Lunch++• Ping pong

• Foosball

• Yoga

• Back massages

• Soccer

Page 16: Android Developer Skills, Techniques, and Patterns

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

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

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

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

“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

Story created In Progress Almost Done After merging

Page 22: Android Developer Skills, Techniques, and Patterns

And don’t be like this

Page 23: Android Developer Skills, Techniques, and Patterns

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

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

Your not just Android

• You are mobile!

• Radicalized Fanboyism is bad!

Page 26: Android Developer Skills, Techniques, and Patterns
Page 27: Android Developer Skills, Techniques, and Patterns

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

Take a break• Pay the cat tax

• Videos

• Conference

• Performance Patterns

• Design Patterns

Page 29: Android Developer Skills, Techniques, and Patterns

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

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

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

Strange Days

Page 33: Android Developer Skills, Techniques, and Patterns

It’s Thursday! Tech day!

• Code rot, technical debt

• Tech story

• I wanna do <xyz>

Page 34: Android Developer Skills, Techniques, and Patterns

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

FedEx Days

• You got 24 hours to deliver

Page 36: Android Developer Skills, Techniques, and Patterns

Mobile Hack-a-thon

• Like FedEx Days but you get to sleep at night

• Collaboration

Page 37: Android Developer Skills, Techniques, and Patterns

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

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!

Page 39: Android Developer Skills, Techniques, and Patterns

• Carl Hickman

[email protected]

• @happylrac