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

Why You Should Consider Getting a Python Pet Project

00:00

Formale Metadaten

Titel
Why You Should Consider Getting a Python Pet Project
Serientitel
Anzahl der Teile
115
Autor
Mitwirkende
Lizenz
CC-Namensnennung - keine kommerzielle Nutzung - Weitergabe unter gleichen Bedingungen 4.0 International:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben.
Identifikatoren
Herausgeber
Erscheinungsjahr
Sprache

Inhaltliche Metadaten

Fachgebiet
Genre
Abstract
If you are managing developer teams or departments a pet project may be a helpful tool to stay out of your developers hair and learn about the technologies used in your department without blocking your developers to babysit you. If you are like me and have a development background, you will want to get your hands dirty and start fixing bugs and implementing stories. However, this can have many negative side effects. Breaking established rules is easier in a leadership position and sets a bad precedent. By becoming a last instance for each technical decision you take away personal identification with the work of your engineers. It may also lead to distrust. With this talk, I want to share some of my experiences in that regard.
19
Vorschaubild
43:26
Patch <Software>KomponententestCASE <Informatik>Güte der AnpassungNegative ZahlProgrammierspracheModallogikOrtsoperatorMereologieRechenschieberProtokoll <Datenverarbeitungssystem>SchlussregelDifferenteProgrammiergerätMIDI <Musikelektronik>DatenverwaltungProzess <Informatik>Ordnung <Mathematik>Physikalisches SystemDatenfeldErwartungswertEDV-BeratungFunktionalTelekommunikationStichprobenumfangFokalpunktSchreib-Lese-KopfService providerHilfesystemMultiplikationsoperatorComputerunterstützte ÜbersetzungProgrammbibliothekNebenbedingungStandardabweichungTaskEnergiedichteEinfügungsdämpfungSoftwaretestMAPWellenpaketBefehl <Informatik>Produkt <Mathematik>AdditionQuick-SortEndliche ModelltheorieEntscheidungstheorieGroße VereinheitlichungCodierungZahlenbereichMessage-PassingOffice-PaketProzessautomationEinsCodeIntegralUniversal product codeDatensatzVollständiger VerbandRechter WinkelSoundverarbeitungSchnittmengeServerKartesische KoordinatenStrömungsrichtungCodecTouchscreenPauli-PrinzipRechenwerkImplementierungBitDruckspannungBenutzerschnittstellenverwaltungssystemÄhnlichkeitsgeometrieInverser LimesAppletGeradeBesprechung/Interview
SoftwareentwicklerBefehl <Informatik>Produkt <Mathematik>CodeDruckspannungSoftwaretestOrtsoperatorDatenverwaltungBitDifferenteCASE <Informatik>Negative ZahlProzess <Informatik>MAPSchlussregelProdukt <Mathematik>Schreib-Lese-KopfFokalpunktDruckspannungMereologieDatensatzProgrammiergerätSoftwaretestStichprobenumfangTelekommunikationWellenpaketService providerSchnittmengeMultiplikationsoperatorOrdnung <Mathematik>Güte der AnpassungComputeranimationVorlesung/Konferenz
CodeProdukt <Mathematik>DruckspannungSoftwaretestIdeal <Mathematik>DatenmodellProzess <Informatik>Ordnung <Mathematik>MultiplikationsoperatorEntscheidungstheorieTaskOrtsoperatorSoftwaretestÄhnlichkeitsgeometrieFokalpunktComputerunterstützte ÜbersetzungEinsDatenfeldCASE <Informatik>DatenverwaltungEinfügungsdämpfungProdukt <Mathematik>Endliche ModelltheorieProgrammierungMAPQuick-SortAdditionRechter WinkelComputeranimation
Physikalisches SystemTaskEnergiedichteKontextbezogenes SystemNebenbedingungDesintegration <Mathematik>FunktionalErwartungswertSoftwaretestEDV-BeratungProdukt <Mathematik>NebenbedingungOrtsoperatorEndliche ModelltheorieTaskGeradeSchreib-Lese-KopfServerKartesische KoordinatenMAPDatenverwaltungPhysikalisches SystemStereometrieBitProzessautomationTestbedMultiplikationsoperatorProzess <Informatik>KomponententestEntscheidungstheorieIntegralEnergiedichteProgrammbibliothekImplementierungRechenwerkComputeranimation
Fahne <Mathematik>CodeCodierungProzess <Informatik>Office-PaketHidden-Markov-ModellNebenbedingungModallogikMultiplikationsoperatorRichtungMessage-PassingVorlesung/KonferenzComputeranimationBesprechung/Interview
Transkript: Englisch(automatisch erzeugt)
Okay, now we have Christian who is going to talk about Python patches. You there, Christian? Yeah, I'm here. Can you hear me? Yes, yes, I can. Loud and clear.
Go to full screen. Awesome. Just to be clear, this is not about snakes, right? No, not this time. Something completely different. So I'm not presenting any cool library or like the great talk now on Kubernetes on a very technical level. It's more on an overview, a managerial level. It's a different
talk. I'll leave it to you then, Christian. Thank you. Be with me. Hope it's interesting. So first off, I want to say that Tradepot, again, is very proud to be a sponsor three times in a row now of your Python. We feel this is very important to be part of
the Python community to contribute and also use the Python community, of course, yeah? So to the title of my talk, why should you consider, or why you may consider getting a Python pet project. So this is basically something that came out of my own experience. So the sample size is n equals one. However, I would like to share some of my experiences
here. So of course, our legal department also wanted to have a slide, so maybe skipping over this. Yeah. Who am I? Who is giving you the talk? My name is Christian Bueger. I'm heading the development department in Austria for Tradepot. And I also have
a developer background. However, I started probably in the dark ages in 1997 as a CC plus plus programmer in a telecom company, a telecom provider company. And yeah, worked
all kinds of positions nationally, internationally, in China, in the US, in Germany, Switzerland, and of course, in my beloved Austria. Yeah, I've been working in team leadership, project leadership roles since 2006, becoming department head in 2017. While I started
my career, everything was waterfall, and these are companies I was working on, so waterfall projects. I was really excited to jump aboard the HR bandwagon in the mid 2000s. And ever since, I really like doing this and also like to have my teams
at best self empowered, of course. Yeah, maybe to the title again. At the end, but let's focus on the title at hand. So initially, with a pet project, there's some negative connotations, obviously. If you look at the, at least that's the
definition I found, it's not very positive, a project activity or goal pursued as a personal favorite, rather than because it's generally accepted as necessary or important. And this is a stock picture. It's not a picture from our company. In the past, probably everybody
has run across something like that when your boss, your department head, your whatever is really excited about a project, but you really think it's actually not really necessary and only distracts you from your work. So I don't want to talk about these pet projects, but maybe give you a little bit insight on how I came across this.
Um, so the problem statement, at least for me was being promoted to a leadership position, or and in our case, entered the company in the development manager position. So managing several teams, but also having a different tech background. So we
am really excited about new technologies playing around with him, with them toying around with them. And also be conscious of that we do have, of course, any company, tight deadlines, have to be really quality conscious. And as a manager coming from a tech background,
the urge is really strong to be actively involved and then go into the code and help your team. While this is all fine, this might lead to problems. There might be some negative
side effects. I'm not saying it's generally bad practice, but it might have some negative side effects, at least some that I encountered over the course of my career. When you do get involved into the product code, there will be tight deadlines, there might be an urgent support case or why you think it's an urgent support case, there will be a strong urge to work basically
around, around the rules. So because you set up with your agent, with your teams, with your agent coaches, you will have set up some rules, ground rules, processes for review and whatnot. However, in a major position, you might have the possibility to work around it. And that's not
very good, of course. So this will set a very bad precedent because then the rules should apply to everybody, not that there are different set of rules applying, different set of people. That's not a good precedent, basically, that you would set here. Also, because you're probably not paid
to work in a managerial position in order to code, but more to work on a strategic level. So we will have to, in essence, serve two masters, then which would lead to high amount of stress on your end and stress level on our development, managerial level is quite high from the
beginning. So that would really add up to it. So that's also something maybe to avoid and pitfall to avoid. Also, I mean, in the end, you hired developers and testers to develop and test and usually they should be better than you in doing so. If not, then you might have a
very big ego or you are actually better than you should invest into recruitment and training of your developers and testers, of course. UX engineers and so on are also included in this. The loss of focus is also quite likely because you're all caught up in technical discussions. You also might be the final decision maker in a lot of technical decisions.
And that's actually something that can be quite disenchanting or hurtful to your lead engineers or engineers because they are the ones that should be the ones that are in charge of
these decisions. Moving on, this is maybe, but you still want to have an outlet for your ideas and creativity and also want to contribute maybe. So maybe a pet project could be for you in order to, for example, experiment with new ideas. So for example, in my case, it was
behavioral testing. Behavioral different testing, that is something that I was very curious about, but I didn't want to put this into the protocols right away, but I had
basically my playing field where I did this just to get a feel on how this would work and how it would work in practice. Also, in order to feel the processes yourself, feel the processes yourself. It's all nice that you have to create the most
ingenious review process. However, it's really taking up a necessary amount of time maybe, or it's really great and then you should also feel it basically. That means writing something on paper is one thing. On the other hand, it's experiencing it yourself. And not the least, for purely selfish reason, you want to remain technically savvy, at least maybe not on the level
that your team can be, but at least that you can know what are the latest and greatest packages, know the programming languages, know the problems of your team, and also retain your own knowledge and maybe even expand it. In my case, using a Python project, it really expanded my
knowledge because Python was very new to me when I started in my current position.
However, as I already outlined before, you have to be very careful with something like this because this can really draw you in and basically suck you into a big black hole of additional work. So what would be a good idea to consider is, of course, these projects should have some sort of
benefit not only to you, but maybe also to others, maybe even ideally offload your developers from menial tasks and automation could be, tools could be a good venue for that. You should be a role model. So, I mean, if you expect your team to live up to certain standards,
you should also do so. Otherwise, it would be not setting a good precedent. You have to set the right priorities because you might be drawn away from it at any time. You might be drawn in a meeting. You will have, of course, the main focus is
giving the right tools and resources to your team. So this always takes precedent, of course, and also then you have to be, of course, as a manager also aware of what your product is doing, what is the business impact and so on. This, of course, has to be priorities because you might be pulled, you might want to over prioritize your side project. So actually,
this is something you have to continuously watch yourself that this is not the case. Also, what's not quite an anti-pattern is you might have a great idea for a side project and
then you lose interest and you dump it on an engineer's desk. That's also not going to make you very popular. It will basically make you very unpopular and will not help you usually. You can, of course, if you're really convinced about the benefit of your side project,
this is something over time you can add other people to it so at least they know what it's doing. Of course, cat pictures. How did I end up with a pet project? How did I come across it?
I mean, there were some of the ideas that I already outlined. Most struck me the similarity to how I ended up with two cats or pets. So first, our kids, they wanted to have one cat to play and cuddle. If you have kids, then you know how
insistent they can be. They did one year of badgering, bickering, my wife and me. Then finally, after one year, we gave in and said, okay, we give up. We buy your cat. We got to buy promises. They will always be cleaned. They will always be fed. We will
do everything. We go to the vet and whatnot. Going to the vet, he told us, okay, one cat is really good but we should rather have two cats so they have company. Then we buy two cats. If you can imagine, after what I have here, the cats are taken care of
almost exclusively by my wife and me. The kids can focus on cuddling and making cute pictures like the one on this slide. Nonetheless, I'm very happy to have the pets, of course. So it's kind of reminded me on how I ended up with a pet project. So in the company before
we were bought by tripod, we introduced back then a new ticketing systems and also the grand expectations and what we can achieve with it. Then of course, I had to measure. In this case, I had to do it with the other departments to, okay,
we really need this and we need this and that functionality. People were sold. Then we found that, of course, just using the ticketing system itself will not solve
everything. So we talked with our consultants. They told us, no, you need this and that plugin and integrations. Since I wanted really this approach to succeed and it was my first project here, I started writing one integration, two integrations and this basically continues on
its own. For me, it was really a good introduction to using Python and I really appreciate having done that. So again, the situation when I started, I was feeling completely used to energy trading. I was fairly new to Python at one very small project before I joined.
I knew the ticket systems in question, at least on a user level, but I was acutely aware of how much automation can help us, especially when you're a small team. I mean, the more you do manually, this also applies to bigger teams. That's usually not something you want to do. You
want to have to automate as much as possible so that people can focus on what they're here to do, to create cool new products and not spend time on menial tasks. There are some constraints
that I set myself when picking this up. Of course, some of the same that I outlined before is that I want to use, if I'm doing something like that, first of course, I need to be aware that I have to always be able to drop it when the need comes. I wanted to use the same tools
and very similar tech stack from what our product implementation is doing, just because I want to be able to experience firsthand what it means to use this or that product that is in that library. I also wanted to run the same processes. That means merge requests, reviews,
tests, unit tests, and so on, not exemplified and try to be a role model basically also to, for example, to our engineers on new hires. Of course, one of the ideas was to make this
ticket to introduction successful. Of course, I'm not writing this on my own. There's also other people, things that helped us getting this off the ground. I still wanted to make a contribution and create automations that make our lives easier and not necessarily harder. That's
it. I think that almost concludes my talk. Some of the lessons I learned along the way, for me, it was really a deep appreciation of Python. Coming from background C, C++, a little bit of Java, and that being years ago, I really appreciated how easy it is actually to
set up and get a complex task done using Python. That's really awesome. I may be skipping head here to this line flask and request. That really helped me getting the application
out very fast and running an HTTP server with very little effort. Also, appreciation for what it means for unit testing and creation testing, especially in a management position. You've always been asked, why is this feature taking this long?
Why is this effort so high? One of the reasons is, of course, you want to guarantee a certain quality level. This is not the only way, but one of the ways to do it is, of course, to have good and solid unit tests and integration tests and other test stages as much as possible.
Those working on those can be a lot of work. It also needs upkeep. It needs improvements, so there is a lot of work for that, but the benefit, of course, always the cost, usually. For me, it was also using the project as a test bed for new tools and processes. Before,
basically, making other people suffer from my ideas, I wanted to see how do they look like, how do they feel like in one of these small tool projects. Also, this is quite obvious probably to most of you, but however, I really felt that spending some
time to create automatic deployments really, really pays off over time because you then basically essentially have only to worry about doing this once, investing time in Docker and Docker and also make you more independent. You don't have to worry about deployment anymore
or environmental issues. It made me really appreciate good documentation. Good documentation takes its time. I think the best takeaway I got from that.
And last but not least for me was staying humble myself and learn to trust my team and maybe it may also help you to trust your team with their decisions. And I think that's all I had. So looking forward to your questions.
Thank you so much, Christian. Would you have a few questions? So first of all, how long do you spend writing codes versus non-coding work as a tech lead?
That's a difficult question. I think it depends. So it depends on what are the immediate things to do. And sometimes I would also take some, maybe in the evening, take some time
if things have quieted down to write some code. It's very hard to give a number, I must say, because it fluctuates. If you want to know more details, of course you can visit our booth and we can maybe direct message me. What kind of pet projects do you recommend
for someone without much time? It's also very hard to give a general answer, but I found automations, for example, of office processes quite handy because this is something
that usually has immediate benefits. So some repetitive work will be replaced with something that's good. And usually those are not big tasks. So it means you can drop it. This is basically the main constraint. You must be able to drop it and not having people wait for it.
Yeah. Again, it's hard to make a generalization, but in my case, it just landed itself because there was not somebody immediately waiting for it because anyway, the team working it, but I made some add-ons basically that are being used. So yeah, for example,
what's not good, if there's, for example, your dev team waiting on something like that, or you're blocking somebody, I would definitely exclude, I would say in a negative way. You talk about like usual things that you have to do, but you can automate in the meantime. So you can still do them manually, even though you haven't
automated them yet, right? Yes. Yeah. Something like that. Yeah. Cool. In your role, does a tech lead need to code to be a good tech lead? Hmm. I'm not sure. I think not really. I don't think so, but I think you should have an
understanding of what your people are doing and basically have a respect for what your people are doing. And for me, it's coming from a dev role. It kind of meant that I wanted to feel this.
Feel I contribute, but I don't think it's a necessity. So if you think it's the necessity is basically that you are able to trust the teams with their decisions and appreciate what they're doing. Cool. Thank you. That's all the questions we have. So thank you so much for
the talk. You're welcome.