Android Developer Skills, Techniques, and Patterns

  • View

  • Download

Embed Size (px)

Text of Android Developer Skills, Techniques, and Patterns

  • Ancestry Android Developer Skills, Techniques, and Patternsbecause its 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, and AncestryDNA sold by its subsidiary, DNA, LLC, and the AncestryHealth product, offered by its subsidiary, 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 AncestryLets take a stroll

  • Morning timeGet a drink, put your headphones onTime to grab a storySprintsAgile Manifesto

  • StoryYikes. The feature in the story is bigger than we sized itBuild or buyThird party librariesHow to choose?

  • How to find librariesPrimarilyGit hub - codepath/android_guidesandroid-arsenal.comSecondarily Google itGithub search

  • How to choose librariesWho developed it? Google, Square, Jake WartonBig 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 firesEmbedded QA finds a nasty bugIs it in the store build?Check Crashlytics (

  • Its a bad one :(Bug is in the store build and crashlytics shows it is widespreadGotta 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 nowMake a new bug to get to the bottom of it later

  • No! Fix it!Geez, you want to be a good engineer dont you?Variables includeTimeTeam

  • Get some more eyes on itYou made a changeCant just check it in to the Master, thats sacredEven if you really want toGet it on its own branch Have other devs inspect it firstThen merge!

  • Make a new buildBuild machine makes a new build for the storeQA gets their hands on it and tests your changesThumbs up or downInform Project Manager Shes sitting between you and your users

  • Lunch!Its actually importantSolo if your in the groove or really busyShaky Leaf cafe (soon to get Pizza oven!)Otherwise hang with team and talk shopWell ok, maybe you can talk about other stuff too

  • Lunch++Ping pongFoosballYogaBack massagesSoccer

  • Back to the storyIve added a third party library thats going to save me some time! Huzzah!But now Im faced with a design decisionMaterial Design PatternUX DesignerRefactor some other stuff around the area you are working in

  • PatternsMinimal disruptionUse the pattern that is already thereIf it needs refactoring, think about the consequences of doing it nowEasy? Go aheadNot so easy? Make a tech story

  • Design PatternsKeep you ears openSome patterns in Java are anti-patterns in AndroidFactorySingleton (not as bad as you think!)AdapterIteratorObserver

  • Think about testingQA will love youUnit testsJUnitDaggerSave a lot of headacheFORCE yourself to do them

  • So how is it going?PM wants to see how the work is progressingMay want to head him off at the passBetter to get input as soon as you make some headwayLaw - All changes are make to handle the further they are away from the end user

  • Story created In Progress Almost Done After merging

  • And dont be like this

  • Backend APIThe story needs some more data from the backend RESTDocumentation is either old, bad, or nonexistent What to do?

  • CollaborationAgile 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 TeamsEmbedded Backend/UX/QA/PMDivision of LaborSee what the iOS team has done!Learn a little Objective-C and Swift

  • Your not just AndroidYou are mobile!Radicalized Fanboyism is bad!

  • CollaborateBreak out of the introverted stereotypeNot good for youNot good for the companyDont spin your wheels. Not getting it? Ask!

  • Take a breakPay the cat taxVideosConference Performance PatternsDesign Patterns

  • Head to the meetingPM has a list of cool features he wants inSize the storiesFibonacci numbersMyth of the man-hour

  • Wrap it upPut finishing touchesWrite up the test caseMake it good one. No half-asses. Think edge casesCheck it in, make a pull requestMark it (Target Process) and let QA take over

  • Go home. Do something elseDig into something you ran into that day you didnt fully understandMake a list of these

  • Strange Days

  • Its Thursday! Tech day!Code rot, technical debtTech storyI wanna do

  • Super Huge Refactors Suck in some help from the feature teamsCooperation with other PMsTech days for weeksTest! Test! Test!

  • FedEx DaysYou got 24 hours to deliver

  • Mobile Hack-a-thonLike FedEx Days but you get to sleep at nightCollaboration

  • Ancestry Engineers Conference2 Days every summerSan Fran, Ireland, UK, GermanyFree shirt!Can do your own presentationGet to stand up and rant if you wantPlay time

  • In ConclusionSkillsAndroid SDK, Java, Third-party libs, JSON, SQLCommunication/Collaboration, Agile ProcessesTechniquesCheck with the team and PMs as you goTestingPatternsFollow what Google has already set as an examplePassion!

  • Carl