Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Friction Logging and Internal Advocacy, DevRel/Asia 2020

82 views

Published on

One of the core functions of DevRel is to advocate for developers and make developer experience frictionless. We, DevRel at Google, use friction logs to create and provide structured feedback for products for different scenarios and help product teams deliver consistent experience across multiple products and features. In this talk, you will learn: - What is a friction log - Working as an internal outsider - How to write a friction log - How friction logs are different from bugs - Continuing conversations with product teams The goal is to be able to confidently write cross-product, experience-focused feedback.

Published in: Technology
  • Login to see the comments

  • Be the first to like this

Friction Logging and Internal Advocacy, DevRel/Asia 2020

  1. 1. Proprietary + Confidential Friction Logging and Internal Advocacy Emma Haruka Iwao (@Yuryu) Developer Advocate, Google Cloud 2020-11-14
  2. 2. Proprietary + Confidential What does DevRel do?
  3. 3. Proprietary + Confidential We are developers, too! DevRel is often part of engineering orgs DevRel as Developers
  4. 4. Proprietary + Confidential ● DevRel is about drive developers' success ● One way is external outreach ○ Spread the news! ● The other way is internal advocacy ○ Learn from external developers ○ Represent developers DevRel is a two-way communication Development Team DevRel External Developers Internal advocacyProducts FeedbackOutreach
  5. 5. Proprietary + Confidential DevRel is an Internal Outsider ● Product teams know too much ○ Instinctively avoid bumps and pitfalls ● Products are often too big ○ Harder to keep consistency across the board ● DevRel represents external community ○ Programming languages ○ Special interests (DevOps, Machine Learning, etc…)
  6. 6. Proprietary + Confidential We know developers the best ● Direct conversations ● Online forums ● Social media ● Community-specific We also have a bird's-eye view ● Across multiple products ● Different companies, competitors ● Open-source communities We can put products into context
  7. 7. Proprietary + Confidential ● Friction log is a tool to capture end-to-end experience throughout developer journey ● Provides broader picture and context ● Based on real world scenarios ○ "How do I deploy my Rails Girls app to Google App Engine?" Friction Log
  8. 8. Proprietary + Confidential Friction Log vs Bug ● Things work but are frustrating ● Based on external user scenarios ● New members do an excellent job ● Scenario oriented ● Multiple products ● Can't be automated ● Things don't work ● Based on specifications ● Experienced devs do an excellent job ● Component oriented ● One or a few products ● Can be automated (sometimes) Friction Log Bugs
  9. 9. Proprietary + Confidential A friction log should include ● A scenario based developer journey log ● Things to include: ○ Name, date ○ Use case ○ Product(s) ○ Environment (OS, languages) ○ Color-coded log https://docs.google.com/document/d/1HVG3t-mgGZKU4iMeguTWGejbnQ54qUTXwdCFkA5xHG0/edit
  10. 10. Proprietary + Confidential ● $ git clone https://github.com/yuryu/example.git ● Installing prerequisites ○ $ sudo apt update; sudo apt install libnuma1-dev libncurses5-dev ● Now build the binaries ○ $ ./configure ○ Stopped with error ■ checking for library containing lzma_end... no ■ configure: error: liblzma not found, please install lzma ○ Okay, let's install lzma ○ $ sudo apt install liblzma-dev ○ $ ./configure ○ $ make; make install ○ Build succeeded with the default options! ● Now let's run the binary… ○ $ example ○ Segmentation fault Example (clean environment)
  11. 11. Proprietary + Confidential ● Now let's try deploying this Rails application to this managed Kubernetes service… ○ $ kubectl apply -f deployment.yaml ○ $ kubectl get pods ■ NAME READY STATUS RESTARTS AGE ■ ruby-deployment-7fdb99cfd6-bbcxp 1/1 Running 0 39s ■ ruby-deployment-7fdb99cfd6-pm2x9 1/1 Running 0 42s ■ ruby-deployment-7fdb99cfd6-hdbbv 1/1 Running 0 42s ○ Seems good ● <snip> ● How can I run "rails db:migrate" ? ○ Googling "kubernetes rails db:migrate" ○ Okay, so we run tasks inside pods… ○ $ kubectl exec ruby-deployment-7fdb99cfd6-bbcxp -- bash -c 'cd ~/app && RAILS_ENV=production bin/rails db:migrate' ○ Succeeded! ● curl https://192.0.0.1/ ○ Worked! Example (Running Rails on Managed Kubernetes)
  12. 12. Proprietary + Confidential Focus on experience ● If you need to do a lot of research before making something work, that's a friction ● It's not just about fixing bugs ○ Write tutorials for a specific scenario ○ Improve documents ○ Develop a new helper library
  13. 13. Proprietary + Confidential When to write friction logs ● Before launching a new feature ● You welcome a new team member ● You hear feedback at events, on social media… ○ "I just tried to do X but it didn't work" and you know the context ● Whenever you struggle with something ○ Creating demos, writing tutorials, preparing talks, etc...
  14. 14. Proprietary + Confidential New members write better friction logs ● Friction logs are best written with ○ Technical expertise of a particular topic ○ Little to no insider knowledge ● New team members are closest to external developers ● An excellent onboarding tool ○ Contributes to products ○ Leaves concrete artifacts ○ Gains product knowledge
  15. 15. Proprietary + Confidential ● Talk to product teams ● Share the log ● File bugs ● Help product teams reproduce bugs ● Write a blog post ● Submit a talk based on the experience ● Answer a Stack Overflow question ○ Post a question, too! After writing a log
  16. 16. Proprietary + Confidential Could be a mailing list, or a chat group ↓ Tensorflow Designate a place to send logs to https://github.com/tensorflow/community/blob/master/sigs/build/tensorflow-testing.md
  17. 17. Proprietary + Confidential Friction log Log to bugs Bugs (action items) ● doc: Update prerequisites ● doc: Include package names for CentOS ● bug: Program crashes if LOCALE is set to… ● bug: liblzma should be optional ● bug: Add a command line options to… ● bug: Usage should include link to help ● feat: Support Zstandard algorithm ● …
  18. 18. Proprietary + Confidential Few product teams have extra cycles ● PMs have own plans ● "Thank you, but we don't have time…" Identify low hanging fruits. Examples: ● Simple UI change ● Documentation change Quantify the impact ● This blog post has XX views Help product teams prioritize Proposal: Can we add this to the known issues page? Proposal: --help should also show the help message
  19. 19. Proprietary + Confidential Further reading https://devrel.net/developer-experience/an-introduction-to-friction-logging
  20. 20. Proprietary + Confidential DevRel means external outreach + internal advocacy Friction logs are a tool to capture end-to-end user journey When to write friction logs? New feature, new team member, new question What to include? All little steps, color-coded according to emotion What to do after writing? Talk to product team, help them fix bugs Create more content based on the experience! Questions? - reach out to @Yuryu Summary

×