Software Engineer Coaching With The Socratic Method

Teaching is a lesser flexed muscle of the software developer. Yet, being a strong teacher can enable a strong team and a strong career.

As software developers, we’re always teaching each other. It’s a core part of what we do. Yet, most developers get little formal training in areas outside of software developing. Most developers wouldn’t think to read a book on teaching to improve their career. But, doing just that could make some profound changes to your career and your team. 

Throughout our careers, as software developers, there is plenty of areas we’re expected to be good at:

  • Writing Code
  • Public Speaking
  • Leading
  • Managing team
  • Innovating
  • Teaching
… the list goes on.
 
For most software developers this can be great fun, or sometimes a source of stress.
 
The centre of the developer universe is hard skills. Yet, the other peripheral skills (such as teaching) often get overlooked. They can have a profound effect on the impact we make as software developers.
 
When it comes to teaching, there’s one method that I’ve found to be very effective. I’ve seen this method mentioned by many high profile software developers too.
 
What method am I talking about: The Socratic Method.
 
The method originates from the Greek philosopher Socrates. When Socrates taught students, his unique for the time.
 
Socrates taught not by answering the questions given to him by students … but by asking the student more questions in response.
 
Why? Because asking more questions in this fashion is more effective. Sometimes a little painful for both the student and the teacher. Yet, effective nonetheless.
 
The method employed by Socrates we can use in our daily teachings. Whether we’re explaining the code in passing, during a code review or in a formal teaching setting.
 
The best way to understand the Socratic method is to see it in action

The Socratic Method in Action

Example 1: Non Socratic style of teaching

Student: “My function isn’t doing what I want, can you help?”
Teacher: “You have an error on line 5 – use join, not concat”.
 
Did you think that’s a good response from the teacher?
 
This is a very common question and response in daily work. You might feel helpful, but you could be a more effective by dabbling with the method of old Socrates.

Example 2: Socratic style of teaching

Student: “My function isn’t doing what I want, can you help?”
Teacher: “What do you want the function to do?”
Student: “I want it to concatenate this array?”
Teacher: “And what method concatenates two strings?”
Student: “I’m not sure?”
Teacher: “Well, you’ve used the concat method, can you explain that method?”
Student: “Oh! I was using concat, not join!”
A little different, right?
 
One of the most notable things immediately is the amount of time/effort expended in example 2.
 
This is one of the reasons we don’t tend towards this method of teaching, it’s longer form and usually more effort.
 
Yet, the effectiveness derived from the teaching far exceeds the time invested.

4 Benefits of the Socratic Method

Why the Socratic method is so effective for teaching.

  1. Student Insight Using the Socratic method highlights the teachers’ logical patterns. The teacher has a method to their debugging, they step through each part. By doing so the student learns this same logical process. As a result, the student learns more than the content itself.
  2. Better Recall The brain makes connections as it learns. This is why associating a name with an adjective helps recall of the information. “Silly Steve” or “Active Andrew”. Giving the answer outright is like giving someone only your name. Yet, if you give them your name and an adjective, the individual stands a better chance of recalling.
  3. It Builds Independence As you take the student through the process, they learn to do it themselves. You are “teaching a man how to fish” as opposed to fishing for them. When you give only the answer, they still have a reliance on you as the expert. As a software developer, it should be high on your priority list to not make yourself a bottleneck. This is one of the key tenets of scrum.
  4. It Helps Clarify Steps Often developers ask for help without describing their steps. But with this method, soon the developer will start providing better bug reports. Why? When giving such detailed reasoning all the time – the process becomes subliminal. The student will start going through the steps themselves first. This builds a strong internal problem-solving narrative. Rather than the “it-doesn’t-work-oh-shit-grab-someone” mentality.

4 Anti-patterns of the Socratic Method

Easy hurdles to fall down on, using the Socratic Method.

  1. Repeating The Same Question If the student is stuck, it’s tempting to repeat the question. Yet, after doing this a few times, the student will likely become frustrated. Try to come up with new ways of getting the same result. Ask different questions, or come at it from a new angle. Give away half of the answer. Whatever you do, be patient and try to get the student to the answer on their own.
  2. Not Letting The Student Know The Socratic Method can be contentious. Students could be mistaken in thinking that you’re being a jackass on purpose. You want to avoid this. Try letting the student know before you quit your “answer questions immediately” job.
  3. Overuse Using the Socratic method all the time isn’t practical. Sometimes it pays to give a quick response. If you have to provide a short response then do so. But follow up with explanations later if you can. Sometimes with a deadline or sprint end in sight, it’s better to opt for the simple answer.
  4. Caving To Pressure It’s likely that your student might try to convince you to give them the answer. Rather than adhering to this request, wait it out a little longer and try to see if the student can find the answer. If necessary, refer to point 2 and remind the student why you’re not going to give them the answer outright.

Conclusion

Next time you get asked a question – instead of giving them the answer, try the Socratic Method and see how you fare!
 
Be patient, it takes time. 

What other methods do you use for more effective teaching?

Lou Bichard