MTC2018 - Android at Scale

92cdcff298e89e2fcd2fb705155c2d4b?s=47 mercari
October 04, 2018

MTC2018 - Android at Scale

Speaker: Israel Ferrer Camacho

In this talk, Israel Ferrer Camacho will share what are the common pitfalls at developing applications with big teams and big codebases and how to solve them.

92cdcff298e89e2fcd2fb705155c2d4b?s=128

mercari

October 04, 2018
Tweet

Transcript

  1. Android at Scale Israel Ferrer Camacho Tech Lead (Android)

  2. None
  3. 100 ENGINEER TEAM

  4. DIFFICULT TO MODIFY EASY TO BREAK SLOW DEVELOPMENT

  5. Israel Ferrer Camacho Android Tech Lead | @rallat ANDROID @

    SCALE
  6. QUALITY CONSISTENT REUSABLE

  7. QUALITY CONSISTENT REUSABLE

  8. WHAT IS QUALITY?

  9. QUALITY

  10. NO BUGS QUALITY

  11. PREVENT BUGS WITH TEST QUALITY

  12. MANUAL TEST UI TEST INTEGRATION TEST UNIT TEST QUALITY

  13. MANUAL TEST UI TEST INTEGRATION TEST UNIT TEST QUALITY

  14. QUALITY Easy to write Easy to maintain Fast to run

    UNIT TEST
  15. Run unit test for each commit Immediate quality feedback! For

    engineers is a safety net QUALITY UNIT TEST
  16. Feature proofs the code for future changes QUALITY UNIT TEST

  17. QUALITY CONSISTENT REUSABLE

  18. QUALITY CONSISTENT REUSABLE

  19. DEFINE PRINCIPLES CONSISTENT

  20. PRINCIPLES CAN EVOLVE CONSISTENT

  21. CONSISTENT NEW ARCHITECTURE

  22. CONSISTENT LAYERED ARCHITECTURE

  23. CONSISTENT SINGLE RESPONSIBILITY

  24. Data layer View layer Logic layer

  25. View layer Data layer Logic layer

  26. REUSABLE?

  27. BUSINESS LOGIC REUSABLE

  28. USE CASES LAYER REUSABLE

  29. Use cases View layer Data layer Screen behavior

  30. View layer Data layer Sort Items Buy Item Like Item

    Comment Item Screen behavior
  31. Use cases View layer Data layer Screen behavior

  32. Use cases View layer Data layer Screen behavior

  33. Use cases Screen behavior View layer Data layer QUALITY CONSISTENT

    REUSABLE
  34. HOW TO REUSE CUSTOM VIEWS, COMPONENTS, UTILS?

  35. DISCOVERABILITY?

  36. HOW CAN 100 ENG WORK IN THE SAME CODEBASE?

  37. MONOLITHIC 
 MONOLITHIC TO
 MODULAR REUSABLE

  38. 4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL /FUXPSL #VUUPO "QQ #VUUPO #VUUPO

    REUSABLE
  39. . 4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL /FUXPSL #VUUPO "QQ #VUUPO

    #VUUPO REUSABLE
  40. REUSABLE . 4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL /FUXPSL #VUUPO "QQ

    #VUUPO #VUUPO 6*$PSF
  41. 6*$PSF REUSABLE . 4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL /FUXPSL #VUUPO

    "QQ #VUUPO #VUUPO
  42. REUSABLE . 4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL /FUXPSL "QQ #VUUPO

    6*$PSF #VUUPO #VUUPO
  43. REUSABLE . 4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL /FUXPSL "QQ 6*$PSF

    #VUUPO #VUUPO #VUUPO
  44. REUSABLE . 4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL /FUXPSL "QQ 6*$PSF

    #VUUPO #VUUPO #VUUPO
  45. REUSABLE . 4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL /FUXPSL "QQ 6*$PSF

    #VUUPO #VUUPO %FQFOETPO
  46. REUSABLE . 4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL "QQ 6*$PSF #VUUPO

    #VUUPO %FQFOETPO /FUXPSL /FUXPSL
  47. REUSABLE . 4DSFFO 4DSFFO 4DSFFO /FUXPSL "QQ 6*$PSF #VUUPO #VUUPO

    %FQFOETPO /FUXPSL /FUXPSL /FUXPSL
  48. REUSABLE . 4DSFFO 4DSFFO 4DSFFO "QQ 6*$PSF #VUUPO #VUUPO %FQFOETPO

    /FUXPSL /FUXPSL /FUXPSL /FUXPSL
  49. REUSABLE . 4DSFFO 4DSFFO 4DSFFO "QQ 6*$PSF #VUUPO #VUUPO %FQFOETPO

    /FUXPSL /FUXPSL /FUXPSL /FUXPSL
  50. REUSABLE 4DSFFO 4DSFFO 4DSFFO "QQ 6*$PSF #VUUPO #VUUPO %FQFOETPO /FUXPSL

    /FUXPSL /FUXPSL /FUXPSL %FQFOETPO
  51. REUSABLE 4DSFFO 4DSFFO 4DSFFO %FQFOETPO /FUXPSL /FUXPSL /FUXPSL /FUXPSL %FQFOETPO

    6*$PSF #VUUPO #VUUPO
  52. REUSABLE 4DSFFO 4DSFFO 4DSFFO %FQFOETPO /FUXPSL /FUXPSL /FUXPSL /FUXPSL %FQFOETPO

    'FBUVSF 6*$PSF #VUUPO #VUUPO
  53. REUSABLE 4DSFFO 4DSFFO 4DSFFO %FQFOETPO /FUXPSL /FUXPSL /FUXPSL /FUXPSL %FQFOETPO

    'FBUVSF 'FBUVSF 6*$PSF #VUUPO #VUUPO
  54. REUSABLE 4DSFFO 4DSFFO 4DSFFO %FQFOETPO /FUXPSL /FUXPSL /FUXPSL /FUXPSL %FQFOETPO

    'FBUVSF 'FBUVSF 'FBUVSF 6*$PSF #VUUPO #VUUPO
  55. ADVANTAGES MODULAR

  56. ADVANTAGES MODULAR Improve reusability Improve discoverability Less code conflicts Faster

    build time in Gradle
  57. MERCARI MODULES

  58. REUSABLE Core Network DB Identity Core-java Android Core Util Util-Android

    UI Model Features Live Offer Payment Search Listing
  59. QUALITY CONSISTENT REUSABLE

  60. HOW LONG?

  61. THIS IS NOT A TEMPORARY PROJECT

  62. NOT A SOLO PROJECT

  63. LONG LASTING CHANGE ENGINEERING CULTURE

  64. FROM CODER

  65. FROM CODER TO ENGINEER

  66. ENGINEER CODER Writes Code Writes Code Code reviews Best solution

    for a problem Cares about Performance Cares about Quality Feedback to the Team Feedback to the product
  67. HOW?

  68. WRITE A PROPOSAL

  69. WRITE A PR WITH EXAMPLE

  70. COLLABORATIVE WORK

  71. WRITE GUIDELINES

  72. COLLABORATIVE WORK

  73. TRAIN THE TEAM

  74. OFFICE HOURS

  75. PAIR PROGRAMMING

  76. CODE REVIEWS

  77. RESULTS

  78. NEW ARCHITECTURE QUALITY 100% Adoption in new features

  79. 0 5 10 15 20 June July August Sept CODE

    COVERAGE QUALITY
  80. STRONG ENGINEER

  81. CREATE BETTER PRODUCTS

  82. THANKS! JOIN US! Challenge awaits you!