Recently, Alexey Parshukov, Unit Lead at SkyEng, ex-CTO DocDoc, and I conducted a webinar called “Quick Start in Programming from scratch” and discussed the differences in learning programming languages, the essence of the profession of a programmer, how to get a job and what employers are like. You can watch the webinar here, and read the article on it right now :)

image


What is a programmer's job?


The profession of a programmer has obvious advantages that everyone knows about:

  • Good salaries

From 100 TR in the regions of Russia, 250-300 tr in Moscow, abroad from 10 thousand dollars.;

  • Flexible schedule

Developer is mostly remote work;

  • Demand in the international market

This is one of the easiest jobs for immigration.

But not everyone can become a developer, otherwise everyone would have long been retrained as programmers. Here you always need to stay on the line. You cannot master any one technology, read a book, take a course, learn Python perfectly and then earn 20 years from this. The industry and technology are developing so fast that the approaches, frameworks, and programming languages ​​that are relevant today will almost certainly completely change after 4 years, and if you drop out of the profession for a year, you will have to start from scratch.

For example, for students, leaving the army is a very big problem, because a lot will change in the year of absence in the development world. This is not very critical. You can catch up quickly enough, but in any case, you must constantly stay on the trend line, constantly learn, study modern approaches, watch what and how are changing, and then you will be a successful developer who makes a lot of money.

And another drawback that few people talk about is the rather strong age discrimination. If you are a student, then finding a job will be quite simple. If you are 30-40 years old, then you are welcome in any technology company. If you are a little over 40, then it will be more difficult. But if you are over 50, then you most likely will not find a job anywhere. It is worth remembering, this exists.

How do you know if a programmer is right for you?


It is not so important here what kind of education you have, whether you graduated from college by profession. The main thing is that you have a very developed perseverance. Why is this so important?

Imagine that you are tasked as a developer, for example, to transfer a button on the left side of the screen to the right in a mobile application, so that it is convenient to click on it with your thumb. You sit down and begin to do this task. It will take you a little time to figure out the application: where it lies, how it is assembled. It will take a little more to study the code that programs and displays this button on the screen. It will take very little time to make changes to this code and say to the compiler or mobile phone: “Please display this button not on the left, but on the right.”

But further this code, most likely, will not work. And the next few attempts, he does not work. You will need to read a ton of documentation to figure out how button mapping works in Android or iOS. You’ll have to try 10 different ways: find some work-rounds, back it up with crutches, write to the developer, look at the Android source codes and after 4-5 days, at best, or even later, this button will be displayed as you need.

All work consists of this: every day, every task. Each line of code that you wrote with a high degree of probability will either not work, or it will not work the way you want, and there will be no obvious reasons why it does not work. It takes an insane amount of time to figure out what is going on there and how to get this thing to do what you want.

And the final result, in which everything worked, should bring you a lot of joy. This is the main motivator of the developer, which makes him go to work every day and do something.Perseverance will allow you not to break down, not to refuse, not to change your mind, not to be distracted by coffee and social networks, and sit for hours and hours thinking about why this thing does not work and how to make it work.

What are some employers?


Freelance


As a rule, these are small tasks for little money. They can be made quickly enough. They are placed on freelance exchanges. The main exchange in Russia is freelance.ru. Major International - upwork.com.

Exchanges are suitable in order to take some practical tasks that bring some benefit, for example, to earn your first money. It is quite simple. No one will read your resume, check whether you have real experience, whether you can drag this task or not. This is a good place to get your hand started and start programming something, making money on it. Theoretically, there are people who have been doing this all their lives and earn much more money there than the employer.

But there are also disadvantages. The main thing is that this is more like creating your own business than working as a programmer, since you spend a lot of time searching for orders, communicating with the customer, effectively building processes, and it doesn’t take that much time to develop. And, as a rule, products for which tasks are given on exchanges use a rather specific technology stack. For example, many tasks will be associated with changes to the Wordpress blog engine. It is rarely used in product development, and even less often in companies, but there will be a million tasks on this topic on freelance: fix some kind of landos, move the picture, gash the plugin. This experience and these technologies in working for the employer are poorly applicable. It’s hard to learn something on freelance because there is no team. There are no people with whom you interact, from whom you can learn something, who can test your work and share experience. Therefore, freelance is well suited to start, but not for professional work.

Studios/Integrators/Outsourcers


These are quite different companies, whose activities vary greatly. There are both small and large players, but, as a rule, they have common pros and cons.

From the pros:

  • A large stream of completely different projects

You do not fall asleep in any routine of any particular project. These are different projects, they are constantly changing, you have the opportunity to constantly learn something new;

  • Most of these companies have fairly clear processes

They have algorithms for working with documentation, the development process, the interaction with the customer are built, they work well with estimates, they can count the economy, because it is their professional activity.

  • High Level

They can learn to develop software well.

Of the cons:

  • Not all companies are cool

Top companies are really doing well. They have everything perfectly arranged, have money, customers and interesting projects. But there are many niche companies with a small staff of 5-10 people, in which processes are not so streamlined, but then you can easily get into these companies and learn something useful. You can learn how to develop software after working with them for six months, and move to another company at a higher paying place.

  • Little freedom

The customer, as a rule, knows what he needs. He has a design, he has a clearly defined task, he often comes with his technologies. And despite the fact that it seems to you that it would be better to do otherwise, usually such issues are not discussed.

In order to get into these companies, you need to know the applied programming languages. For example, PHP, Python, Java, Javascript.

This is a good place to start a career.

Startups/Small Companies


There are hundreds of such companies. Every day, a dozen new ones open, but nine of them are sure to close.

There are tons of benefits , why you should try working in a startup:

  • It’s very driving and fun;
  • The easiest way to make really big money.

In the early stages, often, the founder actively shares his shares, especially if the startup takes off and grows quickly, you will very soon become a millionaire;

  • There is no Legacy in the projects, no old code that makes you want to cry
  • A lot of freedom

There is an opportunity to choose technologies and program as you like. You can greatly influence the product.

But there are also cons:

  • 9 out of 10 companies close

Many of them will close during the first year without launching the product;

  • Weak learning opportunity

As a rule, not the best specialists come to these companies, there will not always be something to learn there;

  • Unpredictability

Often, the financial flow of these companies is unstable. You can work for some time for such a company, and you will not be paid a salary for two months.

In fact, the fun outweighs all these cons. But going to such a company without experience would not be the best decision. The stress level will be very high, and the level of practical knowledge is most likely not enough to pull the project.

Banks/Enterprise


Pros:

  • Stability;
  • Good salary;
  • Low level of responsibility

No one will ask you to recycle and be responsible for something big. Any large enterprise company is a master at spreading responsibility between a bunch of managers.

Cons:

  • Very low speed

You can cut a feature for a year or two without releasing it, because during this time it will lose its relevance. Salary, of course patched, but this thing is very demotivating;

  • Specific Experience

As a rule, this is some kind of banking software. Basically, this is old code, which is not very pleasant and not very interesting to work with;

  • Changing the field of activity here will be quite difficult

First of all, because you lose in salary. In Sberbank, they are always higher than in Yandex.

A great option for your first job if you are in the intern position. In a large company, you can get a lot of useful applied information in an internship in a short time: on how software is developed, what tools you need to use. This experience will be relevant anyway.

Food Companies


Pros:

  • Current technology;
  • Debugged processes;
  • Team of professionals;
  • High level of stability.

Cons:

  • It’s hard to make really big money;
  • It's hard to get a job;
  • A huge number of tools to deal with.

Each company has its own set of tools, and this experience will not be very relevant for the market and for moving to another place.

How to choose a language?


Depends on what you want to do and which company you want to go to.

PHP, for example, is a very popular language. It is used in a bunch of Russian and foreign companies, in the same Facebook. But there is no point in learning PHP to get on Twitter because it is not used there. If you want to Yandex, you need to learn Python or Java. Retraining from PHP to Java is a very difficult process.

It’s best to immediately identify for yourself 2-3 companies in which you would like to work. Find out what programming languages ​​they use and learn them. Or, build on your favorite language and then look for companies that use it.

What kind of developers are there?


Backend


This is the code that runs on the server. The back-end, as a rule, communicates with the database, with external services and is responsible for business logic. For example, it allows you to register a user, save it in the database, write off money from him, send him some kind of notification or SMS.

Typical languages: PHP or Python, as well as the less common Ruby.

Frontend


This is what you see when you visit the site. This is a piece of layout.Layout, as a rule, is done in the HTML markup language, which says how the content is displayed on the page, in what color it will be displayed. Javascript is responsible for how this page will behave, how it will be animated, where the form will go, what error will be displayed to the client if the phone is entered incorrectly. Almost every programmer needs this knowledge. There are practically no areas where you do not have to deal with layout. This language is very good for starting, because wherever you go, it will be in demand everywhere.

Fullstack


This is a developer who can do both frontend and backend. He alone can file both on the server side and on the client side, make it all work together, make the project work without any help. This is aerobatics. Such developers usually earn one and a half times more.

Mobile Development


In fact, this is the same frontend, but other languages ​​are used here. It makes no sense to delve into programming languages ​​that were used 5 years ago, such as Objective-C and Java. Swift and Kotlin are now used. All new applications are written in these languages, and the old ones correspond to them.

GameDev


This is a separate area. Here, as a rule, C++ and special libraries, such as Unity, etc. are used. A developer who knows how to make a mobile application on Kotlin will not be able to write a game, because a completely different stack, completely different technologies are used.

Desktop


This is what natively runs on your computer. For example, a browser, Word, etc. Most commonly used is C++, C #. Powerful applications are written in C++. Sometimes desktop applications are written in Delphi because it is much simpler and cheaper.

1C


This is the most popular product in Russia. It is used, one way or another, in any Russian company. Its main disadvantage is that besides Russia it is not used anywhere. It is very narrow, it’s very difficult to leave 1C, but there are a lot of vacancies and they are paid well.

DevOps


These are system engineers who configure computers. Now you need a lot of computers, complex products. Facebook, for example, uses tens of thousands of servers and in order to make it easier to administer, so that code can be downloaded faster from developers' computers to a productive environment and faster to users, we need engineers who can transform, automate, and automatically commission tens of thousands servers. They do this with software tools. The most popular language in this area is Python and Bash. Studying python by any system administrator will raise his salary at least one and a half to two times.

AI/ML/BigData/Cryptocurrencies


Most often, the developers of these areas use all the same languages. ML and data analysis are mostly Python and sometimes a little bit of Java. Cryptocurrencies use C++. The peculiarity here is that a good knowledge of mathematics and a deep knowledge of applied tools are required. An ordinary python developer is unlikely to be able to retrain as an AI developer in a week, as it will require a deeper dive.

How not to choose a language and direction?


  • Do not focus on salaries

According to studies published on Habr, the highest paid language is Eclipse. It is quite fashionable, youthful, positive and modern language. But what happens if you start teaching him today? Now on hh.ru only 11 published vacancies. And even if you go to a place with a high salary, this does not mean that in a few years it will still be relevant. In this case, you may find yourself unclaimed, and switching from one language to another is a rather complicated story;

  • You should not choose fashionable, exotic, limited or endangered languages ​​

Exotic languages ​​(Scala, Eclipse) have very few vacancies and, as a rule, they are all for experienced developers. Obsolete languages ​​are usually given at the institute/school, for example, Pascal. They have no application, they are not in demand in the market. As it is not worth starting with 1C due to its limitations.

  • Don't start with complex languages ​​

Not the best solution would be to start with C/C++. There is even such a meme on the Internet: learn C++ in 40 days.This is a difficult language to learn. It is necessary to spend a lot of time for you to start getting something and to become appreciated in the market. If you are going to go to gamedev, then there is no alternative, you will have to learn C++. But, for example, you can get to Yandex Java and Python developer.

Good start languages ​​


  • HTML/JavaScript

They are easy to learn. It is easiest to feel on them whether programming is suitable and suitable for you. Knowledge of these languages ​​will be useful to you in any field selected below;

  • PHP/Python

Also easy to learn. A lot of vacancies with the position of junior. And over time, you will be able to use this knowledge when moving to steeper positions. You can make a development career from junior to senior in 2-3 years, reaching high salary rates;

  • Java/C #

If you need a stable, highly paid job at a bank or an enterprise company, then these are the best languages ​​to start. Java has been a very popular language over the past 20 years and is likely to remain the most popular language on the market in the next 20 years.

Where is it easier to start?


  1. Make your HTML page.
  2. Try connecting 1-2 lines of JavaScript, understand what are loops, conditions.
  3. Read a book on any dummy programming language. At one time, the book “PHP for Dummies” was very popular. With it, many started and looked for their first job after reading.
  4. Take courses. The courses are useful in terms of practical experience.
  5. Ideally, take an internship. She will give you a lot of useful practical experience, after which you can find a job in some other place, even if you are not employed at the place of the internship. The disadvantages of an internship can be fill-time employment and low pay or even an internship without pay.
  6. Get a dream job. Most likely, the first time you will not succeed. The first work is usually stupid. But after six months or a year, you can already try your hand at the company that you like. Or start your own project.

How not to do it?


  • You should not go to related professions: testing or those. support

If you are already in this field, then, of course, it’s worth trying your hand at development, but if you are a lawyer or just graduated from a university and don’t know how to build a career, then you don’t need to choose such a difficult and long way. Immediately learn programming, application tools and look for the work of a programmer. It is possible to implement this in a short time;

  • No need to get a job in an IT company

For example, working as a courier in Yandex will not help you get a programmer there;

  • No need to run into employment in a top company

Most likely, as a first job you will not succeed. You will waste a lot of time. It’s best to start with simpler companies, where you will immediately have a salary, take a break there for half a year and then transfer to a dream company, having practical experience behind you.

Nuances of working as a developer


  • First job won't be long

Do not consider the employer in the long run. On average, developers move from company to company every three years. This is due to the fact that many companies do not know how to raise salaries for employees, so the easiest way to move up the career ladder is to simply go to another company;

  • It makes sense to move to Moscow and further west

Even if you find yourself working remotely, it is advisable to move in the direction of development. So you will grow much faster. And most importantly, it directly affects the salary. The difference between the salaries in the regions and in Moscow will be about 50%, and much more in the states if you move there;

  • You should not choose a narrow specialization

On the market, programmers with a wide range of skills are much more in demand than narrow specialists;

  • Develop soft skills

This will give you the opportunity to effectively communicate in the company, understand each other.The more you grow professionally, the less directly programming knowledge will be required, rather than knowing how to effectively achieve results in a team;

  • Understand your motivation

It will be easier for you to grow and choose the company that will appeal to you if you understand your motivation well. This, first of all, can make you happy.

How to prepare for an interview?


It doesn't matter what you know. If you pass 20 interviews, then on the 21st you will be taken. Regardless of whether you are a programmer, whether you have practical knowledge or you have never done this.

You can make an empty resume, you will be invited to different companies, you will go through interviews, you will understand that you are being asked and from 20 interviews you will know what to answer these questions. It’s worth starting with some simple companies where you don’t really want to get a job and after a month start going for interviews to those companies where you really want to get a job. Most likely, they will take you and then everything will depend on you.

What are they asking the joons for an interview?


  • Test task

Almost all companies will ask you to do a test, it will definitely need to be done;

  • Sample Codes

It’s better to do some kind of task on freelance or some pet-project in advance, work on it well, make it look beautiful;

  • Prepare answers to questions about your experience and who you see yourself in 5 years

It’s best to prepare a beautiful and true story so that it is interesting to listen to. This is important because these questions make it clear whether you have any incentive to develop and what you spend your time on. When interviewing for the June position, the employer understands that you really don’t know how to do anything, the employer wants to take a promising person, and these questions will just show how promising you are.

Learn the basics of the following topics:

  • Object Oriented Programming;
  • Databases. It’s not necessary to learn a huge two-volume on SQL optimization, but how to make SQL queries in a basic form is worth knowing;
  • Design patterns;
  • Version Control System (Git)
  • Basic language features. For example, how PHP packages are connected.

With this basic knowledge you can solve some practical problems. These issues were relevant 5 years ago, relevant now and will be relevant in the near future.

Want to know more about working as a programmer?

Sign up for our six-month online course "Profession: Programmer" Learn more!

.

Source