My journey from martial arts trainer to software developer training expert
When I started with my current programming language – over 13 years ago – I had already been a software developer for over a quarter of a century. However, this was a new language, different from the 3GLs I knew and loved. I was fortunate to have 3 excellent, kind, and patient tutors to help guide me. And it is with their example that I nowadays pass on the same knowledge to others. So here is my personal story of teaching.
From the beginning …
My first role as a teacher came in my early 20s – that ́s over 30 years ago. That was my first time as a senior instructor in my Kung Fu association. I was by then already well known to most of the parents and pupils in the classes as I had been training regularly for the previous 4 years. Everyone knew and trusted me as they knew and trusted our „Sensei“ (side note: „Sensei” and “Sifu” both mean Master. Our “Sensei“ preferred „Sensei“ over „Sifu“ due to the nature of the mixed, non-traditional style he created, these days it would be called a mixed martial art, but back then anything that was not Karate was Kung Fu).
From martial arts to software development
What does that have to do with teaching software development? Well, the most important part of any teaching/learning is the people and the interaction. I have found that the spontaneity of an interactive lesson, whether martial arts or software design is so important because everyone understands the same thing slightly differently, and believe me there is nothing more spontaneous than a martial arts class. So martial arts and software development (or any other learning for that matter) are about the same thing: people. This is where our interactive training sessions really make a difference. With that being said, let ́s move on to the software arena rather than the „Kumite“ (sparring).
For the programming language of my choice, the software vendor provides training videos and web-based lessons that give a great introduction to programming, but they’re not the same as actual project work. In my opinion, something is missing. Something like an intermediate step where you apply what was learned in theory before engaging with paying clients “out there.”
How we do things
If you have the feeling something is missing, maybe you should create it? This is what we did at Data Insights. We have developed a series of tasks that require the developer to consider a set of realistic requirements, to bridge the gap between the theoretical and the more practical training.
Those tasks give a set of “real world” requirements along with our Data Insights coding standards. The developers are free to develop the results as they see fit and then submit them back for review by experts who will make sure that all designs were followed accordingly. There is no “you didn’t do it my way” mindset here; we just look at efficiency in codes over multiple ways people might think about solving an issue (which can lead us toward new discoveries!)
And who knows? Maybe someone learned something from working on these projects?
A deeper look into the tasks …
We are going to have a lot of work with data cleansing. Therefore the first step, as always in this process is figuring out what kind of bad data we’re dealing with and how it can be fixed or filtered off depending on the type that’s incoming from our client side (a bunch will never make sense). All errors per record need reporting back so there aren’t any surprises when they happen during processing time – which could cost us dearly if someone else has done their job wrong!
The second development task, builds on the first, by making use of the cleansed data set. This time the data is to be used to generate several reports showing the results of a two-week sale period compared to the two weeks before. This task requires the developer to be able to filter and separate a large data set efficiently as well as get practice with reading and understanding requirements documentation.
By challenging our developers to use other packages within the suite of software available, we give them a real sense of ownership and understanding.
This is an interactive session where you can ask questions and get answers from our knowledgeable team. We want to make sure that everyone learns as much about data insights, so even if a question cannot be answered immediately we will find somebody in the company who knows the answer!
We start the interactive sessions after our basic training course is over. This way, developers have some experience with the software rather than everything being new and strange – they can ask questions while seeing how it’s done in real-time! It’s easier to ask questions as the code is being written, which is often lacking in purely technical lectures or demonstrations.
The interactive sessions are an important addition to the overall training and they provide a deeper understanding. They help to develop a feeling as to why a certain structure is better than another, or why a part of the coding standard is the way it is.
In the end
As an add-on to the web-based training of the software vendor, the additional development tasks and the interactive sessions provide the best starting point for our colleagues when they arrive at a client project.
To return to the beginning: Teaching is all about interaction. Developing the passion, fun, and enthusiasm for
something new (martial arts or software). And it’s also about trust, which makes it a delightful experience for me personally.