Programming is one of the hardest things I've had to learn so whoever asks for help with it gets my attention. People tell me I'm patient and clear when explaining things. Teaching is something of an enjoyment. Teaching in an institution is a whole different story.

There are a lot of materials online to learn programming. Some fun, some boring. Some go deep while others never tell you enough. Some work at your preferred pace, some forget to explain important bits. Point is there is something for everyone, which is the whole point of this post:

Whoever wants to learn programming will do so regardless of my efforts.

Fact is programmers for a large part are self taught. While talking about teaching programming my coworker asked in wonder: "How can programming be taught at all?"

And he's right - programming is something you learn, it can't be put in your head, because it's not something you memorise, it's something you have to understand. A teacher can merely guide you. Answer your questions and get you out of a slump, when things aren't going well.

If you want to start learning there are two things you need to do: find an online course and a mentor. In a school environment, you've got the course (though the online ones are probably better) and you've got a mentor, but the mentor only has a limited amount of attention for you. Which brings me to the next point.

Large groups of students don't get the attention they need.

Where I work one teacher can get anywhere from 30 to 130 students. In my opinion an ideal group is only 5-15 people. It enables group activities like helping each other out, solving problems together and working on a larger project, but also keeps the teachers focus concentrated.

Now if this was a training program I would know people attending have paid for it and are for sure interested in what we're about to engage in. Students fall into 3 categories:

  1. Already experienced - they are usually most active in the forums as they know asking questions is what drives learning. It scares the beginners away, but really actually demonstrates how learning should be done.
  2. Actively interested - these people think and Google a lot, then ask questions. They will succeed.
  3. Actively pretending to be interested - these are the folk who have the school mentality of "if I just attend the lectures I'll pass and become an IT specialist".

See the problem here?

Only a third of the whole group is worth teaching.

Granted, the first group aren't exactly wasting the teachers time, but still effort goes into grading and dealing with the overhead. What really gets me though is my personal inability to be indifferent about the pretenders. I care. I want to help everyone. Besides who am I to judge who's really putting their effort in and who isn't.

While on the subject, in a school environment there are other subjects. And even though my course is the most important one (no, really, the school is about teaching programming and I teach the beginners class) people need me to motivate them.

Motivating students means forcing weekly test and assignments.

I started programming through CodeCademy. It was so boring I started my own projects instead and that's where I really learned to code (with major help from the Kivy Framework Community). So learning by working on a real project should be the main focus, not having to take tests all the time - I used to hate subjects like that. Now I'm asked to create one. It comes down to personal taste and it's just not me. Also, obviously everyone has their own way of learning (hearing, seeing, doing, etc) so why not keep the freedom to follow one of the great courses online?

So in the end of the day as a teacher I'm really spending most of my time on things other than helping people interested in learning understand the software world. And this is why I'm quitting. I still want to teach, but I'll probably keep it to small focused groups.

You know it could just be that I don't really know how to teach - I'm fully aware of this. At this point I'm just tired of the whole thing so instead of trying again for the fourth year I'm taking a break and perhaps if I find a way to improve myself, I shall return.

Sidenote: This could also be a millenial problem - I have no patience and am looking for instant gratification in meaningfulness.

Continued in a second post about more personal reasons.