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

Working in an effective team at DevFest Istanbul 2015

Working in an effective team at DevFest Istanbul 2015

How we work in an effective team at AppFoundry.

Slides from the 'Working in an effective team' session at DevFest Istanbul 2015

Most of us know about agile practices such as Scrum or Kanban, we have heard about and/or practice continuous integration and maybe even continuous delivery. We dream of TDD, BDD, XP and other buzzwords. But how do you put these in practice? How do you get your team to be an effective team? How do you get those dreams to not turn out as nightmares?

That is what we were asking ourselves at AppFoundry while making our apps. How would we apply this on our native clients? How do you do these things on Android? And how do you manage your backends in conjunction with these frontend platforms?

In this talk we’ll tell you the story of our quest to become an effective team.

Filip Maelbrancke

November 29, 2015
Tweet

More Decks by Filip Maelbrancke

Other Decks in Programming

Transcript

  1. Working in an effective team
    Filip Maelbrancke
    AppFoundry

    View Slide

  2. Your host
    Filip Maelbrancke
    Consultant @ AppFoundry
    [email protected]
    @fmaelbrancke

    View Slide

  3. About us
    Consulting Staffing In-house projects
    #dfist

    View Slide

  4. AppFoundry
    appfoundry.be
    #dfist

    View Slide

  5. About us
    #dfist

    View Slide

  6. View Slide

  7. ?

    View Slide

  8. Goals

    View Slide

  9. Communication

    View Slide

  10. Communication
    Humans = social
    Lots of interaction

    View Slide

  11. Communication
    Team discussions

    View Slide

  12. Communication
    Free to express
    (both ideas and feelings)

    View Slide

  13. Library 1 Library 2
    Feature ✔ ✖
    Capability ✔ ✔
    Characteristic ✔ ✔
    Option ✔ ✔
    Choice ✖ ✔
    … ✖ ✔
    … ✔ ✔
    … ✔ ✔

    View Slide

  14. Communication

    View Slide

  15. Trust & Respect
    Makes the team autonomous

    View Slide

  16. Hire as a team

    View Slide

  17. Technical debt

    View Slide

  18. This is how I'll explain "no time for big refactoring,
    let's do business value" to the business.

    View Slide

  19. Atmosphere

    View Slide

  20. View Slide

  21. Brown bag lunches

    View Slide

  22. View Slide

  23. The Quest

    View Slide

  24. Take baby steps

    View Slide

  25. How we work
    1 2
    3
    4
    5
    REQUIREMENTS PLAN SHOWCASE
    STATUS REPORTS
    EVALUATE
    BACKLOG 2 WEEK SPRINTS SPRINT DEMO
    DAILY STANDUP
    RETROSPECTIVE

    View Slide

  26. Minimum viable product

    View Slide

  27. –H. Alan Stevens
    Building the right thing is always more important than
    building it right.

    View Slide

  28. Scrum
    1 2
    3
    4
    5
    REQUIREMENTS PLAN SHOWCASE
    STATUS REPORTS
    EVALUATE
    BACKLOG 2 WEEK SPRINTS SPRINT DEMO
    DAILY STANDUP
    RETROSPECTIVE

    View Slide

  29. View Slide

  30. Team demo
    Retrospective

    View Slide

  31. Prototyping

    View Slide

  32. Whiteboard

    View Slide

  33. Paper prototyping

    View Slide

  34. View Slide

  35. View Slide

  36. View Slide

  37. View Slide

  38. View Slide

  39. User feedback

    View Slide

  40. A/B testing

    View Slide

  41. View Slide

  42. View Slide

  43. Code review
    Detect problems early.
    Learn from someone else’s code.

    View Slide

  44. View Slide

  45. View Slide

  46. View Slide

  47. Pair programming

    View Slide

  48. Testing strategy

    View Slide

  49. Confidence
    Refactor possible
    Code handover
    Fix bugs once

    View Slide

  50. Test Driven Development
    RED
    FAILING TEST
    GREEN
    FIXED TEST
    BLUE
    REFACTOR

    View Slide

  51. Automatic
    On every commit / scheduled
    Unit tests
    UI integration tests
    with Espresso

    View Slide

  52. Test devices

    View Slide

  53. Remote

    View Slide

  54. View Slide

  55. View Slide

  56. Creating software = complex
    Continuous
    integration Ensure quality
    Automate
    high-quality, robust and reliable apps
    tedious / error-prone activities

    View Slide

  57. Reduce risk
    Continuous
    integration Reduce overhead
    Quality Assurance

    View Slide

  58. Automate all the things

    View Slide

  59. View Slide

  60. Continuous integration
    1
    2
    3
    4
    CODE & COMMIT BUILD & CHECK
    CI PICKUP
    REPORT RESULTS

    View Slide

  61. Build pipeline
    Checkout /
    compile
    Unit tests
    Test
    coverage
    Code
    analysis
    Create
    deployable
    artifact
    Deploy for
    automatic
    QA test
    Trigger
    automated
    QA stage

    View Slide

  62. Auto publish
    Delivery
    Promote APK to production
    Automate
    Google Play alpha / beta
    without additional tools

    View Slide

  63. Continuous
    Delivery

    View Slide

  64. Continuous delivery / deliverable
    Continuous
    Delivery
    Deliverable Push on demand
    Confidence
    of being deployable

    View Slide

  65. Feature-based deployment
    A successful Git branching model
    http://nvie.com/posts/a-successful-git-branching-model/

    View Slide

  66. View Slide

  67. View Slide

  68. Internal QA
    Testing
    Internal alpha testing program
    Beta testing / staged rollout
    of being deployable

    View Slide

  69. Metrics

    View Slide

  70. Dashboard

    View Slide

  71. Dashing

    View Slide

  72. Panic…

    View Slide

  73. Questions?
    Filip Maelbrancke
    Consultant @ AppFoundry
    [email protected]
    @fmaelbrancke

    View Slide

  74. Thank you!

    View Slide