And why I think every development course should do it.

Let me give a little back-story.

I am 24 years old, and I have been working as a developer for several years now. Since college, I have always felt a natural gravitation towards teaching. I actually considered and took steps to change my major at one point but never went through with it. Now, a few years later, I was getting my chance to have a small taste of it without having to make a career change.

I was a little nervous, as anyone probably would be, to be teaching a class for the first time. Thankfully for me, I had a couple of things working in my favor:

The course was completely online with the exception of office hours, which were by appointment. This was helpful as it helped me ease into face-to-face time with students who always gave me shocked looks realizing how young their teacher was. I knew I was going to be teaching the course about two months in advance. I was given permission to redesign the course from the ground up, which gave me a lot of flexibility when preparing my lessons. I could teach the newest, most up-to-date stuff as long as I was meeting the required learning objectives.

Alright. Now that there has been some back story given, I will tell what I believe to be a great way at teaching a web design/development course.

Github. Every developer knows its name. The version control system that has millions of lines of code stored within, making everyone’s lives better. I would argue, however, that it can be used for other purposes as well. It’s easy to navigate, has excellent historical data, and makes use of users and permissions. It displays files in a way that makes sense and makes amazing use of readme files. No this is not a plug for Github, these are just the reasons why I used it to teach my course.

Yes, I used Github to teach a college course, and it was amazing. Imagine this: I used an organization as my class. I used a separate repository for each lesson. The content for each lesson was given in the read me, and the code was upload as per the usual with Github. I used issues for the discussions and questions for each lesson. I used the student’s commits to grade their assignments.

The course then ended with the culmination of all their work combined into a final project, their personal website. They were graded on their work and the lessons taught, and were able to walk away with a Github repo full of commits, a working knowledge of developing using version control, and their own personal portfolio site.

When the course was over I had so many students tell me how much they enjoyed the course, and that after getting used to using git and Github for their code that they loved it. It kind of got me think:

“Why don’t all programming classes make use of Github”?

I think that ALL programming courses could and would benefit from using this method. It’s becoming more and more a necessity for developers and even designers to know how to use version control to be able to work in a team environment.

Here is my advice:

Request a discount through Github Education. Most of the time they will give you a free organization to use with your course!

Use what they give you! Create repositories for your lessons, use the issues to promote discussions and ask questions. Use their markdown editor to turn your readme files into the content providers of your lessons. Have your students use meaningful commit messages and branches so that you can actually see what assignments have been done through Github.

Use slides! I cannot stress enough the usage of slides for online courses. I used reveal.js and hosted it on Heroku, which I thought was perfect for this use, but you can use whatever you want as long as you use something.

Have fun with it! Github was designed to be socially engaging, and this makes it perfect for better communicating with students about their issues with their code. Promote idea sharing and brainstorming. Post your own code examples with each lesson.

I hope to see more stories of teachers making use of Github to teach their development courses!

Happy coding!