2. About Ancestry
gest provider of family history and personal DNA testing, harnessing the information fou
enetics and health history to help people gain a new level of understanding about their
n paying subscribers across its family history websites and approximately 1.2 million D
abase. Since 1996, more than 16 billion records have been added, and users have crea
on the Ancestry flagship site and its affiliated international websites. Ancestry offers a s
Archives, Fold3, Newspapers.com and AncestryDNA sold by its subsidiary, Ancestry.c
the AncestryHealth product, offered by its subsidiary AncestryHealth.com, LLC.
·
e than 1,300 employees located around the world, with 1,000 employees in Utah; 175 e
Francisco, California and approximately 70 employees in Dublin, Ireland.
3. A day in the life at Ancestry
• Let’s take a stroll…
4. Morning time
• Get a drink, put your headphones on
• Time to grab a story
• Sprints
• Agile Manifesto
5. Story
• Yikes. The feature in the story is bigger than we sized it
• “Build or buy”
• Third party libraries
• How to choose?
6. How to find libraries
• Primarily
• Git hub - codepath/android_guides
• android-arsenal.com
• Secondarily
• Google it…
• Github search
7. 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?
8. Putting out fires
• Embedded QA finds a nasty bug
• Is it in the store build?
• Check Crashlytics (fabric.io)
9. 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?
10. Bandaid it!
• Get it stop crashing for the users now
• Make a new bug to get to the bottom of it later
11. No! Fix it!
• Geez, you want to be a good engineer don’t you?
• Variables include
• Time
• Team
12. 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!
13. 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
14. 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
16. 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
17. 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
18. 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
19. Think about testing
• QA will love you
• Unit tests
• JUnit
• Dagger
• Save a lot of headache
• FORCE yourself to do them
20. “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
23. Backend API
• The story needs some more data from the backend
• REST
• Documentation is either old, bad, or nonexistent
• What to do?
24. 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
25. Your not just Android
• You are mobile!
• Radicalized Fanboyism is bad!
26.
27. 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!
28. Take a break
• Pay the cat tax
• Videos
• Conference
• Performance Patterns
• Design Patterns
29. Head to the meeting
• PM has a list of cool features he wants in
• Size the stories
• Fibonacci numbers
• Myth of the man-hour
30. 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
31. Go home.
• Do something else
• Dig into something you ran into that day you didn’t fully understand
• Make a list of these
37. 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
38. 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!