Why teaching makes us better developers
Two months ago during one of my normal days at the office I was told that there was a private school looking for android developers that were available to teach. That school needed someone for 3 times a week (for a 66 hour course) and my boss asked me if I wanted to take the opportunity. The course consisted in a 24h Java introduction, 24h for Android and 18h for a project.
I was caught off guard. I always enjoyed doing what I do but teaching it to somebody else? As someone that suffers from the imposter syndrome, I often asked myself if I was really adequate to teach someone, even let alone a whole classroom. I wasn’t sure if I had taken the right decision but I decided to take the risk and challenge myself.
Java Module (First weeks)
Those first days when you meet the students (in my case, I had 6) and they are reluctant to talk to You are crucial. If you manage to gain their trust, the class is yours. However, it’s easier said than done.
The first lesson was horrible. I finished all my slides in 30 mins when they should had lasted at least double that time. Fortunately the breaks were a bit longer than what I expected so it all turned out to be fine but it made me realize how badly prepared materials can ruin a lesson.
From that day on, the lessons started to get better for several reasons. I managed to spend more time doing practical exercises than reading slides. By doing exercises on lessons, I was distributing the time more efficiently and at the same time, making sure that the students are learning the fundamental concepts as well as helping them and building a professional relationship with each one.
Since the moment I was invited to teach the course, I was very concerned about the transition between the Java Module and the Android Module. Almost all of my students had no previous professional experience so while teaching 24 hours of Java was ok, jumping to a framework as powerful as the android (that is constantly evolving) would be too hard for the students so I had to make sure this transition was as smooth as possible.
However, everything changed in the first lesson. Three new students shown up with a much higher knowledge background (because they had professional experience), resulting in a big knowledge gap between them and the other students which made this module the hardest one to prepare.
I had to make a decision at this point, I could either prepare the course with more materials in a shorter time for it to be challenging for the new students or I could only teach the very basic to make the lessons more accessible to the big group. Given the circumstances, I decided for the first option because I realized that I could take advantage of the Project Module to correct and re-teach some of the topics (if necessary) to the bigger group. Since I had to prepare the lessons, I decided to re-read most of android’s documentation that I hadn’t read since I started to learn it at the university.
This turned out to be a better exercise than I thought because the documentation had been updated with new API’s, deprecated methods and tutorials were (and still are) better than before. Another thing that I liked was that by preparing examples for my students, I learnt about how some components can be a better choice in terms of performance when comparing to others (ex: differences between ViewGroups) which made me rethink some of my development choices nowadays.
In this last module, I had two options. I could either ask the students to develop any app they wanted or make them develop an app that I wanted. I chose the latter because this way I could make them use almost all the components I taught in classes while making sure everyone had the same goals, tasks and starting points.
However, I was surprised to see that some of the students were in a worse condition than I thought due to the difficulty of the last module. At this point, I had no other option than helping them more than I was supposed to. Despite that, some of the students were still able to develop autonomously and discuss abstract solutions with me, which made me genuinely happy.
Moreover, reading the final project’s report from one of the students and noticing that he added more functionalities and components he thought were needed was really important because it shows that he took the time to develop the application with everything he considered necessary instead of just doing the obligatory. Seeing someone develop an android application when one month and a half before couldn’t understand a java file, was the most rewarding thing to me as a teacher.
If there is any advicesI can give to anyone is that if you promptly answer the students questions/emails and help them when they need, students give you more room to make a mistake, as long as you recognize and correct it as soon as possible. Don’t be afraid to listen to them because even if You don’t have the right answer, the fact that you take the time to help them is enough to keep their attention and enthusiasm.
Moreover, very often students get discouraged when they see us, developers, implement simple and fast solutions to their problems. It’s very important (if not mandatory) to make them understand that we were once like them and nobody is born with experience.
As a final note, I have to say that it was a great experience that I recommend to everyone. Even if you are not teaching at a school, you can always do some small sessions in your office with your colleagues about newly created API’s , tools, etc. and you will realize that by helping others you are actually helping yourself.