Teaching Git.. and Python.. and Zen Buddhism

When you are suddenly facing the end of life, what will you use to fend off birth and death? Don’t wait till you are thirsty to dig the well. If you neglect to do the work, then when the end approaches your limbs will not be properly arranged, the road ahead will be vague and you will whirl about in confusion bumping into things. How painful. I urge you all to take advantage of the period when you are physically strong to seek and find clear insight. This key link is very easy. It is just that you must mobilize your will to the utmost to do it.

Working with Koans by John Tarrant

You can get a long way with memorizing a chain of Git commands for a desired outcome without knowing what you are really doing. How do you teach people how to remember the Git commands they need as well as creating a desire to understand exactly what they are doing and why they are doing it. (That crucial component that is somewhat absent from all of the compulsory education in the west.)

A colleague and I are working on new training materials for our fast growing Analytics department at work. We use Python almost exclusively for most of our work for all things ranging from statistical analysis, general data processing through to building  out a fully automated ETL for much of our now becoming standardized work. As such we are concentrating on increasing proficiency in Python and Git. For without Git, of course there would be no collaboration-not in any scalable way thats for sure.

In my opinion the only real way to learn how to use any of these tools is just get on with using them. We have introduced Git to our team a while back. So they’ve gotten stuck and confused enough time that they’ll benefit from more training (and of course had a firm grasp on the #1 Git protocol:)

git

We wanted to create a lab session that stayed true to the Learn by Doing Mantra- and even to extend this further to Learn by Doing Wrong embedded in the assignment itself. We wanted to create a lab session which would involve them collaborating on a project that would require using some basic Git commands whereby they would need to complete tasks themselves and merge in each others work to complete the assignment. But to get that real world feel we purposely assigned tasks such that they would definitely experience a merge conflict and have the time to solve it properly and understand exactly what was going on!

So thats what we did! For the actual content of the assignment we decided to use a subset of the excellent Python Koans, which, just like Zen Koans are designed to teach in an indirect way. So we have stealth Python teachings thrown in for free that add some great theatrics and fun to the assignment too! (Disclaimer: Fun for me, may not be fun for all as we saw in practice-Its hard to cater for all thats for sure).

So here it is:

For anyone that wants to use it, fork the repo and follow the instructor guidelines in notes.md. Then just have the participants follow the instructions in the README and decide for your self how much you want to step in.

The important lessons we wanted this assignment to teach other than greater fluency with Python and Git is just how important the planning of such a project is and how much good communication between teams matters. Had the assignment been setup more smoothly, teams could easily work a-synchronously with each other and not worry about what the other teams were doing and when they were doing it!

Feedback is welcome! We expect to expand this assignment to include some essential Github functionality such as Pull Requests.

Leave a comment