We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Growing up new PostgreSQL developers

00:00

Formal Metadata

Title
Growing up new PostgreSQL developers
Subtitle
On teaching students, team leading, project management and stuff
Title of Series
Number of Parts
37
Author
License
CC Attribution 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
One doesn't simply hire a RDBMs developer. There are not many RDBMs developers in the world and even less of them are looking for a job. Instead of looking for developers we can grow them up. In this talk we would like to tell how we do it. One doesn't simply hire a RDBMs developer. There are not many RDBMs developers in the world and even less of them are looking for a job. Instead of looking for developers we can grow them up. In this talk we would like to tell how we do it. In this talk: First-person view: PostgreSQL developer as a first job & contributing to PostgreSQL after years of experience in different area - impressions, difficulties, etc; Our experience of teaching Moscow State University students; Onboarding & team leading gotchas; Project management gotchas; On burning out; And stuff like this :)
4
18
22
23
Computer animation
Computer animation
Computer animation
Computer animation
Computer animation
Computer animation
Computer animation
Transcript: English(auto-generated)
Hello everyone My name is Alexander My name is Nastasia. We have talked together. So we'll pass our mic. Don't don't get distracted by that
Yeah, and here is an agenda of this talk The reason we give this talk today is that lately we were involved in such a strange activity as I think
new developers for postgres scale and And We discovered it's not that simple and we will tell you how we Manage or not manage very good to solve this task. I Would like to notice that this talk is completely non technical there will be no code
etc, but I We hope you will enjoy it nevertheless Also We use Words like mentor project manager and stuff like synonyms. We Realize it's not completely accurate, but we have a good reason and you will realize this reason
eventually Yeah, since this talk is mostly based on our personal experience. I think we should tell a little bit about us My name is Anastasia. I
So I'm kind of freshman fresh postgres developer and I took part in Google summer of course with postgres at my last University a year and I wrote my diploma which was related to postgres so can I work with it all my professional career and
Now currently I work at postgres professional company Which is Russian vendor of postgres and I contribute to postgres in many various ways First of all, I code definitely, I write some Enchantments to indexes to backup tools
Also, I teach and mentor our new colleagues and also Recently, I began to help to manage development process and our company cause we really found out that it is something we need To do and need to pay attention
Well, I live in Moscow Russia. I develop software since 2007 and well, I have various interests which are listed here and Recently, I also start to use project to do project management stuff in our company
Yes, so a few words on development postgres like from from my view As I already said development postgres is my first job, so Actually, I had no idea. I think that's why I had no idea It's considered to be such a difficult thing like all this scary see low-level
System programming. I didn't know that and I'm happy that I didn't know because I would be probably scared by that and I Maybe not like others I learned mostly through practical experience through digging into the code through
reading mailing lists and I can say that it's a great source of information of opinions and For me as a beginner. It was probably the most reliable open-sourced part of positive skill project because you can see not only
the result decision like the Final design, but you can see all the reasoning behind it and you can learn way more from that There's some difficulties in postgres development, of course First of all, the pace can be frustrating sometimes like that's not what you get used to in any other area
it's quite slow because it involves a lot of research and Results as well can be can be not that Impressive sometimes From time to time. We will have the patches the researches which will be labeled as
not that successful thing and go to to like Stash and Stay there forever, but it was useful to check it It was worth to do that, but it won't be postgres a part of postgres like never
and Another thing I want to put out is that postgres project is really big It covers many areas in computer science and anyone can pick something of his interest Okay, unlike Anastasia I had some experience before joining postgres professional and I did a lot of programming in weird
languages like pearl and Erlang and Scala and I did software development of Backends mostly and I had an opinion on how The code is supposed to be written But and turned out that my opinion doesn't quite match who is opinion of people who develop postgres scale. It was a
little bit surprising a few issues that strike me in a few in first two weeks are listed here and And
Another another thing I noticed that it's not that postgres community needs a lot of new developers you know, I mean software developers because there are lots of brilliant software developers and You can notice that there is a lack of Coding viewers for instance or testers or I don't know some people with soft skills
So We needed new developers in our company and We had to ask ourselves where to find them First idea is just find
Database management system developer Hire him the problem is there are none. There are none who is looking for job already Everyone is already hired. Everyone is pretty much happy with their job. So it's not quite an option
another option was to find developers who is Who has an experience in some different area? preferably in level programming and it might work, but our experience shows that well, basically is a Face same issues as issues as I did and
Leave after some time because there are much simpler ways to To earn money to You can do less and raise more money so it's not for everyone
So Without what if we hire gradates and It will probably work however Okay, so go just yeah, you need a mentor and
Right graduates are rare etc. By the way, if you have any questions or additions Please interrupt us At any point, okay So eventually we developed a course for university students and
Read it twice at different universities and now we'll share some some results of this of this practice first of all theory Actually the few if any issues with teaching theory because there are already many great books many
Courses which exist and they're structured well, and they're taught and they were taught for years So you won't face any problems with that actually It's easy to explain the purpose of each component of DBMS because you actually face those Things in real world all the time like you it's easy to explain why you need
I don't know stable and reliable software There is also a lot of design ideas A lot of papers to discuss and it really good Activity for students. They really enjoy it. So that's kind of easy thing to do for me as a teacher, but
When it comes to practice, it's not that easy and we've tried we were trying to To find some to try some different approaches to find some best solutions Personally as a student
Not so far. I understand why Why some students like enthusiasm in writing like yet another abstract task? Like when you need to write yet another hash table or b3, it's not that exciting you want to do something something for real world something practical and
something what people will use but So we try to find such a tasks to to get students happy and Eventually, apparently there are not many of them There is really few junior level tasks in database development because everything
Which was easy was developed already. So Another thing that it takes more than just good algorithms and programming language skills it requires a good
Attention to details to corner cases it requires some ability to write code comments and to do some test coverage and to check it and to make a thoroughfare benchmarking and It was not surprisingly, but that's not the things that students do best
There's also some positive skill specific which all of you know, like some specific code some Were a special development process, which is not familiar for people outside the community and What we found out that to do least on wiki posgres
it doesn't help much in finding new ideas for new projects because We included there many issues which were tried which some developers took attempt to implement And then they faced some problems and then it went to to the list It's not actually the source of new ideas. It's actually more like
Something we need to do, but we don't know how right now. So it's to do for experienced developers not for newbies Okay, we tried to
To do a course course on Moscow State University and There was some issues with this course because first of all it was Elective students can visit it or they could visit some other courses and
The big problem we faced is that the choice of the Course was not fixed By the students in the beginning of the semester, so they visited our course out of curiosity and but they didn't do any homework and
Yeah, and I choose to take exams for other courses and Yeah, this was kind of disappointing Basically, it's the biggest problem with MSU Yeah, though it
Gave us some good results. We hired a couple of students who are now our juniors and they are quite perspective I hope you'll see their patches in in Postgres soon With the high school of economics don't be surprised by the name. They have really strong faculty of computer science It was another story
We had mandatory course and students were like really motivated to to get their grades and to to do their homework they along with good background in In algorithms, it really gave us a good result They have quite unusual for Russia
System of grading which we had to learn as you newbie teachers Surprisingly we met some Some issues that they hadn't course on C. They Learned C++ and other languages and we had to adjust our tasks a bit
but As a final result, we had several patches Which not which were not like production ready, but we're in a really good shape and I hope that I'll maybe review and Rework them a bit and we'll send on on behalf of the students from to the comment first
Okay, I think that's also my slide So we tried different approaches as we already said one of the good moves was papers will have style seminars like when you give a paper to students and they read it at home and they
Maybe mark their questions and then you discuss it in class and everyone gives his opinion They try to to discuss what changed since the paper was issued and that is really something
Some good activity which were at work Work in small groups and it turned out to be not the best idea of us Because it really requires some strong management skills Which which are not? Every random group of students have We also tried patches and contrips for postgres kill
It was not easy to find a suitable tasks. It required a lot of work on from our side It was really challenging for me to do such a lot of review and to answer a lot of questions But it helped me to grow to grab to deepen my knowledge of postgres and it led us to
Some really really impressive results, I think and there was Also approach with educational database management system Which were written on C++ and like every students could pick a part component and write it on his own so it worked but
It was less enthusiasm for a toy project because like I Don't want to write code comments for something that will that nobody will use and I don't see a reason to write tests for something which is like just just a toy project, but
Like you can really See the level of the student you can Evaluate their skills before you give them some serious tasks That was maybe the best benefit of this approach
so We got students with strong DBMS background we told them so what's next we maybe want to hire them and to Offer them some some job at our company. First of all, we can provide diploma project ideas it
It requires a lot of work from mentor it requires because not everyone is ready to answer Thousands of stupid questions But it worked well for some of our colleague colleagues for me as an example. Thanks to Alexander
and we can also offer them an internship maybe some internship and Eventually get to job offer and trial period so after all those steps you have a valuable expert in a quite Complicated field and There is a gacha that these experts are prone to get a job offers from other companies
And you need to do something to keep them to give them with you There are some gachas regarding so-called onboarding of new employees Because they have lots of questions. They never worked with
Before so you better write an article maybe in a blog post or internal article in confluence for the system you are using That explains Well, the first steps how to build postgres scale how to write tests how to submit a page etc
You better have some Explanation on postgres scale internals we Fortunately have a course by Anastasia, which is called huggin postgres scale
I'm afraid it's in Russian, but it's it's okay for our company Another coach we discovered is that some employees are prone to work too hard like on holidays for instance And you should not allow this because
Exhausted employee there is a little use of such an employee you should talk to him or her and explain the situation and Explains that it's okay. You're You're new to this project. It's okay to Show little performance performance in the beginning you will manage eventually
Don't work too hard I think I have another thing to say is that experience even like Programmers with a great experience. They also need some onboarding because you
You're welcome there in your company and you have your own style and people tend to forget about that and it can lead to such a situation that maybe your New star he will go and dig into some very interesting task which has
quite a few To do with your with your goals He can be like we're interested in some area. He can do a lot of cool things, but not your
But but not what is in your plan to develop? Yeah as we found out it can be quite challenging for a regular PM to manage DBMS development since there is a lot of Very specific terminology. We will try it and we actually kind of failed this approach
Because it's it's really hard to speak the same language with DBMS developers and so be ready that PM most likely will grow up from your developers Maybe not the most skilled ones because they tend to be really good at coding and you probably don't want to lose such a
Such a great specialists. Maybe you can look at people with the good soft skills Yeah, if you if you want about the transitional process from my software developer to the project manager These are my slides and my personal experience. I never did project management before and for me this
Transitional process was kind of depressing and because you spent years developing your So-called hard skills your technical skills and now suddenly you have to talk to people and do
planning and Priorities and stuff and you need a lot of soft skills, which you never developed at least intentionally so As a trick here is to realize that it's not so-called Burning out or something. It's another step in your career, which you probably did not
expected but but it not necessarily a bad thing and actually, there are lots of interesting things here to learn and Now I'm quite enjoying the process Yeah Another interesting thing it is that you start to look at many things from one of the perspective on
developer development and business needs and other things for instance You start to ask inconvenient questions like What is the priority of this feature? Maybe our clients didn't even ask for it and you will be surprised how many?
Of your colleagues may work on something which is an interesting technical task, but which unfortunately, no one asked for and Another common mistake is to optimize things that are probably could be rewritten
even better way, but the problem is It works good enough and we we have More serious issues currently or we have a feature which is Not currently used by any of our clients. So there is little reason to optimize it right now, maybe later and
Many developers start to optimize I think before they even do some benchmark because they just Take from their heads. It's a problem is probably here. I am I try to write code and I think it will be
Better and faster, but Actually, the right way to do it is to do Match marks before and to do match marks, right is like a serious science Sometimes perfect is an enemy of good you have eaten in many cases. It's better to
Deliver a feature sooner it probably not in better shape, but it's better to deliver it now one year later or two years later because you have to solve a business issues of your clients and You better solve it maybe partially but now not two years later
That's actually you will be surprised how many people lose such mistakes if you look carefully Okay, some other gotchas like we started company not that far
Not that long ago, so We began with some post risk community style where we get a lot of great experts who did some Cool coding but if you need a predictable and what is important? Sustainable development process with like estimates with prioritizing tasks. You really need some management
You really need to to plan your work That's why we probably insist a lot on roadmaps for which we want to synchronize with community because we know that our Resources are are limited like you cannot do everything and we want to know what is more important
Probably this really cycle this year Another thing on project management is that hiring and firing people will become a part of your job You need to you need to get ready to that because when it comes to two people It's always kind of emotional and you can just
lose This connection with someone but sometimes it turns out to be a better option to to let Someone go and to hire another maybe less experienced person and it will be a good shift for you also shifting the positions between
Inside the company is probably something you can look at because if you move one of your great DBS to QA team one of your developers to debase it can lead to surprisingly good results Delegate and
Search called boss factor. You should watch out these things. You probably sometime need to give Tasks which are out of Of knowledge zone of some programmer so it will lead to some slowdown in in speed of development, but
Eventually more of your employees will know more of areas of the code. So you want Have such a situation that only That you have some legacy probably when some great expert which Was the only one who knew this area this part of the code when he left or he just
I don't know got distracted by some something another great and shiny and He and nobody else can catch this job and continue that and it will take Much more time to to get into this after after after that happens
Some Some people who get used to like this free community style when you do the stuff they might have also Some not that good experience with scrum or other methodologies before so you shouldn't like rush into all these
fancy project management techniques try to take only best try to adjust it to your team and Try to adjust it to research process because you shouldn't estimate people's progress on like accepted patches because if they did something if they worked hard and it turned out to be
Like not the best approach, but it led to to another great solution It's also a lot of work and you should Should appreciate that Okay
A Professional has a few Officers one is in Moscow and another is in Kazan City and Those are a team is partially distributed and Here are some gotchas regarding distributed teams
This mistake I do all the time Try to Use email and text messages as little as possible because This type of communication is prone to be accepted as something
aggressive when you didn't intended to do it and People got upset and all this better if it's possible come to someone and talk to him or her Unless this is something you should Save and the comment like some agreement which should Come up a year later like you promised or we agreed or something in this case
Naturally, you better write an email Yeah, use voice whenever possible Also, we have a stand-up meetings once a week and we choose Mumble software for this. This is an open source YB solution
Completely cross-platform completely free and self-hosted and it works. It works great sometimes you I believe it's your bullet Yeah, I want to remind it comes with something like
Imposter syndrome and all that stuff you need to check the status of remote employers and especially new new ones More often than Then the sizes of those who work with you for four years and
just because those people can think that they do something wrong, but You'll be surprised that you just ask what's up and person comes with a lot of questions and you you say like Why didn't you ask before and there is no there's no answer people I just tend to be shy and and some somewhere they afraid to to be a bit
Professional But that is really important thing if you want to keep to keep and to to grow those persons Yeah, there are some more team leading gotchas in such a project as us
as Postgres You will as a team leader as a project manager you work with very different people with boss who those who? Completely new to this area and with like extremely experienced developers who were this community for years but still you have to remind them on their
duties and remind them That you have plans and so on because of the project complexity You probably won't be able to keep everything in your head. Like I don't think that that we have People who can be experts in all the companies and
That leads to to the situation where you need to delegate a lot and you need to delegate quite complicated architectural decisions you have no like no centralized CTO like in some companies you have to delegate it to to the to your developers and trust them a lot
And vice versa Almost every developer will be good at some area. So you really must be ready to manage a lot of passionate discussions people people really Enjoy their point of view and they want
and they want it to be accepted, but Sometimes it can be like really hot discussions but If you speak about not this community style, but more like business more company style You have to make decision eventually if there is no consensus someone have to be
like This person who takes decision and Be prepared to upset someone it is inevitable, but still it's necessary I think that we have some issues with this in community and it's really hard to have thing to do like we
Just stash all those Controversial issues to some to-do list just like do not continue the discussion but still Some at some point you have to choose even if although both
You know both options are not perfect you have to choose and do that eventually, okay Serendipitously, I read I've read an article recently
It's unfortunately some Russian but I liked it a lot and it makes a lot of sense to me it describes the role of Team leader like three or main roles The first one is a psychologist meaning speaking with peoples of skills, etc
second role is logistic meaning process estimates priorities and the third role is an expert meaning technical expert software developer coding stuff and This article says that no one is good in all three roles simultaneously is highly unlikely that you are great in logistic and
psychology and software development simultaneously those There are two approaches to solstice The first is to choose a team for specific team leader or project management or whatever you call him or her and
this is a common practice when the product management project manager is not a developer, but he or she is good in psychology and logistic and The team is good in software development another approach is to To use two persons as a single team leader and in this case is a will
compensate compensate drawbacks of each other and if you look carefully Carefully on the on first three bullets, you will notice something classical PM is psychology plus logistic team leader is logistic plus
technical expert and Expert plus psychology is a mentor for new software developer or Google summer of code mentor Here are a few links. We would like to recommend I Don't think they require any explanation and
unfortunately, we had little time but Fortunately, we are available after this talk and we have some time for questions So if you have any We could answer them Well, you're thinking we have some bottom slice
specifically, we thought we could some Some issues with timing so
There is a great video. It was a great video on YouTube Called what does senior mean? Unfortunately, it was removed because The conference organizers asked to remove this video it was from Some guy from Netflix. Unfortunately, I didn't remember the name the name, but you could you probably watch this video
It was on the hyper news as the guy was in funny head like with horns Did someone watched it anyone? Okay It describes the past the path of
software developer from simply writing the code to more to realizing more business stuff I would say so first you just Write code get task Tasks on input and patches on output. You don't have to think a lot
At some point you realize there are bigger technical problems that you could split into parts and There are dependencies between this part you have to prioritize this parts and schedule somehow and there are dependencies and
This way you start to think on a high level about problems and as a higher just level According to this talk. It's not my dog Is when you start to look for business problems not technical problems But our business had have has a problem which is blah blah blah
So Hopefully this talk will be available in the nearest future and these are some papers we Gave to our students for For reading and telling during the papers below style seminars
Okay, any questions or please
I can answer I can answer this but I know my employer will not like it But yeah, but I prefer to be hands I've been working as a software developer and I noticed some problems like you you receive tasks from different directors, which are all
ASAP all very necessary and there are no business process and it's very hard for you to work in such an environment and I had Two choices is either solve it or give the company and I decided to well
I can leave the company in your time. So I decided to try to solve it and I believe Anastasia realized it In the same time Yeah, I actually had some another reason some other reasoning
It's really something that comes from customer needs we develop our own fork and we have very limited resources especially limited in in terms of Good developers like the senior ones. We have some of them and we do not want to
like to We do want to use their resources as much as possible to To get our clients happy. So we develop on on demand some Some patches some features and it really requires a lot of planning
So you need to be predictable if people want to buy something of your company, maybe buy your software They need to know what what world is As What to expect and and when especially so like when you say this feature will probably come out in the new release
It's it's not that reliable like thing And you say like, oh, oops. We haven't Get it committed. So so no, please wait one year more. So That's something you have to really plan hard and really to watch out At least at one company, I think that everyone who develops it for customer
does the same things and I don't know if it possible to to run community the same way because I really enjoy the Current community style where we got a lot of ideas a lot of kind of discussion and eventually we get like brilliant
Quality code, but sometimes we just can't wait that that much to get the perfect
Yeah, definitely we use this way we have and we like raise a big community in Russia
Which involves not only like the core developers, but also DBS app developers and all people who are just Interested in postgres in some way and we really want to see them But why we decided to go to university is because students they kind of have
more time to study than just people and when you Just tell to some probably DB or someone to try coding postgres, which which takes a lot of time to start Actually, it's it's not just one evening or just a couple of maybe
Days at a weekend it really takes some time to get involved into that So we decided that maybe we can look carefully to the students who have this time Who are just at the beginning of their way and who have no like duties for their?
day job But but still we we use this Way also, and we have many DBS who work at our company and who came just from community
Definitely we're trying to speed up this I would like to notice
note that It this approach with students. It doesn't it didn't work like Great, like everything is complete success we from I think from like 20 students we Hired one or two and like 50% of these like
Didn't manage so it kind of works, but you would need a lot of mentors, please
Okay, I believe this was our time. Thank you for your attention. If you have any other questions Cassius after this talk. Thank you