No one can predict when the virus situation will pass; but we all know it will pass. The question is, what will we have done in the meantime to position ourselves for new opportunities when the economy rebounds?
This is not a time for us to roll up and hide in our shells like frightened armadillos. It’s a time for us to build our knowledge and hone our professional skills, to prepare for the new opportunities to come.
I suggested recently that companies need to use this time to regroup, reset, and get ready for the economic upturn that will surely follow the present crisis, rather than just shutting down and hoping things will get better soon.
Hope is not a plan, and neither is releasing your most valuable and hardest-to-replace assets: Your people. On the contrary, this is the time to enroll technical staff in training, so they will be ready to meet the challenges of the new economy that will emerge from the present downturn.
My focus here is on technical people – programmers and testers, mainly. Those are the people I believe I can help, based on my own skills and past experience.
Under present conditions, “training” means “virtual training”. And that’s where things get complicated. There are several issues with the majority of virtual training on offer today.
Issue: Lack of interaction & feedback
Self-directed learning via the Internet is necessarily unidirectional. The learner is a passive consumer of information that was prepared in advance. There are several advantages of taking an in-person course with an instructor:
- opportunity to ask questions
- possibility to shape the content of the class to address students’ specific problems or work situations
- interaction with other students
- feedback from the instructor and from other students
- opportunity to explore specific aspects of the topic more deeply, based on interest
- hands-on practice of skills with qualified guidance from a senior practitioner
- opportunity to make new professional contacts
It is possible to approximate all these aspects of in-person learning in the virtual environment, but doing so requires specific effort to prepare and provide these things in a manner appropriate to the medium.
Issue: Training doesn’t incorporate robust learning methods
The pre-made video format doesn’t lend itself to methods from models like Training from the Back of the Room or Experiential Learning. The material almost always consists of a slide deck, and rarely anything else. Sometimes there is nothing more than a person talking to the camera. The instructors in the videos can do little beyond reading the script and showing the slides.
Issue: Training not designed for virtual learning
Most of the training on offer today was hastily prepared in the wake of the first wave of Coronavirus infections. Very little of it was mindfully designed to provide an effective virtual learning experience. Self-directed video-based courses were already common online before the Coronavirus arrived. These tend to be bland and short on content; they rarely include any hands-on practice with the new skill under study, and provide no meaningful feedback to the student.
I’ve tried a few of these courses recently, as companies have offered them free of charge temporarily in response to the virus situation. Most of them are nothing more than a video of a person talking to the camera, with occasional snippets of code shown on slides. You can read the same words in the documentation for the tool or technique you’re trying to learn, without paying for such a video or spending time fast-forwarding through one to find the few tidbits of information you need.
Some training offered as “video-based” consists of nothing more than recorded in-person training class sessions. The result of turning on a camera when you teach a class in person is not a high-quality video-based class designed for self-directed learning. Sometimes, the result is an off-center image of a presentation slide unrelated to the topic the instructor is talking about, and no way to see code, whiteboards, or flipcharts. We watch as people gradually fill the classroom. We wait through long periods of silence as the students fail to respond to the instructor’s repeated efforts to get them to say something. Students’ questions are inaudible in the video and the instructor does not repeat them. There’s no hands-on practice with the skill you’re trying to learn, and no opportunity to ask the instructor questions of your own.
Just as there are advantages to in-person training, there are also advantages to the virtual environment that are difficult or impossible to reproduce in person:
- easy access to supplemental learning resources available online
- no need to travel – training can be taken from anywhere that has an Internet connection
Issue: The Goldilocks problem
The first virtual training course I’m offering is on the subject of test-driven development, or TDD. When I wanted to see what resources were already available to those interested in the subject, I found hundreds of videos on YouTube about TDD. I spent several hours reviewing parts of around 40 such videos. Generally, they suffer from the Goldilocks problem:
- Too long. Many TDD instructional videos are over an hour long; a few are around 3 hours long. One-way, passive consumption of a video for that length of time can be exhausting, and is unlikely to yield practical value.
- Too short. There are quite a few short videos. I became very interested in these after viewing some of the longer ones. The problem here is they gloss over the subject so lightly that the learner doesn’t receive much information at all. Many of them miss the real value of TDD, emphasizing the rather obvious point that we write a failing test case before writing the production code to make it pass, but never mentioning refactoring at all.
It’s almost impossible to find the bowl of porridge that’s “just right”.
Issue: No clear learning goals or agenda
Commercial training courses, including the virtual products, have a clear agenda and learning goals. When searching for free self-directed video-based learning resources, I found a large proportion of them have no clear goals or direction. It’s as if the person was bored one day, turned on their webcam, and started coding randomly. These videos often begin with statements like, “I don’t know what’s going to happen; I’ll just start coding and we’ll see how it goes.”
If you’re looking for resources to help you build professional skills, this sort of thing can be a waste of time. The person doing the random demonstration often neglects to mention details or nuances of the technique you’re learning that you probably need to understand.
Designing an effective virtual learning experience
I set out to adapt my two-day in-person TDD course to the virtual environment in a way that would provide most of the advantages of both in-person and online learning. I also tried to incorporate effective pedagogical methods and adapt the material, the pacing, and the presentation to the ways in which people like to use online resources.
Fortunately, it was not necessary to start from scratch. There are good examples to follow, even if they are few and far between.
The best example I know of a live, instructor-led, virtual training course in the software field is the TDD course for embedded C/C++ offered by James Grenning. The course has been around for years, and was already an established success before the Coronavirus suddenly brought virtual learning to the forefront. I’ve taken the course and I know the creator/instructor. He brings most of the value of in-person learning to the virtual environment. Learners are immersed in problems they must solve, working collaboratively with James’ guidance in the online environment. There are many useful lessons to take from the way he organizes and presents the course.
Other good examples are the Certified Scrum Master and Certified Scrum Product Owner training courses offered by Pierluigi Pugliese, of Connexxo. Like James, Pierluigi is the creator and instructor of these courses. In adapting the in-person versions of the courses to the virtual environment, he makes use of a range of different online collaboration tools that enable participants to experience something pretty close to what they would normally experience in person. Break out groups, learning games, and other activities commonly found in such courses are accomplished quite effectively using Internet collaboration services.
In both those examples, I emphasized the fact the person who created the course material and designed the learning experience is the same person who delivers the training. These individuals are leaders in the field with decades of solid experience. I think this is an important factor that distinguishes these courses from mass-produced, commodity-level training courses that are presented by “professional presenters”.
Earlier I may have given the impression that I think self-directed, video-based training is categorically bad. That’s not really the case. The problem is that most of it is bad. Take a look at Dave Farley’s YouTube channel. (There’s more than one Dave Farley on YouTube; I mean the one who talks about continuous delivery and software engineering.) His instructional videos are effective, and we can learn some things about how to convey information when we are “talking to the camera” or walking participants through a coding example. Watch a couple of these and notice how they differ from the run-of-the-mill videos on similar topics.
I would be remiss not to mention J.B. Rainsberger’s video-based TDD course, modestly (but aptly) named The World’s Best Intro to TDD. The content is first-rate and the presentation thoughtfully blends moments of “talking to the camera” with considerably more moments of showing us how to do TDD, what to think about while we’re doing it, and why it’s important to do so.
But Dave’s and J.B.’s videos are…well, videos. I stand by my assertion that J.B. course is as advertised – the best introduction – but it’s “best” within the natural limitations of the format – self-directed, video-based training. You don’t get the benefits a live instructor brings to the table, and you don’t get some of the “extras” described below. Probably most importantly, you’re not immersed in a collaborative hands-on experience. You’re watching someone do it and listening to them explain how and why. J.B.’s course is not free, but the price is much lower than that of an instructor-led course. That is something to consider, as well. If a self-directed course meets your needs, then you will find J.B.’s course to be a thousand times better than anything you can buy from a big-name training company.
Another training model that has enjoyed some success in recent years is the coding bootcamp. This is a live, in-person training model. Over the course of several weeks, a bootcamp provides basic training to qualify a person for an entry-level software development job. The advantages of bootcamps over universities include lower costs, faster entry into the job market, and a job-related curriculum as opposed to an academic computer science curriculum.
A caveat is that the speed of the training can lead to poor outcomes. In 2020, the example that springs to mind is the software glitch in the mobile app developed to support the Iowa Democratic Caucuses in the United States. As I understand it, a team of recent bootcamp graduates, led by a single senior software engineer, delivered an app that had some rather basic defects of the kind that would normally be discovered and corrected early in the development process. The team had learned practical basic skills, but lacked broad or deep field experience.
So, I wanted to be careful about where to cherry-pick useful ideas from the world of bootcamps. I took a serious look at SALT, the School of Applied Technology, with locations in Stockholm, Oslo, and Amsterdam. They call themselves a developer bootcamp rather than a coding bootcamp. The name reflects their commitment to preparing entry-level professionals with the full range of knowledge and skills necessary to perform the work properly. Graduates enter the job market equipped with a firm foundation for building their careers, although beyond a certain point there’s no substitute for experience.
One of the key benefits of SALT’s approach, as well as James’ and Pierluigi’s, is immersion in the skill you are learning. It’s possible to do this for technical skills in the virtual environment, but not by “talking to a camera”. It’s important to “mix it up” by changing the way information is presented and by changing the directionality of information flow between the instructor and participants, and among participants.
What can I take from the bootcamp model and apply in a virtual course? Mainly, two things: The value of immersion for learning, and the focus on real-world, job-related, practical application of skills.
In preparing the supplemental material – text and videos – I wanted to keep in mind how people’s reading habits have changed over the years. By using results of studies like How People Read Online, we can craft our textual information (which includes any code snippets that aren’t in an editor where students are actually coding) to align with the way people generally prefer to consume such information online. It’s all about being scannable, unlike this blog post.
Another trend has been away from large-scale, multi-day courses that present several topics under a single heading in favor of smaller formats that target very specific learning objectives and provide information in easy-to-consume chunks. People also appreciate recognition for achieving milestones in learning; hence the rise in micro-credentials as rewards for micro-learning.
The design goals for my instructor-led virtual courses take these considerations into account:
- Live training in real time with an instructor.
This is not passive consumption of videos. The instructor sees your face when you don’t understand something. He responds to your questions. He adapts the content to meet your unique needs. He works with you for an hour one-on-one to help contextualize and fit the new learning into your real-world situation. He remains available afterwards in case you have additional questions, on the permanent class forum. No video-based course can provide that level of attention.
- The instructor is someone you know, who has (in this case) 42 years practical experience in the field and uses what he teaches.
Not a random “instructor” hired by a faceless corporation to make a video of someone else’s material and read from a script.
- Specific learning methods are incorporated intentionally and mindfully.
Participants do not simply watch someone speaking to a camera and/or showing slides. Experiential Learning, immersion, and elements of Training from the Back of the Room help maintain engagement and reinforce learning through multiple channels, while a mixture of media including text, audio, and video combined with hands-on exercises accommodate different cognitive styles and learning preferences.
- Offering includes one hour of one-on-one time with the instructor for each participant.
This provides the opportunity to clarify how the new skill can fit into each learner’s work environment in a practical way, and to address any concerns or questions. Note that it would be impossible for a commodity training company to offer anything like this in conjunction with one of their training courses, and you cannot get it by viewing a video-based course. If you were to engage a consulting firm to provide this level of help, it would cost between $800 and $4,000 per day depending on the firm.
- Materials incorporate curated public resources supplemented by custom notes and explanations as well as original material developed for the in-person version of the course.
This exploits the vast resources of the Internet to supplement the original core content of the course and to provide a variety of media and learning experiences. The time you save by having the instructor pre-select useful learning resources and annotate them represents another form of value for you.
- Live course time divided into five 3-hour segments which can be grouped together or spread out over time, at the convenience of the learner. The basic format is one 3-hour segment per day.
This considers the fact each hour spent connected in a videoconference is far more tiring than an hour spent in a classroom in person. It also allows time for participants to assimilate and possibly try skills on their own before they are presented with new material; avoids mental overloading. It also aligns with contemporary preferences for short, focused learning experiences over long, complex ones.
- Learners earn small rewards all along the way.
Micro-credentials are surprisingly effective at encouraging learners to keep moving forward toward their learning goals.
- Feedback from multiple directions, at different times, and at different levels.
Frequent and meaningful feedback helps guide the learner’s progress and reinforce key concepts and skills. Participants self-assess 15 times in the course of the five-segment TDD course using 5 self-assessment questionnaires designed to reinforce key concepts and call out common misconceptions in each topic area. As the work is collaborative, participants give and receive feedback to one another frequently. The instructor provides group feedback at the end of each segment, and offers an hour of one-on-one consultation with each participant who completes the course.
- Collaborative work.
In the real world, software development is collaborative work. The era of the lone “cowboy” programmer cranking code in a dimly-lit cubicle deep into the night is long gone. Participants in these classes work together on class problems, using a remote mob programming format. This helps prepare them for future work as well as providing an additional source of feedback.
Participants join an online discussion forum where they can continue to interact with the instructor, with each other, and with participants in previous courses and NeoPragma events. This sort of community provides ongoing value as a place to ask questions, get encouragement from peers, and learn about job opportunities.
The first of these courses is available now: Fundamentals of TDD in Java, June 1, 2, 3, 8, and 9 at 17:00-20:00 UTC each day.