💾 Archived View for gmi.si3t.ch › sm4llth1ng › 2021-05-22.gmi captured on 2021-12-17 at 13:26:06. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
Twice a year for a few years I give a training session about Clean Coding
(2 days) and Test Driven Development (2+1 days). Usually these training
sessions are given on site to a group of 10-12 software developers / PhD
students.
I do not like presenting with slides. It try to get my training sessions
as interactive as possible. Using pomodoros, I present a concept, I code
a live coding example of the concept (p1), and then I give an exercise to
trainees similar to the one I coded (p2). The pomodoros gives a nice
rhythm to the session forcing every one to focus for 25 minutes and have
a break each time (they have to exit the room).
In addition, I try to use example of problem from the trainees own work
to make it better suited to their needs. It is not always easy to enter
in their project scope, nor to languages I am not so familiar with. But
they find it more interesting.
For a TDD training session I use a git repository for micro commits. We
write a test, commit, write code, commit, and refactor, commit. At the
end of the session the .git folder is provided to the trainees. Thus,
they can replay each step we did during the session and not only get the
final version of the files. It is not a video replay but a git one. :)
Last Clean Coding session was done remote in late 2020 for the first time
(due to restrictions related to the pandemic). During that session I used
Jitsi sharing my screen and an online pad for discussion about trainees'
code. It worked OK for a first attempt at "remote interactive training".
This time, I used Jitsi for voice and video but setup a tmate session to
give access to my live coding presentations. The B plan was, if anyone
had network bandwidth problem we would have moved to the mix Mumble +
tmate.
I found it worked even better. The tmate was setup read only with three
windows:
- note: summary on of the concept in an org file that we built together
during the session -- this is the take away of the session,
- test: the terminal to run all the tests,
- edit: vim for editing all the files.
The benefits of tmate vs sharing the terminal window using Jitsi are:
- each student do a ssh to the given tmate url and can configure her
terminal font to suit her preferences,
- each student can copy paste the code that is presented in the terminal
to her own tools,
- the tmate connection never had any problem during the two days.
I planned to use a shared tmate with write permission for every ones if
necessary. But we did not used it. We kept using the shared pad for them
to provide me some sample of their existing code. And it still work
nicely.
The third day is planned in a few week. The goal is for them to practice
as much as they can during that time. Then we will discuss their
difficulty and give them more specific or advanced advice if I can.
Note: the first day I missed some pomodoros so I used a kitchen timer the
second day to keep the good rhythm.