Allow me to share a personal journey that began when I was 18, as a mentor at Code Club Ukraine. My educational approach, I must admit, was always a bit... experimental. However, it was my last group that truly tested my methods, leading to a complete failure. I feel compelled to share this experience with my fellow mentors, urging them to tread carefully with their own mentoring techniques.
What is Code Club
The Code Club, an international organization, champions the culture of free mentoring. It's a testament to the power of volunteering knowledge sharing for future generations, a role that we, as mentors, play without seeking monetary benefits. As the name suggests, we're all about programming. The impact is staggering-operating in 180 countries, we see 180k children learning coding every week, all for free.
I got into code club through my college which doesn’t have a page on LinkedIn so I can’t even tag him lol, but the name is Cherkasy State Business College. First, it started as a branch of the code club which was organizing group code classes inside of the college for children aged 12-15 who wants to learn programming. There have been a couple of branches for that but I was mostly responsible for teaching web development with HTML/CSS/JS and also Python.
In my first 2 classes, I have to be a newbie and was working with a team so I didn’t have much chance to experiment with teaching techniques. The lessons were executed 1 time per week if I am not mistaken, it was the 1.2 hours session where about 12 children is working together with 2-3 mentors on some specific topic. The session usually starts with reviewing home works and publicly sharing the best of them, with the consent of children of course. Then it continues with a small lecture about a new topic of the week like responsive design or containers or CSS techniques. It goes for 15 - 30 minutes with a QA session at the end. Then students are getting practical exercises that they are working on till the end of the session with the support of mentors.
The completion rate of such an approach was about 60% which is considered to be big as for the free coding classes but I believed that there is a more efficient teaching model which will increase the completion rate and engagement of students. So, I got the responsibility of solo leading my own online group code club and striving to make the educational process better.
Project-based learning
At the moment of mentoring that group, I have already been working as a full-stack software engineer for about half a year. I started working as a software engineer at the age of 18 while still in college. My learning approach was mostly inspired by my own perception of how different learning techniques impacted my motivation and knowledge. I always hated assignments, especially boring ones e.g. making a Fibonacci sequence or creating some script for counting delivery fees. What really excited me is creative work. When you are getting the freedom to do whatever you want and the quality of your project will define the result. Such assignments made me have sleepless nights brainstorming, preparing, iterating, and finally presenting something which is unique to me.
I experienced it a couple of times in college and then a lot of times at work. Before getting accepted into a job I went through a 3-month internship. One of the parts of the internship was creating any app we want using technologies we never studied. This may sound shocking to most students, but how can you even create something using technology you never studied? This approach made me learn Java in 1 month. React in 2 days and Redux in 1 day. That is a challenge that made me hell excited, every other aspect of life was going on a second plan when I was challenged.
My first (and last) Project Based Code Club Group
As a result, I was deeply convinced that project-based was a way to go and that is how I got inspired to apply it in my Code Club group. I have been assigned to be a mentor of 15 kids aged 12 - 15 to teach them Python. The first session was orientational and of 15 students assigned to me, there were already only 11 which was disappointing. In the first session, I told them about our road map, described what Python is, what can you do with it, and what kind of jobs you may have with it, and gave them a task - to create a visual novel using Renpy.
Renpy - is a graphic novel engine written in Python. Creating a novel there doesn’t really require learning Python but it does require installing it on your system and creating simple “scripts” using the Renpy language. I found it to be a perfect task to show students the power of Python. Everlasting Summer game, one of the most popular visual novels in the world, was created using Renpy. There were a lot of lessons on Youtube on how to create stunning visual novels and even a couple of ready-to-use projects on GitHub.
There were only 5 students who completed the assignment so my success rate already was 30% which is lower than the initial benchmark. But, what a work I have got. I can not share those projects for obvious reasons but an amazing thing happens when you give students the creativity to make something on their own. There were 3 guys who made very basic games with not much soul in them. But there were 2 guys who made really great games. There was a plot, there was carefully selected graphic, there were animations and there was a personal story in it. I felt that in that novel they expressed their own struggles, worries, celebrations, and events. At one moment I felt like I am executing a psychology class instead of a programming one. However, I knew my job and I just moved forward with the next assignment which was creating an actual game using Python.
Python is giving great tool for working with the console so the requirement was to create any kind of text-based game in Python using language techniques we learned in the lesson. At that time students know how to work with loops, variables, consoles, data structures, and if statements which were enough to make a game. However, only 4 people submitted the game. Without taking this much further, the next challenge was creating an actual world-class game using the Pygame engine.
Pygame is an actual game engine where you have to code your game using Python. It is not as complex as Unity or Unreal Engine and you don’t need much to start. You can start by creating a very simple 2d game and you need no knowledge of physics for that. However, you need to spend a day or 2 researching a library and reading its documentation. It was summer so students had to be free. I was always warning them and asking if they are ok to dedicate at least 20 hours per week to learning programming. All of them said yes, but only 2 successfully completed the third assignment.
At this moment there were about 6 people only visiting lectures and only 2 people doing some homework. The group lost momentum and slowly stopped. However, the 2 guys who completed the third assignment are still into programming and they thanked me a couple of times for my learning approach.
The completion rate was only about 15% which was much lower than the initial benchmark. I gave up and stopped my Code Club mentoring journey.
The Trap of False-Consensus Effect
There is nothing more disappointing than being a teacher whose students are losing interest in the subject. Now I am pity to all professors whose lectures I skipped and I really admire each and every teacher, especially teachers in school.
I believe that I got into the false-consensus effect by wrongly projecting my own interests and abilities onto everyone else. There are people who project bases education works well. People like me and those 2 guys who completed my course. But it requires a high level of discipline and motivation. It requires a different chemical reaction to the challenge. Some people will give up immediately after getting the hard task. but a few will get pissed off and internally motivated to complete it.
Conclusion
In a retrospective, I believe that a project-based approach has to be combined with standard teaching practices and the student has to be given a choice of going through the common tasks or project-based challenges. Project-based challenges are great for filtering highly motivated people from passive observers, but that is not the goal of education. In a perfect world, we would be able to make everyone get motivated by a challenge and not give up, even if you don’t know the technology or the framework you are working with. Because this is the way, because this is how I define the perfect software engineer.