Staying up to date
If you really like programming, where you learn programming languages and algorithms is not as important as whether you’re ready to spend lots of time on it. The field changes at a fast pace, and if a programmer fails to keep up with all these changes, they will soon find themselves on the periphery.
Of course, there are lots of positions where the long-standing technologies are relevant, but those are usually given to the more experienced candidates. As for novice programmers, employers expect them to be able to quickly grasp new things; as for the more serious projects, employers are wary of novices, because no one can really tell what will happen to them in some six months.
Credit: hr-portal.ru
If a new system has a short lifecycle, like when it is only used for a day or a week, it is a good opportunity to try new approaches. Yet, most such projects are outsourced and not developed at big companies, so it is specialists with a different mindset who work on them.
Programming is creativity confined within strict boundaries
You have to have a particular frame of mind to be good at programming. If you don’t, it is better to try yourself in some different field - you may put in lots of effort, yet end up failing to become a professional.
Development at a major company is both about creativity and compliance with formalities and strict requirements. For instance, when an employee receives a new task, they have to do their best to predict the problems they will face, the possible solutions, to decide how their end product will work and what steps must be made in order to attain that.
If the world was created by a programmer. Credit: blog.toggl.com
Of course, it’s impossible to account for all the possible nuances, so some problems will emerge, and you’ll have to solve them in short order. This is why it’s really important that the programmers enjoy their work; otherwise, they won’t be able to create a good product. This means that they must be able to perceive a design in its entirety; as for solving minor tasks, you can teach just anyone to do that.
Professional work isn't the same as solving problems at the university
Working at a company is really different from what you do at the university. First of all, it involves teamwork. Also, it is important to be able to understand the others’ code, and mind that your code will also be read by someone.
Credit: techfly.co.uk
When you’re a student, you code as you see fit, haphazardly, but if you’re working for a company, you have to comply with certain requirements. A student’s work is supervised by their lecturer only; at a company, it is constantly monitored, and there are deadlines to meet. Also, when working on a serious project, you have to understand what the desired result should be like, and understand the criteria to testing the product.
Yandex.Browser team. Credit: businesslynch.ru
Professional programmers are self-dependent and bear full responsibility
Yandex is an open company, where communication between employees is encouraged. When developers face any problems, they can turn to their colleagues for advice, and then consult their higher-ups. Such an approach is really effective, as every employee is responsible for what they do. Programming is a serious task, so one shouldn’t aim to become a programmer just because it's “in”.
Start off by deciding what you want to do
Apart from working at Yandex, I teach C++ at ITMO’s Computer Technology Department where I once studied. Freshmen are taught many different programming languages, and many of them wonder what they need it for. Well, many programming languages and techniques, C++ included, have a narrow focus, and will be of use to few specialists. Actually, I believe that it would be best to make such languages part of elective courses.
ITMO’s Computer Technology Department
Yet, there’s not many specialists who work in such fields on the labor market, and they are quite in-demand. This is why it is important to understand what you want to specialize in as early as possible, and start developing in this field. For instance, there aren’t that many C++ specialists. When I understand that someone likes it, and wants to work with it, I try to offer them an internship, as there are few good developers in this field.
You can get into a major company with an ordinary resume
I got into Yandex by sending in a regular resume and passing several tests; this is my second workplace. When I applied for my first job, I had several options, though none of those were any impressive, as I was just an intern with no work experience. A great advantage of working for a company such as Yandex is that you are surrounded by people who know a lot more than you, so you can learn from their experience.
Today, I’m a senior developer for the Yandex.Taxi service. Our work focuses on two major areas: implementation of new product requirements and optimization of the existing algorithms to increase the service’s reliability and operation speed.
Street-art taxi. Contest by Yandex.Taxi and the Museum of Street Art
Competition results can be a factor when employing programmers
When I applied to ITMO University, I got in thanks to winning in a competition, and I believe such a selection method is more accurate that when Unified State Exam scores are used. This is why I believe that if the tasks for the recently-started “I am a Professional” competition are closer to real ones than that of ACM ICPC, then we’ll be able to use its results as a method of discovering young talents. At the very least, we’ll be paying attention to the winners, offer them internships and such.