The thoughts of naming the stated training methodology as Test Driven Training (TDT) came after going through Kent Beck’s book titled Test Driven Development (TDD) By Example. Once I decided the name and then related my thoughts to TDD, my thoughts became more clear and structured. At the end I am convinced that I would practice TDT in whatever training that I do through our Ram Software Engineering Labs.
Goal of Test Driven Training (TDT)
After coining the name on the lines of TDD, I am tempted to state the goal of TDT on similar lines. The goal of TDD is “Clean code that works“. After a long hunt to get a similar crisp punch line I landed up with the statement “Learning that solves”. The objective for everyone of us to undergo a formal training is to learn and acquire those specific skills that help us solve problems in that area.
There are two possible pot holes that one might fall into while undergoing a formal training
- Long sight: Too much focused on teaching all the concepts and building a huge foundation that attempts to solve every damn problem in the world. What I think would happen in this scenario is that participants get too bogged down with the details that they get lost in the mid way and at the end they fall short of solving simple problems in that area. I can relate this to a development team that is too much focused on building a highly robust Software while at the time of deadline the final product is not ready to solve the most critical problem of the customer.
- Short sight: Here the training is too focused on solving only the problems in hand without understanding and analyzing the solution – what, why and how. Participants become dependent on others for helping them solve their problems every time. They don’t think and try to relate one problem and its solution with others. On a similar angle, I have seen in many places where people code for every functionality without bothering to nicely organize and restructure the redundant piece of code.
The primary goal of TDT is to help prevent us falling prey to above two problems. It aims at solving right and required set of problems and at the same time providing the required foundation and mind set that help solve future problems as we travel down.
Rules of TDT
The goals of TDT are best achieved if we adhere to the following rules or guidelines of how TDT has to be practiced.
- Work with the sponsor of the training and get Acceptance Tests for the training. This is drawn on the similar lines of UAT scenarios prepared at the beginning of Software development. Acceptance tests in TDT refer to a list of solvable problems that the participants are expected to solve after they undergo the training. Sponsor is involved not only in finalizing the topics being covered but also specific problems that participants have to solve at the end.
- Pick a problem from the Acceptance Tests and solve it with participants. Let them feel the excitement of achievement.
- Analyze the problem and solution by asking
- WHAT each step in the solution means
- HOW it works
- WHY is it included in that step and WHY NOT other ways of performing that step
- Instead of trying to answer all the open questions arising from the previous step at the same time, maintain a list of “To-do” items where all open questions are logged and tracked
- Pick the next problem and try to solve and analyze. This time, while trying to add open questions to the To-do list, we check if the question is already part of that list. If yes, then we try to understand the concepts related to the answer of that question. Instead of learning the concept during the second iteration, we can apply the rule of three.
- Continue solving the remaining set of problems. At the end, learn just enough to answer the open questions in the To-do list. Knowing what is “just enough” is an art and needs to be developed iteratively through introspection and participants feedback.
Advantages of TDT
- Participants are continuously engaged with hands-on session in solving problems
- No theoretical boredom
- Training is objective oriented
- Sponsors are guaranteed that their participants at the bare minimum solve the immediate set of problems that they get in their business and with good probability solve problems that come in future in the same area
- Optimized usage of all resources involved – time, effort, cost with an optimum quality
- Devising a method to formally state the acceptance criteria for training by the sponsors