There is one thing that I’ve always done in my life. And I’m not talking about things like breathing.
I’m constantly learning new things. And one thing that I’ve come to understand is that I also like teaching things.
Back in high school when I told my maths teacher that I want to study physics he replied: but why?? 😂 He said: you want to be a teacher? And I replied: jeez, no! Which, in hindsight, I realize was super untactful. Seeing how I was speaking with a teacher and all 😬 . I wanted to be a scientist.
He also told me to go study at a faculty of electrical engineering and computing, because that’s where the money is. Oh, how right he was 😆 .
Listen to your peers. They do know better.
Don’t get me wrong, I love physics, and I don’t have many regrets about doing that. I met the most amazing people I have the privilege of calling my friends. It’s just that I think, given what I currently work with, computer science might have helped me out a bit.
Then again, who knows what would have happened. I most likely wouldn’t have the same outlook on life. It’s the experiences that shape us as individuals. Which brings me to the point of this article. Mentoring also influences people. Bad mentoring as well as good mentoring.
How to become a mentor?
One of the things that I’m happy I’m able to do at my current job, is to transfer knowledge to my colleagues. In fact, it’s encouraged thing to do. No matter what your ‘rank’ is. You can be a junior engineer, and you found some interesting tidbit you’d like to share with others? Great! Go and do a standup!
Knowing things is great. I think that it enriches our lives. Learning new things means broadening your horizons. Not only in the field that you’re in. This is a key thing that people often miss. Sure, you can be a great professional about a certain matter, but that can come with some negative side effects.
You can get stuck in just one mindset. You can exist in your own knowledge bubble. And you can become cocky, and arrogant. And in turn, you can turn people away from you, or from participating in your field. There is a prominent example of one such person in the IT industry, He is a brilliant man that knows a lot. You can say that he revolutionized our industry. But his communication style is often toxic and dismissive. Which has turned people away from participating.
This is not a trait of a good mentor. Or a teacher.
Teaching vs mentoring
Is there a difference between the two? Both are examples of knowledge transfer. And both expect the person doing the transfer to have experience in the subject. But there are obvious differences (in my opinion).
Teaching is the act of knowledge transfer to multiple people at once. Think of your school systems. You have one teacher and multiple students. All get to learn new things. The matter is usually not covered in depth. But you get the general gist of it.
These days teaching is moved online. Whether live using online meetings or using tutorials. Teaching will show you how to do something, or show you an overview of how some things are the way they are.
For instance, my site, for many years, was used as a way for me to teach developers in the WordPress community how to do develop certain things in WordPress. Creating meta fields, using AJAX, etc. I had some knowledge that I acquired through the years, and I wanted to share it with people. Writing them down seemed like a good way to do that.
In contrast, mentoring is a more personal way to transfer knowledge. It’s mostly confined with two people at a time. A mentor will use their knowledge to help the mentee out with some problems they are having. And in doing so, explain to them why things work the way they do in more depth.
Mentoring is often more powerful than just teaching. You have a sense of obligation to the person you’re mentoring. You want to help them out but also lead by example. Try to inspire them to seek out answers for themselves, and try to learn them how to learn.
I guess the most important thing, in the end, is not just learning how to do things. It’s also learning to learn new things by yourself. The AHA™️ moment that you get when realizing things is one of the most impactful things in life. The act of understanding something. It is a life-changing moment.
To me, these AHA™️ moments inspire me to share them with my colleagues. So these days whenever I learn something I just immediately share it in our Slack group.
Pitfalls of mentoring
Dismissing the question
Not everything is perfect. Mentoring requires a lot of effort. In a sense, it is similar to preparing a presentation. When you give a technical presentation you need to do a deep dive into the matter. Not only to better convey it to people listening but to be able to answer the questions later on. The same is with mentoring. Expect a lot of whys. The questions are great. They encourage conversations and can lead to deeper understanding and new insights. They show you how other people are thinking.
But when you’re mentoring and teaching, questions need answers. Unlike philosophical questions that usually work as a great way to uncover things, teaching questions are more concrete. And usually have answers. So you, as a mentor, must be able to answer them. Which is also a great way of learning yourself.
Failing to answer the questions could make your mentee doubt you: why is this person mentoring me if they don’t know what they are talking about. Not knowing things is fine. We can’t all know all the questions. And there will be a time in your mentor life when you’ll be like: Hmmm to be quite honest I don’t know the answer to that question.
This is the case when you should say: I’ll try to find out and get back to you. Your learning phase. This is where you showcase what it is to be a mentor. Constant learning.
The possible pitfall here is that you might be tempted to dismiss the question.
It’s not important.
But it is. Otherwise, the person you’re mentoring wouldn’t have thought of it.
My way or the highway
Pride is a tricky beast. Our ego can get in the way in many situations. I am an expert on this thing. I know the best! Do as I tell you or don’t do at all.
If your mentor does this, walk away. The ego has no place in the mentoring process. Mentoring is all about learning. Learning is about humility. Finding out how things actually work and why is a humbling process. The one that fills you with joy, and the passion to share it with others. When somebody tells you that you should just do it, without explaining to you why – that is usually a red flag.
You can easily see this in pull request reviews. In the company, we had several presentations on how to do pull requests and reviews. We’ve gotten the feedback that sometimes reviews can be harsh, or lacking meaningful instructions on what to fix and why.
My rule of thumb when finding some potential issues in the code is to always ask why a change has been made. Often times I don’t know all the intricacies of the system. Maybe that really was the best way to solve the problem. Reviewing code is also a great way to quickly notice code smells yourself. If you do it long enough you start to recognize certain patterns that will just feel odd.
You should always ask and explain why this could/should be changed – maybe it’s not fitting to the set coding standards, maybe it could have an effect on performance, etc. Always explain your point of view. And try to explain without being boastful about how you know this, but the person who wrote the code doesn’t. Never ever shame people for not knowing things.
When you want to mentor people, and you want to be a good mentor, you need to throw your ego out of the window.
Too much theory
This one has happened to me a lot of times. I like to read a lot. And when you read, especially technical literature, you get ideas. Great ideas that were already tested by smarter people in other languages and projects. And we should totally use them. Or should we?
On paper, they do sound amazing. But we’ve done things without them for years. And we did fine. Why do we really need them?
One concrete example was trying to use dependency injection in our WordPress projects. Why do we need it at all? I mean the concept is solid (no pun intended). But most of the time, my colleagues didn’t really need it. I needed it because I was working on a complicated decoupled project. And I needed to have tests in my project. And if you ever wrote tests, you know that the only way of having a testable code is to be able to replace certain things in your code with mocks. I don’t want to call the real API when running automated tests. In comes dependency injection – if you’re testing, just replace the real implementation with a mock one and your code is super easy to test. Oh btw, I wrote an article about that too, go check it out 😄 .
But if I don’t have tests, I don’t need it. At least that was the argument I was getting from some of my teammates. And you need to get creative. I had to think of the use cases where using it really makes sense. And to be honest, if you’re working on a simple presentational web you’ll most likely never need it. And you won’t write tests. Your tests will be just checking if everything looks like the designs. I could argue that you could write end to end tests with Codeception, but I’ll leave this for another article 😄 .
You also need to know when to apply the knowledge you learned. Don’t try to cram everything everywhere. This one I’ve learned from my colleagues 😄 . Don’t overengineer. This one is an easy trap to fall into.
There are projects where you’ll be happy you have tests (mostly backend related, when you’re dealing with tons of integrations and business logic). Where you’ll need to think ahead with the architecture, using design patterns and SOLID principles. There will also be projects where you’d want to turn something very quickly to get the client and show that you can do things fast and good. Pick your battles.
When teaching some high-level theory, back them up with concrete examples. These will make it easy to understand by your mentee.
Did you succeed as a mentor?
How do you know when you are a good mentor?
One of the indicators will be that people will want to turn to you for advice. When they have a problem they’ll want you to help them figure it out. And slowly, over time, they’ll start to showcase the same passion about learning that you have. They’ll start sharing things they found out more and more. They’ll start to behave like a mentor, helping others.
There is nothing better than seeing someone you’ve helped helping somebody out.
Final tips and tricks
Being a mentor isn’t easy. Motivation is key. If you’re not motivated, don’t do it. You should have the urge to share your knowledge with others.
You need to be open-minded, not having prejudice when being approached by people. Don’t be condescending. Just because you know something, doesn’t mean that all people do. Not everybody came from the same place or starting point in life. Know your privilege.
I am very lucky that I am able to learn things and share them with the world. Be kind and help out.
Getting involved with big open source projects is a great way to learn. There is a growing trend about open source and exploitation of large companies by open source contributors, and we should be mindful of that. But I think that if you find the right balance, you can learn a lot and gain valuable experience (I certainly did by being a part of the Themes Team at wordpress.org).
And finally, go learn and share your knowledge.