Photo by Karolina Grabowska from Pexels
Picture being the sub-team lead of your team and having no idea about how to go about the project. Lol!!
Earlier this year, I applied for a free software developer program for absolute beginners organized by the Zuri team and Ingressive for good.
Prior to this, last year December, I had been following a Django tutorial series on simpleisbetterthancomplex.com. I was still in this process when I applied for the training, I felt this program would be a good opportunity to accelerate my learning process and also serve to challenge me.
The real challenge came during the project phase of the program. My team was asked to create a lending platform for small businesses in four weeks!! It might seem like sufficient time but I had a lot of constraints:
I was still very new to this and have never gotten my hand dirty in any real-life project.
I was running this program along with my chemical engineering internship at Cormart Nigeria limited (This one is another story).
- I was also running a fellowship program alongside this training.
(I might write a blog post on what I learned juggling a lot of things in the year 2021).
I was made the backend sub-team of my project team. I was really confused about how to go about the project and related my complaints to my community at she code Africa 's backend slack channel and called some friends as well. I am really so grateful for their responses.
Well it is almost magical how I got from that stage to be this person that goes about the Zuri slack channel bragging about how her team has the best backend code. lol!!
Photo by Andrea Piacquadio from Pexels
I was involved in every aspect of the backend. I integrated codes, wrote code, deployed API, fixed commit issues, deployment issues e.t.c.
I also had to coordinate the participation of fellow team members. This ranged from phone calls to WhatsApp messages etc. I am grateful for my awesome team members ( Lannister, clefcodex, Goodnews, Robi, Rillcod) and the effort they put in contributing to the program in spite of their own individual constraints in delivering. I am glad to say that each one of them contributed to the team.
How I grew as a developer:
I learned how to resolve merge conflicts while creating a pull request in git. Thanks to my project manager, Seunbayo.
I understood why SQLite could not be used as a production database on Heroku. I heard about this the first time I used Django but I never really understood why. It was not until a frontend team member had a problem with login after signing up that I got to know that:
(1) The default Heroku's stack (an operating system image that is curated and maintained by Heroku) has an ephemeral filesystem that clears periodically.
(2) SQLite is serverless, this means that the process that wants to access the database reads and writes directly from the database files on disk. Heroku, however, powers applications using dynos ( Isolated, virtualized Linux containers) that are not synchronized amongst each other, this means that each dyno would have a different separate set of data and thus make SQLlite an ill choice for database storage on Heroku.
You can read more about it here.
- For the first time, I went through Django's source code as well as the source code of other libraries that I was using to understand how certain functions were called.
- I also encountered a strange error, 'gaierror' while trying to send a mail. I later realized that my laptop was not connected to the internet while trying to send a mail on localhost and this led to that error.
- A strange behavior that I also battled with was that I could send emails on localhost but on my deployed API, the server would always timeout. I later realized that I did not add the "Email_Backend" value in my settings.py file but why was I able to send emails on localhost? I hope to understand this behavior as I progress.
- I also learned that you need to set up two-factor authentication and generate an application password on the Gmail account that you wish to use to send emails even if you have allowed access to less secure applications on your account. If not you would be riddled with SMTP authentication errors from time to time.
- I created fixtures for the first time!
- I also over-rid some inbuilt Django functions such as the ones in generic views and created my own permissions.
This program has helped build my confidence as a backend developer, I can't wait for the next big thing that would shake this confidence and help me rebuild a stronger one.
I am grateful for the experience!
You can checkout our code here on github
Connect with me on Linkedin!!