Make the most of Django
Django is one of the longest running open source web frameworks but despite this it is still one of the best around and continues to be actively developed.
Approaching such software can be intimidating to a novice developer as well as an experienced one because it is the result of over 15 years of excellent developers work and it would take a long time to get to know it thoroughly.
In this talk we will see together the way I found for anyone to take full advantage of Django while contributing to its success and that of its community.
This session took place in track Django and was classified suitable for some domain / some python by the speaker.
Transcript (auto)
Auto-generated from the recording utilizing Open-Source AI. Speaker labels (Speaker 1, Speaker 2) reflect diarization, not identity. Timestamps refer to the recording.
Speaker 1 [00:03]
Hello everyone, I'm very happy to be here with you again in person, finally, after a lot of online conferences. In recent years, I've been presenting many technical talks based on Django, but at certain points, I feel the need to share with the community how much benefit I gained from Django on my journey as a member of its community. My journey as a member of the Python community reached a key point in the event immortalizing this photo. Here, I'm one of the participants of EuroPython 2017, and with me in this photo, there is for sure some of you, also the organizers and volunteers of the conference we are now. The awareness I gained from then until today is that taking full advantage of open-source software means getting involved in its community. I'll try to share various ways I've tried to do this in the hope that it will inspire or even interest you. But before we start, I'll tell you a few words about me. I'm Paolo Macchiore, I'm the CTO of 20Tab, a Pythonic software company based in Italy. I'm a software engineer and long-time Python backend developer. After using Django for a few years, I became a contributor to the project and always loved attending conferences. Over the years, I've become a speaker. But this represents me today. But my journey of involvement in Django has been a long one. The first step in getting involved in a community is to choose the community itself. In my career as a developer from high school to university, I had to use many programming languages. But when I was able to, I chose to use Python. By choosing Python, I considered that it had these characteristics. an open source license, a foundation behind it, and not a single company, a community capable of giving a direction to the development, a code of conduct, and above all, welcoming and positive people, such as the creator of Python itself. We do not assume he is the reference person of the community, even if he is no longer the benevolent dictator for life. The Python community is positively affected by its open and welcoming nature. But there is another community that owes a lot to Guido, it's the Zoop community. It was a development Guido contributed during the early years. Actually, Zoop was the first Python web framework I have ever used. The first step towards engagement for me was to join the small Italian community of users of Plune, also based in CMS. A local community is easy for new members to join, as no language barriers share a common cultural background among its members, and it's easier to share experience and exchange mutual help. Today, the local communities of Python and Django are many, so I invite you to join one of them. This is a photo of the members of the Italian Plon community in 2007. At the end of Open L, my first local conference organized in my city, Pescara, in Italy. In fact, you can see the beach in the background. At the time, I had little experience as a developer, and I was afraid not to be able to contribute in a valid way. So, my involvement in this community was biased. But being part of the the Plon community helped me to learn Python and led me to participate in many Plon conferences and also in EuroPython 2011, my first Python conference, which made me achieve many goals, learn more about Python language itself, I became aware of Python 3 for the first time, meet other communities related to Python, networking with other members of the community, meeting Pythonic companies and, above all, knowing the new emerging project. In fact, I saw there my first Django talk. In this photo, there are the Plon developers during EuroPython 2011. Some of them I meet over the years in conferences. Others I follow online and others are now part of the Django community. I think that people, more than and contents and talk are the greatest value of a conference like this. Shortly after the conference, I started using Django 1.3. Being a more experienced developer, I immediately dipped in Django, having many benefits. These are the actions I did and I also recommend to you. Use a modern version of Python, try the Django tutorial to learn the basics, but study the official documentation well to have an advanced knowledge. Follow the Django official channels to stay updated and attend specific Django events to get to know other members of the community. In this photo, this is a photo of my first DjangoCon Europe, the 2017 one, held in Florence. I think I'm on the edge. In previous years, I had continued attending conferences, but this first DjangoCon allowed me to truly feel part of the Django community and meet the most engaged members of the community in person. This thing inspired me to really get involved after 10 years of biased participation in the the community. The first act of real involvement in the community was a contribution to the Django code. In a project, I had to add a UAD field on existing models. I tried to add a Postgres function in Django to quickly generate random UADs. After verifying the validity of the solution, I started the contribution guidelines to Django. I created an issue on tracker, I opened a pull request with the solution already tested. This process took me some time, but by then I already learned a lot about Django and the best practice for writing better code. This is my first pull request. As you can see, the reviewers are all experienced Django contributors. There is also the former Django fellow, Tim Graham, at the end merged it. Having the ability to get reviews of your code from such experienced people is a great way to become a better programmer. No matter how many experienced colleagues you have in your company, I don't think you'll ever get a review of your Django code from such expert developer as the core contributor to Django. I was sure I couldn't contribute to a sprint on Django, but after DjangoCon Europe 2017, I had my own pull request to review, which was a great reason to participate. At the start of the sprint, I proposed to work on my own pull request, and I asked for help on how to proceed. And when I felt ready, I asked for a review on my code, and after making the required changes, I was able to complete the work and play in the gong, as in the Django sprint tradition. My pull request was merged a few days later in Django 2.0. In this photo, I'm at the end of the sprint with Mark Tamil, the original creator of Django Postgres module, and Marcus Alterman, a Django developer who helped me in my work and reviewed my pull request. Participating in a sprint on Django is a unique opportunity that I recommend you to try. allows you to connect with many experienced developers and, in the end, you will be a better developer and more aware member of the community in general. Following Django more closely, I learned of a very interesting new feature, the full text search. After its release in Django 1.10, I studied it and shortly after I used it for the first time in a Django project. Working with this feature allowed me to verify what I'd studied. Pushed by my company, I sent my first proposal on full-text search of a talk to my favourite conference, PyCon Italia, which was accepted in 2017. The talk preparation was very challenging, but I learned a lot more than I ever did, and I successfully presented the talk in Italian, my mother language. In this photo, I just gave my first talk at PyCon Italia 2017 in a very small room with a few Italian Django developers. The experience was intense, but I gained more confidence as a member of the community. I received excellent feedback. I learned the basics of public speaking and increased my knowledge of the subject. I also improved the project from which it all started. If you also have similar goals, I recommend you try giving a talk. In previous conferences, I had met Django girls, which seemed to me a great way to increase diversity in the community. I found that the next workshop would be held in Rimini, a couple of hours by train, and so I signed as a mentor. I was welcomed to the team and I was put in contact with participants, but taking part in the event was very simple, a really positive experience that I recommend to everyone, mentor and participant. This is the photo of my Django girls group, all smart girls who have completed the workshop in the day, and the experience gave me a better confident as a coach, I understood better the concept of Django that I had to explain to them, and met other talented mentors from all over the world. After my first talk, I decided to improve it, and despite my poor English skill, I also sent a proposal to Europython 2017, which that year was in Italy. My proposal was refused. I continued to work on that English presentation anyway for future conferences. A few days before the conference, an organiser proposed to replace another speaker and I immediately accepted. Giving my talk in English was very challenging, but I had several benefits. The audience was bigger, the participants were international, I got better feedback and my confidence as a speaker increased. I also improved my skill as an English speaker. This is the photo of my talk at Europython 2017. For me, there was a room full of people who did not speak my language. This experience forced me to go far outside my comfort zone. But my network of contacts expanded a lot, and I received an invitation to give my talk in a post-class conference. At EuroPython 2017, we were planning a self-organized sprint and so I proposed a sprint to work on the search of the official Django websites. About ten developers joined me in the sprint and by the end of the day, almost everyone had managed to set up the Django websites. Organizing a small sprint was a more challenging experience than just participating in it, But it gave me the unique opportunity to coordinate the work between excellent developers from many parts of the world. I received specialized help in reaching the proposal goal, I learned new working approaches and expanded the network of contacts. This is a photo of my group working on Django during the EuroPython 2017 sprints. It was a pleasure to coordinate such good developers and to be able to achieve a result at the end of the day. The general atmosphere of the sprint was unique, with many groups dedicated to different Python projects. An intense experience, but one that I recommend. Working on my talk on full-text search, I had used a lot to search functions on the Django website. I then came up with the idea to investigate how that function was implemented, and I discovered that the database used was Postgres, but the search function was delegated to an external search engine. On the Django development list, I proposed a change to replace the external search engine with only Django and Postgres. The discussion involved many Django developers who talked about it for a few days. After a proof of concept that came out of the sprint, I worked hard on opening a fully functional pull request, and after a careful review, Tim Graham, the Django fellow, merged it a few months later. And this is the Django website search. I added more features to it after my first pull request, and more feature will be added in the next months. Working on such an important site allowed me to learn a lot about Django and improved my skill as a software architect. I also recommend that you try to contribute to Django website. You will help the community and you will improve your skill a lot. In addition to the official Django documentation, I learned a lot from reading other developer articles. Many speakers also add their own blogs, and all recommend it as a personal improvement. So, after some search, I decided to create a static site. I used Pelican, based on Python and Ginger. I started by tracking all my tools on the side. I added small Django autos, and then I wrote a bigger article. Writing technical article allowed me to improve my technical writing skill. This is a page of my static site. I recently updated the template by creating my own theme from scratch in order to have an original one and to be able to add all the features I needed, such as the automatic switch to the dark version if the device is in that mode. Writing my own template made me improve my front-end skill, and since I usually do back-end, it was very instructive. I think I'm the first user on my own website, because I often find myself reading again my own articles, because usually I forgot what I write. One way to take even more advantage of the content you create is to share it. Collecting the comments and feedback you receive allow you to validate them and increase your knowledge. Adding a comment form to the site also allows you to receive a lot of useful feedback. An easy way to get feedback is also to share it in social network with your follower. If, on the other hand, you are willing to receive critical but perhaps even more useful comments, you can share your content on news aggregators such as Hacker News. This is just the beginning of the comments page of my first big article shared on Hacker News. To my surprise, it lasted several hours in top trend, attracting a lot of attention. So I got a lot of comments, some positive and a lot negative. If you think you can withstand even criticism, I also recommend that you share your content as much as you can. In the end, you will have learned a lot and improved what you have shared in the beginning. Another effective way I used to improve my knowledge of Django was to answer as many questions as possible from other developers. For example, at some point, I decided to deepen the Django ORM. I studied all the official documentation and then I went to Stack Overflow to look for questions with interesting problems, at which point I tried to solve those problems myself and sent the answer, receiving several comments. In some cases, I even had the opportunity to write an article about it. To answer a question about the query set update with annotation, I found myself faced with a totally new problem. I tried to solve it and I sent my answer, even though there were other older ones and marked as valid. In the end, I got a lot of positive votes and a lot of comments. I then decided to write an article on this solution that I often re-read. Basically, I solved a particular problem before I found it in my daily projects. The English language has been a great barrier between me and my involvement in the community. But by studying and also attending conferences, I was able to improve my English skill. In the group of Italian developers, there are often newcomers who have trouble reading the Django documentation. A few months ago, I and other members of the group decided to add the Italian language to the Django documentation. To do this, we had to sign up for Transifex, look at untranslated sections, and try to translate them. In case of dubs, we have relied on already translated strings and asked the others for a revision for more difficult translation. Participating in this process was challenging, but at the same time, very interesting and also fun, as you can see from the message of Claude Barrault, the Django head of translations. However, by translating the documentation, I learned a lot about its structure. I discovered a totally new section and understood much better some terms that I always used only in English. There are tons of other ways you can use to improve as a developer, and the following are just some of the other techniques that I also use. Time is your only limit. Subscribe to the Django related mailing list, check GitHub notification for Django and related projects, read the official Django forums, enter the Django Discord channels, and join the local Django Telecom groups. So far, I've I've tried to list the ways that I personally use to get more involved with Django, and that have served me as a personal improvement. But I recommend that you get inspired by the other developers of the Python, of the Django community. To do so, I read their blog posts, follow their social accounts, subscribe to their video channels, listen to their podcast episodes, and read their books. It will be impossible to list them there, but at the end of the talk, you can find my my social contacts where you can discover the people I follow. In case you find it interesting, I invite you to read and share this presentation because it's released with a Creative Commons licence. Before the end, I thank 20Tab, the company that encouraged me and supported me in the journey I described to you, and every day as a company contributes to the Django Django and its community. You can find here all its contacts. And you can find out more about my personal involvement with Django using all my contacts, and with this QR code you can download this presentation from my website. Before saying goodbye, I would like to thank you all for taking part in my talk, the other speakers for their interesting talks. I also thank all the organizers who made this conference possible. But in particular, I want to thank the volunteers of all the conferences I have attended over the years as a speaker, including this one. Each of them allowed me to grow as a Django developer and to be a better member of the community. Thanks again. Grazie. Thank you for sharing your experience, Paolo. So if you have any questions, you can raise your hands.
Speaker 2 [22:22]
your hands i can hand over the
Speaker 1 [22:23]
can hand over the mic I have to ask you a favor if it's possible I am to take a selfie before we finish like the first one I did can you say hello okay thank you
Speaker 2 [22:45]
So I have a question, and you first began teaching Django in your native language, yes? And my question is, I work at a special needs school, and I've thought before about teaching others the language of Python. So I wanted to ask, what were the challenges you faced when you began teaching non-English speakers programming, and specifically Django?
Speaker 1 [23:14]
Yeah, the first things I had to face was the documentation, as I showed you, because the last year there was no translation at all, so having a starting point, a little tutorial or a quick start for newcomers is very important, and it's a way to learn with them side by side, because it's the only way I think it's effective for me, like a teacher. I also have been a mentor and coach in other Django girls' workshops, also in Rome, for example, with girls, Italian girls. So we had to try to translate at the time some terms that are difficult to translate in Italian. But now with the tutorial in Italian and with the Django documentation in Italian, it's way better and it's so easier to let them to study on their own and then having asked only the question they didn't know well. So this is, I think, is the starting point, having a documentation in your language. Thank you. Thank you. Thank you, Paolo.