In this article I would like to look at one of the key issues determining successful training, namely "the objectives of training". It would seem: a cliché, after all, everyone knows that holding a training session --- that is, sitting in a room in a nice atmosphere and with a good coffee --- is not a goal in itself, or at least not the only and main goal (-;
Well set training objectives are a guarantee of benefits
In my experience in training needs analysis, the level of awareness of the participant's or team's own training objectives is sometimes too superficial. Often when asked what the company/participant would like to see included in the training program, we will get a whole list of needs along the lines of: "we want advanced, classloading problems to be covered" etc., while the question "why do you need this training at all" causes more trouble in answering, as does the question "how do I understand your expectation that you want to learn framework X".
Meanwhile, a well-defined training objective is a prerequisite for the training to bring the expected benefits upon completion and for the participants to be properly motivated during the training, which again will positively affect the said benefits.
A separate topic is the verification of the achievement of these benefits, i.e. the evaluation of the quality of the training, but this is a topic for a separate article.
Organizational goals versus personal goals in open and dedicated training courses
At this stage it is worth noting that a somewhat separate issue is the goals of the organization/team and the individual goals set by each participant individually. The difference is twofold. First of all, these goals may (in extreme cases) conflict with each other --- i.e. the company expects the team to know framework X, while the participant would like to know framework Z. Most importantly, however, the benefits are defined differently: either from the perspective of the organization or the individual.
For these reasons, dedicated trainings, i.e. those aimed at a specific closed group of participants (usually from the same team or members of different teams of the same company) and open trainings, i.e. those for which individuals from different companies sign up, are quite different.
In the case of dedicated training, long before the training, the trainer, in a personal conversation, tries to correctly identify and name the organizational goals, and then juxtaposes them initially with the goals and experience of the participants, which sometimes leads to the joint development of corrected organizational goals (in case these goals are not consistent with each other), and sometimes only to take into account personal goals, resulting, for example, from differences in seniority or experience of individual participants. The process is finalized at the beginning of the training, where the goals are once again named and, if necessary, completed by the participants.
As you can see, a huge role in defining training objectives is played by the trainer --- both during the needs analysis before the dedicated training, and already in the training room. The space to build harmony between personal and organizational goals is significantly greater for the trainer in the case of dedicated training.
In the case of open training, this is more difficult. The participant is generally delegated by a company that also has expectations at the organizational level, but since he or she will often be the only participant from that company, the training objectives written into the training framework program are taken as a pillar. These objectives are further confronted with the participant's personal goals, which should, but need not, fully reflect the organization's goals.
Therefore, the ability of each participant to build his or her own expectations and juxtapose them with what the specific training offers is crucial.
Objectives of the organization
These will be discussed in a separate article, along with the topic of training effectiveness research, but for the sake of argument it should be said that organizational goals are usually more tangible and more easily defined. As a rule, clients implement training for the following reasons:
- they want to reliably educate the team in the skills of programming in a specific set of technologies, because they are planning a project launch or technology migration;
- they want to solve isntegrating problems in their own project;
- want to do research in a selected technology(s) for potential use in their own project;
- want to make profound changes in the structure and the way teams work;
- want to increase employee satisfaction.
Personal goals
The topic seems to be quite familiar especially to trainers, there have been numerous studies in this area, more or less formal classifications into cognitive (what will I learn) , behavioral (what will I be able to do and how will my attitudes change at work) and emotional (why will my work and life change for the better, will I manage, etc.) goals.
However, I would like to present the topic based on specific examples related to IT training. In connection with the fact that it is also common in IT trainings for participants to be unable to objectively specify their specific goals before the training (e.g. because they are just beginning their adventure with some IT discipline), we at Sages have proposed our own categorization of trainings, grouping trainings with similar goals and helping the participant to know what specific expectations they may have from a given training.
But to the specifics. Let's assume that a participant is thinking about choosing a course in Java programming. What expectations might he have and what can he expect from the training courses on offer?
Preparation for the certificate
Let's start with the least interesting, because the simplest case, which, however, cannot be overlooked, namely, training courses to prepare for a certificate. In this case, the goals have already been set by the institution issuing the certificate, and the training necessarily focuses on preparing the participant for the exam, that is, maximizing the chances of passing it. How does this relate to programming skills? The participant will certainly polish his or her knowledge of the Java language, as these are the subjects of verification during the exam. So we can say that in the knowledge layer "the participant will master the knowledge of Java language mechanisms, allowing him to pass the certification exam." Will this make him a better programmer? Certainly yes, even though nowadays a lot is done for the programmer by IDE tools. At the level of results, we can certainly say that "the knowledge gained from the training, will allow you to create code more efficiently using Java, increasing the speed of code development and reducing the risk of making mistakes." We can certainly also add --- perhaps not very profound, but also not insignificant --- an emotional goal: "to join the ranks of certificate holders and thus increase your position in the job market".
So let's imagine that the participant has not programmed in Java before. So the question is, will this training prepare him comprehensively for a job as a programmer? The answer is - NO. A programmer's job consists of: practical programming skills, extensive knowledge of programming libraries, the ability to create and use a workbench, correct attitudes and habits including, among others, creatingclean code, creating unit tests along with code, etc. Meanwhile, at a training course preparing for certification, we work mainly in the knowledge layer, and only within the scope set by the certifying organization, which, if it is a manufacturer of a certain technology, will naturally limit this scope to its own products only.
Preparation for work
And here comes another doubt: can we expect one training course to provide extensive knowledge, train practical skills and build due attitudes? And if not, how many trainings should one undergo to obtain a set of knowledge and competencies? As you know, professionals' time is becoming more expensive and scarce, so the key is to properly determine the scope and plan educational activities in such a way that as many of the defined needs are realized in the shortest possible time.
Let's consider this against the background of accepted schemes for training purposes. We have already established that a training course preparing for a certificate is not a training course that directly prepares for a programming profession. Intuitively, most participants also define that practical skills are more important than the so-called "theory" (usually we don't even want it). Emotional goals are not important --- after all, every adult specialist should motivate himself --- attitudes cannot be trained in a short training course, so we expect maximum coding from the training, and that's it.
To a large extent, such intuition is rational and leads to the conclusion that training should be workshop-like to the greatest extent possible. Accordingly, most of the training courses offered by Sages trainers assume that 75% of the training time is devoted to workshops.
What are the differences between the various workshop trainings?
However, it is definitely worth taking a closer look at this intuition. For a broader view, let's consider the following group of training courses at the same time:
- Java programming for programmers --- 5 days
- Java programming (job preparation) --- 7 days
- Persistence layer based on ORM approach in JPA2/Hibernate --- 3 days
- Programming multi-threaded applications in Java --- 5 days
- Test-Driven Development in Java --- 2 days
- JHipster --- Spring, AngularJS, and Bootstrap --- 4 days
- Modern web applications based on JEE7 (JSF2.2, EJB3.2, JPA2.1, CDI1.1, AJAX) --- 5 days
- Architecture, technologies and issues of running projects using the Java Enterprise Edition platform... --- 1 day
All of them are workshop trainings, intuitively one would assume that they focus on skills. Let's see how they differ.
"360 degree" training courses
Java training for developers is a very wide-ranging training, covering both the Java language itself, the most essential APIs, including those related to communication with databases, and the basics of Java EE, which allow you to create web and enterprise applications. The training also covers the workbench of a modern programmer (git, maven, etc.), and also works on attitudes, as we practice creating unit tests during the training.
The broad scope means that those already functioning in the IT industry (the training is aimed at people who are already programming) will get a complete set of information (given in the form of a workshop) to further develop their skills on their own in their daily work. However, it can't be said that after this training the participant will be, for example, a proficient programmer of multi-threaded systems and will be able (without having to rely on the Internet) to solve any problem immediately. So in this sense, even though the training avoids dry theory, we can consider the training as working in the area of knowledge to the same extent as in the area of competencies and attitudes. We call such training 360-degree training, and we recognize it as a pillar of training professionals who, having outlined a complete horizon for them, are able to develop their skills independently. After trainings of this type, we particularly recommend post-training projects conducted by our mentors, which allow for full training of skills and attitudes, but at the trainee's convenience (so-called "after hours"). Of the trainings mentioned, "Modern Web Applications Based on JEE7 (JSF2.2, EJB3.2, JPA2.1, CDI1.1, AJAX)" is based on a similar premise, but addresses the entire Java Enterprise Edition ecosystem, which is very extensive.
"Kick-start" training courses
A somewhat similar type of training is kick-start training, but it is even more time-efficient. It is the minimum skill set necessary to implement the training in the selected technology stack. By force, however, some issues are given in the form of ready-made, proven formulas for proceeding, but there is no time for in-depth, collaborative analysis of architectural issues or very advanced aspects. Thus, these trainings work mainly in the area of (specific) skills. An example is the training course "JHipster - Spring, AngularJS and Bootstrap".
360 and kick-start trainings are particularly advisable for participants considering or preparing to enter a new technology stack.
"Foundations" training courses
In a sense, foundations trainings (usually 1--2 days) are similar, giving only a knowledge pill. They allow one to develop an overview at a general level, intended especially for architects and analysts. An example of such training is, for example, "Architecture, technologies and issues of running projects using the Java Enterprise Edition platform".
"Tutorial" training courses
The short form is also characterized by training courses of the tutorial type, they are designed more for pogrammers, focused on learning a given technology through an example given by the instructor and repeated by hand on his computer. These trainings take a minimal amount of time (usually 1 day) and are 100% practical, but do not give the opportunity to fully understand the technology and individual work of the trainer with the participant We practice them mainly in the form of workshops at the IT Station.
"In-depth" trainings
Another type of training is in-depth training, which discusses one problem or technology, but in a very in-depth way. An example from those mentioned is the training "Persistence layer based on ORM approach in JPA2/Hibernate", or "Programming multi-threaded applications in Java Training Code". These trainings work mainly in the skills layer and allow you to train all the most important aspects for a given technology.
In-depth trainings are especially advisable for participants who are struggling with difficulties in a project using a particular technology or are interested in improving efficiency.
Job preparation training
The next type of training is most easily described by comparing "Java Programming (preparation for a profession)" training with "for programmers" training. At first glance, it seems that the difference is only in scope. Training to prepare for a profession does not assume any programming experience, so it requires the delivery of additional knowledge, and at a pace, as those with little or no experience certainly need more time.
In practice, however, this training is one of the few that deals with emotional goals on an equal level with skill-related goals. Participants in such training inundated with extensive knowledge and difficult tasks will not become brilliant programmers. In this group, a much more important goal is to build their self-confidence, i.e. to show that they can actually find their way in the programming profession. We do this by addressing the basics of programming in a very thorough and calm manner, so that participants feel at the end of the training that sooner or slower, but they are able to implement any problem presented to them.
The second goal is to develop the right approach to work habits and workshop from the beginning, which is particularly difficult to develop on one's own for those without experience. A foundation built in this way will allow further independent or training-assisted development of this group of participants. These trainings are particularly demanding of trainers, requiring not only professional experience, but tremendous coaching skills.
"Team skills" trainings
The last group of trainings are what we call " team skills" trainings, which are trainings that work mainly on attitudes. An example of such training is, for example, "Test-Driven Development in Java." Perversely I will say that this training does not result in the gain of a great deal of knowledge, nor does it focus on skills, although such skills by the way provide.... So why consider such training?
I think that a full description of the benefits of this type of training of which there are definitely more in our catalog requires a separate article. In the skin, however, I will try to outline intuitions for this particular training. Attitudes in the workplace (such as caring for clean code) can have a greater impact on overall efficiency than the acquisition of specific skills. On the other hand, however, changing attitudes is very difficult and requires long-term work. In TDD training, nazsa knowledge will indeed not accrue --- in the sense that all the basic "knowledge" is to be read on Wikipedia, we will not acquire complete skills, in the sense that in our projects at work we may be using specific technologies, or libraries for testing, which can be mastered in other, dedicated training. However, the work of the training focuses on developing and consolidating attitudes in such a way that when we return to work we automatically "start working in a new way."
Evidently, a correlation can be found between time, scope and objectives in the knowledge and skills layer, as shown in the figure below.
The model for constructing training goals presented in the article is, of course, simplified enough for a non-professional to crystallize his goals. In our internal work, we need to rely on a more in-depth knowledge of how people build their competence "from zero to hero." This knowledge may not be necessary to correctly define training objectives, but it can be helpful in understanding the criteria for selecting the scope of material and how to implement the workshop in the specific training we are on, so it will be covered in a separate article.