8 Tips For Novice Programmers!
Exactly 20 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. There is almost no knowledge. A thin, frightened voice from somewhere in the stomach advises to turn around and run away until it is completely disgraced. A deep breath in and out, and now the CEO is already leading me to a small basement room, pointing to a semi-disassembled computer that has seen better times: “This is your workplace. Get settled. So began my career.
But fast forward to the present. Now I am writing these lines sitting in the convenient office of a prestigious business center in the center of NYC. Behind work with major international brands and the development of complex fin-tech applications. Hundreds of books have been read and dozens of articles have been written. The delusions of grandeur have long been cured. Management positions tested and rejected. Peace of mind found. Love for the profession is saved. However, this is not an article from the series “What a fine fellow I am. Do as I do well too. ” This article is about what mistakes I made and what could have been done better. This article is a retrospective of my career.
#1 Change the company if there is no development
From time to time I got stuck in companies that clearly outgrew in level. Like and 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 Kate from accounting. Sit in your chair, which has long assumed the shape of your soft spot. You open the laptop and immerse yourself in the 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 even every month, but if it’s too easy for you, it’s time to leave. Do not be afraid of difficulties. If during the interview it seemed to you that here the guys are solving too complicated tasks, and you are definitely on the very 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
#2 Be a programmer, not a coder
Write code! = Solve the problem. Code is just one of the tools for solving problems. Oh, how long was the way to the realization of this simple statement. How much time was wasted. We, programmers, with terrible force are attracted by the code. Seeing the next task in Djir, we run through its 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 given transparent and understandable tasks. Before opening the IDE, I must be 100% sure that I understand the problem I’m going to solve. Decomposition is a good marker here. If I can write the solution in steps and I know what result each step will lead to – only then I open the editor and write the code.
Remember: your value as a programmer is not in elegant code with exotic patterns from “Gang of Four“. Not a single company has yet achieved success due to the beauty of the code (in any case, I don’t remember such examples). Always keep in mind the end result.
#3 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 Kafka if there is a favorite Rabbit? Why stack the data structure into documents if it easily fits into the relational model? Every time the thought that I needed to get into the food more quickly prevented me from developing. As a result, most of my projects are a dead weight on a GitHub, without bringing me not only world-wide fame, but even new knowledge. Trying to keep up with the deadlines that I set for myself, I just lost time.
Experiment. There is no hurry. Develop horizons. If you are an expert in some kind of technology – use this knowledge at work, but outside of work, use tools that you are not familiar with. It is difficult psychologically, because you will understand that using a well-known programming language would have already reaped the benefits of glory from your project in the Maldives. And you have to figure out why the conversion of the character to the int gives the character code, and not the number.
#4 Run projects
I realized long ago: to be a successful programmer, it is not enough to be a good programmer. You need to understand the product development is 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 don’t put this knowledge into practice. I can subscribe to the telegram channels of the best product analyst of the country, but so what if I do not have a product on which to experiment?
Since I launched my first 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 the experience of working on my own project helps me to find points of contact with other team members.
#5 Learn to decompose
I have always had problems with attention. I made very silly mistakes in the code. Not because I did not understand something or did not know how to do it. I just was inattentive. He struggled with this problem in various boring ways (for example, following the minute hand), but nothing helped. Naturally, after each such error, my self-esteem plummeted. What kind of development can we talk about if self-esteem is zero?
The solution came in the form of decomposition. Less task = less code = less chance to make a mistake. I often hear the phrase “this task cannot be decomposed,” but I personally believe that any task can be decomposed indefinitely. If you fail, most likely, you simply do not fully understand the problem.
#6 Learn new tools
For a long time, I used IDE as a normal code editor with easy navigation. I also had a boss who programmed exclusively in mc-edit and often theatrically asked: “Who are you without your IDE?”. Or my terminal was open 24/7, but I didn’t know how to work with it at all. I lived for a long time without static analyzers and style fixers. Ignored hotkeys. And I did not see any problem in this.
Now I am subscribed to all official YouTube-channels of my tools. It’s amazing how much useful you can learn from them. I carefully watch the work process of my colleagues and often adopt what seemed interesting to me. Also, some tools show us pop-up windows where they tell us how to improve the interaction process.
Do not neglect this.
#7 Participate in opensource
Opensource is painful. Your every PR will be examined under a microscope. Every variable, every character. Each test will be questioned. And this is not your Team Lead, which: “oh well, let’s do it so much.” With these people you will not agree, you will not complain about them, you will not crush them with authority. And they don’t even pay you. Around the twenty-fifth comment really want to send all somewhere.
Be patient! Opensource is a great opportunity to upgrade your skill by 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 can be fixed. It must be said that there is usually no toxicity on the GitHub. If your PR is smashed to shreds, they will do it very constructively. Anyway, in my experience.
#8 Believe in yourself
From time to time I had situations when I wanted to give up everything and go to work at a construction site. Carry bricks. This situation could be a task that did not end. Which has changed daily requirements. Or a technology that I did not want to learn. Or the integration of a third-party service, which was completely absent documentation. Or just functionality, for understanding of which the education of a financier was required, and all product analyst speak only English. I was hysterical, quit and frustrated anger on the cat.
There is one trick that now greatly helps me with such tasks. I just always remember that in the end I will cope. 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 advice, with which I will finish the article. Keep calm and believe in yourself. You can handle it.