First of all, it is necessary to point out the well-known cliché that the process of teaching is naturally an individual matter in Eluvia. Each of our new colleagues has a different starting position. If someone is a junior backendist (like Jakub), his first steps in our company will look different from for a person who has signed up for a senior frontend position, with leadrship of our React team. Of course, we have a basic structure, which is the same for everyone. These are things like setting up a Google and GitLab account, explaining how we organize work in YouTrack etc. However, these are general techniques and this article will not be about that. The article will be about how Jakub became part of my humble Python team.
How it all started
We will move to the beginning, roughly to the mid-year 2020. I was in a situation where I was in charge of one project of our Swiss client, which I covered, so-called, from A to Z, and I started looking for new directions in which I could profile myself for future. In my quarterly feedback, I expressed an interest in teaching new people and passing on experience to other colleagues. It may have been a coincidence, however we heard from Jakub soon.
Jakub’s learning process has started by explanation of the basic Python syntax and best practice approaches. In programming, many things can be written in different ways, but some are more sustainable in the long run than others. So Jakub wrote some simple programs running in a console.
One example for all is the evergreen programming tutorials game “stone-scissors-paper” or scripts for reading and writing to files.
As a next step, we have explained the difference between a desktop application, a web application, and a web page. Unfortunately, many people are not aware of this difference. A web application is full-featured software, just like the one you bought on a CD and installed on your computer, except that you access it through a web browser and eliminate the problems and inconvenience of installing, managing, and transferring data. For this, it was necessary to explain Jakub, how communication over the Internet works. That in particular consist of the knowledge of HTTP protocol and the basics of REST API technology.
Now it was time to make a turn to databases. We discussed the basics of SQL language and the structure of relational databases, but there was no need to go into so much depth, because thanks to existing frameworks and libraries we will be able to access the database using Python code and OOP principles.
At this stage, it was possible to start writing real web applications, but we didn't jump with Jakub directly to using some complicated framework (Django is the most popular in our case), but we have started to learn the basics of MVC architecture by writing all the classes from the very beginning. To some, this may seem lengthy, but from my point of view, this is the way, how new programmers will build a really solid knowledge and not just become users of a few classes, at which they don't see what's going on "behind the scene."
It looked like, for example, that first we wrote a dispatcher and our own class, which offered methods for handling received requests according to their type (GET, POST). In the next step, we inherited from this class and implemented logic that was able to recognize which database table it is according to the URI and to list its records. Similarly, we wrote a method that was able to create a new database record. Who knows Django probably knew so much that together we reinvented the View class, respectively ListView a CreateView, but in such a way that Jakub could also learn the way of programming thinking in practice. Perhaps thanks to this, he will appreciate the time and work of other programmers who write and manage various libraries and frameworks for the community, which makes the work easier for all of us.
Through this way, Jakub quickly learned how to program in such a way, that after a few weeks, he was able to fully participate in the real software development process. We believe that this is the right way to go and that a person is not born as a programmer, but rather becomes one.
Jakub already had some programming experience. He wrote his own system for recording inventories and loans for a theater. It was great as a base. In Eluvia, we believe (and we are not the only ones) that the assumption for becoming a programmer is not primarily the knowledge of programming languages or in general, programming itself, but rather the drive for solving the issues, i.e. not to be discouraged by initial failures. Then there is diligence, hard work and the so-called ability to get things done. The rest is just a craft that can be mastered relatively quickly. Many people are also scared by the idea that writing code itself is complicated in some way. However, this is a misconception. If a person is able to create a bit more complex Excel file, in which they’ll use some formulas and conditions, then that person can learn a syntax of any programming language in the same way.