After doing so many workshops and trainings both at corporate levels to experienced developers to students in colleges, I have realized that teaching is more of an art than science. Of course you have to know your stuff in and out with good depth. This is the first prerequisite before you stand in front of the participants. There is no short cut, no magic wand to help you out if you have not done your homework. Still if you find a question which you don't know how to handle be honest. You are not god so be humble.
Now we will concentrate on what I have found is useful to teach technology subjects like Java. However I feel this is true for any technical subjects. I am drawing a line here in terms of teaching technical subjects vis a vis non technical subjects. The technical subjects especially in software engineering can be differentiated from teaching other subjects in following terms: Once you have landed with an assignment for a workshop, do the following:
- Understand the technology stack in which you have to impart training: This is very important in terms of getting the expectations in line. In Software technology the frameworks and versions are always changing. People might be using different tools than you are comfortable with. In this respect it is very important that you work with the coordinator from participants side to zero down on the right versions and tools. Also it's useful to understand the rationale on the basis of which participants have reached to a certain stack. Sometimes people go for outdated technologies because they are working on a maintenance project or they might be shifting to project where the technology stack is not upgraded. But there are times where people opt for older versions and tools just because of lack of understanding of the space. They want to learn a technology but because of outdated articles still ruling high on search engine leads them to choose the wrong version. So understand the end result that the participants are targeting.
- Make sure you talk to the relevant technical people directly at least once: Please do not ignore this step. Usually there are marketing people and non technical coordinators in the middle negotiating the trainings. And they are good in their job. To sell the training and to negotiate the dates, prices and logistics. But they do not understand technology. That's not there job. So in this context it's important that you talk to the relevant technical people directly and understand their needs. This is again about above point in setting the expectations right.
- Design the content yourself and make sure it is approved by relevant technical people: Expectations can be matched at broader level but still a good understanding of the flow of the workshop should be clear. Outline the course flow at least on broader topics. The participants might provide their initial content and you can build on top of that to finalize the thing. Make sure to outline all the tools with versions which you will be using in the workshop. If it is open source and free, provide links to download. Also you might want to provide steps to set up the lab for the workshop. A good format for course content design can be:
- Day wise breakups of
- and their download/relevant site
- Understand the background of participants: This I found always tricky. The batches are usually not uniform in terms of experience and expertise. Even in college batches the crowd is divided between smarted and happy go lucky kind of fellows. But have an idea of the crowd you are going to face. Design your content in such a way that if required you can vary it so that participants get comfortable with the concepts. The problem usually comes when people do not have the required prerequisites so you might want to give a quick refresher on basic things. But make sure you don't loose the focus of the workshop.
Once you are done with the above steps be ready with your presentations for the D-day. Only your hard work is going to help you into this. Also I have found it useful to develop your own course material. This has an advantages that you know your story. If you are using someone others material and try to present you may not feel comfortable. However I will leave this as a choice. The preparation of training material is a personal style. You have your own notions of comfort.
Now you are ready with your training material and standing in front of the class. Some of the things that might help you in making the flow smooth is:
- Understand the background of participants: Some trainer use it as a ice breaker also. But I see it as an important step in setting the tone of the class. Spend some time in understanding each participants background in terms of their skill set. Especially what kind of tools and technologies they have used. What projects they have worked on. This will help you to get a clear idea of the nature of participants and this is going to help you for next couple of days for the duration of the workshop, to set the flow and tone. If it's a batch of fresher for the technology you might want to work more on building the basic concepts. If it is a relatively experienced batch you might want to focus on the advance concepts. Most of the time the batch is mix so you have mix your strategies. No two batch are same.
- First hour is crucial: I have realized that in any workshop first hour is very crucial. You might be teaching rocket science but make sure people are comfortable with your approach. Do not start throwing jargon at the drop of a hat. I have found it useful to make it clear to the participants about the broader context in which the technology exists. Relate the need of the technology to the real life fitments. Where this technology is used and what kind of problem it solves? Make sure your participants understand the ecosystem of the technology.
- Hands on Approach: I have found it extremely useful to deal with the concepts. For any concept first explaining it quickly. Do not spend too much time in explaining as most of them will see it a host of jargons coming to you. Than give a small exercise which they can do hands on. Make sure the exercise is designed in such a way that it can be implemented easily. I discourage copy and paste. Copying and pasting shields many smaller points. Better put the code in slides in front of the participants so they can take a cue from it. You can modify the example a little bit so that people have to apply their thoughts while building the example. Keep explaining each slide in details. Once the code is running explaining the full flow till the class is comfortable. This is an iterative process and be ready for it till the participants are comfortable with it.
- Give comprehensive exercises: When giving exercises give comprehensive exercises which span more than one concept. It's not necessary that people should implement it completely but at least they are able to come up with broad design and relevant artifacts. For example in case of a program they can come up with list of classes, interfaces and able to explain the flow clearly.
- Engage the class: Try to accommodate all the participants. There is usually a small minority who are never interested. Try your best to engage them but not beyond compromising on others. You will find fast learners and slow learners so devise strategy to engage all of them. The fast learners might do the exercise earlier so give them more variations to solve till the slow learners catch up. Also another dimension that I have useful to segregate the participants is in terms of inductive and deductive thinkers. The inductive thinker first understand the broader picture completely and than understand the small pieces building the big picture. Deductive thinkers will understand the small pieces as and when they come and after putting all the pieces will appreciate the full picture of jigsaw puzzle. So have in your iteration of explaining concepts include explaining the big picture and the smaller pieces.
- Provide references: At the end of workshop provide references which people can use to know more about the subjects.
Hopefully this will help you in running your workshops better. I have not tried to cover skills like speaking and all as they are generic and common for any kind of speaking assignments.