The story of a junior - how to start working and not be afraid of everything
From the translator: today we are publishing for you an article by Saida Aymen Batul , which tells how a novice programmer to overcome problems on the way to professionalism.
It seems to me that synonym for programming is a problem. And if you are a beginner, then you have a hundred times more problems than a professional. Studying various aspects of programming, creating a portfolio, practicing as a joon, and then doing real work on a project can all be a problem.
Skillbox recommends: A two-year hands-on course “I am a PRO web developer . ”
We remind: for all readers of "Habr" - a discount of 10,000 rubles when writing to any Skillbox course on the promotional code "Habr".
The positive thing is that by learning new things, you leave the comfort zone, your knowledge and skills grow, and as a result you grow professionally and as an individual.
We all heard success stories about a long journey full of struggle and study. Outside, for the uninitiated, programming looks like a perfect job. Even juniors, seeing the level of professionalism of colleagues, teachers, mentors, often think that all this can be achieved quickly and without problems.
In fact this is not true. Professionals have no less problems, they are more complicated, more complex.
As an example, I will cite two tweets of professional developers who taught me a lot.
Beginners-programmers are often not sure that they can become good professionals. As soon as we gain more experience, we relax, realizing that we will never be good enough.
From the very beginning, I tried to understand whether this was my calling, if I could become a good programmer. Often stopping, unable to solve a minor problem, I was disappointed in myself. But then she felt the new forces - after seeing that professionals are experiencing the same problems, only on a different scale.
The second most significant (for my career) tweet was as follows.
20+ years in development, eight written books that were sold out in hundreds of thousands of copies, 300 thousand hours of viewing my videos, 4 thousand students ...
And you know what? I still have problems with the performance of the code. And the code I still wrote confuses me the next day.
The paid practice I was talking about was offered to me by Outreachy. For three months I have been working with Mozilla on the Firefox health dashboard. During the course of my work, I realized that my fears and uncertainties in my career changed somewhat.
My work at Mozilla began with a power outage, so the meeting with my colleagues took place only a few hours later. When the electricity returned, work began. My colleagues were friendly, and the work was interesting, because I met with people from different parts of the world. Including, with mentors who told about the details of the work.
My first task was to put in order a sort of Trello organized in GitHub. In this project every now and then there were problems that I was assigned to solve. As soon as I started the assignment, it became clear that my previous doubts about the programmer’s career and complexity were only a pale shadow of what started later.
The most important thing is to understand the code.
My feelings during work were radically different from those at the beginning of the journey. Now the fear of “not getting into the stream”, not taking advantage of this opportunity has been replaced by the fear of spoiling their work and losing everything.
It was hard for me when, after starting work on customizing one of the graphJS elements, I immediately got stuck at some point. Initially it seemed to me that everything would go smoothly. But I was wrong, and I had to look for a solution to the minor problem for two days.
I asked a couple of questions for the mentors and tried to solve everything on my own. Then it seemed to me that I could not do anything, and it was depressing. But my mentors did not press, they gave confidence that everything will work out. The mentor helped realize: the most important thing I need to do is to improve my level of understanding of the code. This will allow to understand the essence of things. The “rubber duck method” is what helped me (by the way, the method was mentioned in another article already published on Habré).
“If you are“ stuck, ”no problem, we all get into this situation from time to time. Over the years and experience we have been learning to solve increasingly complex problems, but still sometimes we face difficulties, ”my mentor Armen Zambrano (a Mozilla employee) told me.
I share my personal experience
If we know where to start from, this is already half the battle.
When you start solving a task, in most cases, you can imagine what you need to do, and sometimes even the logic and method of implementing the solution. But often you don’t know where to start! You have a lot of files with code and functions, so you don’t know where to put the solution so that it just works. My mentor Dustin Mitchell suggested that I use comments to better understand the code and functions.
In the end, I coped with the problem, although the work was still not perfect. Soon, the task stopped again, due to a more complicated problem, and it took me several days to find a solution. Fortunately, the mentors and other employees of the company understood the situation in which the juniors were in, so they did not put pressure on us and helped.
Resolving Merge Conflicts
If you are new, then you face the danger of merge conflicts. You can spend hours solving the problem with the code, solve everything, and then lose all the work at all due to the desire to “fix” the merge conflict.
I've had this happen several times during commits in Git. It was very unnerving and scary. But then I learned a few principles of working with Git, which helped to resolve emerging conflicts.
Recognizing your own code is painful.
When we write code, and after a few days we try to disassemble it, the task seems impossible. For example, after I eliminated one bug and returned to the code in a few days, I had only one question: how and why this all the hell works?
Working code can be as confusing as it is broken. In some cases, returning to the old code, we improve and optimize it, as new ideas and solutions appear. If you do not understand how your own code works, do not worry, you are on your way to new knowledge.
How to survive?
Do not take everything on your account, focus on learning
This is one of the tips that mentors gave me. It’s hard not to lose self-confidence if you don’t know how to solve the problem. But the way out is to learn, get new knowledge, you should not focus on yourself as the reason for failure.
Leave your own ego aside and just learn, get new experience, skills and knowledge from others.
Absorb the maximum of new information
Keep your eyes and ears open, get new experience and knowledge. Do not be afraid of this new experience, test new things, even if you are outside your comfort zone. Sometimes we use the same work model and coding patterns. But you should always leave room for a new one.
Do your homework before asking questions.
Asking questions is good, especially if you are stuck. But even better - to perform their own tasks, their homework. This will help find answers to questions that previously seemed intractable.
Do not compare yourself with others.
If you do this, you will lose confidence in your abilities and will work worse. Remember, any master was once a novice. Even the best of the best were wrong at the very beginning. All professionals have gone the way, full of pain, they studied and as a result achieved what they achieved. Nobody becomes a master in one night - for this you need a lot of work.
And remember, we are all in the same boat. Moreover, what we teach at the university is significantly different from what we find in real life, in practice. To become a competent specialist, you need to learn and work. Focus on this - and you can achieve everything you wanted before.