Although I am a professor, teaching is not the part of my work that I love the most. I do like teaching, but I do not love teaching. And when I have a heavy teaching working, I tend to enjoy it even less. Some reasons because teaching is just OK to me: teaching (preparing material, teaching itself, grading, etc) takes a lot of time; we have little to no feedback (students rarely comment if the class was amazing or terrible); students are not always engaged with the class, etc.
I have tried some approaches to try to improve students’ engagement, but this blog post is not about this.
When I was a student, I liked to participate in meetups and local conferences to give talks. The act of be in the front of several people (probably more skilled and experienced than me), teaching than something new, was vibrant to me. I loved that feeling. As a consequence, I tried my best to give a good presentation. I read books about how to give a talk. I attend a course on how to speak in public. I practice the talk many, many times before delivering the talk. I liked not only giving the talk itself, but the process to prepare the talk (working on the slides, thinking about the best words, looking for good figures, etc). I could easily spent many hours working on a single talk that I could deliver in 20 minutes or less. And this made completely sense to me.
However, when I am preparing the classes material, I tried my best to do that as fast as possible. Not fast to the point to have a crap material, but also far from having a perfect material. If I could grade my classes material, I may give six or even five in a scale from zero to ten. It is true that I do not have the same amount of free time available that I had when I as a student, so obviously, I could not employ many hours to create the materials for a single class. Then I could naively lie to myself thinking that my classes materials are not great because I do not have the time to curate the materials. However, even if I had the time, I believe I would not make much progress to improve its quality.
However, when it comes to delivering the lecture, there is a whole new figure. I still enjoy a lot being in the front of a room explaining things, over and over again. I try my best to give a good lecture. I try my best to show to student how beautiful and exciting is one given concept. But that is it. After the lecture, I still have to grade exams, create or improve the materials, prepare exercises, and so on. And all of this is just boring to me.
And that was true till this semester.
This semester I am teaching Open Source Software Development.
Open source software is something that interest me a lot. During my early days in my undergrad course, I was an intern in a local internet provider. This was a very interesting experience, mainly because it was my first contact with Linux. I learned a lot of bash programming using vi. I also learned to set up several network services, and I became very interested in computer network stuff. Several colleagues of mine went to grad school to study computer network, and I had no idea how I became a software engineering guy. I started to use Linux at home (a Brazilian distribution called Kurumin), and I also volunteered to install Linux in several places (something that today is called “Linux Install Fest”). I did my master in a school that was all about open source. I remember that they were very proud to state everywhere that they only had a single Windows machine because of a CAPES requirement. Other than that, it was all about Linux. Even thought I was never an active contributor (although I have contributed here and there), I enjoy that culture. I enjoy to participate in open source events, to discuss about open source, and to spend an afternoon trying to install one driver.
During my PhD I moved focus a bit, and did not spent much time with open source.
After my PhD, I became again involved with open source, but now on the research side. The research works that I did with open source projects and communities seemed to be more aligned with the industry practice, which was something that I was very concerned about. It suddently became my main research topic; the literature that I am more familiar with. For me, it is easy to talk about open source.
I was luck to have a colleague in my university that shares the same passion about open source that I had. This colleague is not an open source researcher; instead, he is an active open source hacker. He does the things that I study. He has the practice that I describe in my research papers. The next logical step was obviously to create this open source development course.
The experience I had building this course was completely different than any other course I created. First because I started to create the material many months before the course. Second because I reread many of the fundamental books in this discipline (e.g., the cathedral and the bazaar). Third because I look forward to the class. Needless to say that I enjoy very much give the lecture.
This might be obvious to the reader, but it only became clear to me lately: I like teaching this course because it is about something that I enjoy a lot. I do enjoy learning about data structures or databases, but I do not have very interesting experiences with them (other than using them to create ordinary software). I also do not do research on these topics. I am also not that familiar with the fundamental books nor the newest literature. I teach these courses because I have to teach.
Lesson learned? Try to teach the subject that you like the most. If that is not possible, try to expand your research interests to cover the disciplines that you are teaching.