💾 Archived View for gmi.si3t.ch › sm4llth1ng › 2021-05-22.gmi captured on 2022-04-29 at 12:30:39. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2022-01-08)

-=-=-=-=-=-=-

Terminal-based remote training

May 22th, 2021

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.