A man waiting outside Florsheim Shoes in New York City photographed by a 19-year-old Stanley Kubrick in 1947

On July 2021 I started to teach programming to students of a local branch of an international software academy. It was an entirely new experience: I had never been involved with teaching prior. Both programming and teaching require a lot of dedication and energy, but interestingly, I found the latter to be even more rewarding. At the end of the day I might’ve felt consumed, but seeing how the confidence and the knowledge of other humans grows, makes it quite a fulfilling experience.

I also learned a lot. There were times when I got stuck. There were classes where I felt I had not achieved the goals I had set myself. I didn’t know that teaching even the basics of the programming, let alone advanced concepts e.g Dependency Injection, would require that much preparation. Some of the issues I think come from the activity of teaching itself, others stem from the field of the choice, programming in this case. I found that it was not easy propagating a concept to all the students in the class. Yes, given unlimited time and resources everyone can learn everything. But the problems come when you have to manage and split the time among students at least somewhat equally. Some of them are definitely quicker on some subjects or even at programming generally. They come from different backgrounds, ages, professions. In the golden era of programming and technology, they all want to be programmers but they still don’t know what it really takes to be one.

Some advices from my experience were:

Configurations take a lot of time.

Each student will probably face different issues on their local environment. To save time you can give them instructions to prepare things as much as they can before the next class.

Interesting problems.

When preparing the exercises and demos, try to also include interesting examples that make them curious and more involved. Things that have concrete applications such as file reading/writing, simple vocabularies, buttons, graphics are more intriguing than printing elements of an array in reverse order.

Talk about your personal experience.

Show them aspects from the day of a programmers. Funny things. Tips that might not be technical but help a lot, e.g getting better search results, the importance of helping each other on a team, not being afraid to ask a question, doing your job before asking a question, books and extra materials suggestions etc.