Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Remote and Lonely

Remote and Lonely

Talk presented at Droidcon London 2016

Being the only developer in a project can be frustrating, everything falls into your shoulders and it's very easy to get trapped into bad habits. You are not alone! There are many tools, practices and services that will make your life easier... and efficient!

Several months ago David joined Help Scout as the only Android Developer with the main purpose of building their Android application from scratch. Coming from an agency environment where there were more than 30 developers willing to discuss and present different ideas, it's been quite a challenge.

This talk shares David's experience, explaining what tools, practices and methodologies he's followed. Being the only developer is no impediment to build great quality code, follow good design patterns and delight your users.

How to do Pull Requests, Code Reviews, Design Reviews, Continuous Delivery and Integration... Whether you are a one man band or work with a team, these tips will help you become a better programmer!

David González

October 26, 2016
Tweet

More Decks by David González

Other Decks in Programming

Transcript

  1. Plugin con!guration androidLint('**/outputs/lint-results.xml') { thresholdLimit('low') useStableBuildAsReference(false) useDeltaValues(false) shouldDetectModules(false) thresholds( unstableTotal:

    [all: 3, high: 3, normal: 3, low: 3], failedTotal: [all: 3, high: 3, normal: 3, low: 3], unstableNew: [all: 0, high: 0, normal: 0, low: 0], failedNew: [all: 0, high: 0, normal: 0, low: 0] ) }
  2. Plugin con!guration checkstyle('**/checkstyle/*.xml') { thresholdLimit('low') useStableBuildAsReference(false) useDeltaValues(false) shouldDetectModules(false) thresholds( unstableTotal:

    [all: 2, high: 2, normal: 2, low: 2], failedTotal: [all: 2, high: 2, normal: 2, low: 2], unstableNew: [all: 0, high: 0, normal: 0, low: 0], failedNew: [all: 0, high: 0, normal: 0, low: 0] ) }
  3. Conditional actions flexiblePublish { conditionalAction { condition { and {

    status('SUCCESS', 'SUCCESS') } { not { stringsMatch('$ON_MAINLINE', 'true', false) } } }
  4. Publish to Beta apply plugin: 'com.github.triplet.play' def playstoreServiceAccount = System.env.PLAYSTORE_SERVICE_ACCOUNT

    def playstorePk12File = System.env.PLAYSTORE_PK12_FILE if (playstoreServiceAccount && playstorePk12File) { play { track = 'beta' serviceAccountEmail = playstoreServiceAccount pk12File = rootProject.file(playstorePk12File) } } project.afterEvaluate { def publishApkRelease = project.tasks.getByName("publishApkRelease") def incrementVersionForRelease = project.tasks.getByName("incrementVersionForRelease") publishApkRelease.dependsOn incrementVersionForRelease