How do you keep up with a working field that is constantly evolving? To satisfy her curiosity and fill up her knowledge gaps, funda’s Software Engineer Elitsa Vrancheva asked a senior colleague to be her mentor. Here's why it might be a good idea for you to do the same.
IT is a very dynamic field and you need to know tons of concepts, technologies and patterns to make the best choices when developing software. One way that I found useful to expand and solidify my knowledge in the field was by having a mentor. For a few months, I had mentoring sessions every other week with Tobias (Senior Software Engineer) where we deep-dived into common problems, patterns and technologies. We picked the topics together beforehand and for an hour we sat together to share as much knowledge as possible.
Here are 4 reasons why mentoring sessions are so useful:
1. Accelerate knowledge much faster
I found that dedicating an hour once every two weeks to address all my questions and uncertainties with someone that has a lot of experience in the field accelerates growth immensely. The mentoring sessions provide an interactive way of learning and by having a dedicated hour to explore topics in depth I could understand the crux of things quickly and avoid hours and hours of studying/researching by myself.
See also: 5 reasons we believe in testing our products as a team
Some of the topics that we covered during our coaching sessions were the different types of software architectures (e.g. monolith, microservices, event-driven, event-sourcing) and their pros and cons, common patterns and anti-patterns in building APIs, and how to set up CI/CD pipelines. After addressing these topics in our sessions, I felt so much more confident about them.
2. Expand knowledge in an easier way
There are tons of sources you can find to understand different technical concepts, technologies and patterns. However, most of the time, the concepts in these sources are overly simplified and highly abstracted. In the real world, software systems are far more complicated, and the details and specifics of the domain/systems really matter. Therefore, sometimes it might be really challenging to take the essence of the contrived examples and apply it to your work.
What we found out during our mentoring sessions was that using examples from projects we are working on (instead of contrived examples) made understanding concepts much easier. The reason is that we could focus on understanding the concepts, without needing to implement them beforehand or adapt them to fit our domain.
3. Gain experience without having to experience it
While I do believe that running into issues is one of the best ways to learn, the mentoring sessions helped me to gain experience in a less stressful way. Discussing ideas, solutions, and their potential impact with someone experienced is particularly important because it prevents you from making the same mistakes that have been proven not to work. When you do not have extensive experience in some topics, you are likely to make choices that might not be as future-proof as you think.
See also: Game changer: How experiments improved our team's processes
For example, in one of our mentoring sessions we were discussing Event-sourcing architecture. We touched on the point that it is sometimes possible to receive the same message more than once. If that happens you might end up having inconsistent data (e.g. if another message was sent in between them). Therefore, if you are developing software that relies on data being extremely consistent (e.g. payments software), Event-sourcing architecture might not be the best choice.
4. It is fun!
It was very inspiring to me to see how much I could learn in an hour. After every mentoring session, I could not wait to apply my knowledge. This is honestly one of the best initiatives that I have ever started, and I recommend it to everyone.