
Exactly 15 years ago, on this very day, with my trembling knees, I crossed the threshold of the office of a small provincial Internet service provider. My first real job as a programmer. Almost no knowledge. A thin, frightened voice from somewhere in the stomach advises to turn around and run away until finally disgraced. A deep breath in and out, and now the CEO is already leading me into a small basement room, pointing to a half-disassembled computer that has seen better times: “This is your workplace. Get settled. " So my career began.
But fast forward to the present. Now I am writing these lines, sitting in the comfortable office of the prestigious business center in the center of Moscow. Behind the work with large international brands and the development of complex fintech applications. Hundreds of books have been read and dozens of articles have been written. Mania of greatness has long been cured. Managerial positions are tested and rejected. Peace of mind found. Love for the profession is preserved. However, this is not an article from the series “What a fellow I am. Do as I, too, will be well done. ” This article is about what mistakes I made and what could be done better. This article is a retrospective of my career.
Change the company if there is no development
From time to time I get stuck in companies that have clearly grown in level. It seems that they pay good money, and everything here is familiar and convenient. You come in the morning, choose the usual mode on the coffee machine. You exchange jokes with Katya from accounting. You sit in your chair, which has long taken the shape of your soft spot. You open a laptop and plunge into a daily routine of typical tasks familiar to you. Attention! It is a trap!
')
Work should not become a chore. There must be challenges. Not every day, maybe not every month, but if it’s too easy for you - it's time to leave. No need to be afraid of difficulties. If at the interview it seemed to you that here the guys are solving too complicated problems, and you are definitely messing up on the first day - this offer is for you. Look for the most difficult tasks, the only way you can improve, and not degrade in the kitchen of your favorite company for 4 hours a day
Be a programmer, not a coder
Write the code! = Solve the problem. Code is just one of the tools to solve problems. Oh, how long was the path to realizing this simple statement. How much time was wasted. We programmers are attracted by the code with terrible force. Seeing the next task in the Jira, we run her eyes diagonally and rather, rather write code! As soon as the code is written, we lose interest in the task and take a new one.
Unfortunately, we are very rarely posed with transparent and understandable tasks. Before opening the IDE, I must be 100% sure that I understand the problem that I am going to solve. A good marker here is decomposition. If I can paint the solution step by step and know what result each step will lead to, then I open the editor and write the code.
Remember: your value as a programmer is not in elegant code with exotic gang of four patterns. No company has yet succeeded due to the beauty of the code (in any case, I do not recall such examples). Always keep in mind the end result.
Do not be afraid to experiment
Each time starting a new pet project, I either started it on well-known technologies, or switched to them after several weeks. It's so much faster. What is the point of tormenting with Kafka if you have a favorite Rabbit? Why fit a data structure into documents if it easily fits into a relational model? Each time, the thought that I need to quickly go to the prod prevented me from developing. As a result, most of my projects are dead weight on the github, not bringing me not only world fame, but even new knowledge. Trying to keep up with the deadlines that I set myself, I just wasted time.
Experiment. There’s nowhere to rush. Develop your horizons. If you are an expert in some technology, use this knowledge at work, but use tools that you are not familiar with outside your work. This is difficult psychologically, because you will understand that using a well-known programming language, you would already reap the benefits of fame from your project in the Maldives. And you have to figure out why converting a spell to an int gives a character code, not a number.
Launch pet projects
I have long understood: to be a successful programmer, it is not enough to be a good programmer. You need to understand the development of a product much wider than its specialization. But how to achieve this? I can read hundreds of books on marketing and they will be useless if I do not put this knowledge into practice. I can subscribe to the telegram channels of the best product experts in the country, but what if I don’t have a product to experiment on?
Since I started my first pet project, it has become much easier for me to find a common language with fronts, qa, products, marketers and any other team members. After all, I began to understand their work much better. Modern programming is very team-based, and experience working on my own project helps me find common ground with other team members.
Learn to decompose
I always had problems with mindfulness. I made very stupid mistakes in the code. Not because I didn’t understand something or did not know how to do it. I just was inattentive. I struggled with this problem in various boring ways (for example, watching the minute hand), but nothing helped. Naturally, after each such mistake, my self-esteem fell sharply. What kind of development can we talk about if self-esteem is at zero?
The solution came in the form of decomposition. Less task = less code = less likely to make a mistake. I often hear the phrase “this task cannot be decomposed,” but I personally think that any task can be decomposed indefinitely. If you can’t succeed, most likely you just don’t fully understand the task.
Learn tools
For a long time I used the IDE as a regular code editor with easy navigation. And I also had a boss who programmed exclusively in mcedit and often theatrically asked: "Who are you without your IDE?" Or I had a terminal open 24/7, but I did not know how to work with it at all. For a long time I lived without static analyzers and style fixers. Ignored the hotkeys. And I did not see any problem in this.
Now I am subscribed to all the official youtube channels of my tools. It's amazing how much you can learn from them. I carefully monitor the work process of my colleagues and often adopt what seemed interesting to me. Also, some tools show us pop-ups where they tell you how to improve the interaction process. Do not neglect this.
Participate in opensource
Opensource - it hurts. Each of your PRs will be examined under a microscope. Every variable, every character. Each test will be called into question. And this is not your team leader, who: "Oh, well, let's be so obsessed." You won’t come to an agreement with these people, you won’t complain about them, you won’t crush them with authority. And they don’t even pay you. At about the twenty-fifth comment I really want to send everything nafig.
Be patient! Opensource is a great opportunity to upgrade your skill, working with the best programmers in the world (although it depends on the project). Start small. Choose some simple tool or library. Go to the issues section and see what you can fix. I must say that usually there is no toxicity on the github. If your PR is torn to shreds, then they will do it very constructively. In any case, in my experience.
Believe in yourself
From time to time I had situations when I wanted to drop everything and go to work on a construction site. Carry bricks. This situation could be a task that did not end in any way. Which has changed daily requirements. Or a technology that I did not want to study. Or integration of a third-party service, which completely lacked documentation. Or simply functionality, to understand which required the education of a financier, and all product experts speak exclusively English. I freaked out, procrastinated, quit, and frustrated the anger on the cat.
There is one trick that now helps me a lot with such tasks. I just always remember that in the end I can handle it. Always coped. And always will be. You just need to sit down, study, think, sort through, ask the right questions to the right people. The main thing is to believe in yourself and stay calm. In general, perhaps this is the most important piece of advice with which I will end this article. Keep calm and believe in yourself. You can handle it.