SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
Growing up new
PostgreSQL developers
Anastasia Lubennikova
Aleksander Alekseev
In this talk
● A few words about us;
● First-person view on developing PostgreSQL;
● Where to find new developers;
● Teaching students in Moscow State University;
● Teaching students in Higher School of Economics;
● Project management gotchas;
● Onboarding & team leading gotchas;
● On distributed teams;
● And stuff like this :)
Disclaimer!
● This talk is completely non-technical. Still we hope you will be interested.
● In this talk we use ‘mentor’, ‘project manager’ and ‘team leader’ as synonyms.
We know this is not very accurate but we have our reasons which hopefully
will become clear later.
A few words about us: Anastasia
● Graduated with BC in Applied Mathematics
and Informatics in 2014;
● Took part in GSoC with PostgreSQL
as a student (2014) and a mentor (2017);
● Since 2015 work in Postgres Professional;
● Contribute mostly to index enhancements
and pg_probackup;
A few words about us: Aleksander
● I live in Moscow, Russia;
● Develop software since 2007;
● Contribute to PostgreSQL since 2015;
● Work in Postgres Professional company;
● Author of zson and pg_protobuf extensions;
● Interests: OSS, functional programming, electronics, distributed systems,
blogging, podcasting;
● https://eax.me/ & https://devzen.ru/ ;
On developing PostgreSQL: Anastasia
● Developing PostgreSQL core is my first job.
So I had no idea that it is considered to be a difficult thing;
● I learned mostly through practical experience;
● Code comments and mailing lists are a great source of information;
○ You see not only the code but also a reasoning behind it;
● The pace can be really frustrating sometimes;
And results as well. It is not just development. More like R&D;
● The project is really big and it covers many areas of CS.
On developing PostgreSQL: Aleksander
● ~8 years of experience in different area (backends / distributed systems / …)
before this job;
● The process is slow (several patches a week vs several patches a year);
● Something is not quite right with abstraction levels (e.g. dynahash and locks,
re-using atomics outside of backend, ...);
● Something is not quite right with reusing existing code (home-brewed
concurrency primitives, containers, etc);
● Perl 5.8, Autotools :(
● It doesn't feel like there is a lack of developers.
Where to find new developers
● Find an experienced RDBS developer who is looking for a job;
Where to find new developers
● Find an experienced RDBS developer who is looking for a job;
○ Oops, there are none!
Where to find new developers
● Find an experienced RDBS developer who is looking for a job;
○ Oops, there are none!
● OK, find a regular developer then, preferably with an experience (or at least
an interest) in low-level programming;
Where to find new developers
● Find an experienced RDBS developer who is looking for a job;
○ Oops, there are none!
● OK, find a regular developer then, preferably with an experience (or at least
an interest) in low-level programming;
○ It might work. However many will leave after a year or so.
Where to find new developers
● Find an experienced RDBS developer who is looking for a job;
○ Oops, there are none!
● OK, find a regular developer then, preferably with an experience (or at least
an interest) in low-level programming;
○ It might work. However many will leave after a year or so.
● What about hiring graduates?
Where to find new developers
● Find an experienced RDBS developer who is looking for a job;
○ Oops, there are none!
● OK, find a regular developer then, preferably with an experience (or at least
an interest) in low-level programming;
○ It might work. However many will leave after a year or so.
● What about hiring graduates?
○ It will work. However:
■ Right graduates are rare;
■ We need corresponding lectures;
■ We need mentors / team leaders;
On teaching students. Theory
● Some great books and courses already exist;
● Clear reasoning behind each component and algorithm;
● A lot of design ideas and trade-offs to discuss;
● A lot of fresh papers to study.
On teaching students. Practice
● Abstract practical tasks are boring :(
● There are not many junior tasks in DBMS development.
● It takes more than just good theory knowledge and code skills
○ Initial design, attention to corner cases,
code comments, test coverage, thoughtful benchmarking.
● PostgreSQL specific;
○ Building, macroses, development process, etc;
○ TODO-list on wiki doesn’t help much.
On teaching students in MSU
● It was an elective course for all faculty, for students with various background;
○ Elective - turned out it was a bad option :(
● Students tend to choose simpler courses to get their grades;
● Chosen course was not fixed in the beginning of the semester;
● Many students visited lectures out of interest, but didn’t do homework and
didn’t take exams;
On teaching students in HSE
● Mandatory course for students of distributed systems department, strong CS
background;
○ Mandatory - is good :)
● Cumulative grade system, modules instead of semesters
○ One module = ½ semester, semester = half a year;
● Surprisingly there was no system programming (C, *nix) course before our
course;
On teaching students. Tasks and homework
● ‘Papers we love’ style seminars;
○ This was a good move.
● Work in small groups;
○ Bad idea. See the slide about MSU and leaving students.
○ There should be a separate course on “mature” software development;
● Patches and contribs for PostgreSQL;
○ Hard to find suitable tasks;
○ Requires a lot of mentorship (time, code review, etc);
○ Turned out to be quite challenging for some of our students;
● Patches for educational DBMS HurmaDB; (*)
○ A lot of tasks;
○ Less enthusiasm for a “toy” project comparing to PostgreSQL;
○ Little benefit from the company’s point of view;
(*) Hurma (хурма) means ‘persimmon’ in Russian. Second meaning: something weird.
We got students with strong* DBMS background.
What’s next?
What’s next?
● Providing diploma projects;
○ Requires a dedicated mentor!
■ Not everyone can be a good mentor, see next slides;
○ Worked well for some of our colleagues;
● Internship;
● Job offer, trial period;
● Gotcha: you raised a valuable expert.
Such experts are prone to get good job offers from other companies.
Onboarding gotchas
● Write articles and record videos for new employees
○ How to build PostgreSQL
○ On PostgreSQL internals
○ etc
● Don’t allow new employees to work too hard
○ Watch out impostor syndrome!
○ Some employees might think that they are not working good enough and start to work on
holidays
○ Don’t allow this! There is little use of exhausted employees. Explain it.
● Experienced new employees also need onboarding
It would be quite challenging for a regular PM to
manage DBMS development.
(We’ve tried this approach :)
Thus PMs most likely will grow up from your
developers.
On transitional process
● The transition from developer to PM might be depressing;
On transitional process
● The transition from developer to PM might be depressing;
● You spent years to develop technical skills;
On transitional process
● The transition from developer to PM might be depressing;
● You spent years to develop technical skills;
● And now suddenly you need soft skills;
On transitional process
● The transition from developer to PM might be depressing;
● You spent years to develop technical skills;
● And now suddenly you need soft skills;
● Which you are probably not very good at since you didn’t develop these skills,
at least intentionally;
On transitional process
● The transition from developer to PM might be depressing;
● You spent years to develop technical skills;
● And now suddenly you need soft skills;
● Which you are probably not very good at since you didn’t develop these skills,
at least intentionally;
● Personally I consider this a new stage in my career and also an opportunity to
evolve further;
On transitional process
● The transition from developer to PM might be depressing;
● You spent years to develop technical skills;
● And now suddenly you need soft skills;
● Which you are probably not very good at since you didn’t develop these skills,
at least intentionally;
● Personally I consider this a new stage in my career and also an opportunity to
evolve further;
● You start to look at many things from a different perspective;
○ On development, business needs and people
Change of perspective
● What is the priority of this feature? Did our clients even ask for it?
Change of perspective
● What is the priority of this feature? Did our clients even ask for it?
● Does it worth an effort to optimize this feature? Did our clients complain on it
performance? Do our clients even use this feature? How did you look for a
bottleneck?
Change of perspective
● What is the priority of this feature? Did our clients even ask for it?
● Does it worth an effort to optimize this feature? Did our clients complain on it
performance? Do our clients even use this feature? How did you look for a
bottleneck?
● Perfect is the enemy of good;
Change of perspective
● What is the priority of this feature? Did our clients even ask for it?
● Does it worth an effort to optimize this feature? Did our clients complain on it
performance? Do our clients even use this feature? How did you look for a
bottleneck?
● Perfect is the enemy of good;
etc… You will be surprised how often great technical experts don’t think on such
things.
Project management gotchas
● Your employer might think that she doesn’t need PMs;
○ PostgreSQL community style;
○ However you do need PMs to have a predictable and sustainable development process
(with right estimates, priorities, etc)
○ Processes are very important!
Project management gotchas
● Your employer might think that she doesn’t need PMs;
○ PostgreSQL community style;
○ However you do need PMs to have a predictable and sustainable development process
(with right estimates, priorities, etc)
○ Processes are very important!
● Hiring and firing people is part of the job;
Project management gotchas
● Your employer might think that she doesn’t need PMs;
○ PostgreSQL community style;
○ However you do need PMs to have a predictable and sustainable development process
(with right estimates, priorities, etc)
○ Processes are very important!
● Hiring and firing people is part of the job;
● Delegate!
Project management gotchas
● Your employer might think that she doesn’t need PMs;
○ PostgreSQL community style;
○ However you do need PMs to have a predictable and sustainable development process
(with right estimates, priorities, etc)
○ Processes are very important!
● Hiring and firing people is part of the job;
● Delegate!
● Bus factor;
Project management gotchas
● Your employer might think that she doesn’t need PMs;
○ PostgreSQL community style;
○ However you do need PMs to have a predictable and sustainable development process
(with right estimates, priorities, etc)
○ Processes are very important!
● Hiring and firing people is part of the job;
● Delegate!
● Bus factor;
● Some colleagues might have bad experience with SCRAM before. Don’t
make rush changes.Try to take only best from agile methodologies and adjust
them to your team.
On distributed teams
● Text is prone to be received as an aggressive message;
On distributed teams
● Text is prone to be received as an aggressive message;
● Thus be brief and use voice whenever possible;
On distributed teams
● Text is prone to be received as an aggressive message;
● Thus be brief and use voice whenever possible;
● For stand-up meetings we choose Mumble;
On distributed teams
● Text is prone to be received as an aggressive message;
● Thus be brief and use voice whenever possible;
● For stand-up meetings we choose Mumble;
● Check the status of remote employees tasks from time to time
(in the middle of the SCRAM sprint)
○ Just ask “what’s up” :)
Team leading gotchas
● You work with both people who are completely new to the area and with
extremely experienced rockstars.
● Because of the project complexity, you won't be able to keep everything in
your head. You need to delegate and trust people a lot.
● Quite a few people (if any) can be experts in all the components.
And vice-versa, almost every developer will be good at some area [1].
Get ready to manage a lot of discussions.
● If there is no consensus you have to make a decision on your own.
Be prepared to upset someone.
[1]: see also https://ferd.ca/the-hitchhiker-s-guide-to-the-unexpected.html
Three roles of a team leader
The roles are:
● Psychologist (people)
● Logistic (processes)
● Expert (development)
No one is good in all 3 roles simultaneously, thus:
● Gather a team specifically for a given team leader or
● Use two persons as a single team leader
https://felixit.blog/2018/03/31/timlid-v-trioh-licah/ -- the article is in Russian but
Google Translate should manage
Three roles of a team leader
The roles are:
● Psychologist (people)
● Logistic (processes)
● Expert (development)
No one is good in all 3 roles simultaneously, thus:
● Gather a team specifically for a given team leader or
● Use two persons as a single team leader
https://felixit.blog/2018/03/31/timlid-v-trioh-licah/ -- the article is in Russian but
Google Translate should manage
Classical PM
Three roles of a team leader
The roles are:
● Psychologist (people)
● Logistic (processes)
● Expert (development)
No one is good in all 3 roles simultaneously, thus:
● Gather a team specifically for a given team leader or
● Use two persons as a single team leader
https://felixit.blog/2018/03/31/timlid-v-trioh-licah/ -- the article is in Russian but
Google Translate should manage
Team leader
Three roles of a team leader
The roles are:
● Psychologist (people)
● Logistic (processes)
● Expert (development)
No one is good in all 3 roles simultaneously, thus:
● Gather a team specifically for a given team leader or
● Use two persons as a single team leader
https://felixit.blog/2018/03/31/timlid-v-trioh-licah/ -- the article is in Russian but
Google Translate should manage
Mentor
Links
● https://postgrespro.com/
● https://github.com/postgrespro/
● https://www.msu.ru/en/
● https://www.hse.ru/en/
● https://wiki.mumble.info/wiki/Main_Page
● https://github.com/afiskon/hurmadb
● http://postgres-edu.blogspot.ru/search/label/Hacking%20PostgreSQL
The time of this talk is limited, thus we couldn’t tell everything
we wanted. Fortunately we are available after the talk.
Thank you for your attention!
● a.lubennikova@postgrespro.ru
● a.alekseev@postgrespro.ru
Bonus slides!
What does SENIOR mean?
Software developer’s evolutionary path:
1. You get tasks and write code. Tasks on input, patches on output.
2. You start to think of bigger technical problems, split them into the tasks, plan
the tasks, consider dependencies, etc.
3. You start to look for business problems and try to solve them.
https://www.youtube.com/watch?v=cvHK5tRUCrs -- the video was removed :(
Some of recommended white papers (1 / 2)
● http://www.vldb.org/pvldb/vol10/p385-yu.pdf
● https://www.allthingsdistributed.com/files/p1041-verbitski.pdf
● https://people.inf.ethz.ch/zistvan/doc/vldb17-caribou.pdf
● http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=D90D2CAD79DE47
115B96EFD947A6427B?doi=10.1.1.395.6493&rep=rep1&type=pdf
● https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf
● https://raft.github.io/raft.pdf
● https://arxiv.org/pdf/1802.07000.pdf
● https://static.googleusercontent.com/media/research.google.com/en//pubs/arc
hive/36726.pdf
Some of recommended white papers (2 / 2)
● https://static.googleusercontent.com/media/research.google.com/en//archive/
spanner-osdi2012.pdf
● https://static.googleusercontent.com/media/research.google.com/en//pubs/arc
hive/46103.pdf
● http://db.cs.cmu.edu/papers/2016/pavlo-newsql-sigmodrec2016.pdf
● https://arxiv.org/pdf/cs/0701157.pdf
● See also:
○ http://www.redbook.io/
○ https://blog.acolyer.org/
○ https://t.me/databasss

Más contenido relacionado

La actualidad más candente

Getting Started with PHP Extensions
Getting Started with PHP ExtensionsGetting Started with PHP Extensions
Getting Started with PHP ExtensionsMichaelBrunoLochemem
 
An introduction to go programming language
An introduction to go programming languageAn introduction to go programming language
An introduction to go programming languageTechnology Parser
 
Golang (Go Programming Language)
Golang (Go Programming Language)Golang (Go Programming Language)
Golang (Go Programming Language)ShubhamMishra485
 
Understanding how concurrency work in os
Understanding how concurrency work in osUnderstanding how concurrency work in os
Understanding how concurrency work in osGenchiLu1
 
Adopting language server for apache camel feedback from a java/Eclipse plugi...
Adopting language server for apache camel  feedback from a java/Eclipse plugi...Adopting language server for apache camel  feedback from a java/Eclipse plugi...
Adopting language server for apache camel feedback from a java/Eclipse plugi...Aurélien Pupier
 
HelsinkiJS - Clojurescript for Javascript Developers
HelsinkiJS - Clojurescript for Javascript DevelopersHelsinkiJS - Clojurescript for Javascript Developers
HelsinkiJS - Clojurescript for Javascript DevelopersJuho Teperi
 
A First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageGanesh Samarthyam
 
Advantages of Python Learning | Why Python
Advantages of Python Learning | Why PythonAdvantages of Python Learning | Why Python
Advantages of Python Learning | Why PythonEvoletTechnologiesCo
 
Go Programming Language by Google
Go Programming Language by GoogleGo Programming Language by Google
Go Programming Language by GoogleUttam Gandhi
 
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming LanguageATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming LanguageJohn Potocny
 
My talk on Piter Py 2016
My talk on Piter Py 2016My talk on Piter Py 2016
My talk on Piter Py 2016Alex Chistyakov
 
The Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventureThe Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventuremylittleadventure
 
Python Django Basics
Python Django BasicsPython Django Basics
Python Django BasicsRahilMemon5
 
Boosting python web apps with protocol buffers & grpc
Boosting python web apps with protocol buffers & grpcBoosting python web apps with protocol buffers & grpc
Boosting python web apps with protocol buffers & grpcNaren Arya
 
Groovy as a Dynamic Language
Groovy as a Dynamic LanguageGroovy as a Dynamic Language
Groovy as a Dynamic LanguageDarren Cruse
 
Google Go! language
Google Go! languageGoogle Go! language
Google Go! languageAndré Mayer
 

La actualidad más candente (20)

Getting Started with PHP Extensions
Getting Started with PHP ExtensionsGetting Started with PHP Extensions
Getting Started with PHP Extensions
 
An introduction to go programming language
An introduction to go programming languageAn introduction to go programming language
An introduction to go programming language
 
Golang (Go Programming Language)
Golang (Go Programming Language)Golang (Go Programming Language)
Golang (Go Programming Language)
 
Understanding how concurrency work in os
Understanding how concurrency work in osUnderstanding how concurrency work in os
Understanding how concurrency work in os
 
Adopting language server for apache camel feedback from a java/Eclipse plugi...
Adopting language server for apache camel  feedback from a java/Eclipse plugi...Adopting language server for apache camel  feedback from a java/Eclipse plugi...
Adopting language server for apache camel feedback from a java/Eclipse plugi...
 
HelsinkiJS - Clojurescript for Javascript Developers
HelsinkiJS - Clojurescript for Javascript DevelopersHelsinkiJS - Clojurescript for Javascript Developers
HelsinkiJS - Clojurescript for Javascript Developers
 
A First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming Language
 
Advantages of Python Learning | Why Python
Advantages of Python Learning | Why PythonAdvantages of Python Learning | Why Python
Advantages of Python Learning | Why Python
 
Go lang
Go langGo lang
Go lang
 
Go Programming Language by Google
Go Programming Language by GoogleGo Programming Language by Google
Go Programming Language by Google
 
An Introduction to Go
An Introduction to GoAn Introduction to Go
An Introduction to Go
 
From NodeJS to Rust
From NodeJS to RustFrom NodeJS to Rust
From NodeJS to Rust
 
JetBrains MPS
JetBrains MPSJetBrains MPS
JetBrains MPS
 
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming LanguageATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
 
My talk on Piter Py 2016
My talk on Piter Py 2016My talk on Piter Py 2016
My talk on Piter Py 2016
 
The Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventureThe Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventure
 
Python Django Basics
Python Django BasicsPython Django Basics
Python Django Basics
 
Boosting python web apps with protocol buffers & grpc
Boosting python web apps with protocol buffers & grpcBoosting python web apps with protocol buffers & grpc
Boosting python web apps with protocol buffers & grpc
 
Groovy as a Dynamic Language
Groovy as a Dynamic LanguageGroovy as a Dynamic Language
Groovy as a Dynamic Language
 
Google Go! language
Google Go! languageGoogle Go! language
Google Go! language
 

Similar a Growing up new PostgreSQL developers (pgcon.org 2018)

Standing out as a new grad candidate
Standing out as a new grad candidateStanding out as a new grad candidate
Standing out as a new grad candidateSashko Stubailo
 
Inclusive Architecture - Introducing the PAMstack - [Refactr.tech]
Inclusive Architecture - Introducing the PAMstack - [Refactr.tech] Inclusive Architecture - Introducing the PAMstack - [Refactr.tech]
Inclusive Architecture - Introducing the PAMstack - [Refactr.tech] Tracy Lee
 
HOW TO START (ANYTHING ABOUT CODE).pptx
HOW TO START (ANYTHING ABOUT CODE).pptxHOW TO START (ANYTHING ABOUT CODE).pptx
HOW TO START (ANYTHING ABOUT CODE).pptxssuser62b2da
 
Picking the right architecture and sticking to it
Picking the right architecture and sticking to itPicking the right architecture and sticking to it
Picking the right architecture and sticking to itPetter Holmström
 
From ic to tech lead
From ic to tech leadFrom ic to tech lead
From ic to tech leadFangda Wang
 
How to review a pull request
How to review a pull requestHow to review a pull request
How to review a pull requestrouanw
 
Resume Writing Workshop (Part I)
Resume Writing Workshop (Part I)Resume Writing Workshop (Part I)
Resume Writing Workshop (Part I)RaviTandon11
 
build@mercari-week7-mark-talk
build@mercari-week7-mark-talkbuild@mercari-week7-mark-talk
build@mercari-week7-mark-talkMark Hahn
 
Professional development
Professional developmentProfessional development
Professional developmentJulio Martinez
 
Kickstarting career as an Android developer.pdf
Kickstarting career as an Android developer.pdfKickstarting career as an Android developer.pdf
Kickstarting career as an Android developer.pdfShreyaDhurde
 
Development Projects Failing? What can the Business Analyst Do?
Development Projects Failing?  What can the Business Analyst Do?Development Projects Failing?  What can the Business Analyst Do?
Development Projects Failing? What can the Business Analyst Do?CTE Solutions Inc.
 
Being Productive at Work
Being Productive at WorkBeing Productive at Work
Being Productive at WorkHitesh Patel
 
Introduction to Scrum
Introduction to ScrumIntroduction to Scrum
Introduction to ScrumBixlabs
 
"Through the three circles of the it hell" by Roman Liashenko
"Through the three circles of the it hell" by Roman Liashenko"Through the three circles of the it hell" by Roman Liashenko
"Through the three circles of the it hell" by Roman LiashenkoCiklum Ukraine
 
Lessons learned with Bdd: a tutorial
Lessons learned with Bdd: a tutorialLessons learned with Bdd: a tutorial
Lessons learned with Bdd: a tutorialAlan Richardson
 
Why you don't need maths to get benefits of ml
Why you don't need maths to get benefits of mlWhy you don't need maths to get benefits of ml
Why you don't need maths to get benefits of mlAseem Bansal
 
How to become Industry ready engineers.pdf
How to become  Industry ready engineers.pdfHow to become  Industry ready engineers.pdf
How to become Industry ready engineers.pdfDrNilam Choudhary
 
Cepstrum Placement Talk 2022.pptx
Cepstrum Placement Talk 2022.pptxCepstrum Placement Talk 2022.pptx
Cepstrum Placement Talk 2022.pptxgyan98
 
2024.04 - AI in Code Generation - April User Group Meeting
2024.04 - AI in Code Generation - April User Group Meeting2024.04 - AI in Code Generation - April User Group Meeting
2024.04 - AI in Code Generation - April User Group Meetingpetercaitens1
 
Book: Software Architecture and Decision-Making
Book: Software Architecture and Decision-MakingBook: Software Architecture and Decision-Making
Book: Software Architecture and Decision-MakingSrinath Perera
 

Similar a Growing up new PostgreSQL developers (pgcon.org 2018) (20)

Standing out as a new grad candidate
Standing out as a new grad candidateStanding out as a new grad candidate
Standing out as a new grad candidate
 
Inclusive Architecture - Introducing the PAMstack - [Refactr.tech]
Inclusive Architecture - Introducing the PAMstack - [Refactr.tech] Inclusive Architecture - Introducing the PAMstack - [Refactr.tech]
Inclusive Architecture - Introducing the PAMstack - [Refactr.tech]
 
HOW TO START (ANYTHING ABOUT CODE).pptx
HOW TO START (ANYTHING ABOUT CODE).pptxHOW TO START (ANYTHING ABOUT CODE).pptx
HOW TO START (ANYTHING ABOUT CODE).pptx
 
Picking the right architecture and sticking to it
Picking the right architecture and sticking to itPicking the right architecture and sticking to it
Picking the right architecture and sticking to it
 
From ic to tech lead
From ic to tech leadFrom ic to tech lead
From ic to tech lead
 
How to review a pull request
How to review a pull requestHow to review a pull request
How to review a pull request
 
Resume Writing Workshop (Part I)
Resume Writing Workshop (Part I)Resume Writing Workshop (Part I)
Resume Writing Workshop (Part I)
 
build@mercari-week7-mark-talk
build@mercari-week7-mark-talkbuild@mercari-week7-mark-talk
build@mercari-week7-mark-talk
 
Professional development
Professional developmentProfessional development
Professional development
 
Kickstarting career as an Android developer.pdf
Kickstarting career as an Android developer.pdfKickstarting career as an Android developer.pdf
Kickstarting career as an Android developer.pdf
 
Development Projects Failing? What can the Business Analyst Do?
Development Projects Failing?  What can the Business Analyst Do?Development Projects Failing?  What can the Business Analyst Do?
Development Projects Failing? What can the Business Analyst Do?
 
Being Productive at Work
Being Productive at WorkBeing Productive at Work
Being Productive at Work
 
Introduction to Scrum
Introduction to ScrumIntroduction to Scrum
Introduction to Scrum
 
"Through the three circles of the it hell" by Roman Liashenko
"Through the three circles of the it hell" by Roman Liashenko"Through the three circles of the it hell" by Roman Liashenko
"Through the three circles of the it hell" by Roman Liashenko
 
Lessons learned with Bdd: a tutorial
Lessons learned with Bdd: a tutorialLessons learned with Bdd: a tutorial
Lessons learned with Bdd: a tutorial
 
Why you don't need maths to get benefits of ml
Why you don't need maths to get benefits of mlWhy you don't need maths to get benefits of ml
Why you don't need maths to get benefits of ml
 
How to become Industry ready engineers.pdf
How to become  Industry ready engineers.pdfHow to become  Industry ready engineers.pdf
How to become Industry ready engineers.pdf
 
Cepstrum Placement Talk 2022.pptx
Cepstrum Placement Talk 2022.pptxCepstrum Placement Talk 2022.pptx
Cepstrum Placement Talk 2022.pptx
 
2024.04 - AI in Code Generation - April User Group Meeting
2024.04 - AI in Code Generation - April User Group Meeting2024.04 - AI in Code Generation - April User Group Meeting
2024.04 - AI in Code Generation - April User Group Meeting
 
Book: Software Architecture and Decision-Making
Book: Software Architecture and Decision-MakingBook: Software Architecture and Decision-Making
Book: Software Architecture and Decision-Making
 

Más de Aleksander Alekseev

PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)
PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)
PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)Aleksander Alekseev
 
In-core compression: how to shrink your database size in several times
In-core compression: how to shrink your database size in several timesIn-core compression: how to shrink your database size in several times
In-core compression: how to shrink your database size in several timesAleksander Alekseev
 
ZSON, или прозрачное сжатие JSON
ZSON, или прозрачное сжатие JSONZSON, или прозрачное сжатие JSON
ZSON, или прозрачное сжатие JSONAleksander Alekseev
 
Профилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахПрофилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахAleksander Alekseev
 
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
Новые технологии репликации данных в PostgreSQL - Александр АлексеевНовые технологии репликации данных в PostgreSQL - Александр Алексеев
Новые технологии репликации данных в PostgreSQL - Александр АлексеевAleksander Alekseev
 
Haskell - это просто - Александр Алексеев
Haskell - это просто - Александр АлексеевHaskell - это просто - Александр Алексеев
Haskell - это просто - Александр АлексеевAleksander Alekseev
 
Работа с Akka Cluster - Александр Алексеев
Работа с Akka Cluster - Александр АлексеевРабота с Akka Cluster - Александр Алексеев
Работа с Akka Cluster - Александр АлексеевAleksander Alekseev
 
Функциональное программирование - Александр Алексеев
Функциональное программирование - Александр АлексеевФункциональное программирование - Александр Алексеев
Функциональное программирование - Александр АлексеевAleksander Alekseev
 

Más de Aleksander Alekseev (11)

PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)
PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)
PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)
 
Data recovery using pg_filedump
Data recovery using pg_filedumpData recovery using pg_filedump
Data recovery using pg_filedump
 
Full Text Search in PostgreSQL
Full Text Search in PostgreSQLFull Text Search in PostgreSQL
Full Text Search in PostgreSQL
 
pg_filedump
pg_filedumppg_filedump
pg_filedump
 
In-core compression: how to shrink your database size in several times
In-core compression: how to shrink your database size in several timesIn-core compression: how to shrink your database size in several times
In-core compression: how to shrink your database size in several times
 
ZSON, или прозрачное сжатие JSON
ZSON, или прозрачное сжатие JSONZSON, или прозрачное сжатие JSON
ZSON, или прозрачное сжатие JSON
 
Профилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахПрофилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системах
 
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
Новые технологии репликации данных в PostgreSQL - Александр АлексеевНовые технологии репликации данных в PostgreSQL - Александр Алексеев
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
 
Haskell - это просто - Александр Алексеев
Haskell - это просто - Александр АлексеевHaskell - это просто - Александр Алексеев
Haskell - это просто - Александр Алексеев
 
Работа с Akka Cluster - Александр Алексеев
Работа с Akka Cluster - Александр АлексеевРабота с Akka Cluster - Александр Алексеев
Работа с Akka Cluster - Александр Алексеев
 
Функциональное программирование - Александр Алексеев
Функциональное программирование - Александр АлексеевФункциональное программирование - Александр Алексеев
Функциональное программирование - Александр Алексеев
 

Último

Beyond the Codes_Repositioning towards sustainable development
Beyond the Codes_Repositioning towards sustainable developmentBeyond the Codes_Repositioning towards sustainable development
Beyond the Codes_Repositioning towards sustainable developmentNimot Muili
 
internship thesis pakistan aeronautical complex kamra
internship thesis pakistan aeronautical complex kamrainternship thesis pakistan aeronautical complex kamra
internship thesis pakistan aeronautical complex kamraAllTops
 
Leaders enhance communication by actively listening, providing constructive f...
Leaders enhance communication by actively listening, providing constructive f...Leaders enhance communication by actively listening, providing constructive f...
Leaders enhance communication by actively listening, providing constructive f...Ram V Chary
 
Siliguri Escorts Service Girl ^ 9332606886, WhatsApp Anytime Siliguri
Siliguri Escorts Service Girl ^ 9332606886, WhatsApp Anytime SiliguriSiliguri Escorts Service Girl ^ 9332606886, WhatsApp Anytime Siliguri
Siliguri Escorts Service Girl ^ 9332606886, WhatsApp Anytime Siligurimeghakumariji156
 
International Ocean Transportation p.pdf
International Ocean Transportation p.pdfInternational Ocean Transportation p.pdf
International Ocean Transportation p.pdfAlejandromexEspino
 
Agile Coaching Change Management Framework.pptx
Agile Coaching Change Management Framework.pptxAgile Coaching Change Management Framework.pptx
Agile Coaching Change Management Framework.pptxalinstan901
 
Marketing Management 16th edition by Philip Kotler test bank.docx
Marketing Management 16th edition by Philip Kotler test bank.docxMarketing Management 16th edition by Philip Kotler test bank.docx
Marketing Management 16th edition by Philip Kotler test bank.docxssuserf63bd7
 
The Psychology Of Motivation - Richard Brown
The Psychology Of Motivation - Richard BrownThe Psychology Of Motivation - Richard Brown
The Psychology Of Motivation - Richard BrownSandaliGurusinghe2
 
W.H.Bender Quote 62 - Always strive to be a Hospitality Service professional
W.H.Bender Quote 62 - Always strive to be a Hospitality Service professionalW.H.Bender Quote 62 - Always strive to be a Hospitality Service professional
W.H.Bender Quote 62 - Always strive to be a Hospitality Service professionalWilliam (Bill) H. Bender, FCSI
 
Safety T fire missions army field Artillery
Safety T fire missions army field ArtillerySafety T fire missions army field Artillery
Safety T fire missions army field ArtilleryKennethSwanberg
 
digital Human resource management presentation.pdf
digital Human resource management presentation.pdfdigital Human resource management presentation.pdf
digital Human resource management presentation.pdfArtiSrivastava23
 
Gautam Buddh Nagar Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Gautam Buddh Nagar Call Girls 🥰 8617370543 Service Offer VIP Hot ModelGautam Buddh Nagar Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Gautam Buddh Nagar Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNitya salvi
 
How Software Developers Destroy Business Value.pptx
How Software Developers Destroy Business Value.pptxHow Software Developers Destroy Business Value.pptx
How Software Developers Destroy Business Value.pptxAaron Stannard
 
Reviewing and summarization of university ranking system to.pptx
Reviewing and summarization of university ranking system  to.pptxReviewing and summarization of university ranking system  to.pptx
Reviewing and summarization of university ranking system to.pptxAss.Prof. Dr. Mogeeb Mosleh
 

Último (16)

Abortion pills in Jeddah |• +966572737505 ] GET CYTOTEC
Abortion pills in Jeddah |• +966572737505 ] GET CYTOTECAbortion pills in Jeddah |• +966572737505 ] GET CYTOTEC
Abortion pills in Jeddah |• +966572737505 ] GET CYTOTEC
 
Beyond the Codes_Repositioning towards sustainable development
Beyond the Codes_Repositioning towards sustainable developmentBeyond the Codes_Repositioning towards sustainable development
Beyond the Codes_Repositioning towards sustainable development
 
Intro_University_Ranking_Introduction.pptx
Intro_University_Ranking_Introduction.pptxIntro_University_Ranking_Introduction.pptx
Intro_University_Ranking_Introduction.pptx
 
internship thesis pakistan aeronautical complex kamra
internship thesis pakistan aeronautical complex kamrainternship thesis pakistan aeronautical complex kamra
internship thesis pakistan aeronautical complex kamra
 
Leaders enhance communication by actively listening, providing constructive f...
Leaders enhance communication by actively listening, providing constructive f...Leaders enhance communication by actively listening, providing constructive f...
Leaders enhance communication by actively listening, providing constructive f...
 
Siliguri Escorts Service Girl ^ 9332606886, WhatsApp Anytime Siliguri
Siliguri Escorts Service Girl ^ 9332606886, WhatsApp Anytime SiliguriSiliguri Escorts Service Girl ^ 9332606886, WhatsApp Anytime Siliguri
Siliguri Escorts Service Girl ^ 9332606886, WhatsApp Anytime Siliguri
 
International Ocean Transportation p.pdf
International Ocean Transportation p.pdfInternational Ocean Transportation p.pdf
International Ocean Transportation p.pdf
 
Agile Coaching Change Management Framework.pptx
Agile Coaching Change Management Framework.pptxAgile Coaching Change Management Framework.pptx
Agile Coaching Change Management Framework.pptx
 
Marketing Management 16th edition by Philip Kotler test bank.docx
Marketing Management 16th edition by Philip Kotler test bank.docxMarketing Management 16th edition by Philip Kotler test bank.docx
Marketing Management 16th edition by Philip Kotler test bank.docx
 
The Psychology Of Motivation - Richard Brown
The Psychology Of Motivation - Richard BrownThe Psychology Of Motivation - Richard Brown
The Psychology Of Motivation - Richard Brown
 
W.H.Bender Quote 62 - Always strive to be a Hospitality Service professional
W.H.Bender Quote 62 - Always strive to be a Hospitality Service professionalW.H.Bender Quote 62 - Always strive to be a Hospitality Service professional
W.H.Bender Quote 62 - Always strive to be a Hospitality Service professional
 
Safety T fire missions army field Artillery
Safety T fire missions army field ArtillerySafety T fire missions army field Artillery
Safety T fire missions army field Artillery
 
digital Human resource management presentation.pdf
digital Human resource management presentation.pdfdigital Human resource management presentation.pdf
digital Human resource management presentation.pdf
 
Gautam Buddh Nagar Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Gautam Buddh Nagar Call Girls 🥰 8617370543 Service Offer VIP Hot ModelGautam Buddh Nagar Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Gautam Buddh Nagar Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
How Software Developers Destroy Business Value.pptx
How Software Developers Destroy Business Value.pptxHow Software Developers Destroy Business Value.pptx
How Software Developers Destroy Business Value.pptx
 
Reviewing and summarization of university ranking system to.pptx
Reviewing and summarization of university ranking system  to.pptxReviewing and summarization of university ranking system  to.pptx
Reviewing and summarization of university ranking system to.pptx
 

Growing up new PostgreSQL developers (pgcon.org 2018)

  • 1. Growing up new PostgreSQL developers Anastasia Lubennikova Aleksander Alekseev
  • 2. In this talk ● A few words about us; ● First-person view on developing PostgreSQL; ● Where to find new developers; ● Teaching students in Moscow State University; ● Teaching students in Higher School of Economics; ● Project management gotchas; ● Onboarding & team leading gotchas; ● On distributed teams; ● And stuff like this :)
  • 3. Disclaimer! ● This talk is completely non-technical. Still we hope you will be interested. ● In this talk we use ‘mentor’, ‘project manager’ and ‘team leader’ as synonyms. We know this is not very accurate but we have our reasons which hopefully will become clear later.
  • 4. A few words about us: Anastasia ● Graduated with BC in Applied Mathematics and Informatics in 2014; ● Took part in GSoC with PostgreSQL as a student (2014) and a mentor (2017); ● Since 2015 work in Postgres Professional; ● Contribute mostly to index enhancements and pg_probackup;
  • 5. A few words about us: Aleksander ● I live in Moscow, Russia; ● Develop software since 2007; ● Contribute to PostgreSQL since 2015; ● Work in Postgres Professional company; ● Author of zson and pg_protobuf extensions; ● Interests: OSS, functional programming, electronics, distributed systems, blogging, podcasting; ● https://eax.me/ & https://devzen.ru/ ;
  • 6. On developing PostgreSQL: Anastasia ● Developing PostgreSQL core is my first job. So I had no idea that it is considered to be a difficult thing; ● I learned mostly through practical experience; ● Code comments and mailing lists are a great source of information; ○ You see not only the code but also a reasoning behind it; ● The pace can be really frustrating sometimes; And results as well. It is not just development. More like R&D; ● The project is really big and it covers many areas of CS.
  • 7. On developing PostgreSQL: Aleksander ● ~8 years of experience in different area (backends / distributed systems / …) before this job; ● The process is slow (several patches a week vs several patches a year); ● Something is not quite right with abstraction levels (e.g. dynahash and locks, re-using atomics outside of backend, ...); ● Something is not quite right with reusing existing code (home-brewed concurrency primitives, containers, etc); ● Perl 5.8, Autotools :( ● It doesn't feel like there is a lack of developers.
  • 8. Where to find new developers ● Find an experienced RDBS developer who is looking for a job;
  • 9. Where to find new developers ● Find an experienced RDBS developer who is looking for a job; ○ Oops, there are none!
  • 10. Where to find new developers ● Find an experienced RDBS developer who is looking for a job; ○ Oops, there are none! ● OK, find a regular developer then, preferably with an experience (or at least an interest) in low-level programming;
  • 11. Where to find new developers ● Find an experienced RDBS developer who is looking for a job; ○ Oops, there are none! ● OK, find a regular developer then, preferably with an experience (or at least an interest) in low-level programming; ○ It might work. However many will leave after a year or so.
  • 12. Where to find new developers ● Find an experienced RDBS developer who is looking for a job; ○ Oops, there are none! ● OK, find a regular developer then, preferably with an experience (or at least an interest) in low-level programming; ○ It might work. However many will leave after a year or so. ● What about hiring graduates?
  • 13. Where to find new developers ● Find an experienced RDBS developer who is looking for a job; ○ Oops, there are none! ● OK, find a regular developer then, preferably with an experience (or at least an interest) in low-level programming; ○ It might work. However many will leave after a year or so. ● What about hiring graduates? ○ It will work. However: ■ Right graduates are rare; ■ We need corresponding lectures; ■ We need mentors / team leaders;
  • 14. On teaching students. Theory ● Some great books and courses already exist; ● Clear reasoning behind each component and algorithm; ● A lot of design ideas and trade-offs to discuss; ● A lot of fresh papers to study.
  • 15. On teaching students. Practice ● Abstract practical tasks are boring :( ● There are not many junior tasks in DBMS development. ● It takes more than just good theory knowledge and code skills ○ Initial design, attention to corner cases, code comments, test coverage, thoughtful benchmarking. ● PostgreSQL specific; ○ Building, macroses, development process, etc; ○ TODO-list on wiki doesn’t help much.
  • 16. On teaching students in MSU ● It was an elective course for all faculty, for students with various background; ○ Elective - turned out it was a bad option :( ● Students tend to choose simpler courses to get their grades; ● Chosen course was not fixed in the beginning of the semester; ● Many students visited lectures out of interest, but didn’t do homework and didn’t take exams;
  • 17. On teaching students in HSE ● Mandatory course for students of distributed systems department, strong CS background; ○ Mandatory - is good :) ● Cumulative grade system, modules instead of semesters ○ One module = ½ semester, semester = half a year; ● Surprisingly there was no system programming (C, *nix) course before our course;
  • 18. On teaching students. Tasks and homework ● ‘Papers we love’ style seminars; ○ This was a good move. ● Work in small groups; ○ Bad idea. See the slide about MSU and leaving students. ○ There should be a separate course on “mature” software development; ● Patches and contribs for PostgreSQL; ○ Hard to find suitable tasks; ○ Requires a lot of mentorship (time, code review, etc); ○ Turned out to be quite challenging for some of our students; ● Patches for educational DBMS HurmaDB; (*) ○ A lot of tasks; ○ Less enthusiasm for a “toy” project comparing to PostgreSQL; ○ Little benefit from the company’s point of view; (*) Hurma (хурма) means ‘persimmon’ in Russian. Second meaning: something weird.
  • 19. We got students with strong* DBMS background. What’s next?
  • 20. What’s next? ● Providing diploma projects; ○ Requires a dedicated mentor! ■ Not everyone can be a good mentor, see next slides; ○ Worked well for some of our colleagues; ● Internship; ● Job offer, trial period; ● Gotcha: you raised a valuable expert. Such experts are prone to get good job offers from other companies.
  • 21. Onboarding gotchas ● Write articles and record videos for new employees ○ How to build PostgreSQL ○ On PostgreSQL internals ○ etc ● Don’t allow new employees to work too hard ○ Watch out impostor syndrome! ○ Some employees might think that they are not working good enough and start to work on holidays ○ Don’t allow this! There is little use of exhausted employees. Explain it. ● Experienced new employees also need onboarding
  • 22. It would be quite challenging for a regular PM to manage DBMS development. (We’ve tried this approach :) Thus PMs most likely will grow up from your developers.
  • 23. On transitional process ● The transition from developer to PM might be depressing;
  • 24. On transitional process ● The transition from developer to PM might be depressing; ● You spent years to develop technical skills;
  • 25. On transitional process ● The transition from developer to PM might be depressing; ● You spent years to develop technical skills; ● And now suddenly you need soft skills;
  • 26. On transitional process ● The transition from developer to PM might be depressing; ● You spent years to develop technical skills; ● And now suddenly you need soft skills; ● Which you are probably not very good at since you didn’t develop these skills, at least intentionally;
  • 27. On transitional process ● The transition from developer to PM might be depressing; ● You spent years to develop technical skills; ● And now suddenly you need soft skills; ● Which you are probably not very good at since you didn’t develop these skills, at least intentionally; ● Personally I consider this a new stage in my career and also an opportunity to evolve further;
  • 28. On transitional process ● The transition from developer to PM might be depressing; ● You spent years to develop technical skills; ● And now suddenly you need soft skills; ● Which you are probably not very good at since you didn’t develop these skills, at least intentionally; ● Personally I consider this a new stage in my career and also an opportunity to evolve further; ● You start to look at many things from a different perspective; ○ On development, business needs and people
  • 29. Change of perspective ● What is the priority of this feature? Did our clients even ask for it?
  • 30. Change of perspective ● What is the priority of this feature? Did our clients even ask for it? ● Does it worth an effort to optimize this feature? Did our clients complain on it performance? Do our clients even use this feature? How did you look for a bottleneck?
  • 31. Change of perspective ● What is the priority of this feature? Did our clients even ask for it? ● Does it worth an effort to optimize this feature? Did our clients complain on it performance? Do our clients even use this feature? How did you look for a bottleneck? ● Perfect is the enemy of good;
  • 32. Change of perspective ● What is the priority of this feature? Did our clients even ask for it? ● Does it worth an effort to optimize this feature? Did our clients complain on it performance? Do our clients even use this feature? How did you look for a bottleneck? ● Perfect is the enemy of good; etc… You will be surprised how often great technical experts don’t think on such things.
  • 33. Project management gotchas ● Your employer might think that she doesn’t need PMs; ○ PostgreSQL community style; ○ However you do need PMs to have a predictable and sustainable development process (with right estimates, priorities, etc) ○ Processes are very important!
  • 34. Project management gotchas ● Your employer might think that she doesn’t need PMs; ○ PostgreSQL community style; ○ However you do need PMs to have a predictable and sustainable development process (with right estimates, priorities, etc) ○ Processes are very important! ● Hiring and firing people is part of the job;
  • 35. Project management gotchas ● Your employer might think that she doesn’t need PMs; ○ PostgreSQL community style; ○ However you do need PMs to have a predictable and sustainable development process (with right estimates, priorities, etc) ○ Processes are very important! ● Hiring and firing people is part of the job; ● Delegate!
  • 36. Project management gotchas ● Your employer might think that she doesn’t need PMs; ○ PostgreSQL community style; ○ However you do need PMs to have a predictable and sustainable development process (with right estimates, priorities, etc) ○ Processes are very important! ● Hiring and firing people is part of the job; ● Delegate! ● Bus factor;
  • 37. Project management gotchas ● Your employer might think that she doesn’t need PMs; ○ PostgreSQL community style; ○ However you do need PMs to have a predictable and sustainable development process (with right estimates, priorities, etc) ○ Processes are very important! ● Hiring and firing people is part of the job; ● Delegate! ● Bus factor; ● Some colleagues might have bad experience with SCRAM before. Don’t make rush changes.Try to take only best from agile methodologies and adjust them to your team.
  • 38. On distributed teams ● Text is prone to be received as an aggressive message;
  • 39. On distributed teams ● Text is prone to be received as an aggressive message; ● Thus be brief and use voice whenever possible;
  • 40. On distributed teams ● Text is prone to be received as an aggressive message; ● Thus be brief and use voice whenever possible; ● For stand-up meetings we choose Mumble;
  • 41. On distributed teams ● Text is prone to be received as an aggressive message; ● Thus be brief and use voice whenever possible; ● For stand-up meetings we choose Mumble; ● Check the status of remote employees tasks from time to time (in the middle of the SCRAM sprint) ○ Just ask “what’s up” :)
  • 42. Team leading gotchas ● You work with both people who are completely new to the area and with extremely experienced rockstars. ● Because of the project complexity, you won't be able to keep everything in your head. You need to delegate and trust people a lot. ● Quite a few people (if any) can be experts in all the components. And vice-versa, almost every developer will be good at some area [1]. Get ready to manage a lot of discussions. ● If there is no consensus you have to make a decision on your own. Be prepared to upset someone. [1]: see also https://ferd.ca/the-hitchhiker-s-guide-to-the-unexpected.html
  • 43. Three roles of a team leader The roles are: ● Psychologist (people) ● Logistic (processes) ● Expert (development) No one is good in all 3 roles simultaneously, thus: ● Gather a team specifically for a given team leader or ● Use two persons as a single team leader https://felixit.blog/2018/03/31/timlid-v-trioh-licah/ -- the article is in Russian but Google Translate should manage
  • 44. Three roles of a team leader The roles are: ● Psychologist (people) ● Logistic (processes) ● Expert (development) No one is good in all 3 roles simultaneously, thus: ● Gather a team specifically for a given team leader or ● Use two persons as a single team leader https://felixit.blog/2018/03/31/timlid-v-trioh-licah/ -- the article is in Russian but Google Translate should manage Classical PM
  • 45. Three roles of a team leader The roles are: ● Psychologist (people) ● Logistic (processes) ● Expert (development) No one is good in all 3 roles simultaneously, thus: ● Gather a team specifically for a given team leader or ● Use two persons as a single team leader https://felixit.blog/2018/03/31/timlid-v-trioh-licah/ -- the article is in Russian but Google Translate should manage Team leader
  • 46. Three roles of a team leader The roles are: ● Psychologist (people) ● Logistic (processes) ● Expert (development) No one is good in all 3 roles simultaneously, thus: ● Gather a team specifically for a given team leader or ● Use two persons as a single team leader https://felixit.blog/2018/03/31/timlid-v-trioh-licah/ -- the article is in Russian but Google Translate should manage Mentor
  • 47. Links ● https://postgrespro.com/ ● https://github.com/postgrespro/ ● https://www.msu.ru/en/ ● https://www.hse.ru/en/ ● https://wiki.mumble.info/wiki/Main_Page ● https://github.com/afiskon/hurmadb ● http://postgres-edu.blogspot.ru/search/label/Hacking%20PostgreSQL
  • 48. The time of this talk is limited, thus we couldn’t tell everything we wanted. Fortunately we are available after the talk.
  • 49. Thank you for your attention! ● a.lubennikova@postgrespro.ru ● a.alekseev@postgrespro.ru
  • 51. What does SENIOR mean? Software developer’s evolutionary path: 1. You get tasks and write code. Tasks on input, patches on output. 2. You start to think of bigger technical problems, split them into the tasks, plan the tasks, consider dependencies, etc. 3. You start to look for business problems and try to solve them. https://www.youtube.com/watch?v=cvHK5tRUCrs -- the video was removed :(
  • 52. Some of recommended white papers (1 / 2) ● http://www.vldb.org/pvldb/vol10/p385-yu.pdf ● https://www.allthingsdistributed.com/files/p1041-verbitski.pdf ● https://people.inf.ethz.ch/zistvan/doc/vldb17-caribou.pdf ● http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=D90D2CAD79DE47 115B96EFD947A6427B?doi=10.1.1.395.6493&rep=rep1&type=pdf ● https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf ● https://raft.github.io/raft.pdf ● https://arxiv.org/pdf/1802.07000.pdf ● https://static.googleusercontent.com/media/research.google.com/en//pubs/arc hive/36726.pdf
  • 53. Some of recommended white papers (2 / 2) ● https://static.googleusercontent.com/media/research.google.com/en//archive/ spanner-osdi2012.pdf ● https://static.googleusercontent.com/media/research.google.com/en//pubs/arc hive/46103.pdf ● http://db.cs.cmu.edu/papers/2016/pavlo-newsql-sigmodrec2016.pdf ● https://arxiv.org/pdf/cs/0701157.pdf ● See also: ○ http://www.redbook.io/ ○ https://blog.acolyer.org/ ○ https://t.me/databasss