In recent years, many online courses have appeared, which promise to teach programming even a monkey. Some companies create whole training platforms with interactive tasks, checking real-time results and achievements. Gamefication ideally falls on products in the field of online education: it’s fun, convenient, fast. In a couple of weeks, your profile says that you have completed the “Ruby / Python / Java Path” and it seems that everything is ready to search for a job.
Apart from one small detail: you have absolutely no experience. Like the portfolio, which includes at least one more or less worthy project, to which you can link to a potential employer. There is no list of contributions to Open Source. All that you have is the experience of solving primitive tasks inside someone else’s interactive shell that is weakly applicable to real life. You are at a dead end, and in your head dozens of questions come up one by one:
- How does X work? Do I need to know in detail how X works?
- How to start writing in open source? In what projects?
- How to write tests and with which library?
- What to cover with tests, and what not?
- What books to read? And read it?
Long hours of digging the Internet, reading articles and answers to Stack Overflow, often contradicting each other, do not give effective results. And while you barely make your way through these jungle, squeezing out the lines of code for your first real application, one, the most important question does not leave your head:
– Do I not write full shit?
You write. Like any newbie before and after you. This is normal. Through it passes not only each developer, but in general any specialist in any area. Simply, you do not have enough advice and help from a senior developer, without which you can fuss yourself for a very long time until you invent a bicycle.
You need a mentor
Each of us has mentor (or mentors), and from an early age. It can be parents and teachers in the school, and coaches in the sports section. Arnold Schwarzenegger in the foreword to the book “Tools of Titans” wrote:
… it is not true that I am self-made. Like everyone, to get to where I am, I was kept on the shoulders of giants. My life was built on a foundation of parents, coaches, and teachers; Of kind souls who I could sleep; Of mentors who shared wisdom and advice; Of idols, who motivated me from the pages of magazines (and, as my life grew, from personal interaction).
Our career, our successes, and life in general, depend on mentors, whom we were fortunate enough to meet. The world of IT is no exception. I was lucky: throughout my career I had mentors. If not the career itself, then at least the pace of its development, I owe it to them.
What can a mentor help overcome a difficult initial stage?
Answers to a ton of questions
Perhaps one of the most important components is the answers to questions. The less experience a person has, the more questions he has? And the more difficult it is to formalize these questions in the correct search query.
Every year, Google is getting smarter. If you ask him: “How old is Tom Hanks?”, Then you will get the answer right away, without going to the Wikipedia page.
It will take years before he as dexterously can answer the question: “Which library should I choose for authorization in the Ruby on Rails application?”.
Mentor can answer this question instantly, based on his many years of experience and knowledge, and this will be a detailed answer with all the pros and cons.
In addition, when we learn something, to achieve an effective result it is important for us to receive positive reinforcement. The student should be able to ask any questions: from purely technical to something in the spirit of “do you think I have a chance to find a job as a programmer at my age?”. Try to ask such a question on a public forum – hardly in return you will receive positive reinforcement. And this can not only injure, but generally discourage the desire to develop. Mentor will not allow this. In addition to dry facts, he can also tell an interesting story from his practice, and push motivational speech. Beat that, Google!
Another important task of a good mentor is to check the code of the student, code review. A responsible, experienced programmer knows that making a review of code is no less a difficult task than writing this code. After all, you need not only to understand the written decision, but also to think whether there is another solution. And also to offer all possible improvements for the code, not counting those that are handled by automatic analyzers such as Rubocop.
Instead of offering a ready solution, the mentor can push in the right direction and refuse to accept the code until it is perfect. This approach is very effective, and it prepares well for independent work in the future.
Goal adjustment and training programs
Answers to questions and verification of code is, rather, a routine of mentoring and far from what you need in the first place. You need an individual training program that is right for you. What, and in what order to teach, why this, and not another, etc. And here the advantages of mentoring are revealed 100%.
The only thing that is required from you is an understanding of your goal, and the task of the mentor is to do everything to achieve it. The goal may be: “I want to get a job as a Java Junior Developer by the end of this year.” Mentor will do everything for you to do it: teach, check, tell about the nuances, help to make a resume and fill the portfolio, prepare for the interview. You are not engaged in nonsense like finding the right Java-courses, do not worry about whether you are doing everything right, do not rush along the boards in search of a good Samaritan who will take you to practice with someone else’s code for experience – all this is done by a mentor in one window.
But, unfortunately, the emergence of a mentor in the life of a programmer – this phenomenon is mostly random and strongly depends on luck. You can be lucky with smart colleagues, who, to the extent of experience, wisdom and, most importantly, the desire to waste their time on your training. And maybe not lucky.
So how do you find the right mentor for yourself?
There are two options that depend on the current experience:
If you already work as a programmer, the most obvious way is to look for mentors among more experienced colleagues. At a minimum, if your company has adequately configured development processes, you will definitely get a review of your code, which in itself is already an invaluable source of information (if properly done).
In many good companies, they are passionate about the development of employees. Everyone is given a direct manager, with whom tete-a-tete conversations are sometimes held to ensure that a person has not stagnated and still enjoys working.
You can learn from colleagues at your level, because the set of skills and knowledge is always different. Intra-corporate exchange of experience can be very useful.
However, it is more likely that you may be treated casually to the code review, the status of your colleagues is based not on knowledge, but on the time of being in the company, and to spit on the experience for everyone. That is, if you are not lucky with the company and colleagues, then you will not be able to benefit from the mentoring plan.
At the same time, do not forget that you work with these people every day and the environment greatly influences you. You need to notice in time that your colleagues are pulling you to the bottom rather than helping to grow. In this case, you need to either leave in time, or look for mentors elsewhere, and already with the help of external mentors to become steeper than all of their colleagues. From here we come to the second place of the search for mentors: the Internet.
In the Internet
This is perhaps the most difficult option. Its advantage is that you have more control. Still, you have your colleagues once, twice and fellows, and people on the Internet have an unlimited supply. Yes, there, in many respects the mentor will be replaced by that information-packed Internet. But here we remember that the ability to correctly ask questions and filter the information received comes with experience that you do not yet have. Therefore, we need better methods.
First of all, of course, you can climb on any thematic forums: Quora, Stack Overflow. There are already full questions in the spirit of “where to start”, “what to teach”. And you can (surprise) ask your question and even get an answer. And then, armed with the instructions received, try to learn everything on your own, periodically peering with a new set of questions on the resources mentioned above.
But this, of course, does not compare with the presence of a mentor. After all, the mentor, as we know, not only sets the direction, but constantly adjusts the course. Who, if not a mentor, will tell you that you are engaged in total garbage?
Therefore, in order to maximize the effect of learning, you need to search the Internet for a more interested and permanent mentor, rather than an occasional adviser on forums. Where can I get this?
Often experienced developers have on the side of their small project, which they may hope to once turn into a good source of income, but for which they absolutely do not have enough time. You can focus on finding exactly such a developer, creating the appropriate topics on the forums and resources announced above. And then ask to work on his project for experience – with the condition that in exchange for work you will receive mentoring.
Often mentors themselves are looking for themselves students or assistants. A good developer understands that through the training of a less experienced programmer, he improves his skills. In addition, it is much more effective in the long run to independently grow an assistant, than to look for a ready one who knows who and what he taught. This should be taken advantage of. Pay attention to the public profiles of developers in communities, forums, social networks. Often it appears that they are mentors. If you do not follow the life of the community, then it’s time to start. Subscribe to blogs, mailings, personal pages of developers from your sphere.
Nothing complicated in this – we go to the same facebook groups, themed chats in Slack and Telegram, Google Groups, Issues on Github and write: “I’m small and stupid. Please, I beg you, take me as a helper, I will help you, 24 hours a day, to help you in exchange for your invaluable experience, instruction and control of my skills. ” Exaggerated, of course. The more you tell about yourself, the more likely that you will be noticed. So do not limit yourself to dry “looking mentors for Ruby.” Mentors are also people, and the basis of mentoring is first and foremost human communication.
Such a search for a mentor can take time, and most likely, you will have several unsuccessful attempts. The task is not simple, with a large number of variables and in general depends largely on luck, even if you ask for a purposeful search. But it is possible that as a result you will find yourself a mentor for many months or even years ahead.
The presence of a mentor in many situations is not only extremely desirable, but also necessary. Having seen a few years ago that there are plenty of courses on the Internet, but there is no real personal communication with the mentor anywhere.
The main thing is not to confuse mentoring with courses. Courses, articles and books on the Internet are already full. I would even say too much. But the mentor, who will help to find a link between all of them and build a clear route in this labyrinth to the ultimate goal, is not so easy to find.