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

Want to Make a Change? Stop Talking and Start L...

maltzj
April 24, 2018

Want to Make a Change? Stop Talking and Start Listening (Android Makers 2018)

maltzj

April 24, 2018
Tweet

More Decks by maltzj

Other Decks in Programming

Transcript

  1. Engineers Product Managers Pick the right features to build Designers

    Make those features beautiful and easy to use
  2. Engineers Write maintainable code Designers Make those features beautiful and

    easy to use Product Managers Pick the right features to build
  3. Takeaway #1: Other disciplines are not martians out to get

    you. They’re people solving hard problems in a different way than you are.
  4. • Incentive for engineer ◦ Code is easier to work

    with. More testable and extendable What are the incentives?
  5. We should pay down tech debt in our next sprint.

    It will make our code easier to work with.
  6. • Incentive for engineer ◦ Code is easier to work

    with. More testable and extendable What are the incentives?
  7. • Incentive for engineer ◦ Code is easier to work

    with. More testable and extendable • Incentive for product manager ◦ Bug free features as fast as possible What are the incentives?
  8. • Incentive for engineer ◦ Code is easier to work

    with. More testable and extendable • Incentive for product manager ◦ Bug free features as fast as possible • Incentive for everyone ◦ Build the best possible version of Yelp What are the incentives?
  9. • Incentive for engineer ◦ Code is easier to work

    with. More testable and extendable • Incentive for product manager ◦ Bug free features as fast as possible • Incentive for everyone ◦ Build the best possible version of Yelp What are the incentives?
  10. We should take time to pay down technical debt in

    our next sprint. We have a bunch of work on some challenging code coming up, and taking time to refactor first will make that work quicker
  11. Takeaway #2: Learn about what other stakeholders value in order

    to align what you want with what they want.
  12. Takeaway #3: No matter how right you are, you will

    only get to execute on your ideas if people trust you.
  13. • You have a proven track record of being correct

    • You show that you’ll consider other people’s perspective even without their input • You are willing to admit when you’re wrong Why would people trust you?
  14. • Changes with engineers ◦ Try out changes in tests

    ◦ Write a small, throwaway feature Start Small
  15. • Changes with engineers ◦ Try out changes in tests

    ◦ Write a small, throwaway feature • Changes with product managers ◦ Do only a few days of work ◦ Timebox Start Small
  16. • Changes with engineers ◦ Try out changes in tests

    ◦ Write a small, throwaway feature • Changes with product managers ◦ Do only a few days of work ◦ Timebox • Changes with designers ◦ Build a prototype ◦ User test Start Small
  17. • Touchpoints for Engineers ◦ Code reviews ◦ Design documents

    • Touchpoints for Product Managers ◦ Tickets/Progress Visualizations Provide touchpoints
  18. • Touchpoints for Engineers ◦ Code reviews ◦ Design documents

    • Touchpoints for Product Managers ◦ Tickets/Progress Visualizations • Touchpoints for Designers ◦ Over-the-shoulder design reviews ◦ Sending screenshots before shipping Provide touchpoints
  19. • Turn your long-term goal into milestones ◦ Gives more

    touchpoints ◦ Closer milestones should be well-defined ◦ Further milestones can be fuzzier • Have checks at each milestone to make sure you’re accomplishing your goals Have a plan
  20. • Incentives? Faster iteration speeds, more features, better Yelp •

    Milestone 1: Write + build a single file in Kotlin Rewrite our app in Kotlin
  21. • Incentives? Faster iteration speeds, more features, better Yelp •

    Milestone 1: Write + build a single file in Kotlin • Milestone 2: One engineer writes their tests in Kotlin Rewrite our app in Kotlin
  22. • Incentives? Faster iteration speeds, more features, better Yelp •

    Milestone 1: Write + build a single file in Kotlin • Milestone 2: One engineer writes their tests in Kotlin • Milestone 3: All engineers write their tests in Kotlin Rewrite our app in Kotlin
  23. • Incentives? Faster iteration speeds, more features, better Yelp •

    Milestone 1: Write + build a single file in Kotlin • Milestone 2: One engineer writes their tests in Kotlin • Milestone 3: All engineers write their tests in Kotlin • Milestone 4: Write all new code in Kotlin Rewrite our app in Kotlin
  24. • Incentives? Faster iteration speeds, more features, better Yelp •

    Milestone 1: Write + build a single file in Kotlin • Milestone 2: One engineer writes their tests in Kotlin • Milestone 3: All engineers write their tests in Kotlin • Milestone 4: Write all new code in Kotlin • Milestone 5: Whenever we touch an old file, migrate it to Kotlin Rewrite our app in Kotlin
  25. • Incentives? Faster iteration speeds, more features, better Yelp •

    Milestone 1: Write + build a single file in Kotlin • Milestone 2: One engineer writes their tests in Kotlin • Milestone 3: All engineers write their tests in Kotlin • Milestone 4: Write all new code in Kotlin • Milestone 5: Whenever we touch an old file, migrate it to Kotlin • Milestone 6: Migrate all of our legacy code to Kotlin Rewrite our app in Kotlin
  26. You’ve just joined a new team and you’ve noticed that

    they’re struggling to ship effectively. There’s no tests and no CI, so the build occasionally breaks and features need to be frequently patched
  27. • Continuous Integration to prevent people from breaking builds •

    Automated testing to ensure that old features don’t break • Rearchitecting the app to introduce new patterns which make it more unit-testable What you think should happen
  28. • Incentive for everyone ◦ Build the best possible version

    of your app • Incentive for engineers ◦ Less time spent fixing builds and bugs, more time writing cool new features • Incentive for product managers ◦ More features built because each one is more reliable Incentives
  29. • With Engineers ◦ Write excellent code ◦ Do great

    code reviews ◦ Be a resource of Android knowledge • With Product Managers ◦ Deliver timely and effective tickets Building Trust
  30. • Why is there no CI in place? ◦ Are

    people unfamiliar with CI? ◦ Do people know about it but haven’t had time? ◦ Is it too expensive? • Why are there no tests? ◦ Is there a knowledge gap? Understand
  31. “Hey team, I think we should invest some time in

    implementing a CI Server. It will help us prevent these issues where master hasn’t compiled. It’ll take about 1 week if we setup ${service here}”
  32. • How many times were people breaking master previously? What

    about now? • Call this out in your team retrospectives Execute and Measure
  33. “Hey Team. I think we should start writing tests. It

    would help us prevent all these errors in production. It’ll take a few months, but we can first setup espresso, then write tests for high value flows, and then test everything”
  34. • People in other disciplines are solving hard problems with

    different incentive structures • Learn what’s important to your other teammates, especially cross-functional ones • No matter how good your ideas are, you need to build trust that you can execute them Three Big Takeaways
  35. • How To Productively Disagree • Life’s Great and Everything

    Will Be Ok, Kotlin is here • The Lean Startup • Kanban: Successful Evolutionary Change for Your Software Business • Agile Software Development In Scrum • Don’t Make Me Think • A Designer’s Guide to Android • Fundamentals of Design: How to Think Like a Designer • Learning To Speak Designer External Links