SlideShare uma empresa Scribd logo
1 de 22
GROWING DEVELOPER
COMMUNITY ONE PULL
REQUEST AT AT TIME
Strong foundation and core principles, environment that
promotes checks and balances, and human interactions
with empathy, acknowledgement and inclusion.
Alex Bulankou,
Engineering Manager,
Facebook Seattle
Intro
◦ Alex Bulankou, Engineering Manager, Facebook, Seattle
◦ My experience
◦ Facebook, Video Metrics
◦ internal services that calculate metrics from player signals, Multiple other
teams contributing definitions for input events, business logic, dependencies
and consumers
◦ FB environment: influencing without formal authority: through design, code
review and rollout
◦ Microsoft, Application Insights
◦ 10 SDKs on GitHub
◦ Repos in 10 languages supported by a team of 5
Plant Metaphor: What it Takes to
Grow One
Soil: substance,
foundation,
structure
Water: human
interactions
Sunlight: Environment
SOIL =
STRUCTURE,
FOUNDATION
Foundation, core principles and unifying theme is the soil
of the project, the structure that will keep the developer
community united.
Vision Principles Foundation Ownership
Vision and Principles
◦ What is your project?
◦ What is your project NOT?
◦ Why does it need developer community?
◦ In the time of disagreement and uncertainty,
you need strong principles to lean on.
You Need a Good Core
◦ Community is attracted to strong foundation
◦ Core of the project: key functionality, set of algorithms,
interface definitions. Make sure core is healthy.
◦ Sort out the IP. Ask for help. Don’t assume.
◦ Choose the right contribution license. If unsure, don’t make
public.
◦ Don’t take dependencies on the libraries, if you don’t understand
license model
◦ Common mistake: leaving core part or the project private,
i.e. not providing access to community, when it is required
for day-to-day development and debugging.
Ownership and Responsibility
◦ Who makes decisions?
◦ Go back to principles. Why do you need developer
community?
◦ You can take where community wants it to go, but where
does it leave business?
◦ Responsible ownership example:
◦ Core team signs off on changes to key areas, code
coverage regressions, large changes
◦ Test failures won’t let you check in, when integration
tests fail, last change is rolled back
◦ Branches: regular snap from dev to stable branch. All
contributions go to dev branch, it integrates into stable
branch at regular cadence
Can you grow developer
community without strong
foundation?
Without foundation, you get areas of growth
that cannot be kept together, eventual erosion,
break-out and forks and developer community
abandoning it.
Water ~ human
interactions
Sunlight ~
Environment,
process
SUNLIGHT =
ENVIRONMENT
Well defined environment is the sunlight that will
promote sustainable growth
Simplify, Automate, Document
Transparent Planning
Scheduling Model
Design Reviews
Simplify, Automate and Document
◦ What we know makes us biased
◦ The feedback from new people on the project is so valuable
◦ Any process too complex to remember is not worth following
◦ Favor automation over documentation
◦ Hackathons are glamorous, but automate’thons and
document’a’thons have much larger ROI
◦ Never let investigation and debugging go to waste:
observe the magic happen and have it documented
Transparent Planning
◦ Why do people and projects choose secrecy over
transparency? Ulterior motives or desire to “protect?
◦ Have a visible cadence and plan for everyone to see
◦ Good practice:
◦ link stable branch snap to the milestone
◦ Use tags on GitHub issues to indicate when they are
planned for
◦ Invite people who opened the requests to join the
planning calls and provide context
◦ Great way to attract attention to your project. But be prepared:
anything can happen during free discussion 
Issue
Session collection not
thread safe
ErrorLogger interface
OOMs during report
generation
@sandman
@sandman
@xyz78 M2
M1
Conf20180601
Use Design Reviews to Avoid
Surprises at Pull Request Time
◦ When pull request is ready it is too late to question
the how
◦ Too often it leads to wasted effort or sub-optimal
compromise
◦ Solution: design reviews
◦ Require large pull requests reference a design review,
approved by core team
◦ Assign design reviews to core team engineers so they own a
decision
◦ Don’t be afraid to scare off contributors with design
reviews, what scares them more is unpredictable PR
reviews.
Issuev
ErrorLogger interface
ErrorLogger Impl
DesignReview
DesignApproved
@xyz78
@sandman
Scheduling Model: Review Now or Code
Later
◦ Reality: you have more requests than developers
◦ Don’t say no, look for options
◦ Verified model for internal teams: propose to
consult and review if implemented by another
team or schedule for later
◦ Make the list of current requests and prioritization
criteria transparent
◦ Create and assign tasks around planning and
prioritization first, then worry about completion
What Happens If Project Doesn’t have a
Well Maintained Environment?
You get a ”tundra”, dormant,
growth is crippled, but ready to
wake up and grow.
Software project analogy: project
that is impossible to build, unit
tests, missing documentation to
get started
Soil ~ substance,
foundation
Water ~ human
interactions
WATER =
HUMAN
INTERACTIONS
Human interactions is water that will keep nourishing
developer community
React Immediately
Show Empathy and Backbone
Acknowledge and Include
Facilitate Learning
React To Questions and
Pull Requests Immediately
◦ Consider reality
◦ We (online users) are competing with goldfish
in whose attention span is bigger
◦ Goldfish is winning
◦ However
◦ most projects won’t have any support
whatsoever, let alone fast reaction
◦ as soon as you respond, the status of your
project is elevated to a different category
◦ if you respond while they are still on it, it is a
guaranteed follow through, you got them
◦ Internal is really no different
Show Empathy *and* Backbone
◦ Show Empathy
◦ Be a good physician: understand before you diagnose
◦ Even if you reject the contribution, don’t ignore the symptoms.
◦ Even if they end up forking your project and not contributing,
aim to understand
◦ Show Backbone
◦ Example from a Design Interview
◦ In times of uncertainty go back to your principles and why’s
◦ Why did you create the repo?
◦ How badly do you want this contribution?
◦ Your reputation and sanity of your team is more important
Acknowledge and Include
◦ Give all credit to outside contributors
◦ @mention them as often as you can: in
code reviews, in suggestions to other
contributors, weekly summary, hero board
◦ Include them to design discussions, reach
out for advice
Make your Project Someone’s Learning
Opportunity
◦ Real project experience if the critical (and
missing) part for many student developers,
especially those with less known schools
◦ Open source projects sponsored by big
companies provide this opportunity
◦ Add the learning component: difficulty rating,
language track, proficiency scores.
Issue
ErrorLogger interface
Add error log sorting
L300 @xyz78
@sandman
c++
ReactJS
L200
Project with good foundation and
process but without human support?
Soil ~ substance,
foundation
Sunlight ~
Environment,
process
Feels like a desert or ghost town: why all the well
defined foundation and processes if no one is
there to contribute or code review? In reality:
rare and easiest to fix.
Putting it All Together
Vision
Principles
Foundation
Simplify, Automate, Document
Transparent Planning
Scheduling Model
Design Reviews
Ownership
React Immediately
Show Empathy and Backbone Acknowledge and Include
Facilitate Learning
Thank you

Mais conteúdo relacionado

Mais procurados

Jfokus 2015 "Thinking Fast and Slow with Software Development"
Jfokus 2015 "Thinking Fast and Slow with Software Development"Jfokus 2015 "Thinking Fast and Slow with Software Development"
Jfokus 2015 "Thinking Fast and Slow with Software Development"Daniel Bryant
 
Agile UX, Yes We Can!
Agile UX, Yes We Can!Agile UX, Yes We Can!
Agile UX, Yes We Can!Alla Zollers
 
Software Development in 21st Century
Software Development in 21st CenturySoftware Development in 21st Century
Software Development in 21st CenturyHenry Jacob
 
Just Enough for Innovation
Just Enough for InnovationJust Enough for Innovation
Just Enough for InnovationJosie Scott
 
Lean UX: Getting out of the deliverables business
Lean UX: Getting out of the deliverables businessLean UX: Getting out of the deliverables business
Lean UX: Getting out of the deliverables businessJeff Gothelf
 
Pscad agile adoption
Pscad agile adoptionPscad agile adoption
Pscad agile adoptionsdeconf
 
Agile Experience In Complex Projects
Agile Experience In Complex ProjectsAgile Experience In Complex Projects
Agile Experience In Complex ProjectsBorys Lebeda
 
Agile-User Experience Design: an Agile and User-Centered Process?
Agile-User Experience Design: an Agile and User-Centered Process?Agile-User Experience Design: an Agile and User-Centered Process?
Agile-User Experience Design: an Agile and User-Centered Process?louschwartz
 
Marty cagan built to learn - ux
Marty cagan built to learn - uxMarty cagan built to learn - ux
Marty cagan built to learn - uxIxDA Hamburg
 
Incremental Design
Incremental DesignIncremental Design
Incremental DesignRuss Wilson
 
Kontagent sxsw2011
Kontagent sxsw2011Kontagent sxsw2011
Kontagent sxsw2011krismet
 
LJC 2014 "Professional Software Development: Thinking Fast and Slow"
LJC 2014 "Professional Software Development: Thinking Fast and Slow"LJC 2014 "Professional Software Development: Thinking Fast and Slow"
LJC 2014 "Professional Software Development: Thinking Fast and Slow"Daniel Bryant
 
The Creative Product Owner
The Creative Product OwnerThe Creative Product Owner
The Creative Product OwnerAl Bennett
 
Hardware is hard(er)
Hardware is hard(er)Hardware is hard(er)
Hardware is hard(er)Thoughtworks
 
Lean Software Development: Values and Principles
Lean Software Development: Values and PrinciplesLean Software Development: Values and Principles
Lean Software Development: Values and PrinciplesBalaji Sathram
 
IxDA October Event: Prototyping Approaches and Outcomes
IxDA October Event: Prototyping Approaches and OutcomesIxDA October Event: Prototyping Approaches and Outcomes
IxDA October Event: Prototyping Approaches and OutcomesIxDA Chicago
 

Mais procurados (20)

Jfokus 2015 "Thinking Fast and Slow with Software Development"
Jfokus 2015 "Thinking Fast and Slow with Software Development"Jfokus 2015 "Thinking Fast and Slow with Software Development"
Jfokus 2015 "Thinking Fast and Slow with Software Development"
 
Agile UX, Yes We Can!
Agile UX, Yes We Can!Agile UX, Yes We Can!
Agile UX, Yes We Can!
 
Software Development in 21st Century
Software Development in 21st CenturySoftware Development in 21st Century
Software Development in 21st Century
 
Just Enough for Innovation
Just Enough for InnovationJust Enough for Innovation
Just Enough for Innovation
 
Lean UX: Getting out of the deliverables business
Lean UX: Getting out of the deliverables businessLean UX: Getting out of the deliverables business
Lean UX: Getting out of the deliverables business
 
Pscad agile adoption
Pscad agile adoptionPscad agile adoption
Pscad agile adoption
 
Continuous Innovation
Continuous InnovationContinuous Innovation
Continuous Innovation
 
Agile UX
Agile UXAgile UX
Agile UX
 
Agile Experience In Complex Projects
Agile Experience In Complex ProjectsAgile Experience In Complex Projects
Agile Experience In Complex Projects
 
Agile-User Experience Design: an Agile and User-Centered Process?
Agile-User Experience Design: an Agile and User-Centered Process?Agile-User Experience Design: an Agile and User-Centered Process?
Agile-User Experience Design: an Agile and User-Centered Process?
 
7 Myths of Agile Development
7 Myths of Agile Development7 Myths of Agile Development
7 Myths of Agile Development
 
Marty cagan built to learn - ux
Marty cagan built to learn - uxMarty cagan built to learn - ux
Marty cagan built to learn - ux
 
Incremental Design
Incremental DesignIncremental Design
Incremental Design
 
Kontagent sxsw2011
Kontagent sxsw2011Kontagent sxsw2011
Kontagent sxsw2011
 
LJC 2014 "Professional Software Development: Thinking Fast and Slow"
LJC 2014 "Professional Software Development: Thinking Fast and Slow"LJC 2014 "Professional Software Development: Thinking Fast and Slow"
LJC 2014 "Professional Software Development: Thinking Fast and Slow"
 
The Creative Product Owner
The Creative Product OwnerThe Creative Product Owner
The Creative Product Owner
 
Hardware is hard(er)
Hardware is hard(er)Hardware is hard(er)
Hardware is hard(er)
 
Silicon Valley Agile Leadership Network: Agile for Product Organizations By M...
Silicon Valley Agile Leadership Network: Agile for Product Organizations By M...Silicon Valley Agile Leadership Network: Agile for Product Organizations By M...
Silicon Valley Agile Leadership Network: Agile for Product Organizations By M...
 
Lean Software Development: Values and Principles
Lean Software Development: Values and PrinciplesLean Software Development: Values and Principles
Lean Software Development: Values and Principles
 
IxDA October Event: Prototyping Approaches and Outcomes
IxDA October Event: Prototyping Approaches and OutcomesIxDA October Event: Prototyping Approaches and Outcomes
IxDA October Event: Prototyping Approaches and Outcomes
 

Semelhante a Growing Developer Community One Pull Request At a Time

How to Pitch a Software Development Initiative and Ignite Culture Change
How to Pitch a Software Development Initiative and Ignite Culture ChangeHow to Pitch a Software Development Initiative and Ignite Culture Change
How to Pitch a Software Development Initiative and Ignite Culture ChangeRed Gate Software
 
ChicagoJS's JSCAMP 2019 Keynote - Inclusive Architecture - Building Sustainab...
ChicagoJS's JSCAMP 2019 Keynote - Inclusive Architecture - Building Sustainab...ChicagoJS's JSCAMP 2019 Keynote - Inclusive Architecture - Building Sustainab...
ChicagoJS's JSCAMP 2019 Keynote - Inclusive Architecture - Building Sustainab...Tracy Lee
 
How to make change happen in your organisation by talking your devs language
How to make change happen in your organisation by talking your devs languageHow to make change happen in your organisation by talking your devs language
How to make change happen in your organisation by talking your devs languageBuiltvisible
 
Process and flows of an IT Project - presentation.pdf
Process and flows of an IT Project - presentation.pdfProcess and flows of an IT Project - presentation.pdf
Process and flows of an IT Project - presentation.pdfCasey Ordoña
 
Agile adoption julen c. mohanty
Agile adoption   julen c. mohantyAgile adoption   julen c. mohanty
Agile adoption julen c. mohantyJulen Mohanty
 
Agile vs Waterfall: May the 4th Be With You in the Great Debate
 Agile vs Waterfall: May the 4th Be With You in the Great Debate Agile vs Waterfall: May the 4th Be With You in the Great Debate
Agile vs Waterfall: May the 4th Be With You in the Great DebateAggregage
 
Agile vs.-traditional-roles
Agile vs.-traditional-rolesAgile vs.-traditional-roles
Agile vs.-traditional-rolesAnthony Crabtree
 
Doing It On Your Own: When to Call in the Consultants, When to Leave Them Out
Doing It On Your Own: When to Call in the Consultants, When to Leave Them OutDoing It On Your Own: When to Call in the Consultants, When to Leave Them Out
Doing It On Your Own: When to Call in the Consultants, When to Leave Them OutNTEN
 
Just Married: User Centered Design and Agile
Just Married: User Centered Design and AgileJust Married: User Centered Design and Agile
Just Married: User Centered Design and AgileMemi Beltrame
 
Robert Mc Geachy Common Pitfalls Agile
Robert Mc Geachy Common Pitfalls AgileRobert Mc Geachy Common Pitfalls Agile
Robert Mc Geachy Common Pitfalls AgileRobert McGeachy
 
Applying both of waterfall and iterative development
Applying both of waterfall and iterative developmentApplying both of waterfall and iterative development
Applying both of waterfall and iterative developmentDeny Prasetia
 
AWS re:Invent 2016: Open-Source Resources (DCS201)
AWS re:Invent 2016: Open-Source Resources (DCS201)AWS re:Invent 2016: Open-Source Resources (DCS201)
AWS re:Invent 2016: Open-Source Resources (DCS201)Amazon Web Services
 
Agile And Open Development
Agile And Open DevelopmentAgile And Open Development
Agile And Open DevelopmentRoss Gardler
 
Software Development Methodologies
Software Development Methodologies Software Development Methodologies
Software Development Methodologies Frances Coronel
 
Build your Own Technology Roadmap!
Build your Own Technology Roadmap!Build your Own Technology Roadmap!
Build your Own Technology Roadmap!Sascha Wenninger
 
Introduction to Agile Software Development Process
Introduction to Agile Software Development ProcessIntroduction to Agile Software Development Process
Introduction to Agile Software Development ProcessSoftware Park Thailand
 
Near east university
Near east universityNear east university
Near east universityDerrickDusabe
 
How we got everyone at MYOB hooked on UX, and how we're managing their addict...
How we got everyone at MYOB hooked on UX, and how we're managing their addict...How we got everyone at MYOB hooked on UX, and how we're managing their addict...
How we got everyone at MYOB hooked on UX, and how we're managing their addict...Megan Dell
 
Why Can't We All Just Get Along? Improving Designer/Developer Collaboration
Why Can't We All Just Get Along? Improving Designer/Developer CollaborationWhy Can't We All Just Get Along? Improving Designer/Developer Collaboration
Why Can't We All Just Get Along? Improving Designer/Developer CollaborationAllison Corbett
 

Semelhante a Growing Developer Community One Pull Request At a Time (20)

How to Pitch a Software Development Initiative and Ignite Culture Change
How to Pitch a Software Development Initiative and Ignite Culture ChangeHow to Pitch a Software Development Initiative and Ignite Culture Change
How to Pitch a Software Development Initiative and Ignite Culture Change
 
ChicagoJS's JSCAMP 2019 Keynote - Inclusive Architecture - Building Sustainab...
ChicagoJS's JSCAMP 2019 Keynote - Inclusive Architecture - Building Sustainab...ChicagoJS's JSCAMP 2019 Keynote - Inclusive Architecture - Building Sustainab...
ChicagoJS's JSCAMP 2019 Keynote - Inclusive Architecture - Building Sustainab...
 
How to make change happen in your organisation by talking your devs language
How to make change happen in your organisation by talking your devs languageHow to make change happen in your organisation by talking your devs language
How to make change happen in your organisation by talking your devs language
 
Process and flows of an IT Project - presentation.pdf
Process and flows of an IT Project - presentation.pdfProcess and flows of an IT Project - presentation.pdf
Process and flows of an IT Project - presentation.pdf
 
Agile adoption julen c. mohanty
Agile adoption   julen c. mohantyAgile adoption   julen c. mohanty
Agile adoption julen c. mohanty
 
Agile vs Waterfall: May the 4th Be With You in the Great Debate
 Agile vs Waterfall: May the 4th Be With You in the Great Debate Agile vs Waterfall: May the 4th Be With You in the Great Debate
Agile vs Waterfall: May the 4th Be With You in the Great Debate
 
Agile vs.-traditional-roles
Agile vs.-traditional-rolesAgile vs.-traditional-roles
Agile vs.-traditional-roles
 
Doing It On Your Own: When to Call in the Consultants, When to Leave Them Out
Doing It On Your Own: When to Call in the Consultants, When to Leave Them OutDoing It On Your Own: When to Call in the Consultants, When to Leave Them Out
Doing It On Your Own: When to Call in the Consultants, When to Leave Them Out
 
Just Married: User Centered Design and Agile
Just Married: User Centered Design and AgileJust Married: User Centered Design and Agile
Just Married: User Centered Design and Agile
 
Robert Mc Geachy Common Pitfalls Agile
Robert Mc Geachy Common Pitfalls AgileRobert Mc Geachy Common Pitfalls Agile
Robert Mc Geachy Common Pitfalls Agile
 
Applying both of waterfall and iterative development
Applying both of waterfall and iterative developmentApplying both of waterfall and iterative development
Applying both of waterfall and iterative development
 
AWS re:Invent 2016: Open-Source Resources (DCS201)
AWS re:Invent 2016: Open-Source Resources (DCS201)AWS re:Invent 2016: Open-Source Resources (DCS201)
AWS re:Invent 2016: Open-Source Resources (DCS201)
 
Agile And Open Development
Agile And Open DevelopmentAgile And Open Development
Agile And Open Development
 
Software Development Methodologies
Software Development Methodologies Software Development Methodologies
Software Development Methodologies
 
Build your Own Technology Roadmap!
Build your Own Technology Roadmap!Build your Own Technology Roadmap!
Build your Own Technology Roadmap!
 
Introduction to Agile Software Development Process
Introduction to Agile Software Development ProcessIntroduction to Agile Software Development Process
Introduction to Agile Software Development Process
 
Near east university
Near east universityNear east university
Near east university
 
Agile Technical Leadership
Agile Technical LeadershipAgile Technical Leadership
Agile Technical Leadership
 
How we got everyone at MYOB hooked on UX, and how we're managing their addict...
How we got everyone at MYOB hooked on UX, and how we're managing their addict...How we got everyone at MYOB hooked on UX, and how we're managing their addict...
How we got everyone at MYOB hooked on UX, and how we're managing their addict...
 
Why Can't We All Just Get Along? Improving Designer/Developer Collaboration
Why Can't We All Just Get Along? Improving Designer/Developer CollaborationWhy Can't We All Just Get Along? Improving Designer/Developer Collaboration
Why Can't We All Just Get Along? Improving Designer/Developer Collaboration
 

Último

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 organizationRadu Cotescu
 
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, Adobeapidays
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
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 WorkerThousandEyes
 
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 WoodJuan lago vázquez
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
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, ...apidays
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
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...apidays
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
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 DevelopmentsTrustArc
 
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 CVKhem
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
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 FresherRemote DBA Services
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 

Último (20)

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
 
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
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
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
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
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, ...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 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...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
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
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

Growing Developer Community One Pull Request At a Time

  • 1. GROWING DEVELOPER COMMUNITY ONE PULL REQUEST AT AT TIME Strong foundation and core principles, environment that promotes checks and balances, and human interactions with empathy, acknowledgement and inclusion. Alex Bulankou, Engineering Manager, Facebook Seattle
  • 2. Intro ◦ Alex Bulankou, Engineering Manager, Facebook, Seattle ◦ My experience ◦ Facebook, Video Metrics ◦ internal services that calculate metrics from player signals, Multiple other teams contributing definitions for input events, business logic, dependencies and consumers ◦ FB environment: influencing without formal authority: through design, code review and rollout ◦ Microsoft, Application Insights ◦ 10 SDKs on GitHub ◦ Repos in 10 languages supported by a team of 5
  • 3. Plant Metaphor: What it Takes to Grow One Soil: substance, foundation, structure Water: human interactions Sunlight: Environment
  • 4. SOIL = STRUCTURE, FOUNDATION Foundation, core principles and unifying theme is the soil of the project, the structure that will keep the developer community united. Vision Principles Foundation Ownership
  • 5. Vision and Principles ◦ What is your project? ◦ What is your project NOT? ◦ Why does it need developer community? ◦ In the time of disagreement and uncertainty, you need strong principles to lean on.
  • 6. You Need a Good Core ◦ Community is attracted to strong foundation ◦ Core of the project: key functionality, set of algorithms, interface definitions. Make sure core is healthy. ◦ Sort out the IP. Ask for help. Don’t assume. ◦ Choose the right contribution license. If unsure, don’t make public. ◦ Don’t take dependencies on the libraries, if you don’t understand license model ◦ Common mistake: leaving core part or the project private, i.e. not providing access to community, when it is required for day-to-day development and debugging.
  • 7. Ownership and Responsibility ◦ Who makes decisions? ◦ Go back to principles. Why do you need developer community? ◦ You can take where community wants it to go, but where does it leave business? ◦ Responsible ownership example: ◦ Core team signs off on changes to key areas, code coverage regressions, large changes ◦ Test failures won’t let you check in, when integration tests fail, last change is rolled back ◦ Branches: regular snap from dev to stable branch. All contributions go to dev branch, it integrates into stable branch at regular cadence
  • 8. Can you grow developer community without strong foundation? Without foundation, you get areas of growth that cannot be kept together, eventual erosion, break-out and forks and developer community abandoning it. Water ~ human interactions Sunlight ~ Environment, process
  • 9. SUNLIGHT = ENVIRONMENT Well defined environment is the sunlight that will promote sustainable growth Simplify, Automate, Document Transparent Planning Scheduling Model Design Reviews
  • 10. Simplify, Automate and Document ◦ What we know makes us biased ◦ The feedback from new people on the project is so valuable ◦ Any process too complex to remember is not worth following ◦ Favor automation over documentation ◦ Hackathons are glamorous, but automate’thons and document’a’thons have much larger ROI ◦ Never let investigation and debugging go to waste: observe the magic happen and have it documented
  • 11. Transparent Planning ◦ Why do people and projects choose secrecy over transparency? Ulterior motives or desire to “protect? ◦ Have a visible cadence and plan for everyone to see ◦ Good practice: ◦ link stable branch snap to the milestone ◦ Use tags on GitHub issues to indicate when they are planned for ◦ Invite people who opened the requests to join the planning calls and provide context ◦ Great way to attract attention to your project. But be prepared: anything can happen during free discussion  Issue Session collection not thread safe ErrorLogger interface OOMs during report generation @sandman @sandman @xyz78 M2 M1 Conf20180601
  • 12. Use Design Reviews to Avoid Surprises at Pull Request Time ◦ When pull request is ready it is too late to question the how ◦ Too often it leads to wasted effort or sub-optimal compromise ◦ Solution: design reviews ◦ Require large pull requests reference a design review, approved by core team ◦ Assign design reviews to core team engineers so they own a decision ◦ Don’t be afraid to scare off contributors with design reviews, what scares them more is unpredictable PR reviews. Issuev ErrorLogger interface ErrorLogger Impl DesignReview DesignApproved @xyz78 @sandman
  • 13. Scheduling Model: Review Now or Code Later ◦ Reality: you have more requests than developers ◦ Don’t say no, look for options ◦ Verified model for internal teams: propose to consult and review if implemented by another team or schedule for later ◦ Make the list of current requests and prioritization criteria transparent ◦ Create and assign tasks around planning and prioritization first, then worry about completion
  • 14. What Happens If Project Doesn’t have a Well Maintained Environment? You get a ”tundra”, dormant, growth is crippled, but ready to wake up and grow. Software project analogy: project that is impossible to build, unit tests, missing documentation to get started Soil ~ substance, foundation Water ~ human interactions
  • 15. WATER = HUMAN INTERACTIONS Human interactions is water that will keep nourishing developer community React Immediately Show Empathy and Backbone Acknowledge and Include Facilitate Learning
  • 16. React To Questions and Pull Requests Immediately ◦ Consider reality ◦ We (online users) are competing with goldfish in whose attention span is bigger ◦ Goldfish is winning ◦ However ◦ most projects won’t have any support whatsoever, let alone fast reaction ◦ as soon as you respond, the status of your project is elevated to a different category ◦ if you respond while they are still on it, it is a guaranteed follow through, you got them ◦ Internal is really no different
  • 17. Show Empathy *and* Backbone ◦ Show Empathy ◦ Be a good physician: understand before you diagnose ◦ Even if you reject the contribution, don’t ignore the symptoms. ◦ Even if they end up forking your project and not contributing, aim to understand ◦ Show Backbone ◦ Example from a Design Interview ◦ In times of uncertainty go back to your principles and why’s ◦ Why did you create the repo? ◦ How badly do you want this contribution? ◦ Your reputation and sanity of your team is more important
  • 18. Acknowledge and Include ◦ Give all credit to outside contributors ◦ @mention them as often as you can: in code reviews, in suggestions to other contributors, weekly summary, hero board ◦ Include them to design discussions, reach out for advice
  • 19. Make your Project Someone’s Learning Opportunity ◦ Real project experience if the critical (and missing) part for many student developers, especially those with less known schools ◦ Open source projects sponsored by big companies provide this opportunity ◦ Add the learning component: difficulty rating, language track, proficiency scores. Issue ErrorLogger interface Add error log sorting L300 @xyz78 @sandman c++ ReactJS L200
  • 20. Project with good foundation and process but without human support? Soil ~ substance, foundation Sunlight ~ Environment, process Feels like a desert or ghost town: why all the well defined foundation and processes if no one is there to contribute or code review? In reality: rare and easiest to fix.
  • 21. Putting it All Together Vision Principles Foundation Simplify, Automate, Document Transparent Planning Scheduling Model Design Reviews Ownership React Immediately Show Empathy and Backbone Acknowledge and Include Facilitate Learning

Notas do Editor

  1. For some time now I have been working in the environment where major part of the success on my team relies on how successful we were in igniting interest of developer community both within our organization and externally. It is about influencing without formal authority, they have other choices. So I summarized my thoughts about how you can get their hearts and minds. From the instant your project is open for public contributions or you are looking for internal teams to add contributions, everything you do and how, including structure, process, timing, communication and guidance has to be deliberate and well-thought. In my current role as Engineering Manager at Facebook, I support a team that is responsible for an internal service that calculates video metrics. Our contribution model relies on multiple internal teams enabling their custom metric generation scenarios, ranging from straightforward to very complex changes involving complex business logic. In both cases we would have never been able to accomplish what we did without contributions from developers, however how you go about inviting and facilitating developers makes night and day difference. At Microsoft and I led the team that owned and maintained more than 10 GitHub repositories for Microsoft Applications Insights SDK libraries, with the most active one of them 100+ commits per week. Different challenges: authority to influence internal contributions, but no resources to promote the repos externally From the instant your software project becomes available online for others to see, learn about and contribute, everything that you do, and how you do it, including timing, efficiency, consistency and tone of your communication, documentation is critically important, it has to be deliberate and well-thought.
  2. What does it take to grow a plant. I really hope we don’t have agricultural experts. When showed by 5 year old this draft he told me that they learnt about fertilizer in their daycare. Any metaphor that has become a cliché is the easiest to remember. Soil = substance. What does your project do? Why do you need a developer community, is it a good reason? Driving your vision through community efforts, discovering what functionality to expose in API layer Sun = environment. Is your repo a friendly place? How easy it is get started, is it easy to build and run, is there automated build, code coverage measurement, unit tests and documentation. Water = Interactions that power your repo. What happens without them? Think of best idea and best initial setup but no developers, code reviews left untouched. Can you imagine a project with best foundation and bet process, not people to follow..
  3. Don't postpone the hard questions. Don't think, let me get the community first and then we'll figure it out because the community can sense that you don't know. What kind of plant are you trying to grow: a flower, a cactus, a forest. Maybe you don’t need a developer community and your project is best served internally For a software project, this is when you have a pull request with 100 comments and key developers on your project are disagreeing, this is when you need the strong foundation.
  4. It needs to be have a core unifying theme and not merely be a collection of utilities. If exposing publicly, choose right contribution license. If unsure, don't don't it.
  5. Simple democracy doesn’t put responsibility on you but where does it leave your business? Ironically that’s often not what community wants, community wants to rely on the core team. Most successful projects have thousands of contributions from all developers around the world, but they still have a core team responsible for stability, snapping the builds, working directly with core clients. Outsource work, but never outsource your key responsibility. We’ve used this approach at Microsoft with SDK libraries. With a service you want to make this cadence daily.
  6. You have the right processes and and people willing to help, but no strong foundation. This project won’t last long. You will get areas of strong subprojects generally clustered around visions and individuals, but there will be nothing to keep them together.
  7. Good process: First think that comes to mind is simple, simplicity. Any process too complex to remember is probably not worth following. You either go with simple or automated. You can also with complex and well documented but it people will be doing it as a favor to you, you will burn your credibility if you push on it too hard Typical examples: running tests that requires not one but 5 steps and separate machine. Obtaining coverage that takes 1 hour and causes your machine to run out of memory.
  8. People and projects choose not to be transparent when they have ulterior motives. So we think and we turn away. Unfortunately, it is sometimes that they are attempting to hide it from us for our own good. They don’t want to worry our pretty little heads. Story: we had internal audit to do and we were prioritizing the requirements for the audit. Unfortunately the partners didn't know that and assumed seeing no activity that we are about to abandon the repo. When you are not being transparent with your contributors they feel like you are hiding something from them.
  9. I am alternating between practices more applicable for internal and external.
  10. Software project analogy: project that is plagued with unnecessary complexity, lacking development process, lacking planning. Things happen but they happen very slowly, very inefficiently.
  11. We are competing with goldfish for bigger attention span. Goldfish is winning. However
  12. Not time consuming in the long run, because you notice patterns design interview bogus requests: system that handles orders, now can you handle messages? junior: implement and break coherence and foundation OR rudely object
  13. Don’t be stingy with credit and recognition You don’t give up any control when you include
  14. Students will take this experience and use it as a building block for their career portfolio.
  15. With a bit of luck it will all produce a good developer community