Android Developer Skills, Techniques, and Patterns

Post on 15-Jan-2017

108 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

Transcript

Ancestry Android Developer Skills, Techniques, and Patterns

because it’s not all about the code

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.

A day in the life at Ancestry

• Let’s take a stroll…

Morning time

• Get a drink, put your headphones on

• Time to grab a story

• Sprints

• Agile Manifesto

Story

• Yikes. The feature in the story is bigger than we sized it

• “Build or buy”

• Third party libraries

• How to choose?

How to find libraries• Primarily

• Git hub - codepath/android_guides

• android-arsenal.com

• Secondarily

• Google it…

• Github search

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?

Putting out fires

• Embedded QA finds a nasty bug

• Is it in the store build?

• Check Crashlytics (fabric.io)

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?

Bandaid it!

• Get it stop crashing for the users now

• Make a new bug to get to the bottom of it later

No! Fix it!• Geez, you want to be a good engineer don’t you?

• Variables include

• Time

• Team

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!

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

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

Lunch++• Ping pong

• Foosball

• Yoga

• Back massages

• Soccer

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

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

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

Think about testing• QA will love you

• Unit tests

• JUnit

• Dagger

• Save a lot of headache

• FORCE yourself to do them

“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

Story created In Progress Almost Done After merging

And don’t be like this

Backend API

• The story needs some more data from the backend

• REST

• Documentation is either old, bad, or nonexistent

• What to do?

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

Your not just Android

• You are mobile!

• Radicalized Fanboyism is bad!

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!

Take a break• Pay the cat tax

• Videos

• Conference

• Performance Patterns

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

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

Go home.

• Do something else

• Dig into something you ran into that day you didn’t fully understand

• Make a list of these

Strange Days

It’s Thursday! Tech day!

• Code rot, technical debt

• Tech story

• I wanna do <xyz>

Super Huge Refactors

• Suck in some help from the feature teams

• Cooperation with other PM’s

• Tech days for weeks

• Test! Test! Test!

FedEx Days

• You got 24 hours to deliver

Mobile Hack-a-thon

• Like FedEx Days but you get to sleep at night

• Collaboration

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

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!

• Carl Hickman

• chickman@ancestry.com

• @happylrac

top related