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.
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
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