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

… and in this way we built an Android App that could be used by millions of users

… and in this way we built an Android App that could be used by millions of users

How we started, how we evolved and how was the change in the library stack.
This speak was part of the Pataconf.com dev festival placed in Medellin on October 6th 2016

Carlos Daniel

October 06, 2016
Tweet

More Decks by Carlos Daniel

Other Decks in Programming

Transcript

  1. … and in this way we built an Android App

    that could be used by millions of users Carlos Daniel Munoz @cdmunozi Cristian Gómez @iyubinest Gilbert Guevara @gilbertguevara @MedellinAndroid
  2. Agenda 1. How did we begin 2. The evolution 3.

    Working as a team 4. The results 5. Q&A
  3. How did we begin • What architecture type are we

    going to use? • Which development framework or pattern? • Full native development? • The Views? • The libraries? • Backend and API Integration? • Data Repositories? • Asynchronous behavior? • Reactive programming • Activities only or fragments? • Which SDK? • Which devices? • Material Design?
  4. The only way to go fast is to go well

    (The higher the quality, the faster you go) Robert C. Martin
  5. First Step • MVP as “pattern” • Reactive programming •

    Less verbose and more legible code ◦ “Less code, less bugs” • Mocked data
  6. Initial Stack • Dagger2 for Dependency Injection • RxJava •

    Butterknife • Standard Android API ◦ Vector drawables ◦ Activities and fragments ◦ Standard gradle
  7. The evolution • Asynchronous images loading and cache • Http

    connections • Mapping between API model and View model • Pimped gradle • Verbose code • UI Optimizations • Animations • Continuous integration • Custom UI components • Feature flag
  8. Current Stack • Dagger2 for Dependency Injection • RxJava •

    Butterknife • Standard Android API ◦ Vector drawables ◦ Activities and fragments ◦ Standard gradle • Retrofit • Picasso • Mapstruct • RxBindings • Retrolambda • Gradle flavors • Multidexing • Calabash • Transition everywhere • RecyclerView over Listview • Jenkins and Concourse
  9. ...I’m not the best software developer, I’m a good a

    software developer with good practices
  10. Working as a team • Scrum ◦ Preplanning ◦ Planning

    ◦ Daily meetings ◦ Retrospective • Technical Analysis • Huddles • Code reviews • Pair programming • Learning sessions & Android Labs • Instagram Style
  11. Results • Development velocity increased • Less bugs • More

    time for refactors • More time for testing • More time for new features