How to set up smartphones and PCs. Informational portal
  • home
  • Windows phone
  • How do you become a programmer. Necessary personal and business qualities, professional skills and abilities to work as a programmer - what do you need to know and be able to do? Learning Resources

How do you become a programmer. Necessary personal and business qualities, professional skills and abilities to work as a programmer - what do you need to know and be able to do? Learning Resources

Behind most of the technical conveniences, such as an online bank or an information board at an airport, are specialists in one of the most sought-after professions of our time - programmers. Without them, neither gadgets nor social networks would work. Even ordering new sneakers in an online store would be problematic. Until now, the IT-sphere is only accelerating the pace of development, requiring more and more new employees. Campaigns are ready to hire even beginners. The average salary of a programmer starts from 35 thousand rubles, and even experienced professionals can earn sky-high money.

The profession of a programmer is popular and in demand

In this article, we will tell you how to get into a prestigious profession, who are Senior programmers, and why it will be difficult for you here without English.

Who are programmers and what do they do?

Demands of the IT-sphere for professionals are constantly increasing. Therefore, we need people who will understand this: create, repair, support. Coders are different, and each job has its own specifics. Let's talk about the main specializations of IT specialists:

The most obvious option. But it's not as simple as you might think. Coders perform different tasks depending on their specialized programming language and project.

For example, a mobile application developer creates programs for android, ios and others. Every first person has a smartphone and a tablet, so the work here will not end soon.

Another promising direction is java programming. Most banking systems are designed in this language. Banks are ready to pay well for a quality product to both full-time employees and third-party firms. But the requirements here are high: you will have to be responsible for the correct operation of the application with other people's money. Of course, you can program in java not only in a bank, but good IT-specialists with experience receive about 200 thousand rubles a month.

A tester is a specialist without whom no project will see a release. This IT guy knows all about the intricacies of the code and the places where the program can fail. His duty is to test the stability of the product against errors and bugs and return it to the developers for correction. At first, the check is done manually, but when all the weak points are found, the tester writes a special program to automate troubleshooting.

Another similar profession is qa engeneer, product quality specialist. Its main difference is that it does not look for errors in the code, but tries to avoid them. Find out in detail the requirements of the customer, plan the development, establish communication between groups of programmers - all these are the duties of qa engeneer. Often here you don’t even need to know the programming language, it’s more important to imagine the development stages and project management features.

The profession is attractive with a salary: even a beginner can be paid 50 thousand a month here.

According to a StackOverFlow study, this is the most in-demand IT profession of 2017. Web programmers fall into two categories: front end and back end (they are often coded as UX/UI design). The first monitor everything related to the user part: the convenience of the application and the site, intuitive use and just a beautiful picture. The latter are working on the technical component: the logic of the site, its functions, interaction with the database. To make the page on the Internet look modern, developers take html and php courses, know css, java-script, and python programming.

Your salary will depend on the number of tools you own. HTML layout designers have the smallest remuneration, they receive from 25 thousand per month.

  • Programmer 1C

A feature of 1C programming is a close relationship with the economic industry. For example, in order to correctly calculate the salary of 3,000 people at a factory, you need to store data about their working hours, rates, sick days, etc. somewhere. This task is undertaken by 1C-enterprise programs. The 1C programmer sets up accounting and workflow programs so that documents can be easily uploaded and reports generated automatically.

The possible routine of work is more than compensated by the order of salaries. If we talk about a fixed rate, then a novice 1C Programmer will immediately find a job with a salary of 45 thousand per month, and a leading specialist receives from 120. But in the case of freelancing, earnings will depend on your skills and on the number of working hours per week. Professionals earn both 200 and 500K per month.

The debate about real programmers continues to this day.

This IT guy is not exactly a programmer. His peculiarity is that he is well versed in the hardware. Connecting a printer, laptop, projector, setting up its operation, distributing the Internet and designing a tricky local network - that's all for him. Gurus of wires and working printers pay from 25 thousand rubles, and the salary of a system administrator programmer with good experience can reach up to 150 thousand per month.

He is also a product manager, he is also a product owner. The product manager acts as a translator between the customer, who is not versed in information technology, and the executing programmer. It seems that this is work out of nothing - that the customer and programmers themselves will not be able to figure it out?! Well they can't. It is the product manager who can explain to the customer the possibilities of the functionality and then formulate the exact task for IT people. It is the responsibility of the product owner to ensure that the finished application, website or game brings maximum joy and benefit to the user.

  • IT Product Director

Any successful IT specialist can reach the highest position in the IT field - chief procurement officer (CPO for short). This person deeply knows the product, understands the coding system, knows the best strategies for creating software. The CIO of an average company may have 30-50 people reporting to him. The average income is… well above average.

Teaching programming at the university

The most obvious way to become a programmer is to enter the appropriate profile at a university. The life of most specialists is no longer possible without IT technologies. Mathematicians, chemists, and biologists are taught to deal with code to some extent. But in order not to suffer on subjects that are not interesting for you and study only specialized disciplines, choose one of the following areas:

Each option has its own characteristics. Scientists graduate from one department, managers from the other, and real anti-hackers from the third! To understand this in more detail, check out our infographic. It is better for future IT specialists to choose technical universities. These profiles are in, and others.

College programming training

You don't have to wait until graduation to do what you love. You can start learning to be a programmer after grade 9, you just need to choose the right college. There are not so many suitable specialties here:

  • 09.02.03 Programming in computer systems;
  • 09.02.05 Applied Informatics;
  • 09.02.07 Information systems and programming.

In total, there are 71 institutions of secondary vocational education in the country with the areas of training we need. These profiles can be found in St. Petersburg College of Information Technologies, Petrovsky College, Novosibirsk College of Electronics and Computer Engineering, in Ural Technological College "MEPhI" and in many others.

Additional education courses

Learning to program in Russia started not so long ago, so finding a quality professional course is a real adventure. Also, not all options are free. In order not to waste your money, pay attention to the reviews, teachers, program and employment prospects.

  • Online platforms

You can learn the programming language you like on your own at a convenient pace on one of the learning resources. For example, INTUIT makes it easy to pick up a course on java programming. After successfully passing the final test, the system will issue a free certificate.

  • Online schools

If you don’t like the idea of ​​self-study, then take a closer look at online schools. A significant plus is that most often courses are taught by practicing programmers who will not only share general knowledge, but also talk about real interesting cases. At the end of the training, they give a diploma and promise to help with employment. Education is "official", even a tax deduction can be obtained. But it costs quite a lot. The annual course will cost 150 thousand rubles. Here you can see whether it is a big expense or a smart investment in yourself.

  • Face-to-face courses

For those who want to see the teacher not through the monitor screen, but live, there are face-to-face courses. For example, MAXIMUM conducts classes on the study of the IT-sphere for schoolchildren Digital Skills. Programming is also there, and you can come to an introductory lesson for free.


How to enter the specialty Programming and what to take?

Universities most often require the results of the Unified State Examination from future IT-specialists in Russian language, profile mathematics and informatics. Some may ask for more English.

What to do now to increase your chances of a successful career as a programmer

It must be understood that the IT-sphere is developing at a tremendous speed. Universities will never physically have time to adapt programs to give students the latest information. The university will lay the foundation in the form of basic language features and standard algorithms. That is why the work of a programmer is impossible without continuous self-education. Programming languages ​​are being modernized, developers are creating new convenient tools to make work easier for themselves and their colleagues, and come up with new algorithms for solving problems. Next, we will tell you where and what else to learn in order to succeed in the IT field:

  • Boot up English. Many resources are in English. In order not to wait for someone to take pity and translate the text for you, take care of the language in advance. This is so important that some paid courses give language lessons to their students as part of the main program.
  • Chat on IT forums. Answers to many questions can be found on programmer forums, such as Habrahabr. The professional community generously shares knowledge and useful pieces of code. True, sometimes the search stretches for several days and at the same time you have to understand new tools that you were not familiar with before. And yes, often the most useful link will be in English.
  • Dive into books. Do not rush to buy the first available literature in the nearest bookstore. There is a lot of useless and hopelessly outdated material on the shelves. Again, many works were originally written in English, and the Russian version may suffer from serious translation flaws. You can start with our recommendations, and then you will understand what good content looks like.

Did you read to the end? Here are a couple more interesting facts that will help you better imagine the profession of a programmer.

  • If you go to the job site, you will see: mysterious middle or senior developers are required. Programmers have their own gradation of the degree of professionalism: junior, middle and senior. The first, beginners, must master all the means of the language in which they work. The second are IT-specialists with 3-5 years of experience. Still others not only know everything about the code, but can also organize the work of a development team on a project. As the rank increases, so does the salary!
  • A popular portrait of a typical programmer is a taciturn man in glasses with a liter cup of coffee. In fact, this picture is true only for a rare freelancer. And you don't have to be an introvert to get into the profession. As in any other business, transprofessional skills are important - to explain, argue, negotiate, get out of the conflict.​

Such a portrait of a programmer is hopelessly outdated. Modern IT-specialists are sociable positive guys!

  • A whole group of it-specialists works on large projects. Everyone is responsible for their own piece of code, and all the pieces should be assembled into a single product at the end. To make this happen, teams constantly hold planning meetings, help colleagues find and correct shortcomings. And some offices even have TVs and board games. The collective change of activity helps to establish contact and switch when the work "stood up".
  • Programmers celebrate their professional holiday on September 13th. The date was not chosen by chance: it is the 256th day of the year, the maximum possible power of two that fits into the number 365.

You should start your path to a career as a programmer by answering the question, do you need programming at all? This question does not apply to those who study or have studied in a specialty close to programming. If you were better at math in school than the humanities, if you like to spend a lot of time at the computer, if you want to learn something new, then programming will suit you.

Where to begin

There are several options for the development of events, as a result of which a person becomes a programmer. The first is programmer parents who taught their children everything. These kids don't even need to go to university. The second option is the fashionable profession of a programmer. After school, I had to choose where to go to study, and they chose the fashionable direction of IT, they seemed to like it. And the last option is a hobby that has grown into a job.

If none of the above happened to you, then you have a choice of four options:

  • self-education. This option can be used on its own or in combination with other methods. The Internet is full of applications that help you learn various programming languages ​​and technologies. But this is the hardest way for beginners.
  • university. If you are finishing school and want to be a programmer, then go to university. If not for knowledge, then for a crust. It can serve as a bonus when applying for a job. Although you will also gain some knowledge. But don't forget to educate yourself. The choice of a university should be approached very responsibly. Carefully study the training programs and choose the best technical universities.
  • Mentor. It will be very good if you find a person who agrees to help you and direct you in the right direction. He will suggest suitable books and resources, check your code, and give useful tips. By the way, we already wrote about where you can find a mentor. You can look for a mentor among familiar programmers, at IT parties and conferences, on online forums, and so on.
  • Specialized practical courses. Try to look for courses in your city where you will be taught some programming language or technology. I was pleasantly surprised by the number of such courses in Kyiv, including free ones and with subsequent employment.

Which language, technology and direction to choose

When you become a programmer, in a year or two you will be free to choose any language you like. But when choosing a first programming language, a beginner should consider the following criteria:

  • Availability on the job market. The ultimate goal of this path is to find a job as a programmer. And this will be difficult to do if no one is looking for developers in your programming language in the job market. Check job sites, see who's looking for the most, write down a dozen languages. And move on to the next criterion.
  • Low Entry. If you have to spend a long time learning a language, it can discourage you from programming in general. Read about the languages ​​you chose above. Review the literature that you will need to read in order to learn these languages. And choose the ones that are written about as being light, or that you thought were light. Such languages ​​can be PHP, Ruby, Python.
  • The thrill of the process. If you don't enjoy writing code in your chosen language, you won't enjoy the process, work, or life. Do you need it? Make the right choice.

You will also have to decide on the direction of programming. Mobile, desktop, games, web, low-level programming and so on. The most popular and relatively easy industries are development for web, mobile and desktop clients. One language may be suitable for each direction and another may not be suitable at all. That is, when choosing a programming language, it is also worth starting from this factor.

In any case, learn web technologies. This is the markup language , styles and , which will make your page dynamic. The next step is to learn a server-side language (Python, PHP, Ruby, and more) and web frameworks that are suitable for it. Explore databases: almost every programmer job lists this.

How to get initial experience

Without experience, you won't get a job. Without a job, you won't get experience. Vicious circle of real life. But don't worry, we'll get out of it.

First, don't wait until you've read all the books in your chosen programming language. Start writing your first lines of code after the second chapter of the book. Complete all tasks from books, reprint examples, understand them. Complicate examples and tasks from books with your own ideas. Create your own tasks for the material covered. Solve these problems.

Second, you need to find your first projects. This is probably the most difficult option, but working. You will have to look for orders yourself, fulfill them, bother with payment. For a beginner, this is daunting, but then all other options will seem like a trifling matter. Completed projects can be recorded in experience and shown to your future employer. Real projects are a big plus on your resume.

If you know English, register better on English-speaking exchanges. The market is bigger. If you don't know English, learn it. In the meantime, Russian-language freelance exchanges are available to you. Look for small projects that are at or above your level of knowledge. Apply for a couple dozen of these jobs. And get ready to get a lot of rejection. But if one or two applications work, you will have a chance to get real experience.

Another good option for getting real experience is open source. Such projects always need new people, even beginners. You can search for bugs in the project or look in the bug tracker and suggest methods for solving them. Finding such projects is easy on GitHub or . Feel free to ask questions there.

The fourth option for gaining experience is to help familiar programmers. Ask them to give you small and easy tasks. If something does not work out, you will always have someone to turn to. And at the same time you will participate in a real project.

The last way is through your own projects, various hackathons or work in a co-working space. It is difficult to start your own projects, it is better to look for acquaintances or friends.

Why Choose Python

Let's talk a little more about the choice of the first programming language. The first language should be simple and popular in the market. Such a language is Python. I strongly advise you to choose it as your first programming language.

The Python code is readable. You don't even need to be a programmer to understand in general terms what's going on in a program. Due to the simple syntax of Python, it will take you less time to write a program than, for example, in Java. A huge database of libraries that will save you a lot of effort, nerves and time. Python is a high level language. This means that you do not need to think much about memory cells and what to place there. Python is a general purpose language. And it's so simple that even kids can learn it.

In fairness, it is worth mentioning other programming languages. Java Might be a good choice for a beginner. This language is more popular than Python, but also a bit more complicated. But development tools are much better developed. One has only to compare Eclipse and IDLE. After Java, it will be easier for you to move on to working with low-level programming languages.

PHP is another very popular language. And I think it's even easier than Python. It is very easy to find a mentor or a solution to a problem on the forum. This is because there are a huge number of PHP programmers of various levels in the world. There is no normal import in PHP, there are many options for solving the same task. And that makes learning difficult. And PHP is sharpened exclusively for the web.

Languages C And C# very difficult for a beginner. ruby is a good choice as a second language, but not a first. JavaScript- a very simple language, but it will not teach you anything good. And the task of the first programming language is still to teach you something right, to set some kind of logic.

Is English Important

Important! Do not know? Teach. Do you know? Improve. Learn to read, write, listen and speak English. Focus on technical literature. Listen to English-language podcasts. Read English-language textbooks on programming.

What you need to know, besides the programming language

Of course, apart from the programming language and English, you need to know something else. But what - depends on the direction that you choose. A web programmer must know HTML, CSS, JavaScript. A desktop programmer teaches operating system APIs and various frameworks. A mobile app developer learns Android, iOS or Windows Phone frameworks.

Everyone needs to learn algorithms. Try taking a course on Coursera or find a book on algorithms that suits you. In addition, you need to know one of the databases, programming patterns, data structures. It's also worth getting to know the code repositories. At least with one. Knowledge of version control systems is required. Choose Git, it's the most popular. You need to know the tools you are working with, the operating system, and the development environment. And the main skill of a programmer is to be able to google. You won't live without it.

Last steps

You need to prepare a resume. Not just a resume, but. You should not write there, but you also do not need to be silent about your skills. After you are invited for an interview, you must prepare for it. Go through the material that is listed on your resume. You must be confident in your knowledge. Review the projects you have worked on, remember the technologies you have used. And forward - to a bright future with a new profession of a programmer.

You should start your path to a career as a programmer by answering the question, do you need programming at all? This question does not apply to those who study or have studied in a specialty close to programming. If you were better at math in school than the humanities, if you like to spend a lot of time at the computer, if you want to learn something new, then programming will suit you.

Where to begin

There are several options for the development of events, as a result of which a person becomes a programmer. The first is programmer parents who taught their children everything. These kids don't even need to go to university. The second option is the fashionable profession of a programmer. After school, I had to choose where to go to study, and they chose the fashionable direction of IT, they seemed to like it. And the last option is a hobby that has grown into a job.

If none of the above happened to you, then you have a choice of four options:

  • self-education. This option can be used on its own or in combination with other methods. The Internet is full of applications that help you learn various programming languages ​​and technologies. But this is the hardest way for beginners.
  • university. If you are finishing school and want to be a programmer, then go to university. If not for knowledge, then for a crust. It can serve as a bonus when applying for a job. Although you will also gain some knowledge. But don't forget to educate yourself. The choice of a university should be approached very responsibly. Carefully study the training programs and choose the best technical universities.
  • Mentor. It will be very good if you find a person who agrees to help you and direct you in the right direction. He will suggest suitable books and resources, check your code, and give useful tips. By the way, we already wrote about where you can find a mentor. You can look for a mentor among familiar programmers, at IT parties and conferences, on online forums, and so on.
  • Specialized practical courses. Try to look for courses in your city where you will be taught some programming language or technology. I was pleasantly surprised by the number of such courses in Kyiv, including free ones and with subsequent employment.

Which language, technology and direction to choose

When you become a programmer, in a year or two you will be free to choose any language you like. But when choosing a first programming language, a beginner should consider the following criteria:

  • Availability on the job market. The ultimate goal of this path is to find a job as a programmer. And this will be difficult to do if no one is looking for developers in your programming language in the job market. Check job sites, see who's looking for the most, write down a dozen languages. And move on to the next criterion.
  • Low Entry. If you have to spend a long time learning a language, it can discourage you from programming in general. Read about the languages ​​you chose above. Review the literature that you will need to read in order to learn these languages. And choose the ones that are written about as being light, or that you thought were light. Such languages ​​can be PHP, Ruby, Python.
  • The thrill of the process. If you don't enjoy writing code in your chosen language, you won't enjoy the process, work, or life. Do you need it? Make the right choice.

You will also have to decide on the direction of programming. Mobile, desktop, games, web, low-level programming and so on. The most popular and relatively easy industries are development for web, mobile and desktop clients. One language may be suitable for each direction and another may not be suitable at all. That is, when choosing a programming language, it is also worth starting from this factor.

In any case, learn web technologies. This is the markup language , styles and , which will make your page dynamic. The next step is to learn a server-side language (Python, PHP, Ruby, and more) and web frameworks that are suitable for it. Explore databases: almost every programmer job lists this.

How to get initial experience

Without experience, you won't get a job. Without a job, you won't get experience. Vicious circle of real life. But don't worry, we'll get out of it.

First, don't wait until you've read all the books in your chosen programming language. Start writing your first lines of code after the second chapter of the book. Complete all tasks from books, reprint examples, understand them. Complicate examples and tasks from books with your own ideas. Create your own tasks for the material covered. Solve these problems.

Second, you need to find your first projects. This is probably the most difficult option, but working. You will have to look for orders yourself, fulfill them, bother with payment. For a beginner, this is daunting, but then all other options will seem like a trifling matter. Completed projects can be recorded in experience and shown to your future employer. Real projects are a big plus on your resume.

If you know English, register better on English-speaking exchanges. The market is bigger. If you don't know English, learn it. In the meantime, Russian-language freelance exchanges are available to you. Look for small projects that are at or above your level of knowledge. Apply for a couple dozen of these jobs. And get ready to get a lot of rejection. But if one or two applications work, you will have a chance to get real experience.

Another good option for getting real experience is open source. Such projects always need new people, even beginners. You can search for bugs in the project or look in the bug tracker and suggest methods for solving them. Finding such projects is easy on GitHub or . Feel free to ask questions there.

The fourth option for gaining experience is to help familiar programmers. Ask them to give you small and easy tasks. If something does not work out, you will always have someone to turn to. And at the same time you will participate in a real project.

The last way is through your own projects, various hackathons or work in a co-working space. It is difficult to start your own projects, it is better to look for acquaintances or friends.

Why Choose Python

Let's talk a little more about the choice of the first programming language. The first language should be simple and popular in the market. Such a language is Python. I strongly advise you to choose it as your first programming language.

The Python code is readable. You don't even need to be a programmer to understand in general terms what's going on in a program. Due to the simple syntax of Python, it will take you less time to write a program than, for example, in Java. A huge database of libraries that will save you a lot of effort, nerves and time. Python is a high level language. This means that you do not need to think much about memory cells and what to place there. Python is a general purpose language. And it's so simple that even kids can learn it.

In fairness, it is worth mentioning other programming languages. Java Might be a good choice for a beginner. This language is more popular than Python, but also a bit more complicated. But development tools are much better developed. One has only to compare Eclipse and IDLE. After Java, it will be easier for you to move on to working with low-level programming languages.

PHP is another very popular language. And I think it's even easier than Python. It is very easy to find a mentor or a solution to a problem on the forum. This is because there are a huge number of PHP programmers of various levels in the world. There is no normal import in PHP, there are many options for solving the same task. And that makes learning difficult. And PHP is sharpened exclusively for the web.

Languages C And C# very difficult for a beginner. ruby is a good choice as a second language, but not a first. JavaScript- a very simple language, but it will not teach you anything good. And the task of the first programming language is still to teach you something right, to set some kind of logic.

Is English Important

Important! Do not know? Teach. Do you know? Improve. Learn to read, write, listen and speak English. Focus on technical literature. Listen to English-language podcasts. Read English-language textbooks on programming.

What you need to know, besides the programming language

Of course, apart from the programming language and English, you need to know something else. But what - depends on the direction that you choose. A web programmer must know HTML, CSS, JavaScript. A desktop programmer teaches operating system APIs and various frameworks. A mobile app developer learns Android, iOS or Windows Phone frameworks.

Everyone needs to learn algorithms. Try taking a course on Coursera or find a book on algorithms that suits you. In addition, you need to know one of the databases, programming patterns, data structures. It's also worth getting to know the code repositories. At least with one. Knowledge of version control systems is required. Choose Git, it's the most popular. You need to know the tools you are working with, the operating system, and the development environment. And the main skill of a programmer is to be able to google. You won't live without it.

Last steps

You need to prepare a resume. Not just a resume, but. You should not write there, but you also do not need to be silent about your skills. After you are invited for an interview, you must prepare for it. Go through the material that is listed on your resume. You must be confident in your knowledge. Review the projects you have worked on, remember the technologies you have used. And forward - to a bright future with a new profession of a programmer.

1.1 Why do you need it

Be a scribe! She [this position] will free you from taxes, she will protect you from all kinds of work. She will remove you from the hoe and ... and you will not carry a basket. She will separate you from rowing and oars, she will remove you from troubles. You will not be under many rulers and under many rulers.
[...]
Be a scribe! His limbs are smooth, and your hands will become soft. When you go out, you are dressed up, you are exalted, you are questioned by the courtiers. When they look for a skillful one, they find you. Those who know nothing are looking for a scientist. He [still] rises up to the point of receiving the [title] sulfur, praised for his excellent behavior.

Papyrus Apastasi II, Ancient Egypt

Times pass and nothing changes. The main reason is that programmers are very much needed in the labor market. Demand is the root cause of all other factors. Good working conditions, high salaries, loyal bosses. All this looks very, very attractive. In fact, the profession of a programmer is the only social elevator in our time. You do not need rich parents, extensive connections with all sorts of "right people", prestigious higher education and other attributes of successful people in our time. All you need is the ability to create computer programs or websites. You can start programming while living in the most remote and unprestigious province. And achieve fantastic success in life.

Roughly, in the worst case, your career may look like this. First, six months to a year of independent study. Those. learning without outside help. The maximum that you can ask something on thematic forums. You will definitely be helped. But 99% of it will be reading big thick books and doing exercises from there, 3-4 hours every day. Then you can get paid for your knowledge. And it will be real to find such a job. After working like this for a year, for the most common salary of $ 300-400. You will get an experience that opens all the doors in life for you. You can receive from $1000 remotely and/or go where you like best. Even to another country. And living there is no worse than the locals. I do not support the stupid slogan "get out of ...", but if you really want to change your permanent residence. This profession is the shortest and easiest way.

After you complete your internship, you will never live worse. This will be very difficult. Even a purely psychological profession relaxes. You will not be afraid of crises, wars, natural disasters and bad bosses. Because at any time you can move anywhere and change jobs to another. You will always have enough money for a “bun with butter” and even early repayment of the mortgage.

1.2 Who can become a programmer?

Now a little tar. Anyone who can work with his head can become a programmer. In fact, head work is as hard as hard physical labor. The brain under load consumes a lot of nutrients and energy. He must be forced to work by force of will. Fans of working with their heads can be found no more often than people who enjoy physical activity. We all know how many people can voluntarily do exercises in the morning and go regularly, for years, to the gym. About the same number want to voluntarily load their brains with work. It will take will and patience. If you are ready to solve complex problems, "unsolvable" problems for more than a year, you can become a programmer.

Of course, in this part I had to list what kind of education you should have. What courses, diplomas and competencies do you need to have. But all this is secondary. Because diplomas, competencies and courses come with time. If there is no readiness to gnaw at the granite of science, nothing will shine for you. Otherwise, you can gain all the necessary knowledge in six months.

Quite logically, the better you know the computer, the easier your path will be. You must be computer literate like an advanced user. Those. know what a file system is, in terms of how to store your files there, how to open them with different programs, how to install programs and use any of them, if this does not require any special knowledge about what these programs do. I think in six months you can learn how to use a computer to a sufficient extent. Even if you have never seen him before.

Most of those who want to become programmers are fans of computer games, whose parents turned off the Internet in order to return them to reality. Returning to reality, where you have to feed yourself, not a virtual character. Arranged by system administrators, the lowest level. They go to work in technical support, because the computer is the only thing they can use well. These people already have the necessary knowledge base.

If you are having difficulty communicating with a computer, my advice to you is to learn how to use it confidently first. If only because the problems that you will encounter while learning programming require the same approach and skills as when solving the problems of a simple user. Therefore, inexperienced users need to become experienced. There is a huge amount of free literature, interactive courses, video tutorials, and expert users around to help you. At least, the tasks in learning programming are an order of magnitude more difficult than the tasks of a simple user. Good computer skills are the responsibility of any programmer!

Other knowledge, such as foreign languages ​​and even mathematics, can be considered insignificant at the initial stage.
Of course, there will be people who will ask: “Wait a minute!!! What if I'm dumb (old, disabled, etc.)??? What should my IQ be???

In fact, there is no 100% way to determine your programming ability by some formal criteria. According to one popular scientist - a neurophysiologist, the human brain is very changeable. If the weight, height, dimensions of the main human organs vary, conditionally +\-50% in the bulk of adults, then the sizes of the brain lobes vary tenfold. Therefore, it is very difficult to understand which activity will suit you the most. To do this, we need to make a new type of already insanely expensive medical device. Then hire rare and expensive specialists who will analyze the readings of the device. And at the same time, it’s not a fact that for your money, they simply won’t make mistakes. As it happens in all complex and expensive projects, at the initial stage.

Of course, everyone thinks everything can be reduced to something like an entrance exam to a university, where the main subject will be mathematics. But no! I'm about to upset everyone. Mathematics on the outside is similar to programming, but this is only at first glance. I remember reading an excerpt from a book 10 years ago where the author, an experienced programmer, said that programming is more like linguistics. Yes Yes! In his opinion, professional linguists can be better programmers than professional mathematicians! Can't agree 100%. But there is a rational grain in this.

Let's look at an example. You need to write instructions for the child so that he buys products in the store. Like: “You go to the store, look for cane sugar, if there is none, you buy regular sugar. Then you buy bread, a loaf of white and black. If there is no black, buy gray ... ”You will be surprised, but this kind of instructions is pure programming. Moreover, you can write them in foreign languages. Or you can, using the syntax of a programming language in the same way as a foreign one. And another programmer will be able to understand what is written.

For those who don't believe, let's look at the simple logic implemented in hundreds of programs. "Request the number of rows highlighted in a table. If the number is greater than zero, make the "Apply" button active. Otherwise passive ... ”You can also write this algorithm in a natural native or foreign language or in a programming language.
You will also be surprised, but translating algorithms from a natural language into a programming language is the most common job. When a programmer is given the task to implement a clear logic invented by others. Conversely, the translation of programmed logic into natural language is also needed. When these "others" need to describe how exactly the program works. Yes, that's right, C++, PHP and other programming languages ​​can be perceived as special foreign languages. Mathematics is also sometimes needed, but, as a rule, when performing some highly specialized tasks that you may never encounter. You can start without any mathematical background.

Programming is a separate branch of science. It is related to mathematics in some way. But it can also be associated with linguistics. Certainly some programming technologies are connected with something else. Therefore, it is not so easy to say whether you will succeed or not.

1.3 Three stages on the way to a profession

Now that you're tired enough of all the near-programming nonsense and a little surprising facts, it's time to get straight to learning. Your professional development should take place in three stages:

1) Trial period. You must try this activity.
The fact is that mastering a profession takes six months or even a year of study. And you need to understand as early as possible whether you can or not. Is it worth it to invest your time and even money. Or disappointment.

During this period, it is necessary to master 2-3 technologies of real programming. But they should not require a lot of time to master. If you manage, it makes sense to spend the promised six months or a year on the next stage.

2) Independent study.
If you have passed the previous stage, you can invest your time in mastering the profession.

3) Internship.
Your first job and first money.

2 Trial period

2.1 What to do?!

In fact, there is only one way to find out if you can or not. “To start programming, you have to start programming. And to start programming, you need to start programming!”

Many people consider programming to be a difficult task, you need to know a lot of things to work as a programmer. And it is true. If it were easy, they wouldn't be paid such high salaries. But on the other hand, there are many books in the public domain. And most of them are of good quality. Professionals from large companies tend to write huge books or articles where they describe their invaluable experience to others. Strange people, of course. Instead of getting huge money for their work, they are engaged in book writing, for which they pay less, if not nothing at all. These "oddities" will be discussed later. And now you need to clearly understand, there are very few secrets in this profession. Most issues are resolved by searching the Internet. Therefore, despite the complexity Programming is one of the most accessible professions.

During the trial period, you need to decide on the technologies on which you will start. They should not be too complicated and long to master. But, on the other hand, they must be in demand by the market, so that even those couple of weeks or a month spent on them are not wasted.

My personal opinion is that it should be:

2.1.1 HTML
A very simple programming language. To be more precise, it's not even the programming language that everyone is used to. Procedural and object-oriented, like C++, PHP, Ruby, etc. It is impossible to write “what to do in the store” on it. This is the markup language that you will find in any web page. The instructions of this language look something like this: “This paragraph should have an italic font”, “Here, display picture.png”, “The font size of this piece of text is 12 points. The color is red."

It is a very useful language for beginners. Even if you are not going into web development, this knowledge will come in handy. Estimated development time, 2-5 days. At the same time, it is not necessary to memorize extensive reference data. It is enough to learn how to use these same reference books. Among programmers, HTML is not considered something serious and complex. But ignorance of the basics of HTML, something that you can only admit to the closest people. Employers and colleagues will perceive you as mentally retarded.

As you learn HTML, you will constantly come across references to CSS technology. Study is not required at this stage. But if you get carried away with CSS, this knowledge will not be superfluous.

2.1.2 JavaScript

It's already a "real" programming language. Its study is closely related to HTML. This is where the first real difficulties await you. Although there are a huge number of textbooks, video tutorials and all kinds of sites on the language, where everything is chewed up to the smallest detail. This will be a real test.

Surely someone can't wait to start learning C, Python, and even Haskell. But even if you are going to become a systems programmer. Most likely, sooner or later you will come across HTML and JS.

One of the reasons for choosing JS as the first programming language is its applicability in different areas. Starting with the logic of web pages on the client side. Ending with the JS-like language QML, where the developers of the Qt framework are pulling us by the ears.

If a novice programmer does not know simple things, there is not much difference where to start. The proposed technologies do not require large and heavy development and execution environments. On them - a lot of textbooks and reference books in Russian. No need to get confused with address arithmetic and similar specifics. Your task is to learn how to make basic logical constructions such as loops, branches, etc.

Every textbook contains exercises. And at the initial stage, you should do these exercises. The bigger, the better!

However, there are two small categories of people who can replace JS with something else:

1) Those who have good mentors in other programming technologies.
For example, brother / matchmaker, working as a system programmer C. And he is ready to help you. In this case, C may be preferable. But as far as I know, about 30% of programmers are WEB programmers. So with a high probability JS will be the right choice.

2) People who need some other language right now for work. System administrators, usually SQL and bash.

In the case of SQL, I would not flatter myself. It is also a "fake" language. Complexity between HTML and JS. Most likely, everyone will have to learn it in any case. But over time, I would advise you to still try something like JS that supports procedural and OOP paradigms. There is still a plus in learning SQL. If you do not master it, there is no point in continuing.

But bash is different. Heard JS allows you to replace bash via a module in node.js. So, if you need to write scripts from scratch, JS will be more interesting. If you correct what was written before you, then there is no other choice. Just like with SQL, JS will remain in your queue.

2.2 Tutorials

A very important question is which tutorials to use. Listed here are the options in okay by which they must pass.
  1. Video lessons. There are a lot of them on any topic. Youtube will definitely give out playlists for any popular technology. Even in Russian. Everything is clear there, and start sculpting your first “Hello, world!” it is necessary from them. There is only one drawback. They may not cover all the depths of the language being studied. But you'll have enough problems without it.
  2. multimedia textbooks. Most likely, these are collections of video tutorials plus something else. They are often sold for money.
  3. Books. The most difficult to understand. They just cover more subtleties of various technologies. Leave it for later. When you exhaust the possibilities of the previous options.
But only please, here and further. No need to buy any courses and pay for miracle textbooks. All the "miracles" have been lying for a long time, maximum on torrents. In my opinion, rutrracker, banned in Russia, contains the best collection of multimedia textbooks and books.

2.3 Solving technical problems

Having shown strength of will and patience, you heroically began to study the subject. And all sorts of technical problems began to arise in front of you. You can do everything according to the instructions. But your examples may not work. If only because the instructions can be written for previous versions of software tools. The most difficult step may be with the first run of the source code, which you simply rewrote from the tutorial.

The most common mistakes are due to the fact that beginners tend to rush and consider some things optional. You, like any normal person, think there are minor points in books about programming. You probably want to quickly get the result, in the form of an intern position. And then, surrounded by competent colleagues, you will understand everything and thoroughly study it. So "some textbook" on JavaScript that won't even be your primary language. It can be perceived as a marathon distance, which must be overcome quickly. In fact, any programming textbook should be perceived as a field that needs to be plowed. Everyone who skips the little things ends up facing intractable problems. And instead of a company of competent colleagues, they will be completely alone in studying the material again.

For example, did you remember a minor term poorly? And after a couple of days, the code interpreter or compiler will give you a verbose error output. In which there will be dozens of terms, both those that were encountered earlier in the textbook, and those that were not met. And the mistake you recognize may be the key. After fixing it, all the rest will magically disappear. Most of the reasons for dropping out of school at the initial stage are connected precisely with the parsing of errors issued by the interpreter or compiler.

Does it seem to you that a detailed description of the use of quotes with arithmetic operations is some kind of crazy nonsense that you will never use? You may or may not. But the author considers it simple. Therefore, further in the tutorial, the addition of characters with and without quotes will be found everywhere. But even if you decide that it is better to take a textbook on another programming language that you have high hopes for. He will also torment you with lines like "5" + 3. Moreover, with the same "stupid" verbose explanations.

Unsolvable problems are part of the life of any programmer. And no matter how diligently you do everything, you will not get anywhere from them. Personally, even despite 5 years of experience, I also look at books about something obscure and complex. And sometimes I also think: “It’s some kind of nonsense. How am I going to solve this?!" And exactly the same as yours. For me, a lot depends on solving problems that seem completely dead ends.

If you have problems that you can address to a forum or a social network thematic group, then with my problems, it is useless.

In fact, there is a special algorithm for solving them:

1) You need to think very carefully about the reasons. Analyze the compiler, runtime, or interpreter (JavaScript) messages associated with the error. You must understand very well what the computer is telling you about the problem. If you do not understand, search the Internet for the text or error code. Very often explanations are found, but in English. Even after translation, there is little to understand. But you have to try very hard. It's not really just a situation where you're solving a specific problem. This is a situation where you get a new experience. No less important than knowledge from a textbook. Along with this, an analysis of potentially problematic code is carried out. If you rewrote or copied the code from somewhere, you need to thoroughly understand it.
If in one and a half to two hours you seem to have explored and understood everything. But they didn't find a solution. So we need to leave the problem until tomorrow. Even if there are other ideas.

2) Do something else that does not depend on your problem and it works. You can even continue to study your current study guide. You will be surprised, but over time, ideas will come how to solve the problem. If they are not entirely clear. Rushing to a solution right away is not recommended. Better write it down and leave it for tomorrow.

3) The next or any other day. We try all new ideas to solve the problem. We repeat the first step.

4) If everything is still bad, we are preparing a question for the mentor or for the forum. You need to be clear about what you want to do. And what is your code. Asking you to sort out code for you that you haven't even bothered to study well speaks of total disrespect.

As a rule, this is quite enough to solve any problems.

2.4 Working with mentors

A small set of rules for working with various experienced professionals, mentors, mentors, etc.
  • Before asking, you should try to find the solution yourself.
  • Try to ask only what is not described in books, documentation and the Internet. Otherwise, you will be sent there.
  • If you were sent somewhere, you have to go there. Otherwise, the mentor will go there himself and find a solution. This will greatly ruin his opinion of you.
  • So that the mentor does not stand at your table for hours and does not watch your every step, you need to group questions. Ask them "wholesale", a lot of accumulated at a time. Not as it occurs.
  • Questions are best asked when your progress is blocked. If you have anything else to do, do it. It can also raise questions. Which are better to ask together.

3 Independent study

Get in your place! The books are already in front of your comrades. Take your dress and take care of your sandals. Read the book diligently. Do not spend the day idly, otherwise woe to your body! Write with your hand, read with your mouth, seek advice from someone who knows more than you.

Do not spend your days idly, otherwise you will be beaten, for the boy's ear is on his back, and he listens when he is beaten.

Do not be a man without reason, without education! And at night they teach you, and during the day you are brought up, but you do not listen to any instructions and do what you have planned. And lions are trained, and horses are tamed - and only you! No one like you is known in the whole country. Notice it to yourself!

They tell me that you abandon your studies, you indulge in pleasures, you wander from street to street, where you smell of beer. And beer seduces people, it upsets your soul. You are like a prayer house without its god, like a house without bread. You are taught to sing to the flute. You're sitting in front of a girl and you're smeared with incense. Your wreath of flowers hangs around your neck.

I will tie your feet if you roam the streets and you will be beaten with a hippo whip!
Scribe instructions. Ancient Egypt

After mastering the basics of JavaScript. You already have a good idea of ​​what it is to write program code.

And you are ready to spend six months or a year to master the profession. And most importantly, for you it's a matter of time.

3.1 What to study?

All people seeking to master any profession can be divided into two categories: amateurs and professionals.

lovers people who enjoy this activity. And they are ready to do it even for free. Sacrificing time that can be spent on entertainment, recreation, etc. Once you've tried it, you know very well whether you like programming or not. Amateurs have one very good quality. They don't need to be motivated. They will work hard, conscientiously and gladly receive new knowledge. Then, they will share this knowledge with colleagues and friends with the same pleasure. But the most amateur of amateurs write articles and even entire books about their experiences.

Professionals are willing to do it just for the money. Or for the prospect of receiving them. Professionals need to be motivated. And they almost always stop developing as soon as they get a good job. Even an increase in salary twice may not be enough reason for them to continue their studies. As a rule, only amateurs are suitable for advanced training.

Of course, pure professionals and amateurs are rare. Some people like to work half or a quarter. Someone, having tried different technologies, finds an occupation for himself.

Suppose a developer worked for himself for money. He had a chance to somehow go to the customer, clarify the requirements with direct users. And the developer understood. Running into accountants is much more interesting than writing code. As a result, the developer will ride for the entire team. Even during off hours. Gradually retrains as a system analyst or project manager.

But basically, they try different technologies. Some of them are captivating and some are not. Even the same technology can captivate at first, and get bored after a year.

It is very important for any person to understand what activity they like more. Because life comfort depends on it. There is a common misconception that work is only for making money. Although this is a huge and the best part of life. At work, you can engage in creativity, communicate and much more. If you go to an unloved job for the sake of money, you will have to somehow compensate for this with entertainment, relaxation. As a result, there may not even be enough money for compensation.

The highest paid specialists are amateurs with experience. They also get the most pleasure from work and life. Therefore, at this stage, you need to decide what you like the most.

The technology (the programming language you will learn) must be commercially relevant. From the TOP 10 popular languages. Otherwise, you will not be able to receive money for your work. This means that you will not become a programmer. We'll have to earn money separately, program separately. Which, of course, is impossible.

You still have an internship ahead of you. And internships are willingly taken only in scarce specialties. Especially remotely. Therefore, think / decide what you want to devote your life to. What will you study at this stage? You can continue with JavaScript. You can try something else. No one bothers to change your mind in the middle of the road. You have already tested yourself and there is a certain field for experiments.

The only exception I would make is for C++. It's a difficult language. It probably takes twice as long to master. Than just C or JS. In this case, the salary will be increased by a maximum of 20%. C++ is the language of C++ lovers.

If you don't like JS and feel like the "professional" described above, Java is probably the best choice. Once I could not even run a program written in this language (jar archive). But, on the other hand, Java developers in conjunction with Oracle (PL \ SQL) from large corporations are perhaps the highest paid developers in IT. Despite the fact that these are technologies of medium complexity. (I guess in the Java world, people only pay for the ability to run jar files.)

There is also a wonderful Python language. It will be very useful to all kinds of mathematicians, statisticians, because. opens the door to the world of Data Science for them. On the other hand, it is the web development language for everyone else.

Studying at this stage is aimed at improving their skills to the maximum. In fact, you will raise the market price of your labor. Be sure that everything you lose due to programming at this stage will return many times over.

Self-study has an advantage over an internship. You can get more fundamental knowledge. In fact, most programmers are professionals. They learned a little. Got to work. And exploit their little knowledge. Most of what they read are little articles on how to cook something fast. Or shut up any problem. They lack fundamental knowledge. You will be surprised, but not everything is possible
"google". Something you need to know and be able to initially. If only because you have to deal with what you "googled". The code you find could be written by a very good specialist. With a lack of fundamental knowledge, you simply will not understand it.

You should choose for yourself a large, fundamental book on any programming language. And study it to the end. Along with all study assignments.

Completing the learning tasks at this stage is a hard, dreary task! You will be bored, uninteresting, want to quit everything. Most do. Motivate yourself, come up with interesting tasks, keep learning. And you won't be the majority.

In addition to the main programming language like C, Java, JS, etc., you need to learn the following:

English language
As you know, programmers are such people who can read English, but cannot speak. This is the language in which you will look for a solution to your problems, communicate with customers. Spoken English greatly expands the circle of job search. This is very good for wages. Although, admittedly, you can spend as much time on it as on a programming language.

Technical English, easier to learn. Just translate the materials you need in various translators. Memorize unfamiliar words.

SQL
In most cases, you will need this technology sooner or later. It is not necessary to learn add-ons like PL\SQL (except for learning Java). But to master the creation of tables, joins and unions is very desirable. The most useful, perhaps, will be the study of PostgreSQL as an example.

SQL has another aspect. This language is perhaps the most difficult thing that is asked when applying for a job as a tester. Therefore, if you learn only it, there is a chance to get a job very close to programming. In such a job, it will be a little easier to learn programming itself. And you will be very easily transferred from testers to developers. Once you show that you can write good code.

Master the "blind" ten-finger typing method on the keyboard
There is a lot to be printed. So be sure to check it out. There are plenty of free online trainers on the net. You can try to master it before the first, "trial" stage. If you don't have the patience for even that, there's no point in moving on.

Version control systems
Of course it will be Git. Be sure to learn the basics and try it out on your study projects. But last. At first it will be difficult to understand what it is, what advantages it gives.

These subjects are good because they allow you not to lose the pace of study. Even when stuck with learning the main language. You will certainly have the described "unsolvable" problems. Switch here and slowly look for a solution.

3.2 Common ways of obtaining knowledge

university
I can tell you a lot about higher education. But this is of no practical importance. In short. It is better to be an intern after a year of independent study than after four years of attending a university. Those who start studying according to my recommendations now, in 4 years will conduct technical tests when hiring those who are now entering universities.

Paid programmer training courses
Everything is very difficult here. Demand creates supply. But this offer is often of very poor quality. You can try any of them. But please don't get your hopes up. Try to get the first lessons for free. And run away from there if you don't understand anything in class. No brand under which these courses are made will add to your understanding of the subject. The "job guarantee" there is usually a scam.

Courses and schools conducted by large companies for their future employees
The most famous case is perhaps the Yandex School of Data Analysis.

Here you will be taught by really expensive specialists. And they will do it for their internal needs. As a rule, such courses have some requirements for candidates. Yandex required mathematical background. EPAM required knowledge of the basics of programming. Just don't get there. But if there is an opportunity to attend these courses, it is definitely worth aspiring to go there! Even if you stay in the "slavery" of these companies for some $ 400-500 per month for a whole year. A big plus for these courses. They don't require any education.

3.3 Learning strategy

Most students expect to learn programming by simply studying. Like, he sat down at a textbook ignorant of the subject, and finished teaching him and began to understand everything. The whole process seems to beginners linear. Moving from chapter to chapter, passing training tasks, a person gains knowledge. People do not represent other models. Because they never did complex and long projects. But in fact, everything is not so simple. Any programmer knows that in the course of a project, new details are inevitably revealed that hinder or, on the contrary, help in its implementation. As a rule, the larger the project, the less it resembles what was originally conceived.

A simple example. You ordered a suit in the atelier. Discussed all the details. A week later, the master calls with the news, the agreed shape of the seams looks very bad on the suit, it needs to be changed. Then it turns out that it is necessary to change part of the material. There is no need. You change and change. In the end, you get about 2/3 of what you originally intended. In the case of software development. In the project of a business suit, you can get a swimsuit. And for the price of the suit. If you think this is unbelievable, then ask smart project managers. In the meantime, you need to learn one thing, there will be many unexpected things in your study project. And you must be able to work with these surprises.

If you do not delve into the wilds of project management, you should not develop linearly in IT, as described at the beginning. And in a spiral. It looks like this. If you don't know computer well. No need to guess that in a year you will be a C ++ or PHP programmer. First, study the computer. You open up new opportunities and obstacles. For example, we began to understand more what you want to do in the end, sites or desktop applications. Then, at the stage of the trial period, you will try to program for the web (html, js). You will learn more about programming. After the trial period, you can already guess your main direction. What language will you study. Someone at the very beginning of the journey may not have suspected about system programming. That there is a separate direction where developers write programs that are invisible to the average user. And perhaps for you it will be more interesting than what you dreamed about at the beginning.

In the learning process, there will definitely be reading textbooks and solving problems from there. But the very sequence and order of passing tutorials should obey the "spiral" cycle. So that each stage provides a good basis for the next.

You must be your own manager and plan achievable goals, milestones. Right now, many young people are dreaming about how they will be the creators of a top website or operating system. And someone dreams of writing a calculator and using it to get an intern position. I hope you can guess who will be a successful programmer in a year. It is very important that your projects and ideas have their successful implementation. A bird in the hand is worth two in the bush.

In addition, "managerial" qualities are very useful for those who consider themselves "stupid". In IT, it is very easy to be smart and very hard to be smart. A smart person can easily take a textbook, read it and immediately do something useful. Stupid people will take the same textbook, read it and understand nothing. So you need to break the training material into parts and train more (write code) based on these parts. You can break the material into such parts that it comes to anyone. For those who know how to plan their learning process and solve “unsolvable problems” (2.3), there are no insurmountable obstacles. You will master absolutely everything, regardless of intelligence. Let it take much longer. But it is much more important for you to have holistic and tested knowledge / experience than the speed of acquiring them.

Of course, it will be very difficult for you to understand and, most importantly, put into practice such a model. But those who succeed will have a pleasant bonus in the form of the prospect of becoming a “project manager”. If right now you just want a programmer's salary, then you'll want a project manager's salary so much that you won't be able to sleep. There is only one minus here. However, you need to be a good programmer first.

3.4 When to look for a job

It is very difficult to say when you should look for your first job in this specialty. In fact, you can start your job search right after the first stage. I suspect many will. If you are under 23 - 25 years old and you live where the software development industry is well developed, you will succeed. You may not become a good specialist. But you will definitely make a living.

On the other hand. There are people living where no one is involved in software development. And there are people who are well over 25. Such people should study longer. To go from low-skilled to highly-skilled. For the sake of getting highly qualified programmers into their ranks, the employer is ready for a lot. You may be offered assistance with relocation. Or even remote work. Age beyond 30 or 40 won't matter much. The main thing is to show your high accumulated level.

Starting your job search as early as possible makes sense if you already have a busy job. Where you do not read books on programming. In this case, it doesn’t matter to you after what work in the evening you study the subject. Current or after work as an intern.

Early search has a big disadvantage. After the interview, the employer will have some opinion about you. Which you don’t want to change over time if you once showed a low level of knowledge. Six months later, when you know much more, your resume may not even be considered. Because the opinion of you will remain the same. We can only hope that the first interview will eventually be forgotten. But that's at least six months. It may be that the employer maintains a database of candidates. To avoid interviewing them twice. In this case, everything will be very sad.

3.5 "What do I need to know to get Junior?"

Beginners often ask this question. There is no definite answer here. This question can only be answered by a specific employer at a specific point in time. It is impossible to answer for the entire labor market at all times. Your chance of getting a job as a "Junior" or, as I put it, a "trainee" varies over time depending on several processes and factors.

The process of your self-training makes you more attractive to employers. At this time, vacancies suitable for you appear. Closely related to the programming language you are learning. You send your resume there. And the employer chooses the most suitable of the responded candidates. The qualification of candidates is limited from above by the salary of the vacancy. Perhaps you will be the best for this salary. Or maybe not. So, over time, you learn and appreciate. And at some point, in any way, you will be the best of all those who responded.

Another factor is the age of the candidate. Which slightly reduces your attractiveness. The greater the age, the greater the decline. There is a factor of having a good portfolio that increases. Experience, recommendations and much more.

You can cost a lot as a C++ programmer, but very little as a PHP programmer.
The most "free", the factor of your fame to employers. When you are known to more employers. There are more chances that you will be taken somewhere.

“Patience and work will grind everything!” Continuous self-education is your guarantee of getting a job!

4 First job as an intern

4.1 How to look for your first job?

4.1.1 Portfolio

Start by writing a portfolio. It should be a small program or script for the site that does work that looks useful. The assignment should be clear to your potential employer. For example, an address book. If you make a calculator for calculating the flight paths of Earth satellites, it will certainly be cool. But your future employer is unlikely to be in the subject. Therefore, he will not be able to evaluate the result. It is desirable that the program somehow store the settings and user data. There should be some small and complete piece of code. If, for example, you send your patch to some free project, the employer may be too lazy to delve into the source code of the entire project. And evaluate what you have changed there in this context. Well, if the application will use the SQL database, where it makes sense.

And the most important, of course. How it will be written. It should be well formatted and structured code. Be prepared, the employer will take a line from this code and put it into a search engine.

In order for the code in the portfolio to be good, it must be allowed to “lie down” for a week. Those. write and leave for a week. Then review the entire code. After fixing the errors, upload it to some temporary ball and create a topic on the forum with a request to see the source code of more experienced programmers. With the obligatory indication that this is your portfolio.

After correcting the errors that you will be pointed out. Perhaps it will even be a global alteration of your creativity. Upload the code to one of the source code hosting sites. Delete the topic where you were told about your mistakes. The future employer does not need to know about mistakes.

Ultimately, it is very important to understand every line you write. Most likely, you will be dragged along it and asked all sorts of tricky questions.

Believe me, creating a portfolio and code review (code review) by more experienced colleagues will add + 30% to your experience. It also allows you to adequately assess your current qualifications. Your code will certainly not be perfect. Get ready, they will find errors there (for free!) This is not so bad. But when you don’t know why you wrote the code like this, and not in another way, the real trouble. So it's just that you didn't write the code! In this case, they kick back with a wish to come back in six months with their code.

4.1.2 Summary

In general, a resume can say a lot about a person. For example, a poorly structured resume. Most likely it will be written by a developer who does not particularly care about the structure of the source code.
A section copied from the network, for example, “Professional qualities”. Says that the candidate is inclined to lie. The absence of achievements that are not remembered even at the interview says that the person is a “professional”. And much more.

Once there was a funny story. Undertook to criticize the summary of one colleague. The conclusions were disappointing. I say: “Your resume is so bad that I would hire you! You are a good specialist. But with your resume, you won't find a good job. Therefore, you can be kept on a small salary. And you're not going anywhere!"

For this not to happen. It is also desirable to give a resume to HR specialists and programmers for evaluation.

Naturally, in the summary it is not necessary to lie or give dubious facts. It will be read very carefully by people with great life experience. Any attempts to hide something or embellish will be regarded extremely negatively.

Better to have a modest resume. But be sure that you answer for any word in it.
If you have already gained some work experience and you have something to brag about. You can add a Portfolio section at the very end. Describe in detail the projects you have been involved in. Interesting technical solutions, achievements (in detail). At least 10 pages. But just at the end.
Be sure to indicate that you are ready for relocation (moving) and business trips.
A completed profile on LinkedIn, HeadHunter and other job search sites will also help you.

4.1.3 Finding a job

Now we pass to the most interesting.
You need to clearly understand that interns and inexperienced developers are rarely needed. Employers are primarily looking for experienced people. But their salaries do not always allow them to hire the right people. Therefore, your resume with zero experience will be considered sooner or later. And the code from your portfolio will help a lot with this.

Therefore, you should send out resumes to all vacancies that match your profile. For example, we studied JavaScript. Send resumes wherever this JavaScript was required. Despite the minimum required length of service, the presence of a specialized higher education, the fact that the vacancy has already been closed, and much more. On the “other end of the line” they know better what to do with it. Also send to all firms that theoretically have or may have specialists in your profile. Mail is usually taken apart by secretaries. It's no big deal if they put your email in the trash. The opinion of such employers about you does not matter. Even if it is the most prestigious firms.

The search for a job itself takes from a month to two. Usually, if you apply for a vacancy, you will be contacted after 2-3 days. Then, during the week, an interview and / or a test task. And then, within a month, the employer will think about the results. Direct refusals are usually not sent. They just forget about you and that's it. So get ready for a lot of interviews, after which you will forget about them. Don't rely on any options. Passed the interview and dive back into learning programming.

4.1.4 Programmer's Karma

There is one very curious moment when looking for a job. Let's say you've learned JavaScript. Faithfully taught and studied. Then look for a job as a JavaScript programmer. And suddenly you are offered to become, for example, a systems programmer. The employer can tell if your JavaScript is good. But he only has trainee vacancies for system programmers C. So you can go for trainee C.

The trick here is after such a first job. Returning to work with JavaScript will be problematic. And it's not some kind of magic. Just like a C programmer you will be proficient. As a JavaScript programmer inexperienced. Those. reverting to JavaScript lowers your salary. Maybe even twice. So you will remain a C systems programmer for the rest of your life. I don't think this is a bad option. But you need to be aware of these limitations.

4.1.5 Interview

You will be surprised, but most interviews for programmers take place remotely. Therefore, even if you want to get a job in a city, hundreds of kilometers away, it's okay that you are now in a different place. An employer can remotely check your competencies and decide whether you should go for an in-person interview or go directly to work in his city.

If the interview is in absentia, then everything is simple. You will need a good connection, internet and telephone. And one and a half to two hours of time when no one will interfere. If silence and good internet in your home is impossible. Agree with friends that they will give you their room with a computer or apartment for the duration of the interview. Video calls are usually not required. Most likely you will need Skype and TeamViewer. Heavy development environments, compilers, editors are usually not needed. A simple code editor like Sublime or Notepad++ will suffice. The employer will write what you need to have for the interview.

Much has been written about face-to-face interviews. I see no reason to repeat myself. In any case, having received an invitation, you should learn as much as possible about the inviting company. See reviews about her as an employer. And decide if you want to work there. If you want, be sure to come up with a reason why it is there. Why did you send your resume there?! After all, it may not fit the formal requirements.

In any case, you should want, first of all, an interesting job and professional growth. Type tried to program, you really liked it. And now you are looking for an interesting job in this direction. From your future employment, first of all, expect interesting tasks. Opportunity to connect with like-minded colleagues. And, of course, to polish, your professional skills. These are the kind of questions you should be asking in the beginning. You should be interested in what experience your future colleagues will have. What technologies are used in the project for which they are looking for an employee.

Of course, let's be honest. Most of them are overwhelmed by the main question, about salary. This is the last thing to figure out. Such questions are usually asked by "professionals" at first. Bosses are looking for amateurs.

Usually, the salary of an intern, with some knowledge on the topic, is the salary of an ordinary office hamster in the same city. But if they offered less, my advice is to agree anyway. Let's say you're a sysadmin. You receive $500. I think $ 500 for a system administrator in central Russia is the ceiling. And now you are offered the position of a programmer (actually an intern) for $ 300. If that sucks for you. Don't even start studying. Close this article. And forget about programming as a future profession.

Your first developer salary should be enough to survive. The fact is that together with $300 you will receive $1000 worth of experience and knowledge. Gain experience in team development. Your work will be evaluated by more experienced colleagues. Get unlimited access to their experience. Most likely your portfolio will grow with real projects. All this will make you a real and sought-after specialist. If you are not lazy and take advantage of all this. In six months, catch up with your $500. And this will only be the beginning of your career.

Of course, it can happen, you won’t get “Experience and knowledge for $ 1000”. In this case, just look for another job.

During the interview, you should not be afraid of anything. It is necessary to behave naturally, but have a working attitude. Interviews are usually polite. The task of your future boss is to understand what kind of person and specialist you are. They will rather watch you very closely.
No one will ever give you a true opinion about you. A bad opinion can turn you against. Which doesn't make any sense. You might still be useful. And good things can be the reason for asking for a higher salary.

An interview is like a first date with a girl. Everything is always polite, cultural and good. Only here the following can not take place.

4.2 Internship

The task of the internship is to polish the acquired knowledge.

4.2.1 Freelancing

Beginning programmers can read a lot of articles from the Internet, which tells how great it is to be a "freelancer". Sitting under palm trees, taking one-time orders and "not working for your uncle."

To understand the advantages and disadvantages of freelancing, you need to understand that the employer is ready to invest in your training, only seeing the long term. Otherwise, it is easier for him to overpay a ready-made specialist than to wait for beginners to solve complex problems. Therefore, freelancing does not give experience in depth. Nobody will give you orders if you do not have the necessary competencies. On the other hand, freelancing is the first interesting practice and the first money. And for the money of the customer at the same time you can create a portfolio for yourself.

You don't have to have high hopes. Just try to find orders at the end of self-study. It will be great if you can do it. But do not assume that you have completed an internship and become a real programmer. This is a good occupation, only when serious companies do not take you yet. Or you have already worked there for 3-5 years.

4.2.2 Companies

Once I heard about one economic law. The larger the association of employees, the more income this association receives for each employee. Accordingly, in large firms, salaries for employees are usually higher. Than individual "freelancers". At least in IT. It is the well-known giants of the industry that pay the highest salaries and buy the best minds. Therefore, the “uncle”, who gathers specialists in a handful and gives work, must be loved. Because together you can earn much more than separately.

And if so. You need to learn how to work in a team. Use community development tools. Colleagues will share their experience with you, help you correct mistakes. You yourself will be surprised how much new there is in the profession, which you have not encountered before.

As stated earlier, most people are "professionals". Once they get their first job, they will “calm down”. And their strategy will be "survival". They will learn only the knowledge needed here and now. Let's say you need to make SQL queries for the code. They will quickly look on the internet for how to make a request for a specific task. And write code based on it. Then the code gets to "code review" to an experienced colleague. It turns out there that instead of two requests and a bunch of code, you can write one request, but with “joins”. And now the intern climbs into the Internet. He reads there a piece of some material about the "joins". Reworks the code. So every day. In this way, most trainees accumulate knowledge.

It would be correct after 3-4 similar questions related to the database, take a manual on this DBMS and study it completely. This is usually done only by "amateurs". Who become curious about what else is there besides the “joins”.

It should be noted that reading any manuals at this stage is much more interesting. You are already familiar with the technology. And good knowledge can make the job much easier. This is much more attractive than just the abstract examples from the books in the previous step.

The internship smoothly flows into regular work. It is difficult to single out the moment when you can consider yourself a full-fledged developer. Probably when your questions to colleagues run out of simple answers. And you understand, most problems will have to be solved by ourselves. Usually this period is six months. If you did a good job at the previous stage. If they hurried, they settled down, having finished reading the book on the main language by half. So continue to master the book and additional technologies.

After the internship, you are free to do whatever you want. Freelance. Do your own projects and more. But my advice to you. Occasionally read literature related to your work. For advanced training. If before you read how to write code in general. Now you can read how to do it very well and correctly. Rest assured, you will always see new horizons of professional training. Don't be lazy! Especially if you want a big salary.

5 Conclusion

I hope this article will help everyone to master our wonderful profession.
If you enjoy this work. There is an idea to talk about the pros and cons of higher education in IT.

Tags:

  • programming
  • programmer career
  • study at it
  • independent study
  • self-education
  • internship at it
Add tags

Comments 179

How to become a programmer from scratch on your own? How to start learning programming for a teapot?

We have prepared detailed instructions on how to master programming and write optimized, understandable code.

How to learn programming from scratch?

1. Self

If you have an iron will and a burning desire to become a programmer, you can achieve your goal through self-education. This is not the easiest and shortest way. You will have to deal with the chaos of information yourself, but you will be able to study at a convenient time and for free.

The easiest way to start is with interactive online courses. There are many sites on the network, the materials of which explain the basics of programming in an accessible way and set the direction for further development.

Pay special attention to those courses that teach on examples of real projects, that is, they tell you step by step how to create a specific program or website.

Platform with free web development courses freeCodeCamp

Remember that you won't succeed without practice. Learn from project-oriented courses and try to write programs and websites that are analyzed in them. Look for lectures on YouTube with a breakdown of projects that you would like to develop. First, copy other people's work and analyze it. Then try to deviate from the original, experiment, change individual elements until you can create something unique.

In addition to courses and video lectures, there are official documentation available on language sites and books. When you understand the basics, look for recent publications with the subtitle Best Practices for your chosen programming language. These books contain the best development techniques.

(!) Be sure to set a goal to create your own project and constantly work on it.

This will help consolidate the knowledge gained and understand what information you still lack. Your skills will develop along with the project. When you finish it, work on a new one - more difficult.

If you have any difficulties in the learning or development process, you can always turn to programming communities like "" and Stack Overflow for any question.

For example, they will help you solve a problem, choose a good course, or point out errors in the code.

It is convenient to hone your skills at special sites where you can compete with other programmers, solving various practical problems using code. These services include Codewars, TopCoder and HackerRank.

2. With the help of a mentor

Mentor- a personal mentor who points out mistakes, warns about pitfalls, helps to plot a course of study. A good recommendation at the right time can save you a lot of trouble and save you a lot of time. Therefore, the mentor will not hurt anyone.

Find out if there are developers among your acquaintances. Perhaps one of them would like to help you. If you do not know such people, you can look for them in the programming communities. For example, on the same "". Only mentoring services are not cheap, but no one wants to spend a lot of time on strangers for nothing.

3. Teachers of "live" courses

Distance and face-to-face courses with teachers who teach programmers from scratch have become incredibly popular in recent years. As part of this format, you also have to work a lot on your own. But you will be engaged in a professionally prepared program, and a living person will check the solutions to problems. The disadvantages of the courses include the high cost of education.

Popular Russian-language online platforms that provide system training for programmers: Netology, GeekBrains and Loftschool.

If you prefer to study in person, you can look for educational centers that teach programming in your locality. Unfortunately, such establishments are most often present only in large cities.

4. At the university

If you have a lot of time left and you are sure that you want to connect your life with programming, you can study computer science at the university. But keep in mind that traditional educational institutions are lagging behind progress, so you will have to master modern programming languages ​​and other technologies on your own.

On the other hand, the university will provide fundamental knowledge of mathematics, algorithms and other areas that will help you become a high-class programmer. Over the years of hard study, you will form the right type of thinking, thanks to which you will grasp everything on the fly in the professional field.

How to choose a direction and language

There are several directions in the information technology industry, each of which uses its own set of languages. We list the main areas in order of increasing complexity, please note that we have chosen the most popular and common programming languages:

  1. Web development: JavaScript, PHP, Python, Ruby.
  2. Mobile development: Java(Android), Swift, Objective-C(IOS).
  3. Development of games and programs for desktop computers: C++, C#, C.
  4. Artificial intelligence, machine learning: Python, R, Scala.

What to look for when choosing?

To make the right choice of direction and, in particular, the language, consider the following factors: the complexity of mastering and the number of training materials on the Internet, your personal preferences (what exactly do you want to develop) and the demand for the language in the labor market.


Graph of the demand for programming languages ​​in the international labor market / research.hackerrank.com

The demand for the language in your area is easy to check on job search sites. Just open the section for software developers and see the number of available vacancies.

If you can't decide

If you're confused, take a look at JavaScript, the language in which almost the entire web is written. Many organizations and programmers advise beginners to choose this particular language as their first language.

For example, freeCodeCamp founder Quincy Larson recommends JavaScript to all beginners. Larson makes a very simple argument:

  1. JavaScript relatively easy to master. And to write something and run it in this language, it is enough to have a code editor and a browser.
  2. JavaScript- the most demanded language in the international labor market and it has great prospects. Large companies such as Google, Microsoft and Facebook are investing in the JavaScript ecosystem.
  3. At JavaScript a very wide scope: from websites and browser games to mobile applications.

In addition, a large developer community has formed around this language. The high interest in JavaScript provides a huge number of courses, books and other educational content.

What else should a programmer know: mathematics and English?

Every programmer needs a deep understanding of mathematics. For areas such as game graphics development or big data, a mathematical mind is a must. But when it comes to web development and the creation of simple programs, in most cases, mathematics can be dispensed with. Although there is no consensus among professionals on this matter.

But understanding English, at least at the level of fluent reading of the documentation, is mandatory for all programmers. Official documents and most educational materials appear primarily in English. Books are often out of date before the translation is out. In addition, knowledge of English opens up prospects for working with the whole world.

How to get your first experience and first job

To find your first job as a programmer, you must have a portfolio. This is a project you created, or rather several that demonstrate all your developer skills. The program of most courses includes the development of projects that can be included in your portfolio.

A very valuable item in the resume will be the presence of work experience, especially team development. But where to get it if you are looking for your first job?

  1. Complete several orders on freelance exchanges. It can be Freelance or Upwork. Offer your services for free, then the first customers will come to you.
  2. Find like-minded people and create a common project with them. People unite for such purposes in almost every educational platform where there are programming courses.
  3. Choose courses whose organizer helps with employment. For example, at GeekBrains, after training, access to internships from different companies, including paid ones, is opened. GeekUniversity and STEP guarantee employment for their graduates.

(!) Before the interview, be sure to search the Internet for lists of tasks and questions that employers often ask.

Join our Telegram channel to keep abreast of all the latest news from the world of Apple, Samsung, Microsoft, Google and other innovative companies.

Top Related Articles