SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
What Your Tech Lead Thinks You Know
(But didn’t teach you)
Chris Riccomini & Dmitriy Ryaboy
2021/11/18
Chris Riccomini
● Engineer, investor, advisor, writer
● PayPal, LinkedIn, and WePay
● Open Source (Airflow, Samza)
● Co-authored The Missing README
Speakers
Dmitriy Ryaboy
● Engineer and manager
● LBNL, Ask.com, Cloudera, Twitter, now VP
Software & DS at Zymergen
● Open Source (Apache Parquet & others)
● Co-authored The Missing README
Agenda
● Asking questions
● Going on-call
● Understanding dependencies
● Talking about promotions
● Q&A
Asking Questions
● Do your research
● Timebox
● Show your work
● Avoid interrupting
● Multicast & Asynchronous
Asking Questions // Do Your REsearch
● Documentation
● Wikis
● READMEs
● Source code
● Issue trackers
● Mailing lists
● Chat history
● Experiment!
Asking Questions // Timebox
● Set a time limit
● Then ask for help
● Or set a new limit (if you’re making progress)
● Then ask for help (no matter what)
Asking Questions // Show your Work
● Give context
● Describe the problem
● Say what you’ve tried
● Note the impact and urgency
● Ask a specific question
Bad
Hey Alice,
Any idea why testKeyValues is failing in TestKVStore?
It really slows down our builds to rerun this.
Thanks!
Pankaj
Asking Questions // Show your Work
Asking Questions // Show your Work
Good
Hey Alice,
I’m having trouble figuring out why testKeyValues is failing in TestKVStore (in the DistKV repo). Shaun pointed me
your way. I’m hoping you can help.
The test fails for me about every third execution; it seems random. I tried running it in isolation, and it’s still failing, so I
don’t think it’s an interaction between tests. Shaun ran the test in a loop on his machine but was unable to reproduce
it. I don’t see anything obvious in the source code to explain the failure. It seems like some kind of race condition. Any
thoughts?
There is no terrible urgency around this as I’m told this is unlikely to be affecting production. Still, the flapping test
costs us 20–30 minutes every time this happens, so I’d love to figure out how to fix it. I’ve attached logs that show
failures and all of my current environment settings, just in case.
Thanks!
Pankaj
Asking Questions // Multicast & Asynchronous
● Ask questions to groups (channels and mailing lists)
● Ask questions asynchronously (chat - not DMs! - and email)
● Batch synchronous questions
Going on-call
● What is on-call
● Be available
● Pay attention
● Track your work
● Handling an incident
Going on-call // What is On-call
● Handle support requests and operational issues
○ “First line of defense” - try to solve the problem yourself!
● Usually weekly or bi-weekly rotation
● Sometimes…
○ Primary/secondary on-call
○ 24/7
○ Tiered (support -> operations -> developers)
● “Shadow” on-call rotations
Going on-call // Be Available
● “Your best ability is availability.”
● Responsiveness is a virtue
○ “Let me look into this” is a valid response.
● Over-communicate
○ Don’t wait until you have a solution.
○ “Update: still looking into this” is a good practice.
○ “We’ve narrowed down the problem to 3 possibilities, expect another update in 1 hour”
● Know what’s expected
○ 24/7? “Follow the sun”? Near computer?
● Email alert groups
● Operations chat channels
● Operations meetings
● Phone calls
● Text messages
● Metrics dashboards
● Monitoring tools
Going on-call // Pay Attention
● Log what you do
● Everything should be in an issue tracker (or on-call log)
● Update issues as you work
● Always include timestamps
Going on-call // Track your work
1. Triage
2. Coordinate
3. Mitigate (most important)
4. Resolve
5. Follow-up
Going on-call // Handling An Incident
Understanding Dependencies
● Dependencies
● Semantic Versioning
● Transitive dependencies
● Dependency hell
● Managing dependencies
Understanding Dependencies // Dependencies
dependencies {
compile 'org.apache.httpcomponents:httpclient:4.3.6'
compile 'org.slf4j:slf4j-api:1.7.2'
}
● Defined in setup.py, requirements.txt, package.json, Gemfile, go.mod, ...
Understanding Dependencies // Semantic versioning
● Most common versioning scheme
● 2.13.7 (major.minor.patch)
○ patch: backward-compatible bug fixes
○ minor: backward-compatible features
○ major: backward-incompatible changes
● 1.4.0-alpha.2 (prerelease)
● 4.3.3+1945 (build number)
● Allows for wildcarding (2.13.*) and ranges [1.1, 2.0)
Understanding Dependencies // Semantic versioning
● Most common versioning scheme
● 2.13.7 (major.minor.patch)
○ patch: backward-compatible bug fixes
○ minor: backward-compatible features
○ major: backward-incompatible changes
● 1.4.0-alpha.2 (prerelease)
● 4.3.3+1945 (build number)
{
>>> def auth(user, password=None):
... pass
...
>>> auth('criccomini')
>>> def auth(user, password):
... pass
...
>>> auth('criccomini')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: auth() takes exactly 2
arguments (1 given)
Understanding Dependencies // Transitive Dependencies
dependencies {
compile 'org.apache.httpcomponents:httpclient:4.3.6'
compile 'org.slf4j:slf4j-api:1.7.2'
}
compile - Compile classpath for source set 'main'.
+--- org.apache.httpcomponents:httpclient:4.3.6
| +--- org.apache.httpcomponents:httpcore:4.3.3
| +--- commons-logging:commons-logging:1.1.3
| --- commons-codec:commons-codec:1.6
--- org.slf4j:slf4j-api:1.7.2
● Dependencies of dependencies (... of dependencies)
Understanding Dependencies // Dependency Hell
compile - Compile classpath for source set 'main'.
+--- com.google.code.findbugs:annotations:3.0.1
| +--- net.jcip:jcip-annotations:1.0
| --- com.google.code.findbugs:jsr305:3.0.1
+--- org.apache.zookeeper:zookeeper:3.4.10
| +--- org.slf4j:slf4j-api:1.6.1 -> 1.7.21
| +--- org.slf4j:slf4j-log4j12:1.6.1
| +--- log4j:log4j:1.2.16
| +--- jline:jline:0.9.94
| --- io.netty:netty:3.10.5.Final
--- com.mycompany.util:util:1.4.2
--- org.slf4j:slf4j-api:1.7.21
● Conflicting library versions or incompatible changes
Understanding Dependencies // Managing Dependencies
● Isolate dependencies
● Be deliberate
● Pin versions (or at least ranges)
● Strive for builds to be reproducible
Talking about Promotions
● Know the promotion process
● Assessing where you’re at
● Tips
Talking about Promotions // Know the Promotion Process
● Career ladders
○ Google “Square engineering ladder”
● Ask manager
● When are promotions done? Annually? Semi-annually? At-will?
● Who evaluates?
● Do you need a mentor, sponsor, or promotion packet?
Talking about Promotions // Assessing Where you’re at
● Do a self assessment
● Solicit feedback
● Review with your manager
● Work out plan to fill gaps
Talking about Promotions // Tips
● Work on what’s valuable and visible
● Speak up (early)
● Promotions are not time-related
● You are responsible for keeping track of your accomplishments
● Finish projects
● Demonstrate your skill for 3-6 months
Q&A

Más contenido relacionado

La actualidad más candente

Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...
Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...
Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...
Flink Forward
 

La actualidad más candente (20)

Uber Real Time Data Analytics
Uber Real Time Data AnalyticsUber Real Time Data Analytics
Uber Real Time Data Analytics
 
Introduction to Flink Streaming
Introduction to Flink StreamingIntroduction to Flink Streaming
Introduction to Flink Streaming
 
University program - writing an apache apex application
University program  - writing an apache apex applicationUniversity program  - writing an apache apex application
University program - writing an apache apex application
 
From Batch to Streaming with Apache Apex Dataworks Summit 2017
From Batch to Streaming with Apache Apex Dataworks Summit 2017From Batch to Streaming with Apache Apex Dataworks Summit 2017
From Batch to Streaming with Apache Apex Dataworks Summit 2017
 
Marton Balassi – Stateful Stream Processing
Marton Balassi – Stateful Stream ProcessingMarton Balassi – Stateful Stream Processing
Marton Balassi – Stateful Stream Processing
 
SamzaSQL QCon'16 presentation
SamzaSQL QCon'16 presentationSamzaSQL QCon'16 presentation
SamzaSQL QCon'16 presentation
 
Large-Scale Stream Processing in the Hadoop Ecosystem - Hadoop Summit 2016
Large-Scale Stream Processing in the Hadoop Ecosystem - Hadoop Summit 2016Large-Scale Stream Processing in the Hadoop Ecosystem - Hadoop Summit 2016
Large-Scale Stream Processing in the Hadoop Ecosystem - Hadoop Summit 2016
 
Stateful Distributed Stream Processing
Stateful Distributed Stream ProcessingStateful Distributed Stream Processing
Stateful Distributed Stream Processing
 
Streaming Data from Cassandra into Kafka
Streaming Data from Cassandra into KafkaStreaming Data from Cassandra into Kafka
Streaming Data from Cassandra into Kafka
 
Introduction to Stateful Stream Processing with Apache Flink.
Introduction to Stateful Stream Processing with Apache Flink.Introduction to Stateful Stream Processing with Apache Flink.
Introduction to Stateful Stream Processing with Apache Flink.
 
Intro to Apache Apex - Next Gen Native Hadoop Platform - Hackac
Intro to Apache Apex - Next Gen Native Hadoop Platform - HackacIntro to Apache Apex - Next Gen Native Hadoop Platform - Hackac
Intro to Apache Apex - Next Gen Native Hadoop Platform - Hackac
 
Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...
Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...
Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...
 
Will it Scale? The Secrets behind Scaling Stream Processing Applications
Will it Scale? The Secrets behind Scaling Stream Processing ApplicationsWill it Scale? The Secrets behind Scaling Stream Processing Applications
Will it Scale? The Secrets behind Scaling Stream Processing Applications
 
Windowing in apex
Windowing in apexWindowing in apex
Windowing in apex
 
Building real time Data Pipeline using Spark Streaming
Building real time Data Pipeline using Spark StreamingBuilding real time Data Pipeline using Spark Streaming
Building real time Data Pipeline using Spark Streaming
 
Lambda-less stream processing - linked in
Lambda-less stream processing - linked inLambda-less stream processing - linked in
Lambda-less stream processing - linked in
 
Structured streaming in Spark
Structured streaming in SparkStructured streaming in Spark
Structured streaming in Spark
 
Hadoop Summit SJ 2016: Next Gen Big Data Analytics with Apache Apex
Hadoop Summit SJ 2016: Next Gen Big Data Analytics with Apache ApexHadoop Summit SJ 2016: Next Gen Big Data Analytics with Apache Apex
Hadoop Summit SJ 2016: Next Gen Big Data Analytics with Apache Apex
 
Architectual Comparison of Apache Apex and Spark Streaming
Architectual Comparison of Apache Apex and Spark StreamingArchitectual Comparison of Apache Apex and Spark Streaming
Architectual Comparison of Apache Apex and Spark Streaming
 
Ingestion file copy using apex
Ingestion   file copy using apexIngestion   file copy using apex
Ingestion file copy using apex
 

Similar a What Your Tech Lead Thinks You Know (But Didn't Teach You)

Chelberg ptcuser 2010
Chelberg ptcuser 2010Chelberg ptcuser 2010
Chelberg ptcuser 2010
Clay Helberg
 
Debugging Apache Spark
Debugging Apache SparkDebugging Apache Spark
Debugging Apache Spark
Joey Echeverria
 
Debugging Spark: Scala and Python - Super Happy Fun Times @ Data Day Texas 2018
Debugging Spark:  Scala and Python - Super Happy Fun Times @ Data Day Texas 2018Debugging Spark:  Scala and Python - Super Happy Fun Times @ Data Day Texas 2018
Debugging Spark: Scala and Python - Super Happy Fun Times @ Data Day Texas 2018
Holden Karau
 
Debugging PySpark - PyCon US 2018
Debugging PySpark -  PyCon US 2018Debugging PySpark -  PyCon US 2018
Debugging PySpark - PyCon US 2018
Holden Karau
 

Similar a What Your Tech Lead Thinks You Know (But Didn't Teach You) (20)

Pen Testing Development
Pen Testing DevelopmentPen Testing Development
Pen Testing Development
 
Property-based testing an open-source compiler, pflua (FOSDEM 2015)
Property-based testing an open-source compiler, pflua (FOSDEM 2015)Property-based testing an open-source compiler, pflua (FOSDEM 2015)
Property-based testing an open-source compiler, pflua (FOSDEM 2015)
 
How to get started with Site Reliability Engineering
How to get started with Site Reliability EngineeringHow to get started with Site Reliability Engineering
How to get started with Site Reliability Engineering
 
44CON London 2015 - 15-Minute Linux Incident Response Live Analysis
44CON London 2015 - 15-Minute Linux Incident Response Live Analysis44CON London 2015 - 15-Minute Linux Incident Response Live Analysis
44CON London 2015 - 15-Minute Linux Incident Response Live Analysis
 
Dynamic tracing of MariaDB on Linux - problems and solutions (MariaDB Server ...
Dynamic tracing of MariaDB on Linux - problems and solutions (MariaDB Server ...Dynamic tracing of MariaDB on Linux - problems and solutions (MariaDB Server ...
Dynamic tracing of MariaDB on Linux - problems and solutions (MariaDB Server ...
 
Async Web Frameworks in Python
Async Web Frameworks in PythonAsync Web Frameworks in Python
Async Web Frameworks in Python
 
Chelberg ptcuser 2010
Chelberg ptcuser 2010Chelberg ptcuser 2010
Chelberg ptcuser 2010
 
Pentester++
Pentester++Pentester++
Pentester++
 
An EyeWitness View into your Network
An EyeWitness View into your NetworkAn EyeWitness View into your Network
An EyeWitness View into your Network
 
Case of the Unexplained Support Issue – Troubleshooting steps for diagnosing ...
Case of the Unexplained Support Issue – Troubleshooting steps for diagnosing ...Case of the Unexplained Support Issue – Troubleshooting steps for diagnosing ...
Case of the Unexplained Support Issue – Troubleshooting steps for diagnosing ...
 
Debugging Apache Spark
Debugging Apache SparkDebugging Apache Spark
Debugging Apache Spark
 
Debugging Spark: Scala and Python - Super Happy Fun Times @ Data Day Texas 2018
Debugging Spark:  Scala and Python - Super Happy Fun Times @ Data Day Texas 2018Debugging Spark:  Scala and Python - Super Happy Fun Times @ Data Day Texas 2018
Debugging Spark: Scala and Python - Super Happy Fun Times @ Data Day Texas 2018
 
Debugging PySpark - PyCon US 2018
Debugging PySpark -  PyCon US 2018Debugging PySpark -  PyCon US 2018
Debugging PySpark - PyCon US 2018
 
LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101
 
LCA13: Upstreaming 101
LCA13: Upstreaming 101LCA13: Upstreaming 101
LCA13: Upstreaming 101
 
Upstreaming 1013
Upstreaming 1013Upstreaming 1013
Upstreaming 1013
 
Interop 2015: Hardly Enough Theory, Barley Enough Code
Interop 2015: Hardly Enough Theory, Barley Enough CodeInterop 2015: Hardly Enough Theory, Barley Enough Code
Interop 2015: Hardly Enough Theory, Barley Enough Code
 
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-...
 
The Final Frontier, Automating Dynamic Security Testing
The Final Frontier, Automating Dynamic Security TestingThe Final Frontier, Automating Dynamic Security Testing
The Final Frontier, Automating Dynamic Security Testing
 
Linux /proc filesystem for MySQL DBAs - FOSDEM 2021
Linux  /proc filesystem for MySQL DBAs - FOSDEM 2021Linux  /proc filesystem for MySQL DBAs - FOSDEM 2021
Linux /proc filesystem for MySQL DBAs - FOSDEM 2021
 

Más de Chris Riccomini

Más de Chris Riccomini (6)

Data Warehousing Trends
Data Warehousing TrendsData Warehousing Trends
Data Warehousing Trends
 
The Future of Data Engineering - 2019 InfoQ QConSF
The Future of Data Engineering - 2019 InfoQ QConSFThe Future of Data Engineering - 2019 InfoQ QConSF
The Future of Data Engineering - 2019 InfoQ QConSF
 
Airflow at WePay
Airflow at WePayAirflow at WePay
Airflow at WePay
 
Apache Incubator Samza: Stream Processing at LinkedIn
Apache Incubator Samza: Stream Processing at LinkedInApache Incubator Samza: Stream Processing at LinkedIn
Apache Incubator Samza: Stream Processing at LinkedIn
 
Apache Incubator Samza: Stream Processing at LinkedIn
Apache Incubator Samza: Stream Processing at LinkedInApache Incubator Samza: Stream Processing at LinkedIn
Apache Incubator Samza: Stream Processing at LinkedIn
 
Building Applications on YARN
Building Applications on YARNBuilding Applications on YARN
Building Applications on YARN
 

Último

Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 

Último (20)

%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 

What Your Tech Lead Thinks You Know (But Didn't Teach You)

  • 1. What Your Tech Lead Thinks You Know (But didn’t teach you) Chris Riccomini & Dmitriy Ryaboy 2021/11/18
  • 2. Chris Riccomini ● Engineer, investor, advisor, writer ● PayPal, LinkedIn, and WePay ● Open Source (Airflow, Samza) ● Co-authored The Missing README Speakers Dmitriy Ryaboy ● Engineer and manager ● LBNL, Ask.com, Cloudera, Twitter, now VP Software & DS at Zymergen ● Open Source (Apache Parquet & others) ● Co-authored The Missing README
  • 3. Agenda ● Asking questions ● Going on-call ● Understanding dependencies ● Talking about promotions ● Q&A
  • 4. Asking Questions ● Do your research ● Timebox ● Show your work ● Avoid interrupting ● Multicast & Asynchronous
  • 5. Asking Questions // Do Your REsearch ● Documentation ● Wikis ● READMEs ● Source code ● Issue trackers ● Mailing lists ● Chat history ● Experiment!
  • 6. Asking Questions // Timebox ● Set a time limit ● Then ask for help ● Or set a new limit (if you’re making progress) ● Then ask for help (no matter what)
  • 7. Asking Questions // Show your Work ● Give context ● Describe the problem ● Say what you’ve tried ● Note the impact and urgency ● Ask a specific question
  • 8. Bad Hey Alice, Any idea why testKeyValues is failing in TestKVStore? It really slows down our builds to rerun this. Thanks! Pankaj Asking Questions // Show your Work
  • 9. Asking Questions // Show your Work Good Hey Alice, I’m having trouble figuring out why testKeyValues is failing in TestKVStore (in the DistKV repo). Shaun pointed me your way. I’m hoping you can help. The test fails for me about every third execution; it seems random. I tried running it in isolation, and it’s still failing, so I don’t think it’s an interaction between tests. Shaun ran the test in a loop on his machine but was unable to reproduce it. I don’t see anything obvious in the source code to explain the failure. It seems like some kind of race condition. Any thoughts? There is no terrible urgency around this as I’m told this is unlikely to be affecting production. Still, the flapping test costs us 20–30 minutes every time this happens, so I’d love to figure out how to fix it. I’ve attached logs that show failures and all of my current environment settings, just in case. Thanks! Pankaj
  • 10. Asking Questions // Multicast & Asynchronous ● Ask questions to groups (channels and mailing lists) ● Ask questions asynchronously (chat - not DMs! - and email) ● Batch synchronous questions
  • 11. Going on-call ● What is on-call ● Be available ● Pay attention ● Track your work ● Handling an incident
  • 12. Going on-call // What is On-call ● Handle support requests and operational issues ○ “First line of defense” - try to solve the problem yourself! ● Usually weekly or bi-weekly rotation ● Sometimes… ○ Primary/secondary on-call ○ 24/7 ○ Tiered (support -> operations -> developers) ● “Shadow” on-call rotations
  • 13. Going on-call // Be Available ● “Your best ability is availability.” ● Responsiveness is a virtue ○ “Let me look into this” is a valid response. ● Over-communicate ○ Don’t wait until you have a solution. ○ “Update: still looking into this” is a good practice. ○ “We’ve narrowed down the problem to 3 possibilities, expect another update in 1 hour” ● Know what’s expected ○ 24/7? “Follow the sun”? Near computer?
  • 14. ● Email alert groups ● Operations chat channels ● Operations meetings ● Phone calls ● Text messages ● Metrics dashboards ● Monitoring tools Going on-call // Pay Attention
  • 15. ● Log what you do ● Everything should be in an issue tracker (or on-call log) ● Update issues as you work ● Always include timestamps Going on-call // Track your work
  • 16. 1. Triage 2. Coordinate 3. Mitigate (most important) 4. Resolve 5. Follow-up Going on-call // Handling An Incident
  • 17. Understanding Dependencies ● Dependencies ● Semantic Versioning ● Transitive dependencies ● Dependency hell ● Managing dependencies
  • 18. Understanding Dependencies // Dependencies dependencies { compile 'org.apache.httpcomponents:httpclient:4.3.6' compile 'org.slf4j:slf4j-api:1.7.2' } ● Defined in setup.py, requirements.txt, package.json, Gemfile, go.mod, ...
  • 19. Understanding Dependencies // Semantic versioning ● Most common versioning scheme ● 2.13.7 (major.minor.patch) ○ patch: backward-compatible bug fixes ○ minor: backward-compatible features ○ major: backward-incompatible changes ● 1.4.0-alpha.2 (prerelease) ● 4.3.3+1945 (build number) ● Allows for wildcarding (2.13.*) and ranges [1.1, 2.0)
  • 20. Understanding Dependencies // Semantic versioning ● Most common versioning scheme ● 2.13.7 (major.minor.patch) ○ patch: backward-compatible bug fixes ○ minor: backward-compatible features ○ major: backward-incompatible changes ● 1.4.0-alpha.2 (prerelease) ● 4.3.3+1945 (build number) { >>> def auth(user, password=None): ... pass ... >>> auth('criccomini') >>> def auth(user, password): ... pass ... >>> auth('criccomini') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: auth() takes exactly 2 arguments (1 given)
  • 21. Understanding Dependencies // Transitive Dependencies dependencies { compile 'org.apache.httpcomponents:httpclient:4.3.6' compile 'org.slf4j:slf4j-api:1.7.2' } compile - Compile classpath for source set 'main'. +--- org.apache.httpcomponents:httpclient:4.3.6 | +--- org.apache.httpcomponents:httpcore:4.3.3 | +--- commons-logging:commons-logging:1.1.3 | --- commons-codec:commons-codec:1.6 --- org.slf4j:slf4j-api:1.7.2 ● Dependencies of dependencies (... of dependencies)
  • 22. Understanding Dependencies // Dependency Hell compile - Compile classpath for source set 'main'. +--- com.google.code.findbugs:annotations:3.0.1 | +--- net.jcip:jcip-annotations:1.0 | --- com.google.code.findbugs:jsr305:3.0.1 +--- org.apache.zookeeper:zookeeper:3.4.10 | +--- org.slf4j:slf4j-api:1.6.1 -> 1.7.21 | +--- org.slf4j:slf4j-log4j12:1.6.1 | +--- log4j:log4j:1.2.16 | +--- jline:jline:0.9.94 | --- io.netty:netty:3.10.5.Final --- com.mycompany.util:util:1.4.2 --- org.slf4j:slf4j-api:1.7.21 ● Conflicting library versions or incompatible changes
  • 23. Understanding Dependencies // Managing Dependencies ● Isolate dependencies ● Be deliberate ● Pin versions (or at least ranges) ● Strive for builds to be reproducible
  • 24. Talking about Promotions ● Know the promotion process ● Assessing where you’re at ● Tips
  • 25. Talking about Promotions // Know the Promotion Process ● Career ladders ○ Google “Square engineering ladder” ● Ask manager ● When are promotions done? Annually? Semi-annually? At-will? ● Who evaluates? ● Do you need a mentor, sponsor, or promotion packet?
  • 26. Talking about Promotions // Assessing Where you’re at ● Do a self assessment ● Solicit feedback ● Review with your manager ● Work out plan to fill gaps
  • 27. Talking about Promotions // Tips ● Work on what’s valuable and visible ● Speak up (early) ● Promotions are not time-related ● You are responsible for keeping track of your accomplishments ● Finish projects ● Demonstrate your skill for 3-6 months
  • 28. Q&A