Training a student of IT

2024-10-04

Someone near to me is about to complete their studies of IT. After this they'll be thrown into the job market. Studying encompasses lots of things, including programming! This person to become a software engineer with a focus on backend development.

Sounds good, say I. (Former fulltime backend software developer.)

Scope of school

Schools, universities, focus a lot on crystallized knowledge. Reading and then letting people know at a later time what you read by submitting a form. Rarely work is actually done, which seems weird to me as someone who mainly learned from being a developer professionally since age 17. Luckily for the students of backend development, that means you can probably get a job if you read the right things and did a project or two. If you work in frontend and you started a course with info from 4 years ago, that's going to take a bit more effort.

What else is not learned at school? It depends, but certainly you won't find things that don't explicitly fit into "technical skills" or "soft skills". Skills that are implicitly expected of more higher ranking senior personnel. And in moments where they're needed, it's probably also what your colleagues will remember you for if you execute well.

Surprisingly, a lot of schools and universities also do not teach how to use a debugger, or even how to properly log. That's going to cause quite a gap in practical skills.

Here are true skills I expect, skills that you have to master, not just read or know:

  • Can solve problems in code you haven't faced before, quickly and under a lot of pressure.
  • Can make proper use of the internet and all resources found on it.
  • Able to refactor code at a decent pace & maintaining a quality standard while doing so.
  • Knows how to split up the space in which a problem exists, to find a root cause.
  • True understanding of why low quality code can become a problem. And, how to lift a project up out of that level of quality.

Being able to perform under stress, performing fast, and maintaining composure while you're being distracted by your colleagues or management in a high stakes situation are all skills I believe you can safely learn from the comfort of your own home. I don't expect to teach it to a whole class of course, but in a 1 on 1 tailored training.

To start, a concept

During my time as a freelancer at DPG Media I learned a lot. Not really specific to software development, mostly about people, processes, communication. Especially communication styles between different cultures; NL, BE and UK are completely different in business. I also learned that there are big companies that don't care for employees. That sounds obvious, but experiencing it is something else. Luckily for me, I was just another freelancer and DPG Media was happy enough to keep me around for a couple years but the environment there was quite harsh on its employees, to say the least.

Most of the time at DPG Media was fairly normal however, and there were some great moments had; An excellent one was a workshop by the people from Belgian domain driven design experts "Triple D". They presented a kind of quiz, except with questions sent in non-stop to your software. Software which you have to implement, right now!! This was set up in a competitive fashion. Of course I "won" by a landslide, but that's beside the point. Btw I totally programming-crushed my colleagues just so you know. :^)

Customizing

I took inspiration from this quiz concept to create a training programme to get my now-student up to speed with a certain language and software framework. Why copy this quiz idea? It was the moment at DPG Media where even I felt the pressure to perform at 120% capacity. Of course I want to beat my colleagues at a programming game! My custom training is quite different though, and you're at best looking to beat your own score from last time you played.

Moreover, it's not a meeting-sized workshop: It's a 4 hour session of back to back programming, 1 on-1 peer review, and some breaks. Completing with a final review of the code, the process and the approach to solving problems.

This is then repeated another 7 times, for a total of 32 hours not including my own time spent making the training material. One of the rounds the roles are inverted; the trainee will see how the trainer(me) approaches the workshop and the trainee is allowed to distract the trainer. I'm fairly confident you'll need more than 1 person barraging me with questions to break my focus. Skills like context switching can be learned too, no? The round after will be the other way around, although I won't make that high demands to context switch as can be made of me.

I don't offer this kind of training for sale. It's a matter of personal honor. Not like students or organizations are willing to pay for a 1-on-1 training for 40+ hours, in skills that aren't crystalline enough to be encoded in a form.

All training materials for this program are available at github.com/SkPhilipp/trainer.

Why did I write this entry? Because the progress has been excellent after only 8 hours of training. Consider training skills that don't fit in "soft skills" or "technical skills", or at least pass them on.