Advertisement

Friction Logging and Internal Advocacy, DevRel/Asia 2020

Developer Advocate
Nov. 21, 2020
Advertisement

More Related Content

Similar to Friction Logging and Internal Advocacy, DevRel/Asia 2020(20)

Advertisement
Advertisement

Friction Logging and Internal Advocacy, DevRel/Asia 2020

  1. Proprietary + Confidential Friction Logging and Internal Advocacy Emma Haruka Iwao (@Yuryu) Developer Advocate, Google Cloud 2020-11-14
  2. Proprietary + Confidential What does DevRel do?
  3. Proprietary + Confidential We are developers, too! DevRel is often part of engineering orgs DevRel as Developers
  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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Proprietary + Confidential Further reading https://devrel.net/developer-experience/an-introduction-to-friction-logging
  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
Advertisement