Growing a Python Community at an Enterprise Scale
Corchero, Mario
Polatoglou, Marianna
The talk will showcase how the Python community started and took off in Bloomberg, and how it can serve as a model that can be used within other companies as well. This includes details on how Bloomberg's Python community got started and grew to the place that it is today, as well as tips from its leaders personal experiences.
 We do have two speakers this time. I don't know if what's your setup actually. I didn't have time to ask. Do you have two screens, two sharing or one? Okay. The first speaker is Mario Corcero. He is a senior software at Bloomberg. He leads a Python infrastructure team in London enabling the company to work effectively in Python and using company-wide libraries and tools. And your background is actually Python and C++. Then we have Mariana Polatoglu. I hope I pronounced it correctly. She is a senior software developer in Bloomberg LP in the mobile team and also a Python enthusiast. And she does the thing called the Python Guild. I think we will hear more about this. So please start with your talk, growing a Python community at an enterprise scale. Thank you very much. Basically, we are going to speak today about what's Bloomberg and how Python was growing at Bloomberg. It was quite a long journey. And we hope that this is helpful to you if you plan to grow any technology within your company or if you are thinking to try to introduce Python within your company. It was quite a long trip for us and we hope that this is helpful for all the people. So first of all, can I have a show of hand of who knows what Bloomberg is? Okay. That's the only joke for today. Don't worry. In case you don't know what's Bloomberg, I wanted to put a couple of slides together because at least for me when I joined Bloomberg, I knew Bloomberg as the TV channel that you would just skip through when you were trying to find the channel that you really wanted. So Bloomberg is more than just a TV channel. There is this product that we sell, which is called the Bloomberg Temulat. And basically, this is a software that puts together all kind of financial information on the world and allows you to sell stocks and see how they progress and anything that you might want to earn financial information. Bloomberg is extremely, I was going to say all, but let's say elder. It was formed in 1981 and there are a lot of, we have a lot of employees and we have more than 6,000 developers. The reason why I'm saying this is because I want you to understand that when I'm speaking about how Bloomberg started to embrace Python, this is not a small startup that you can change in a day. This is a huge elephant that was mainly doing C++ and was used to having the whole workforce within the company to know how to work with C++ and some many years ago as well for a friend. And introducing Python at Bloomberg was quite a challenge. I think that similar to what happens in many other companies, Python started to flourish at Bloomberg as a language that was useful for testing and doing some basic scripting. This was in the previous company, which I was working with just some of the other, this was also something similar. And given that, you know, Python was kind of easy to write, it was seen as easy to write, it was preferred quite often when people wanted to do some tests, some kind of high level testing or some scripting. I think this is something really important. When you're trying to introduce something in a different company, I think it's quite key that you want to start with something small and see how it flourish and how useful it is. After writing some really basic scripts, something which was key in the history of Bloomberg happened, which is that Amonstein was born. There was an intern who created a project called BBpy. BBpy stands for Bloomberg Python, which basically was a fork of the intervertebrate time, Python 2.5 or Python 2.6, which was statically linking all the main Sybillous-Land libraries that were being used within Bloomberg that allowed Python, well, BBpy, to tap into the solutions that many developers were accustomed in Sybillous-Land. These allowed them to use Bloomberg databases, Bloomberg way of getting the time, how to communicate across services. This was an intern that put together this fork of the interpreter. It was crushing and all the APIs were full of Sybillous-Land idioms. The manage of the lifetime was really Sybillous-Land wage. But this monster was a really opportunity to use. This allowed the growth of Python within Bloomberg. Because then when you were writing yourself away, you could actually choose Python to write meaningful code. Before this, you could only use Python as I was mentioning, to write some scripts and some basic testing utilities. But now with this monster, you were able to write things that were providing business value. I remember back at the time, when I wrote my first Python service, my mother will tell me, but is Python even safe to run in production? These were the old days where there were absolutely no support for Python in the company. It was something new, but it was not something like enterprise. Something you might want to take from this is don't be afraid to be disruptive and create something like a simple POC can get to change a whole company. We have seen this many times within our company. I remember there was a tool, which was actually written on top of this interpreter that allowed people to write tests for the services with two or three lines where they were saying the request and the response. That grew across the whole community and that kept an appetite for more testing. Don't be afraid to have crappy solutions change the company. This will indeed adapt to your company, but it might initiate a move that is worth pursuing. Also why I think Python was really important is that Python succeeded. Python arrived when Bloomberg was looking at doing more SOA. We were trying to create more services and we were trying to communicate across teams more to our services than libraries. Back in the day, everything would be basically a library unless you needed to speak with a UI. The problem is the tooling was not there. Writing a new service in C++ was quite costly. Quite often what you would see is that someone would create a service with these two example requests. Then when you needed to add some new logic that should probably go into a new service because of the cost of writing a new service that may be a couple of days, people would say, look, these are related. We might just well add them to existing services. I'm sure everyone who is in an SOA organization has seen this. But you know the problem with this happens. Once you let them mud lark in your service, you open the door to absolutely anything coming through it. This is something that was happening in C++. When we started to show Python to people within Bloomberg, I remember we would be proud to say that, look, come and use Python. You'll be able to write a service in just half a day or one day, which at the time it was amazing. Nowadays, we have managed to reduce that a lot. But this was one of the main selling points of Python at Bloomberg, the fact that you could get a new service ready in half a day. I think this was probably one of the most important things that Python brought and what led to Python spreading across the company. We found something where Python was excellent compared to existing solutions. If you're trying to introduce something in the company, try to think, what's the main value that's going to be running? If you want to create as well people, you want people to use it. What's the main thing that's going to change in the life of the work of people that are today using different solutions? Maybe you're in an organization that is heavily dependent on a multi-threaded code. Maybe you want to look at Rust. Maybe Rust is the solution for your company. Try to look for something that will be a game changer because the existing solutions will have more infrastructure support compared to these kind of disruptive proposals. With this, a community was born. There was no infrastructure support for Python at Bloomberg. This was an intern who wrote an intern in an app team that was doing basically alerts in the terminal. We decided to start organizing ourselves to share knowledge about Python because there was no material and there was no training within Bloomberg to provide knowledge about Python. We started to do internal meetups. In the internal meetups, they were a total success. It was full of people because Python was already spreading. We were learning about how Python was at Bloomberg and also about things outside. We were learning about how to use Python, what was coming in Python 3, things like that. I think this was also key for Python. Python started from the bottom up. We had a community behind it back in the adult time that was really helpful because we had a chat that allowed our users to answer questions whenever they have any doubt. We were actually providing the support in terms of libraries because we were using GitHub Enterprise but any other tool that you have to share code works, we were able to start creating libraries and share them across our users. This was a community project. We were basically whatever I was writing for my team, I was happy to share it with the rest of the company. This started to create more and more community-driven infrastructure that started to spread at the Bloomberg. I remember it was quite shocking when I saw a really simple library created just for my team being installed in tens of thousands of hosts. I was like, what is going on here? This is way too scary. This is not my main job. How come this library is being used across the whole company? This was something that you might want to look at because I remember coming from a company where all the infrastructure code was supported by a team, it was quite challenging because there were some situations, there were minimal but there were some situations where if something breaks, they were calling me in the middle of the night telling me to fix something. That was like, look, I'm happy to share this code. I'll try to fix it but you cannot expect the same kind of parentheses from this code as if this were to be my main job. Also, something that we did which I think was quite successful in spreading Python was we set up a lot of workshops. We were basically setting workshops where we're helping and guiding people and holding hands on how to write Python for the first time. If you're in a company trying to use any technology and people are not comfortable with it, it's really important that you make sure they have a really good experience the first time they try it. We're holding workshops every other week. We're showing people how Python could be used. One of the main concerns that people had when we were trying to evolve for Python within Bloomberg was that people were worried that Python was going to be too slow. We're a financial company and a data company that needs to process a lot of data really quickly. People were concerned that Python was going to be really slow but quite often the code that was being written was just only a glue code that was interacting with all the services and databases. So, they both of them were the network. We realized that many teams did indeed have a really high volume of transactions. But all they needed was basically to just have more instances of the service. They needed throughput, not latency. That's something that people really... That's something that you need to be really careful when you think that you need your code to go faster. Many times you don't need to go to the code to go faster. You need to be able to handle more transactions. You can just increase throughput by raising a number of services if you're in an SOE organization. Actually, the opposite happened. People realized that Python was really fast. We started... We wrote one service in our team in Python. Our TL back at the time was impressed with how quickly we were able to put that together. He decided to have the whole team try in Python out. Quite quickly, all the teams within the department were impressed with how quickly we were able to put business value into production. So, the Python started to spread across the department, unlike that across the company. Python spread like a disease within Bloomberg because it was extremely easy to write new code and to adapt to newer requirements. At the end, Python turned out not to be slow, but to be actually faster. At this point, our organization was starting to do more and more Python. It started to be one of the standard tools within the company. We decided to engage outside. We started to contribute to Python, to other open source projects. We were using all this for free, so we had to give back. We started to sponsor conferences and all the events. We were hosting events and we even started to have a conference hosted in our own building. I think I want to do this into this presentation. Many companies will see this as just giving money away. I think it was super useful for us. We gained on recruiting, retention and on scale. We were a company that had no history on Python at all. By reaching out, I think we gained a lot of skill and we allow our own employees to see that Python was a thing at Bloomberg. With enough time, managers realized that there was no stopping Python at Bloomberg. There was time to have a team dedicated to Python. It was important to have a team to be able to tackle large scale projects. We were basically doing everything as individual contributors trying to, in our free time, try to put some things together. It was time to have a team dedicated full time to do this. We started behind the interpreter. That's the team I'm currently working on. We're working on the Python 3, speeding on the interpreters and anything related to Python within the company. I was quite touched in 2008 when the head of SAI was saying that Python should be the full language of choice when writing new code in Bloomberg. It was quite a long trip. I was happy to see that this thing that started just from someone who was writing sound Python code. I'm now going to pass to Mariana, which is going to keep speaking about how we collaborate. Here, Mariana. There you go. I cannot hear you, though. Sorry. I didn't click a lot of buttons. As you've heard, we started from an internal writing code and actually from Meetups. All of a sudden, with some magic involved and some spells, we got the Python Guild, right? That's great. Of course, there was no magic involved. It took a very active community, people who were very proactive, wanted to see change and actually pushed for it and worked for it, which is amazing. It took a lot of hard work from everyone in the community, honestly, and everyone who wanted to see this happen. It takes management buying and that is important to say because the truth is that once you have a Guild, then you have people dedicating part of their time to something outside of their normal team's work. So the management need to believe that this is useful, this is helpful, this is worth it, essentially. It takes a lot of iterative reform. We didn't go overnight from the Meetups to the formats that the Guild is today, actually. So Guilds have had different definitions throughout the centuries, really, and even now in different companies where Guilds exist, they have different definitions, so I really wanted to get this right. And what the Guilds are in Bloomberg overall, they are community-centered on specific technical topics of interest and for the advancement of technology in Bloomberg. That means, for example, the Python Guild has a very clear thing, it's about the Python language and the tooling around that in Bloomberg. Of course, there are Guilds like the testing Guild that has to do about testing in general and doesn't have to do with a specific language. And the Guild leaders then are charged to influence the use of the technology internally and engage with the community externally. So that means, for example, like the Meetups that were mentioned, talking about best practices internally and helping out with conferences and the conference is the participation of Bloomberg in the conferences as well. So the Guild is organized with having chairs, usually one or two chairs who are facilitating the Guild's processes. So in the Python Guild, I'm one of the chairs, actually. And the Guild leaders who are actually making this possible and doing everything else and facilitating the whole Guild, really. So if you think of the Guild, it's essentially a machine that have a few responsibilities. And those are, first of all, having conference engagement. So that means from looking into what conferences are happening out there and which we can sponsor and should sponsor, depending with our budget restrictions as well, of course, helping out with speakers, with proposals, with anything that has to do with conferences, really. Then we have presentations and Meetups. This is a lot. You hear Meetups a lot. That's because they're great, honestly, they're a very good tool in sharing knowledge. And we're also talking with presenters outside of Bloomberg to come into Bloomberg and present something that's interesting for the whole community and that people should know about. We have internal influence and that goes back to best practices, helping out developers start off with something or with any issues they're facing on the specific aspect of the Guild. And also collaborative development. So that goes from developing community projects. Also think that the Python Guild is one of the oldest Guilds in Bloomberg. And there is the Python Guild co-exist with the Python infrastructure team. But there are also other Guilds that don't have an infrastructure counterpart and have to do all the development of the tooling themselves. So all that sounds like a lot, right? Because when you get charts with all this, like where do you start? How do you even start? What do you do first? And this has led us to organize ourselves into focus groups. And that means that its focus group is charged with a specific aspect of the responsibilities. And usually our focus groups are led by one or one, two, three Guild leaders. And these work great. They're amazing in terms of parallelizing our efforts and separating the concerns as well. So we have six focus groups in total. And starting with the conferences, these ones are, this one is the clearest to describe, I guess, because I already have, it's the same as the one for the Guilds in general, looking at what conferences are there, what to sponsor, helping out people with their talks with proposals and all that. And even with the conference engagement, in terms of when people go to the conferences, or, you know, go into their living rooms in this case and participating in the conference. We have external events focus group. This one has to do with Springs, for example, as we have in this weekend for this conference. And with also other external events as external meetups. We have the co-development focus group. And this one has to do a lot with fostering a good environment in the community and making sure that community projects are able to flourish. Also, in terms of like what the infrastructure offers and what the end developer may want as a helpful tooling as well, the Guild can help a lot with that. We have the internal events focus group as well. This one is about meetups and our workshops actually have had huge success. They're very good. And we also have the pragmatic recommendations focus group. This one is a very good group because you have best practices, but also you have that not all solutions fit all problems. So you can have different approaches depending on what the issue actually is. And last, we have the training focus group. So in Bloomberg, the training when you join the company is fully in Python that explains the tooling in Bloomberg. And this focus group has to do with interfacing with the training team and anything that they may need to do. So how we organize, we have open meetings with the Guild leaders every two weeks in which we discuss any issues and we talk about proposals and anyone can actually join, which is amazing to get feedback from the community straight away as well. We have a newsletter sending out a day before the meeting that its focus group give out their updates and ask for any call for actions. And we also do retrospectives in order to reform ourselves. This is one of the best practices that we can have. And one of the best agile tools out there. And the most important of all, the community contributors. Without them, the Guild wouldn't exist and it wouldn't actually even make sense to exist. And it is amazing that we have that. And also think that the Guild leaders are leading the focus group, but they can't contribute to everything. So for example, if we have five community projects running, not one person cannot do all the coding and the community is what makes this possible and what makes this actually worth it. So what we have achieved, we went from a main C++ company from like, why do you want, I'm sorry, why do you want to write this in Python? Like what is even Python? Isn't it too slow? Why not in Python? Python sounds great. And that is amazing. We have a very active community ever growing and it's one of the friendliest places to be in and I absolutely love it, no bias. And we also have a Python infrastructure team which shows how much the company is committed to Python actually, which is amazing. So what's next? We have, we're currently reforming our focus groups and thinking of new focus groups we could offer and should offer. We asked the community in one of our open meetings what issues they're facing and would like to see focus groups for. And we're currently in further conversations with the community on that. And of course, we keep changing in order to stay current and to actually meet the community's needs and that's what we need. All right, that's it then. Thank you very much for listening. Are there any questions? Thank you very much for your talk. Very interesting concepts, the skill system. I see we have questions in the Q&A, but I actually do have a question first about this skill system is how do you motivate people, internal people to join the guild and the meetups? And the second part of the question is do people from other guilds, if I don't know what you have, for example, a C++ guild or whatever, do they join too? So actually, I guess that depends. There are many people who are very proactive about it and for those we don't need to do anything obviously, right? But of course, I think that it goes back to what Mario said in the very beginning that there were a lot of workshops to show people how easy it is to actually write a service in Python and have it out to production straight away. So it's about convincing people that it's worth it. And then it depends, I guess, on the topics and so on. But we definitely had people who converted from just writing C++ to writing Python, how it being very happy. I don't know if that answered your question fully. Perfect. And now we have many questions in Q&A. Oh, we are running out of time. Okay, let me go with the first from Diego. How do you raise awareness about good practices, software quality, sharing tools, designs or techniques? Any suggestions there? I can take that one if you want, Mario. So actually, that's a great question. And I was actually hoping to mention it in the slides, but I cut it because I was seeing that that was overrunning in time. We were basically relying on an internal mailing list that we have and also pushing a lot on meetups and workshops. Lately, we also started to have more like proper training, which helped a lot. But this is a really good question. It's actually key because when we started, and when people started to move from C++ to Python, we saw that many people were not writing any tests at all, which for us was unthinkable in Python for large code bases. But things like people were relying on the compiler and we had to put a lot of emphasis on making sure that you need to follow what are good practices on Python and you need to make sure that you write tests when you write new code. So I absolutely agree that you need a way to raise awareness about practice and everything. And yeah, we were basically relying on internal mailing lists, meetups, workshops and the internal networks that we have for that. Okay, so we have time for the last question. How do you manage the time of organizing events, leading these initiatives and doing your engineering job at the same time? How supportive is Bloomberg in this regard? I can take that as well then. I think you can probably answer as well in front of the same mark. So at the beginning, we started basically, because what we were doing in some way was also relevant to our team. At the beginning, there was no issue at all. It was kind of like a community project, but it was seen somewhere related with our team because we were starting to do more Python services. When this got more formalized, there are some organizations like the Guilds, as Marc mentioned, and there's some of the technical representatives, which is another organization, including Bloomberg. In theory, you give you 20% of your time to do whatever you want. That's something that I think many other companies do. So basically, I would like to say that I was just using that 20% of my time to do Python projects, like Python and MIDI projects, but we all know that's not true. And at the end, I was basically working, which is something I don't recommend. But yeah, Bloomberg in theory is really supportive of this. The company is really supportive. I think I would encourage every company to do that, like trying to encourage this kind of site projects that in some way, I think, advance the company. But if it's something that you are passionate about, it's really easy to get out of the funds. So that was kind of my situation. And Omar, how was we signed? Sure. The only thing I was going to add is that I think it goes back to getting the management buy-in and convincing them that it's actually something that is useful for the company overall. So yes, there are going to be projects for the team, obviously. But some of the time can go into guilds. And that helps a lot, even with the personal development, to be honest. And that is amazing. Okay, thank you again very much. We unfortunately, we have we have two more questions here, but time's up. So please take these questions to Discord chat with control K. If you enter community, you will get the channel talk, Python community enterprise. Hello. And there will be more questions. So thanks again for this talk.
 We do have two speakers this time. I don't know if what's your setup actually. I didn't  have time to ask. Do you have two screens, two sharing or one? Okay. The first speaker  is Mario Corcero. He is a senior software at Bloomberg. He leads a Python infrastructure  team in London enabling the company to work effectively in Python and using company-wide  libraries and tools. And your background is actually Python and C++. Then we have Mariana  Polatoglu. I hope I pronounced it correctly. She is a senior software developer in Bloomberg  LP in the mobile team and also a Python enthusiast. And she does the thing called the Python  Guild. I think we will hear more about this. So please start with your talk, growing a  Python community at an enterprise scale. Thank you very much. Basically, we are going to  speak today about what's Bloomberg and how Python was growing at Bloomberg. It was quite  a long journey. And we hope that this is helpful to you if you plan to grow any technology  within your company or if you are thinking to try to introduce Python within your company.  It was quite a long trip for us and we hope that this is helpful for all the people. So  first of all, can I have a show of hand of who knows what Bloomberg is? Okay. That's  the only joke for today. Don't worry. In case you don't know what's Bloomberg, I wanted  to put a couple of slides together because at least for me when I joined Bloomberg, I  knew Bloomberg as the TV channel that you would just skip through when you were trying  to find the channel that you really wanted. So Bloomberg is more than just a TV channel.  There is this product that we sell, which is called the Bloomberg Temulat. And basically,  this is a software that puts together all kind of financial information on the world  and allows you to sell stocks and see how they progress and anything that you might want  to earn financial information. Bloomberg is extremely, I was going to say all, but let's  say elder. It was formed in 1981 and there are a lot of, we have a lot of employees and  we have more than 6,000 developers. The reason why I'm saying this is because I want you  to understand that when I'm speaking about how Bloomberg started to embrace Python, this  is not a small startup that you can change in a day. This is a huge elephant that was  mainly doing C++ and was used to having the whole workforce within the company to know  how to work with C++ and some many years ago as well for a friend. And introducing Python  at Bloomberg was quite a challenge. I think that similar to what happens in many other  companies, Python started to flourish at Bloomberg as a language that was useful for testing and  doing some basic scripting. This was in the previous company, which I was working with  just some of the other, this was also something similar. And given that, you know, Python was  kind of easy to write, it was seen as easy to write, it was preferred quite often when  people wanted to do some tests, some kind of high level testing or some scripting. I  think this is something really important. When you're trying to introduce something in a  different company, I think it's quite key that you want to start with something small and see  how it flourish and how useful it is. After writing some really basic scripts, something  which was key in the history of Bloomberg happened, which is that Amonstein was born.  There was an intern who created a project called BBpy. BBpy stands for Bloomberg Python,  which basically was a fork of the intervertebrate time, Python 2.5 or Python 2.6, which was  statically linking all the main Sybillous-Land libraries that were being used within Bloomberg  that allowed Python, well, BBpy, to tap into the solutions that many developers were accustomed  in Sybillous-Land. These allowed them to use Bloomberg databases, Bloomberg way of getting  the time, how to communicate across services. This was an intern that put together this fork  of the interpreter. It was crushing and all the APIs were full of Sybillous-Land idioms.  The manage of the lifetime was really Sybillous-Land wage. But this monster was a really opportunity  to use. This allowed the growth of Python within Bloomberg. Because then when you were writing  yourself away, you could actually choose Python to write meaningful code. Before this, you could  only use Python as I was mentioning, to write some scripts and some basic testing utilities.  But now with this monster, you were able to write things that were providing business value.  I remember back at the time, when I wrote my first Python service, my mother will tell me,  but is Python even safe to run in production? These were the old days where there were absolutely  no support for Python in the company. It was something new, but it was not something like  enterprise. Something you might want to take from this is don't be afraid to be disruptive and create  something like a simple POC can get to change a whole company. We have seen this many times  within our company. I remember there was a tool, which was actually written on top of this  interpreter that allowed people to write tests for the services with two or three lines where  they were saying the request and the response. That grew across the whole community and that  kept an appetite for more testing. Don't be afraid to have crappy solutions change the company.  This will indeed adapt to your company, but it might initiate a move that is worth pursuing.  Also why I think Python was really important is that Python succeeded. Python arrived when  Bloomberg was looking at doing more SOA. We were trying to create more services and  we were trying to communicate across teams more to our services than libraries. Back in the day,  everything would be basically a library unless you needed to speak with a UI.  The problem is the tooling was not there. Writing a new service in C++ was quite costly.  Quite often what you would see is that someone would create a service with these two example  requests. Then when you needed to add some new logic that should probably go into a new service  because of the cost of writing a new service that may be a couple of days, people would say,  look, these are related. We might just well add them to existing services. I'm sure everyone who  is in an SOA organization has seen this. But you know the problem with this happens. Once you let  them mud lark in your service, you open the door to absolutely anything coming through it.  This is something that was happening in C++. When we started to show Python to people within  Bloomberg, I remember we would be proud to say that, look, come and use Python. You'll be able  to write a service in just half a day or one day, which at the time it was amazing. Nowadays,  we have managed to reduce that a lot. But this was one of the main selling points of Python at  Bloomberg, the fact that you could get a new service ready in half a day. I think this was  probably one of the most important things that Python brought and what led to Python spreading  across the company. We found something where Python was excellent compared to existing solutions.  If you're trying to introduce something in the company, try to think, what's the main value  that's going to be running? If you want to create as well people, you want people to use it. What's  the main thing that's going to change in the life of the work of people that are today using  different solutions? Maybe you're in an organization that is heavily dependent on a multi-threaded  code. Maybe you want to look at Rust. Maybe Rust is the solution for your company. Try to look for  something that will be a game changer because the existing solutions will have more infrastructure  support compared to these kind of disruptive proposals. With this, a community was born.  There was no infrastructure support for Python at Bloomberg. This was an intern who wrote an  intern in an app team that was doing basically alerts in the terminal. We decided to start  organizing ourselves to share knowledge about Python because there was no material and there  was no training within Bloomberg to provide knowledge about Python. We started to do internal  meetups. In the internal meetups, they were a total success. It was full of people because  Python was already spreading. We were learning about how Python was at Bloomberg and also about  things outside. We were learning about how to use Python, what was coming in Python 3,  things like that. I think this was also key for Python. Python started from the bottom up.  We had a community behind it back in the adult time that was really helpful because we had a chat  that allowed our users to answer questions whenever they have any doubt. We were actually  providing the support in terms of libraries because we were using GitHub Enterprise but  any other tool that you have to share code works, we were able to start creating libraries and  share them across our users. This was a community project. We were basically whatever I was writing  for my team, I was happy to share it with the rest of the company. This started to create more  and more community-driven infrastructure that started to spread at the Bloomberg. I remember  it was quite shocking when I saw a really simple library created just for my team being installed  in tens of thousands of hosts. I was like, what is going on here? This is way too scary. This is  not my main job. How come this library is being used across the whole company? This was something  that you might want to look at because I remember coming from a company where all the infrastructure  code was supported by a team, it was quite challenging because there were some situations,  there were minimal but there were some situations where if something breaks,  they were calling me in the middle of the night telling me to fix something. That was like,  look, I'm happy to share this code. I'll try to fix it but you cannot expect the same kind of  parentheses from this code as if this were to be my main job. Also, something that we did  which I think was quite successful in spreading Python was we set up a lot of workshops. We were  basically setting workshops where we're helping and guiding people and holding hands on how to  write Python for the first time. If you're in a company trying to use any technology and people  are not comfortable with it, it's really important that you make sure they have a really good  experience the first time they try it. We're holding workshops every other week. We're showing  people how Python could be used. One of the main concerns that people had when we were trying to  evolve for Python within Bloomberg was that people were worried that Python was going to be too  slow. We're a financial company and a data company that needs to process a lot of data really quickly.  People were concerned that Python was going to be really slow but quite often the code that was  being written was just only a glue code that was interacting with all the services and databases.  So, they both of them were the network. We realized that many teams did indeed have a really high  volume of transactions. But all they needed was basically to just have more instances of the  service. They needed throughput, not latency. That's something that people really...  That's something that you need to be really careful when you think that you need your code to go  faster. Many times you don't need to go to the code to go faster. You need to be able to handle  more transactions. You can just increase throughput by raising a number of services if you're in an  SOE organization. Actually, the opposite happened. People realized that Python was really fast.  We started... We wrote one service in our team in Python. Our TL back at the time  was impressed with how quickly we were able to put that together. He decided to have the whole team  try in Python out. Quite quickly, all the teams within the department were impressed with how  quickly we were able to put business value into production. So, the Python started to spread  across the department, unlike that across the company. Python spread like a disease within  Bloomberg because it was extremely easy to write new code and to adapt to newer requirements.  At the end, Python turned out not to be slow, but to be actually faster. At this point,  our organization was starting to do more and more Python. It started to be one of the standard  tools within the company. We decided to engage outside. We started to contribute to Python,  to other open source projects. We were using all this for free, so we had to give back.  We started to sponsor conferences and all the events. We were hosting events and we even  started to have a conference hosted in our own building. I think I want to do this into this  presentation. Many companies will see this as just giving money away. I think it was super useful  for us. We gained on recruiting, retention and on scale. We were a company that had no history  on Python at all. By reaching out, I think we gained a lot of skill and we allow our own employees  to see that Python was a thing at Bloomberg. With enough time, managers realized that there was no  stopping Python at Bloomberg. There was time to have a team dedicated to Python. It was important  to have a team to be able to tackle large scale projects. We were basically doing everything as  individual contributors trying to, in our free time, try to put some things together. It was  time to have a team dedicated full time to do this. We started behind the interpreter. That's  the team I'm currently working on. We're working on the Python 3, speeding on the interpreters  and anything related to Python within the company. I was quite touched in 2008 when the head of  SAI was saying that Python should be the full language of choice when writing new code in  Bloomberg. It was quite a long trip. I was happy to see that this thing that started just from  someone who was writing sound Python code. I'm now going to pass to Mariana, which is going to  keep speaking about how we collaborate. Here, Mariana. There you go. I cannot hear you, though.  Sorry. I didn't click a lot of buttons. As you've heard, we started from an  internal writing code and actually from Meetups. All of a sudden, with some magic involved and  some spells, we got the Python Guild, right? That's great. Of course, there was no magic involved.  It took a very active community, people who were very proactive, wanted to see change and  actually pushed for it and worked for it, which is amazing. It took a lot of hard work from everyone  in the community, honestly, and everyone who wanted to see this happen. It takes management  buying and that is important to say because the truth is that once you have a Guild, then you  have people dedicating part of their time to something outside of their normal team's work.  So the management need to believe that this is useful, this is helpful, this is worth it,  essentially. It takes a lot of iterative reform. We didn't go overnight from the Meetups to the  formats that the Guild is today, actually. So Guilds have had different definitions throughout  the centuries, really, and even now in different companies where Guilds exist, they have different  definitions, so I really wanted to get this right. And what the Guilds are in Bloomberg overall,  they are community-centered on specific technical topics of interest and for the advancement of  technology in Bloomberg. That means, for example, the Python Guild has a very clear thing, it's about  the Python language and the tooling around that in Bloomberg. Of course, there are Guilds like  the testing Guild that has to do about testing in general and doesn't have to do with a specific  language. And the Guild leaders then are charged to influence the use of the technology internally  and engage with the community externally. So that means, for example, like the Meetups that were  mentioned, talking about best practices internally and helping out with conferences and the  conference is the participation of Bloomberg in the conferences as well. So the Guild is organized  with having chairs, usually one or two chairs who are facilitating the Guild's processes. So in the  Python Guild, I'm one of the chairs, actually. And the Guild leaders who are actually making  this possible and doing everything else and facilitating the whole Guild, really.  So if you think of the Guild, it's essentially a machine that have a few responsibilities. And  those are, first of all, having conference engagement. So that means from looking into what  conferences are happening out there and which we can sponsor and should sponsor, depending with our  budget restrictions as well, of course, helping out with speakers, with proposals, with anything  that has to do with conferences, really. Then we have presentations and Meetups. This is  a lot. You hear Meetups a lot. That's because they're great, honestly, they're a very good tool  in sharing knowledge. And we're also talking with presenters outside of Bloomberg to come  into Bloomberg and present something that's interesting for the whole community and that  people should know about. We have internal influence and that goes back to best practices,  helping out developers start off with something or with any issues they're facing on the specific  aspect of the Guild. And also collaborative development. So that goes from developing community  projects. Also think that the Python Guild is one of the oldest Guilds in Bloomberg. And there is  the Python Guild co-exist with the Python infrastructure team. But there are also other  Guilds that don't have an infrastructure counterpart and have to do all the development of the tooling  themselves. So all that sounds like a lot, right? Because when you get charts with all this, like  where do you start? How do you even start? What do you do first? And this has led us to organize  ourselves into focus groups. And that means that its focus group is charged with a specific aspect  of the responsibilities. And usually our focus groups are led by one or one, two, three Guild  leaders. And these work great. They're amazing in terms of parallelizing our efforts and separating  the concerns as well. So we have six focus groups in total. And starting with the conferences,  these ones are, this one is the clearest to describe, I guess, because I already have,  it's the same as the one for the Guilds in general, looking at what conferences are there,  what to sponsor, helping out people with their talks with proposals and all that. And even with  the conference engagement, in terms of when people go to the conferences, or, you know,  go into their living rooms in this case and participating in the conference.  We have external events focus group. This one has to do with Springs, for example, as we have in this weekend  for this conference. And with also other external events as external meetups.  We have the co-development focus group. And this one has to do a lot with fostering a good  environment in the community and making sure that community projects are able to flourish.  Also, in terms of like what the infrastructure offers and what the end developer may want as a  helpful tooling as well, the Guild can help a lot with that. We have the internal events  focus group as well. This one is about meetups and our workshops actually have had huge success.  They're very good. And we also have the pragmatic recommendations focus group.  This one is a very good group because you have best practices, but also you have that not all  solutions fit all problems. So you can have different approaches depending on what the issue  actually is. And last, we have the training focus group. So in Bloomberg, the training when you  join the company is fully in Python that explains the tooling in Bloomberg. And this focus group  has to do with interfacing with the training team and anything that they may need to do.  So how we organize, we have open meetings with the Guild leaders every two weeks in which we  discuss any issues and we talk about proposals and anyone can actually join, which is amazing to get  feedback from the community straight away as well. We have a newsletter sending out a day before the  meeting that its focus group give out their updates and ask for any call for actions. And we also do  retrospectives in order to reform ourselves. This is one of the best practices that we can  have. And one of the best agile tools out there. And the most important of all, the community  contributors. Without them, the Guild wouldn't exist and it wouldn't actually even make sense  to exist. And it is amazing that we have that. And also think that the Guild leaders are  leading the focus group, but they can't contribute to everything. So for example, if we have five  community projects running, not one person cannot do all the coding and the community is what makes  this possible and what makes this actually worth it. So what we have achieved, we went from a main  C++ company from like, why do you want, I'm sorry, why do you want to write this in Python?  Like what is even Python? Isn't it too slow? Why not in Python? Python sounds great.  And that is amazing. We have a very active community ever growing and it's one of the  friendliest places to be in and I absolutely love it, no bias. And we also have a Python infrastructure  team which shows how much the company is committed to Python actually, which is amazing.  So what's next? We have, we're currently reforming our focus groups and thinking of new focus groups  we could offer and should offer. We asked the community in one of our open meetings what issues  they're facing and would like to see focus groups for. And we're currently in further  conversations with the community on that. And of course, we keep changing in order to stay current  and to actually meet the community's needs and that's what we need. All right, that's it then.  Thank you very much for listening. Are there any questions?  Thank you very much for your talk. Very interesting concepts, the skill system.  I see we have questions in the Q&A, but I actually do have a question first about this  skill system is how do you motivate people, internal people to join the guild and the meetups?  And the second part of the question is do people from other guilds, if I don't know what you have,  for example, a C++ guild or whatever, do they join too?  So actually, I guess that depends. There are many people who are very proactive about it and for  those we don't need to do anything obviously, right? But of course, I think that it goes back  to what Mario said in the very beginning that there were a lot of workshops to show people  how easy it is to actually write a service in Python and have it out to production straight away.  So it's about convincing people that it's worth it. And then it depends, I guess, on the topics and  so on. But we definitely had people who converted from just writing C++ to writing Python, how it  being very happy. I don't know if that answered your question fully. Perfect. And now we have many  questions in Q&A. Oh, we are running out of time. Okay, let me go with the first from Diego.  How do you raise awareness about good practices, software quality, sharing tools, designs or  techniques? Any suggestions there? I can take that one if you want, Mario. So actually, that's a  great question. And I was actually hoping to mention it in the slides, but I cut it because I was  seeing that that was overrunning in time. We were basically relying on an internal mailing list that  we have and also pushing a lot on meetups and workshops. Lately, we also started to have more  like proper training, which helped a lot. But this is a really good question. It's actually key  because when we started, and when people started to move from C++ to Python, we saw that many people  were not writing any tests at all, which for us was unthinkable in Python for large code bases.  But things like people were relying on the compiler and we had to put a lot of emphasis on  making sure that you need to follow what are good practices on Python and you need to make sure that  you write tests when you write new code. So I absolutely agree that you need a way to raise  awareness about practice and everything. And yeah, we were basically relying on internal  mailing lists, meetups, workshops and the internal networks that we have for that.  Okay, so we have time for the last question. How do you manage the time of organizing events,  leading these initiatives and doing your engineering job at the same time? How supportive  is Bloomberg in this regard? I can take that as well then. I think you can probably answer as well  in front of the same mark. So at the beginning, we started basically, because what we were doing  in some way was also relevant to our team. At the beginning, there was no issue at all. It was  kind of like a community project, but it was seen somewhere related with our team because we were  starting to do more Python services. When this got more formalized, there are some organizations  like the Guilds, as Marc mentioned, and there's some of the technical representatives,  which is another organization, including Bloomberg. In theory, you give you 20% of your time to do  whatever you want. That's something that I think many other companies do. So basically,  I would like to say that I was just using that 20% of my time to do Python projects,  like Python and MIDI projects, but we all know that's not true. And at the end, I was basically  working, which is something I don't recommend. But yeah, Bloomberg in theory is really  supportive of this. The company is really supportive. I think I would encourage every company to do  that, like trying to encourage this kind of site projects that in some way, I think, advance the  company. But if it's something that you are passionate about, it's really easy to get out of  the funds. So that was kind of my situation. And Omar, how was we signed? Sure. The only thing I  was going to add is that I think it goes back to getting the management buy-in and convincing them  that it's actually something that is useful for the company overall. So yes, there are going to be  projects for the team, obviously. But some of the time can go into guilds. And that helps a lot,  even with the personal development, to be honest. And that is amazing.  Okay, thank you again very much. We unfortunately, we have we have two more questions here, but  time's up. So please take these questions to Discord chat with control K. If you enter community,  you will get the channel talk, Python community enterprise. Hello. And there will be more questions.  So thanks again for this talk.
Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_0_155.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_156_1631.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_1632_1727.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_1728_4091.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_4092_4535.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_4536_13787.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_13788_24623.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_24624_25655.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_25656_25727.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_25728_25811.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_25812_25919.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_25920_26003.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_26004_28355.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_28356_28607.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_28608_30695.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_30696_30971.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_30972_32351.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_32352_33383.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_33384_33707.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_33708_34487.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_34488_35243.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_35244_35963.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_35964_37619.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_37620_38927.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_38928_39647.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_39648_39707.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_39708_41855.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_41856_42155.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_42156_44351.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_44352_45227.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_45228_45515.png Mario_Corchero__Marianna_Polatoglou_-_Growing_a_Py_okPbkPkZz_I_45516_45652.png
We do have two speakers this time. I don't know if what's your setup actually. I didn't have time to ask. Do you have two screens, two sharing or one? Okay. The first speaker is Mario Corcero. He is a senior software at Bloomberg. He leads a Python infrastructure team in London enabling the company to work effectively in Python and using company-wide libraries and tools. And your background is actually Python and C++. Then we have Mariana Polatoglu. I hope I pronounced it correctly. She is a senior software developer in Bloomberg LP in the mobile team and also a Python enthusiast. And she does the thing called the Python Guild. I think we will hear more about this. So please start with your talk, growing a Python community at an enterprise scale. Thank you very much. Basically, we are going to speak today about what's Bloomberg and how Python was growing at Bloomberg. It was quite a long journey. And we hope that this is helpful to you if you plan to grow any technology within your company or if you are thinking to try to introduce Python within your company. It was quite a long trip for us and we hope that this is helpful for all the people. So first of all, can I have a show of hand of who knows what Bloomberg is? Okay. That's the only joke for today. Don't worry. In case you don't know what's Bloomberg, I wanted to put a couple of slides together because at least for me when I joined Bloomberg, I knew Bloomberg as the TV channel that you would just skip through when you were trying to find the channel that you really wanted. So Bloomberg is more than just a TV channel. There is this product that we sell, which is called the Bloomberg Temulat. And basically, this is a software that puts together all kind of financial information on the world and allows you to sell stocks and see how they progress and anything that you might want to earn financial information. Bloomberg is extremely, I was going to say all, but let's say elder. It was formed in 1981 and there are a lot of, we have a lot of employees and we have more than 6,000 developers. The reason why I'm saying this is because I want you to understand that when I'm speaking about how Bloomberg started to embrace Python, this is not a small startup that you can change in a day. This is a huge elephant that was mainly doing C++ and was used to having the whole workforce within the company to know how to work with C++ and some many years ago as well for a friend. And introducing Python at Bloomberg was quite a challenge. I think that similar to what happens in many other companies, Python started to flourish at Bloomberg as a language that was useful for testing and doing some basic scripting. This was in the previous company, which I was working with just some of the other, this was also something similar. And given that, you know, Python was kind of easy to write, it was seen as easy to write, it was preferred quite often when people wanted to do some tests, some kind of high level testing or some scripting. I think this is something really important. When you're trying to introduce something in a different company, I think it's quite key that you want to start with something small and see how it flourish and how useful it is. After writing some really basic scripts, something which was key in the history of Bloomberg happened, which is that Amonstein was born. There was an intern who created a project called BBpy. BBpy stands for Bloomberg Python, which basically was a fork of the intervertebrate time, Python 2.5 or Python 2.6, which was statically linking all the main Sybillous-Land libraries that were being used within Bloomberg that allowed Python, well, BBpy, to tap into the solutions that many developers were accustomed in Sybillous-Land. These allowed them to use Bloomberg databases, Bloomberg way of getting the time, how to communicate across services. This was an intern that put together this fork of the interpreter. It was crushing and all the APIs were full of Sybillous-Land idioms. The manage of the lifetime was really Sybillous-Land wage. But this monster was a really opportunity to use. This allowed the growth of Python within Bloomberg. Because then when you were writing yourself away, you could actually choose Python to write meaningful code. Before this, you could only use Python as I was mentioning, to write some scripts and some basic testing utilities. But now with this monster, you were able to write things that were providing business value. I remember back at the time, when I wrote my first Python service, my mother will tell me, but is Python even safe to run in production? These were the old days where there were absolutely no support for Python in the company. It was something new, but it was not something like enterprise. Something you might want to take from this is don't be afraid to be disruptive and create something like a simple POC can get to change a whole company. We have seen this many times within our company. I remember there was a tool, which was actually written on top of this interpreter that allowed people to write tests for the services with two or three lines where they were saying the request and the response. That grew across the whole community and that kept an appetite for more testing. Don't be afraid to have crappy solutions change the company. This will indeed adapt to your company, but it might initiate a move that is worth pursuing. Also why I think Python was really important is that Python succeeded. Python arrived when Bloomberg was looking at doing more SOA. We were trying to create more services and we were trying to communicate across teams more to our services than libraries. Back in the day, everything would be basically a library unless you needed to speak with a UI. The problem is the tooling was not there. Writing a new service in C++ was quite costly. Quite often what you would see is that someone would create a service with these two example requests. Then when you needed to add some new logic that should probably go into a new service because of the cost of writing a new service that may be a couple of days, people would say, look, these are related. We might just well add them to existing services. I'm sure everyone who is in an SOA organization has seen this. But you know the problem with this happens. Once you let them mud lark in your service, you open the door to absolutely anything coming through it. This is something that was happening in C++. When we started to show Python to people within Bloomberg, I remember we would be proud to say that, look, come and use Python. You'll be able to write a service in just half a day or one day, which at the time it was amazing. Nowadays, we have managed to reduce that a lot. But this was one of the main selling points of Python at Bloomberg, the fact that you could get a new service ready in half a day. I think this was probably one of the most important things that Python brought and what led to Python spreading across the company. We found something where Python was excellent compared to existing solutions. If you're trying to introduce something in the company, try to think, what's the main value that's going to be running? If you want to create as well people, you want people to use it. What's the main thing that's going to change in the life of the work of people that are today using different solutions? Maybe you're in an organization that is heavily dependent on a multi-threaded code. Maybe you want to look at Rust. Maybe Rust is the solution for your company. Try to look for something that will be a game changer because the existing solutions will have more infrastructure support compared to these kind of disruptive proposals. With this, a community was born. There was no infrastructure support for Python at Bloomberg. This was an intern who wrote an intern in an app team that was doing basically alerts in the terminal. We decided to start organizing ourselves to share knowledge about Python because there was no material and there was no training within Bloomberg to provide knowledge about Python. We started to do internal meetups. In the internal meetups, they were a total success. It was full of people because Python was already spreading. We were learning about how Python was at Bloomberg and also about things outside. We were learning about how to use Python, what was coming in Python 3, things like that. I think this was also key for Python. Python started from the bottom up. We had a community behind it back in the adult time that was really helpful because we had a chat that allowed our users to answer questions whenever they have any doubt. We were actually providing the support in terms of libraries because we were using GitHub Enterprise but any other tool that you have to share code works, we were able to start creating libraries and share them across our users. This was a community project. We were basically whatever I was writing for my team, I was happy to share it with the rest of the company. This started to create more and more community-driven infrastructure that started to spread at the Bloomberg. I remember it was quite shocking when I saw a really simple library created just for my team being installed in tens of thousands of hosts. I was like, what is going on here? This is way too scary. This is not my main job. How come this library is being used across the whole company? This was something that you might want to look at because I remember coming from a company where all the infrastructure code was supported by a team, it was quite challenging because there were some situations, there were minimal but there were some situations where if something breaks, they were calling me in the middle of the night telling me to fix something. That was like, look, I'm happy to share this code. I'll try to fix it but you cannot expect the same kind of parentheses from this code as if this were to be my main job. Also, something that we did which I think was quite successful in spreading Python was we set up a lot of workshops. We were basically setting workshops where we're helping and guiding people and holding hands on how to write Python for the first time. If you're in a company trying to use any technology and people are not comfortable with it, it's really important that you make sure they have a really good experience the first time they try it. We're holding workshops every other week. We're showing people how Python could be used. One of the main concerns that people had when we were trying to evolve for Python within Bloomberg was that people were worried that Python was going to be too slow. We're a financial company and a data company that needs to process a lot of data really quickly. People were concerned that Python was going to be really slow but quite often the code that was being written was just only a glue code that was interacting with all the services and databases. So, they both of them were the network. We realized that many teams did indeed have a really high volume of transactions. But all they needed was basically to just have more instances of the service. They needed throughput, not latency. That's something that people really... That's something that you need to be really careful when you think that you need your code to go faster. Many times you don't need to go to the code to go faster. You need to be able to handle more transactions. You can just increase throughput by raising a number of services if you're in an SOE organization. Actually, the opposite happened. People realized that Python was really fast. We started... We wrote one service in our team in Python. Our TL back at the time was impressed with how quickly we were able to put that together. He decided to have the whole team try in Python out. Quite quickly, all the teams within the department were impressed with how quickly we were able to put business value into production. So, the Python started to spread across the department, unlike that across the company. Python spread like a disease within Bloomberg because it was extremely easy to write new code and to adapt to newer requirements. At the end, Python turned out not to be slow, but to be actually faster. At this point, our organization was starting to do more and more Python. It started to be one of the standard tools within the company. We decided to engage outside. We started to contribute to Python, to other open source projects. We were using all this for free, so we had to give back. We started to sponsor conferences and all the events. We were hosting events and we even started to have a conference hosted in our own building. I think I want to do this into this presentation. Many companies will see this as just giving money away. I think it was super useful for us. We gained on recruiting, retention and on scale. We were a company that had no history on Python at all. By reaching out, I think we gained a lot of skill and we allow our own employees to see that Python was a thing at Bloomberg. With enough time, managers realized that there was no stopping Python at Bloomberg. There was time to have a team dedicated to Python. It was important to have a team to be able to tackle large scale projects. We were basically doing everything as individual contributors trying to, in our free time, try to put some things together. It was time to have a team dedicated full time to do this. We started behind the interpreter. That's the team I'm currently working on. We're working on the Python 3, speeding on the interpreters and anything related to Python within the company. I was quite touched in 2008 when the head of SAI was saying that Python should be the full language of choice when writing new code in Bloomberg. It was quite a long trip. I was happy to see that this thing that started just from someone who was writing sound Python code. I'm now going to pass to Mariana, which is going to keep speaking about how we collaborate. Here, Mariana. There you go. I cannot hear you, though. Sorry. I didn't click a lot of buttons. As you've heard, we started from an internal writing code and actually from Meetups. All of a sudden, with some magic involved and some spells, we got the Python Guild, right? That's great. Of course, there was no magic involved. It took a very active community, people who were very proactive, wanted to see change and actually pushed for it and worked for it, which is amazing. It took a lot of hard work from everyone in the community, honestly, and everyone who wanted to see this happen. It takes management buying and that is important to say because the truth is that once you have a Guild, then you have people dedicating part of their time to something outside of their normal team's work. So the management need to believe that this is useful, this is helpful, this is worth it, essentially. It takes a lot of iterative reform. We didn't go overnight from the Meetups to the formats that the Guild is today, actually. So Guilds have had different definitions throughout the centuries, really, and even now in different companies where Guilds exist, they have different definitions, so I really wanted to get this right. And what the Guilds are in Bloomberg overall, they are community-centered on specific technical topics of interest and for the advancement of technology in Bloomberg. That means, for example, the Python Guild has a very clear thing, it's about the Python language and the tooling around that in Bloomberg. Of course, there are Guilds like the testing Guild that has to do about testing in general and doesn't have to do with a specific language. And the Guild leaders then are charged to influence the use of the technology internally and engage with the community externally. So that means, for example, like the Meetups that were mentioned, talking about best practices internally and helping out with conferences and the conference is the participation of Bloomberg in the conferences as well. So the Guild is organized with having chairs, usually one or two chairs who are facilitating the Guild's processes. So in the Python Guild, I'm one of the chairs, actually. And the Guild leaders who are actually making this possible and doing everything else and facilitating the whole Guild, really. So if you think of the Guild, it's essentially a machine that have a few responsibilities. And those are, first of all, having conference engagement. So that means from looking into what conferences are happening out there and which we can sponsor and should sponsor, depending with our budget restrictions as well, of course, helping out with speakers, with proposals, with anything that has to do with conferences, really. Then we have presentations and Meetups. This is a lot. You hear Meetups a lot. That's because they're great, honestly, they're a very good tool in sharing knowledge. And we're also talking with presenters outside of Bloomberg to come into Bloomberg and present something that's interesting for the whole community and that people should know about. We have internal influence and that goes back to best practices, helping out developers start off with something or with any issues they're facing on the specific aspect of the Guild. And also collaborative development. So that goes from developing community projects. Also think that the Python Guild is one of the oldest Guilds in Bloomberg. And there is the Python Guild co-exist with the Python infrastructure team. But there are also other Guilds that don't have an infrastructure counterpart and have to do all the development of the tooling themselves. So all that sounds like a lot, right? Because when you get charts with all this, like where do you start? How do you even start? What do you do first? And this has led us to organize ourselves into focus groups. And that means that its focus group is charged with a specific aspect of the responsibilities. And usually our focus groups are led by one or one, two, three Guild leaders. And these work great. They're amazing in terms of parallelizing our efforts and separating the concerns as well. So we have six focus groups in total. And starting with the conferences, these ones are, this one is the clearest to describe, I guess, because I already have, it's the same as the one for the Guilds in general, looking at what conferences are there, what to sponsor, helping out people with their talks with proposals and all that. And even with the conference engagement, in terms of when people go to the conferences, or, you know, go into their living rooms in this case and participating in the conference. We have external events focus group. This one has to do with Springs, for example, as we have in this weekend for this conference. And with also other external events as external meetups. We have the co-development focus group. And this one has to do a lot with fostering a good environment in the community and making sure that community projects are able to flourish. Also, in terms of like what the infrastructure offers and what the end developer may want as a helpful tooling as well, the Guild can help a lot with that. We have the internal events focus group as well. This one is about meetups and our workshops actually have had huge success. They're very good. And we also have the pragmatic recommendations focus group. This one is a very good group because you have best practices, but also you have that not all solutions fit all problems. So you can have different approaches depending on what the issue actually is. And last, we have the training focus group. So in Bloomberg, the training when you join the company is fully in Python that explains the tooling in Bloomberg. And this focus group has to do with interfacing with the training team and anything that they may need to do. So how we organize, we have open meetings with the Guild leaders every two weeks in which we discuss any issues and we talk about proposals and anyone can actually join, which is amazing to get feedback from the community straight away as well. We have a newsletter sending out a day before the meeting that its focus group give out their updates and ask for any call for actions. And we also do retrospectives in order to reform ourselves. This is one of the best practices that we can have. And one of the best agile tools out there. And the most important of all, the community contributors. Without them, the Guild wouldn't exist and it wouldn't actually even make sense to exist. And it is amazing that we have that. And also think that the Guild leaders are leading the focus group, but they can't contribute to everything. So for example, if we have five community projects running, not one person cannot do all the coding and the community is what makes this possible and what makes this actually worth it. So what we have achieved, we went from a main C++ company from like, why do you want, I'm sorry, why do you want to write this in Python? Like what is even Python? Isn't it too slow? Why not in Python? Python sounds great. And that is amazing. We have a very active community ever growing and it's one of the friendliest places to be in and I absolutely love it, no bias. And we also have a Python infrastructure team which shows how much the company is committed to Python actually, which is amazing. So what's next? We have, we're currently reforming our focus groups and thinking of new focus groups we could offer and should offer. We asked the community in one of our open meetings what issues they're facing and would like to see focus groups for. And we're currently in further conversations with the community on that. And of course, we keep changing in order to stay current and to actually meet the community's needs and that's what we need. All right, that's it then. Thank you very much for listening. Are there any questions? Thank you very much for your talk. Very interesting concepts, the skill system. I see we have questions in the Q&A, but I actually do have a question first about this skill system is how do you motivate people, internal people to join the guild and the meetups? And the second part of the question is do people from other guilds, if I don't know what you have, for example, a C++ guild or whatever, do they join too? So actually, I guess that depends. There are many people who are very proactive about it and for those we don't need to do anything obviously, right? But of course, I think that it goes back to what Mario said in the very beginning that there were a lot of workshops to show people how easy it is to actually write a service in Python and have it out to production straight away. So it's about convincing people that it's worth it. And then it depends, I guess, on the topics and so on. But we definitely had people who converted from just writing C++ to writing Python, how it being very happy. I don't know if that answered your question fully. Perfect. And now we have many questions in Q&A. Oh, we are running out of time. Okay, let me go with the first from Diego. How do you raise awareness about good practices, software quality, sharing tools, designs or techniques? Any suggestions there? I can take that one if you want, Mario. So actually, that's a great question. And I was actually hoping to mention it in the slides, but I cut it because I was seeing that that was overrunning in time. We were basically relying on an internal mailing list that we have and also pushing a lot on meetups and workshops. Lately, we also started to have more like proper training, which helped a lot. But this is a really good question. It's actually key because when we started, and when people started to move from C++ to Python, we saw that many people were not writing any tests at all, which for us was unthinkable in Python for large code bases. But things like people were relying on the compiler and we had to put a lot of emphasis on making sure that you need to follow what are good practices on Python and you need to make sure that you write tests when you write new code. So I absolutely agree that you need a way to raise awareness about practice and everything. And yeah, we were basically relying on internal mailing lists, meetups, workshops and the internal networks that we have for that. Okay, so we have time for the last question. How do you manage the time of organizing events, leading these initiatives and doing your engineering job at the same time? How supportive is Bloomberg in this regard? I can take that as well then. I think you can probably answer as well in front of the same mark. So at the beginning, we started basically, because what we were doing in some way was also relevant to our team. At the beginning, there was no issue at all. It was kind of like a community project, but it was seen somewhere related with our team because we were starting to do more Python services. When this got more formalized, there are some organizations like the Guilds, as Marc mentioned, and there's some of the technical representatives, which is another organization, including Bloomberg. In theory, you give you 20% of your time to do whatever you want. That's something that I think many other companies do. So basically, I would like to say that I was just using that 20% of my time to do Python projects, like Python and MIDI projects, but we all know that's not true. And at the end, I was basically working, which is something I don't recommend. But yeah, Bloomberg in theory is really supportive of this. The company is really supportive. I think I would encourage every company to do that, like trying to encourage this kind of site projects that in some way, I think, advance the company. But if it's something that you are passionate about, it's really easy to get out of the funds. So that was kind of my situation. And Omar, how was we signed? Sure. The only thing I was going to add is that I think it goes back to getting the management buy-in and convincing them that it's actually something that is useful for the company overall. So yes, there are going to be projects for the team, obviously. But some of the time can go into guilds. And that helps a lot, even with the personal development, to be honest. And that is amazing. Okay, thank you again very much. We unfortunately, we have we have two more questions here, but time's up. So please take these questions to Discord chat with control K. If you enter community, you will get the channel talk, Python community enterprise. Hello. And there will be more questions. So thanks again for this talk.
in many other companies, Python started to how it flourish and how useful it is. After being used within Bloomberg that allowed Python, on the Python 3, speeding on the interpreters and Meetups to the formats that the Guild is today, may want as a helpful tooling as well, the Guild the channel talk, Python community enterprise.