Mentoring Personal experience

Mentoring Personal experience

Mentoring is a type of learning, when a more experienced person transfers his knowledge to a newbie.”

It’s no secret that mentoring is a very good way to train technical specialists. It is much more effective to be “led by the hand” than to spend hours searching for an answer on Google or watching a video. There are many advantages of this approach, for example:

– for an employee: the opportunity to learn experience, feedback, real cases;

– For a mentor: mentoring/teaching experience, the opportunity to fill in your knowledge gaps, fight against the “impostor” syndrome (after all, if you teach, then someone needs your knowledge and experience);

– for the company: transfer of experience and knowledge within the company, trained employees;

and more.

I have been working as a programmer since 2014. During 9 years of work, I had several mentors in different companies, there were also cases when I was the mentor.

I would like to share my personal experience in story format. How the learning process went, what my mentors did and how it affected my career.

1. First experience in IT and first mentor

It was 9 years ago, I was actively looking for my first job. I think many people had the same situation at the beginning of their career: you study theory, do pet projects and go to dozens of interviews, but the benefit is zero. But then there was such an interesting and unusual interview that I truly understood its true meaning when I myself had “students”.

For one and a half (if not two) hours, we talked about everything in IT, except for technical issues:

– “How are business processes organized in the company”;

– “But if you had to write a program for [Название отдела]”;

– “If you were the head of proceedings, how would you start your day”…

And so on, only with each question everything is more and more difficult. No technical question, no test problem – just theory talk. After that interview I was in prostration and my brain was just boiling. But within a day they told me that they were taking me!

Why was it necessary?

Often, Soft Skills are much more important than Hard Skills. Technical skills can be caught up with courses, literature and working with a mentor. To add a +1 button to the interface, sorry, you don’t need a lot of intelligence. But it can take years to develop Soft Skills.

This was the opinion of my interviewer (aka manager). What was especially important to him:

1. Presence of critical thinking.

2. Analytical capabilities. It is important that you understand the root cause of the task. Returning, for example, with a +1 button to the interface, is it necessary to add it at all?

3. Abstract thinking. Can I visualize the business process model in my head. Realizing WHAT you need to write it, it is not so difficult to implement it in the code.

4. Organization and memory. Since it was a complex production with many nuances, will I be able to keep it all in my head and will I be able to maintain the software for several years in a large, growing company.

Where did I get a job?

Despite the fact that I had C++ at university, and I myself studied C#, I got a job as a 1C programmer. It was a large microelectronics manufacturing company. Almost all trade, warehouse and production processes were implemented on 1C. That is, we wrote an ERP system for the entire company. The department was just being born, the following people worked in it: my boss, he is a mentor, I and another 1 Jun. My learning process has begun.

Learning process

“There should be two of them, no more, no less. One is to embody power, the other is to crave it.” Star warriors.

Or as my boss used to say: “I like to talk about successful cases“. The basis of training was: passing on my experience, both technical and life; give me motivation to follow the mentor. And I can confidently say that I was interested, I wanted to achieve the same as the manager (maybe even more, I believe that healthy ambition is good).

The first 2 years of work:

– improve my technical skills, read literature and articles, read other people’s code;

– The mentor talks about business processes in the company, about his past projects;

– We practice pair programming. Sometimes for 10 hours a week, I looked (through a remote connection) at the mentor’s monitor, listened to his reasoning and watched how he wrote. Over time, pair programming became really pair, since I already knew some processes and could give hints;

– I do not implement complex tasks or add new functionality until I clarify or fully understand the requirements. Before I start writing, I try to put myself in the shoes of the program user;

– I attend many meetings with customers (other departments of the company) together with a mentor;

I’ll be honest, at this stage I was very often put off by such frequent communication with the mentor. But I saw growth (both skills and salary) and continued.

3 – 4 year of work (Middle):

The department is gradually expanding. They hire both experienced programmers and beginners (which I was). Now, like my mentor, I help beginners:

– I am familiar with everything that has been done;

– I check whether my “student” correctly understood the task;

– my mentor also pushes me to meet the requirements, but the tasks have become more difficult;

– The same training process is used for Senior developers, but to a lesser extent.

I can say that this format is not suitable for everyone. Many new colleagues found this strange, for example:

– “Conversations distract from work.” Maybe, but that’s part of the training.

– “Why dig into the requirements and reasons for the task, if you can just add a button, as the user asks for it?”. It is clear that it is not necessary to bring the analysis of each task to the point of absurdity. The main reference of learning is to develop an understanding of why you do something.

What did I learn?

For myself as an employee, I would highlight the following pros and cons of this training (mentorship):

Pros:

– the number of software revisions is reduced to zero, because at the initial stage you understood all the nuances. Of course, someone likes the process for the sake of the process and hundreds of tasks in Jira on the same topic, but in my opinion, it is better to finish the project and start the next one, sometimes more interesting or with a new technology. New experience – greater progress and career growth;

– you can start work even when there is no initial TK. Immersion in business processes allows you to better understand what exactly the customer needs;

– useful skills for growth: you can develop in different directions, for example, in PM, business analytics (I even had the opportunity to get a job in this direction, but the beginning of covid in the 20th year changed my plans a little).

Cons:

– It is necessary to communicate a lot, it is not suitable for everyone. Some would just like to sit and program in silence.

What does it give the company?

Pros:

– bugs are always fixed “at the root”. So that it no longer arises in principle;

– each developer is independent and very involved in the project. He can communicate with the customer and can formulate the TOR and then implement it. So to speak, “And one warrior in the field.”

There is also a minus. Much depends on the company itself. Developers should have some freedom in how exactly they implement certain requirements. In addition, it is not cheap, a lot of time is spent on “thinking”. I think this format is more suitable for those who write or refine software internally.

2. Stack change, June again (conditionally) and new mentors

As I wrote above, I learned C# for myself. And so, after 5.5 years of work in 1C, I had the opportunity to get a job at the same time as a part-time .NET intern. In a year, I changed the stack completely. I got a job in a small foreign company. My colleagues and I were developing our own product.

Technically, the new stack was an order of magnitude more complicated than what I was working with. But I was extremely motivated to go all the way to .NET, and I wasn’t starting from scratch.

Learning process

I will repeat, given that I did not start from scratch – by the code, it was even clear to me what and where it was. I even understood which line I had to add. But I did not understand why it was necessary to do this. Mentors helped here:

– For the first six months, they periodically told me why this or that was done, gave me tips on architecture and shared their experience;

– informally talked about the industry in general, which greatly increases motivation;

– Through the code review, I understood the theory. Interesting approach, I’ve never seen anything “done wrong” in my code review. It was always in the spirit – “but here it seems that such a pattern fits well.” Here is the article, respect it and try it, I think it should work.”

Despite the fact that I have read books on theory (for example, Gang of Four, Clean code) – some points are difficult to understand if there is no practice. This is mainly about patterns.

“Ah, so that’s what it was for, I was reading…”, arose in the head.

Now I understand how skillfully and casually they corrected my gaps in knowledge. It was always interesting and felt like continuous progress.

3. How I was a team leader for juniors on programming courses

There was also such a thing. I will not go into details, as this is a topic for a separate article. What I drew the attention of my students to (the same that my mentors gave me):

– it is important to understand business processes, the customer cannot always formulate requirements;

– it is necessary to think through the system first, only then to write;

– Information on technical skills: interesting articles, direction for further development and training.

Unfortunately, many Junes are not very interested in other people’s experiences. Most want simple take the oars sooner find out how to pass an interview and what knowledge is lacking for this or that vacancy.

In conclusion, I would like to say that I find mentoring very effective. In addition to the development of certain skills, the mentor also conveys his life experience. In addition, working with a mentor accelerates the process of adaptation in the team. Moreover, the company and the mentor have a positive effect.

________________________

Conclusions

Despite the vast difference in approach to mentoring in the two companies I worked for, the result (for me) was the same. A person with more experience should be interesting. He can share experiences or help develop technical skills. If you listen to him, absorb and accept what he says, you will gain a huge amount of new knowledge that is applicable in real life.

In my career, my mentors have helped me a lot, and I also try to share my experience. I hope it was interesting and useful.

Related posts