Photo by John Schnobrich on Unsplash (Edited)

The journey of discovery

An inclusive method for helping impart my knowledge

Passing on knowledge

It’s perhaps useful to define how I mean “learning”. I am reasonably good at remembering wrote data; if I do not remember it directly, I write it in some sort of easily accessible medium, and keep references to that medium in my head. However, it is not this sort of rote learning that I find retains much value.

Setting sail on a journey

The knowledge I have was all largely accrued in the same way I am learning about math; it’s a journey of discovery, reading and rereading many different topics from different people.

Making metaphors concrete

The above metaphor describes the approximate shape of how I will try to bring about learning in others, but does not go well into detail as to how to do this on a day to basis. There are a few things I would hope to express that may make the above easier to understand:

Teach by asking questions

The goal of the teacher is not to pass on knowledge directly, but to understand the gap between the learners knowledge and the teachers, and create a set of questions that will lead the learner to a given answer.

  1. Using some pre-compiled docker setup: Can we get this project working on your machine? Oh! It doesn’t work? Let’s do some Googling!
  2. Finding some bug in this setup, and fixing it: Ah! It looks like the database fails to update. That’s interesting. Let’s find out why!
  3. Shaping the design of this docker setup: We have a new project! Let’s work together to fit it into containers
  4. Deploying this docker setup on Kubernetes within a strictly defined framework: We need a new documentation service! Would you like to implement it?
  5. Finding bugs with this framework: We need to implement backups for this service. Can you see if you can see how that works and implement the required changes?
  6. Defining the entre framework for a project: We need to migrate ${PROJECT} to Kubernetes. Do you want to be responsible for this?
  7. Finding bugs in the Kubernetes project itself: Hmm it looks like this container doesn’t start on node-01 . Can you look at why?
  8. Finding bugs in the Linux kernel / Docker: It looks like the container from build-12890d doesn’t work. Can you look at it?

Giving away correct answers

I have been surprised an almost endless amount of times by the conclusion that fellow developers reach. However, it is not my role to be the arbiter of what seems logically correct. I will challenge the logic of a colleague, but if it seems sound and internally consistent, even if I do not understand the solution I will approve it.

Allow Mistakes

Perhaps the most difficult of all the ways in which I try to allow people to learn is to let them make mistakes that I can see coming. Often, there is a particular set of knowledge that I’ve not been able to communicate across, and a learner will implement a solution that I will see a flaw.

In Conclusion

As we grow and develop as a development team, it’s inevitable that we spend a progressively larger amount of time passing our knowledge onto new colleagues and partners. By taking some time to be deliberate about how we pass on this knowledge and to try and optimise our delivery we’re able to accelerate the rate at which that knowledge is used, and reduce the pain that our colleagues will have to endure to be as effective as possible.