SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
Proprietary + Confidential
Friction Logging and
Internal Advocacy
Emma Haruka Iwao (@Yuryu)
Developer Advocate, Google Cloud
2020-11-14
Proprietary + Confidential
What does DevRel do?
Proprietary + Confidential
We are developers, too!
DevRel is often part of engineering orgs
DevRel as Developers
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
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
)
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
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
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
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
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)
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)
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
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...
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
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
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
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
● 

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
Proprietary + Confidential
Further reading
https://devrel.net/developer-experience/an-introduction-to-friction-logging
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

Mais conteĂșdo relacionado

Mais procurados

Introduction to Scriptcs
Introduction to Scriptcs Introduction to Scriptcs
Introduction to Scriptcs
Filip W
 

Mais procurados (18)

How to create/improve OSS products and its community
How to create/improve OSS products and its communityHow to create/improve OSS products and its community
How to create/improve OSS products and its community
 
What Goes In Must Come Out: Egress-Assess and Data Exfiltration
What Goes In Must Come Out: Egress-Assess and Data ExfiltrationWhat Goes In Must Come Out: Egress-Assess and Data Exfiltration
What Goes In Must Come Out: Egress-Assess and Data Exfiltration
 
Golang
GolangGolang
Golang
 
TypeScript - Javascript done right
TypeScript - Javascript done rightTypeScript - Javascript done right
TypeScript - Javascript done right
 
Building APIs with Apigilty and Zend Framework 2
Building APIs with Apigilty and Zend Framework 2Building APIs with Apigilty and Zend Framework 2
Building APIs with Apigilty and Zend Framework 2
 
Bringing Down the House - How One Python Script Ruled Over AntiVirus
Bringing Down the House - How One Python Script Ruled Over AntiVirusBringing Down the House - How One Python Script Ruled Over AntiVirus
Bringing Down the House - How One Python Script Ruled Over AntiVirus
 
PowerShell 101 - What is it and Why should YOU Care!
PowerShell 101 - What is it and Why should YOU Care!PowerShell 101 - What is it and Why should YOU Care!
PowerShell 101 - What is it and Why should YOU Care!
 
API All the Things!
API All the Things!API All the Things!
API All the Things!
 
OSS SW Basics Lecture 01: Boot camp
OSS SW Basics Lecture 01: Boot campOSS SW Basics Lecture 01: Boot camp
OSS SW Basics Lecture 01: Boot camp
 
Haskell code tools
Haskell code toolsHaskell code tools
Haskell code tools
 
TDC 2016 SP - Continuous Delivery para aplicaçÔes Java com ferramentas open-s...
TDC 2016 SP - Continuous Delivery para aplicaçÔes Java com ferramentas open-s...TDC 2016 SP - Continuous Delivery para aplicaçÔes Java com ferramentas open-s...
TDC 2016 SP - Continuous Delivery para aplicaçÔes Java com ferramentas open-s...
 
Introduction to Scriptcs
Introduction to Scriptcs Introduction to Scriptcs
Introduction to Scriptcs
 
The Art of AV Evasion - Or Lack Thereof
The Art of AV Evasion - Or Lack ThereofThe Art of AV Evasion - Or Lack Thereof
The Art of AV Evasion - Or Lack Thereof
 
Tlf2016
Tlf2016Tlf2016
Tlf2016
 
Groovy & Java
Groovy & JavaGroovy & Java
Groovy & Java
 
More developers on DevOps with Docker orchestration
More developers on DevOps with Docker orchestrationMore developers on DevOps with Docker orchestration
More developers on DevOps with Docker orchestration
 
Olf2016
Olf2016Olf2016
Olf2016
 
Tizen platform-dev-tds14sh
Tizen platform-dev-tds14shTizen platform-dev-tds14sh
Tizen platform-dev-tds14sh
 

Semelhante a Friction Logging and Internal Advocacy, DevRel/Asia 2020

Plc2 2015 your own ide
Plc2 2015 your own idePlc2 2015 your own ide
Plc2 2015 your own ide
Sigasi
 

Semelhante a Friction Logging and Internal Advocacy, DevRel/Asia 2020 (20)

Pentester++
Pentester++Pentester++
Pentester++
 
Drupalhagen 2014 kiss omg ftw
Drupalhagen 2014   kiss omg ftwDrupalhagen 2014   kiss omg ftw
Drupalhagen 2014 kiss omg ftw
 
Plc2 2015 your own ide
Plc2 2015 your own idePlc2 2015 your own ide
Plc2 2015 your own ide
 
We Need to Talk: How Communication Helps Code
We Need to Talk: How Communication Helps CodeWe Need to Talk: How Communication Helps Code
We Need to Talk: How Communication Helps Code
 
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
 
Overcoming the Fear of Contributing to Open Source
Overcoming the Fear of Contributing to Open SourceOvercoming the Fear of Contributing to Open Source
Overcoming the Fear of Contributing to Open Source
 
Becoming A Drupal Master Builder
Becoming A Drupal Master BuilderBecoming A Drupal Master Builder
Becoming A Drupal Master Builder
 
Choosing Drupal as your Content Management Framework
Choosing Drupal as your Content Management FrameworkChoosing Drupal as your Content Management Framework
Choosing Drupal as your Content Management Framework
 
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
Help! I inherited a Drupal Site! - DrupalCamp Atlanta 2016
 
Taking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and DecideTaking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and Decide
 
Taking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and DecideTaking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and Decide
 
LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101
 
Docker for business: How I stopped worrying about antipatterns
Docker for business: How I stopped worrying about antipatternsDocker for business: How I stopped worrying about antipatterns
Docker for business: How I stopped worrying about antipatterns
 
Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?
 
Deployer
DeployerDeployer
Deployer
 
Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...
Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...
Hacker vs company, Cloud Cyber Security Automated with Kubernetes - Demi Ben-...
 
Drupal and contribution (2010 - 2011 / 2)
Drupal and contribution (2010 - 2011 / 2)Drupal and contribution (2010 - 2011 / 2)
Drupal and contribution (2010 - 2011 / 2)
 
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
 
Efficient development workflows with composer
Efficient development workflows with composerEfficient development workflows with composer
Efficient development workflows with composer
 
Run stuff, Deploy Stuff, Jax London 2017 Edition
Run stuff, Deploy Stuff, Jax London 2017 EditionRun stuff, Deploy Stuff, Jax London 2017 Edition
Run stuff, Deploy Stuff, Jax London 2017 Edition
 

Mais de Emma Haruka Iwao

Mais de Emma Haruka Iwao (20)

Woman Tech Terrace 2020 Keynote - ć€ąă‚’æŒăĄç¶šă‘ă‚‹
Woman Tech Terrace 2020 Keynote - ć€ąă‚’æŒăĄç¶šă‘ă‚‹Woman Tech Terrace 2020 Keynote - ć€ąă‚’æŒăĄç¶šă‘ă‚‹
Woman Tech Terrace 2020 Keynote - ć€ąă‚’æŒăĄç¶šă‘ă‚‹
 
Google Cloud äž€èˆŹć…Źé–‹ăƒ‡ăƒŒă‚żă‚»ăƒƒăƒˆ
Google Cloud äž€èˆŹć…Źé–‹ăƒ‡ăƒŒă‚żă‚»ăƒƒăƒˆGoogle Cloud äž€èˆŹć…Źé–‹ăƒ‡ăƒŒă‚żă‚»ăƒƒăƒˆ
Google Cloud äž€èˆŹć…Źé–‹ăƒ‡ăƒŒă‚żă‚»ăƒƒăƒˆ
 
Favorite English YouTube Channels
Favorite English YouTube ChannelsFavorite English YouTube Channels
Favorite English YouTube Channels
 
Dockeräș‹ć§‹ă‚ăšæœ€æ–°ć‹•ć‘ 2015ćčŽ6月
Dockeräș‹ć§‹ă‚ăšæœ€æ–°ć‹•ć‘ 2015ćčŽ6月Dockeräș‹ć§‹ă‚ăšæœ€æ–°ć‹•ć‘ 2015ćčŽ6月
Dockeräș‹ć§‹ă‚ăšæœ€æ–°ć‹•ć‘ 2015ćčŽ6月
 
CephずGlusteræŹĄæœŸăƒă‚™ăƒŒă‚·ă‚™ăƒ§ăƒłăŠă‚™ăźæ–°æ©Ÿèƒœ
CephずGlusteræŹĄæœŸăƒă‚™ăƒŒă‚·ă‚™ăƒ§ăƒłăŠă‚™ăźæ–°æ©ŸèƒœCephずGlusteræŹĄæœŸăƒă‚™ăƒŒă‚·ă‚™ăƒ§ăƒłăŠă‚™ăźæ–°æ©Ÿèƒœ
CephずGlusteræŹĄæœŸăƒă‚™ăƒŒă‚·ă‚™ăƒ§ăƒłăŠă‚™ăźæ–°æ©Ÿèƒœ
 
Git for Begineers GitHub ハンă‚șă‚Șン
Git for Begineers GitHub ハンă‚șă‚ȘンGit for Begineers GitHub ハンă‚șă‚Șン
Git for Begineers GitHub ハンă‚șă‚Șン
 
Docker, Kubernetes and OpenShift v3
Docker, Kubernetes and OpenShift v3Docker, Kubernetes and OpenShift v3
Docker, Kubernetes and OpenShift v3
 
Dockeră‚€ăƒĄăƒŒă‚·ă‚™æ§‹çŻ‰ ćźŸè·”ăƒ†ă‚Żăƒ‹ăƒƒă‚Ż
Dockeră‚€ăƒĄăƒŒă‚·ă‚™æ§‹çŻ‰ ćźŸè·”ăƒ†ă‚Żăƒ‹ăƒƒă‚ŻDockeră‚€ăƒĄăƒŒă‚·ă‚™æ§‹çŻ‰ ćźŸè·”ăƒ†ă‚Żăƒ‹ăƒƒă‚Ż
Dockeră‚€ăƒĄăƒŒă‚·ă‚™æ§‹çŻ‰ ćźŸè·”ăƒ†ă‚Żăƒ‹ăƒƒă‚Ż
 
Storage by Red Hat #rhcpday 2015
Storage by Red Hat #rhcpday 2015Storage by Red Hat #rhcpday 2015
Storage by Red Hat #rhcpday 2015
 
Docker搑けOSべか[LT] @ #techgirl 2015/01
Docker搑けOSべか[LT] @ #techgirl 2015/01Docker搑けOSべか[LT] @ #techgirl 2015/01
Docker搑けOSべか[LT] @ #techgirl 2015/01
 
Docker on RHEL & Project Atomic ć…„é–€ - #Dockerjp 4
Docker on RHEL & Project Atomic ć…„é–€ - #Dockerjp 4Docker on RHEL & Project Atomic ć…„é–€ - #Dockerjp 4
Docker on RHEL & Project Atomic ć…„é–€ - #Dockerjp 4
 
RHEL, CentOS 7 ă«ç§»èĄŒă—ă‚ˆă†ïŒ LT
RHEL, CentOS 7 ă«ç§»èĄŒă—ă‚ˆă†ïŒ LTRHEL, CentOS 7 ă«ç§»èĄŒă—ă‚ˆă†ïŒ LT
RHEL, CentOS 7 ă«ç§»èĄŒă—ă‚ˆă†ïŒ LT
 
ćˆ†æ•Łă‚čăƒˆăƒŹăƒŒă‚žæŠ€èĄ“Cephăźæœ€æ–°æƒ…ć ±
ćˆ†æ•Łă‚čăƒˆăƒŹăƒŒă‚žæŠ€èĄ“Cephăźæœ€æ–°æƒ…ć ±ćˆ†æ•Łă‚čăƒˆăƒŹăƒŒă‚žæŠ€èĄ“Cephăźæœ€æ–°æƒ…ć ±
ćˆ†æ•Łă‚čăƒˆăƒŹăƒŒă‚žæŠ€èĄ“Cephăźæœ€æ–°æƒ…ć ±
 
DockerをRed HatăŻă©ăźă‚ˆă†ă«èŠ‹ăŠă„ă‚‹ăźă‹
DockerをRed HatăŻă©ăźă‚ˆă†ă«èŠ‹ăŠă„ă‚‹ăźă‹DockerをRed HatăŻă©ăźă‚ˆă†ă«èŠ‹ăŠă„ă‚‹ăźă‹
DockerをRed HatăŻă©ăźă‚ˆă†ă«èŠ‹ăŠă„ă‚‹ăźă‹
 
ćˆćżƒè€…ăŒ Python ăŠă‚™æˆžæƒ‘ăŁăŸăšă“ă‚
ćˆćżƒè€…ăŒ Python ăŠă‚™æˆžæƒ‘ăŁăŸăšă“ă‚ćˆćżƒè€…ăŒ Python ăŠă‚™æˆžæƒ‘ăŁăŸăšă“ă‚
ćˆćżƒè€…ăŒ Python ăŠă‚™æˆžæƒ‘ăŁăŸăšă“ă‚
 
Ceph Loves OpenStack: Why and How
Ceph Loves OpenStack: Why and HowCeph Loves OpenStack: Why and How
Ceph Loves OpenStack: Why and How
 
Rails Girls: Not Only for Girls - RubyKaigi 2014
Rails Girls: Not Only for Girls - RubyKaigi 2014Rails Girls: Not Only for Girls - RubyKaigi 2014
Rails Girls: Not Only for Girls - RubyKaigi 2014
 
AWS VM import / export ハンă‚șă‚Șン
AWS VM import / export ハンă‚șă‚ȘンAWS VM import / export ハンă‚șă‚Șン
AWS VM import / export ハンă‚șă‚Șン
 
Hello, systemd
Hello, systemdHello, systemd
Hello, systemd
 
私がCephă‚’ć„œăăȘ7぀た理由
私がCephă‚’ć„œăăȘ7ă€ăźç†ç”±ç§ăŒCephă‚’ć„œăăȘ7぀た理由
私がCephă‚’ć„œăăȘ7぀た理由
 

Último

Último (20)

Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 

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