📜 ⬆️ ⬇️

How to become a programmer



This article details how to start a programmer’s career. There will be a lot of letters. And you may be disappointed about how long the process is. But this is a 100% method.

1. Introduction


1.1 Why do you need it


Be a scribe! She [this post] will free you from taxes, she will protect you from all sorts of works. 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 the troubles. You will not be under the masters of many and under the heads of numerous.
[...]
Make a scribe! Smooth his limbs, and your hands will become soft. When you go out, you will dress up, they magnify you, the courtiers inquire you. When they seek the skilled, they find you. Looking for a scientist who know nothing. He [eminently] rises up to the time he receives [the title] of sulfur, lauded for his beautiful 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. The 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 web sites. You can start programming while living in the farthest and least prestigious province. And to achieve fantastic success in life.

Roughly, in the worst case, your career may look like this. First, six months or a year of independent study. Those. study without wide outside help. The maximum that you can, ask something on thematic forums. You must help. But for 99% it will be reading big fat books and doing exercises from there, 3-4 hours every day. Then you can receive money for your knowledge. And to find such a job will be real. Having worked this way for a year, for the most ordinary salary of $ 300-400. You will get the experience that opens all the doors in your life. You will be able to receive from $ 1000 remotely and / or go where you like best. Even to another country. And living there is no worse than local. I do not support the stupid slogan "knock out of ...", but if you really want to change permanent residence. This profession is the shortest and easiest way.
')
After you finish your internship, you will never live worse. This will be very difficult. Even purely psychologically, the profession is relaxing. 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 always have enough money for the "butter loaf" and even early repayment of the mortgage.

1.2 Who can become a programmer?


Now a little bit of tar. Anyone who can work with a head can become a programmer. In fact, the work of the head is as hard as heavy physical labor. Brain under load consumes a lot of nutrients, energy. He must be forced to work by will power. Lovers of work with their heads can be met no more often than people who like physical exertion. We all know how many people can do exercises voluntarily in the morning and walk regularly, over the years to the gym. Approximately as many people want to voluntarily load their brains with work. Will and patience are needed. 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 must have. But all this is secondary. Because diplomas, competencies and courses can be acquired. If you are not ready to gnaw the granite of science, nothing shines for you. Otherwise, you will be able to gain all the necessary knowledge in six months.

It is quite logical, the better you know the computer, the easier your path will be. You must own a computer like an experienced user. Those. know what a file system is, how to store your files there, how to open them with different programs, how to install programs and use any of them, if it does not require any special knowledge about what these programs do. I think for six months you can learn how to use a computer to a sufficient degree. Even if before, you never saw him.

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

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

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

In fact, there is no 100% way to determine your programming skills for some formal reasons. According to one popular scientist - a neurophysiologist, the human brain is very variable. If the weight, height, size of the main human organ varies, conditionally + \ - 50% of the majority of adults, then the size of the brain lobes varies tenfold. Therefore, it is very difficult to understand which activity will suit you the most. To do this, you need to make a new type of already insanely expensive medical device. Then hire rare and expensive professionals who will disassemble the instrument readings. Nor is it a fact that for your money, they simply will not 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 in the university, where the main subject will be mathematics. And no! I hasten to upset all. Mathematics from the outside is similar to programming, but this is only at first glance. I remember 10 years ago I read an excerpt from a book 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! I can not agree to 100%. But there is a rational grain in it.

Let's take an example. You need to make instructions to the child, so that he bought the products in the store. Type: "You go to the store, looking for cane sugar, if it is not there, you buy regular. 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 instruction is pure programming. Moreover, you can write them in foreign languages. Or you can, using the syntax of a programming language as well as a foreign one. And another programmer will be able to understand what is written.

For those who do not believe, let's consider simple logic implemented in hundreds of programs. “Request the number of rows selected in the table. If the quantity 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 the translation of algorithms from a natural language to a programming language is the most common work. When the programmer is given the task to implement a clear logic, invented by others. Conversely, the translation of the programmed logic into a natural language is also needed. When this “other” needs to describe how exactly the program works. Yes, that's right, C ++, PHP and other programming languages ​​can be perceived as special foreign ones. Mathematics is also necessary, but, as a rule, when performing some highly specialized tasks that you may never encounter. You can start without mathematical preparation.

Programming is a separate branch of science. It is related to mathematics in some way. But it can also be associated with linguistics. Surely some programming technology associated 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 the profession


Now that you are tired enough of all the non-programmer nonsense and some surprising facts, it is time to go directly to school. Your professional development should take place in three stages:

1) Trial period. You should try this type of activity.
The fact is that mastering a profession is six months or even a year of study. And you need to understand as soon as possible whether you can or not. Should you invest your time and even money. Or waiting for disappointment.

During this period, you need to learn 2-3 technologies of this programming. But they should not take much time to master. If you manage, it makes sense to spend the promised six months or a year to the next stage.

2) Self 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 need to start programming. And to start programming, you need to start programming! ”

Many consider programming as a difficult task, you need to know a lot of things to work as a programmer. And it is true. If it were simple, they would not have been paid such large salaries. But on the other hand, there are many books in the public domain. And most of them are of high 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 a lot of money for their work, they are engaged in book-writing, for which they pay less, if not nothing at all. These "weirdness" will be considered later. And now we need to clearly understand, there are very few secrets in this profession. Most issues are solved 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 begin. They should not be too complicated and long to master. But, on the other hand, the market must be in demand, so that even those couple of weeks or a month spent on them are not in vain.

Personally, my opinion, it should be:

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

This is a very useful language for beginners. Even if you are not going to web development, this knowledge will be useful to you. Approximate time of development, 2-5 days. At the same time, it is not necessary to memorize extensive reference data. Enough to learn how to use these same directories. Among programmers, HTML is not considered something serious and complex. But ignorance of the basics of HTML, then what you can admit only the closest people. Employers and colleagues will perceive you as mentally retarded.

As you learn HTML, you will constantly be confronted with references to CSS technology. The study is not necessary at this stage. But if you get carried away with CSS, this knowledge will not be superfluous.

2.1.2 javascript

This is already a "real" programming language. His study is closely related to HTML. Here you are waiting for the first real difficulties. Although the language is a huge variety of textbooks, video tutorials and all kinds of sites, where everything is chewed up to the smallest details. This will be a real challenge.

Surely someone can not wait to start learning C, Python and even Haskell. But even if you are going to become a system programmer. Most likely, sooner or later you will encounter HTML and JS.

One of the reasons for choosing JS as the first programming language is its applicability in various fields. Starting from the logic of web-pages on the client side. Finishing with the JS-like language QML, where the developers of the Qt framework are pulling us in tightly.

If a novice programmer does not know simple things, there is not much difference in what to start. The proposed technologies do not require large and heavy development environments, execution. There are a lot of textbooks and reference books in Russian on them. Do not be confused with address arithmetic and similar specifics. Your task is to learn how to make basic logic constructions such as cycles, branches, etc.

Any 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 for other programming technologies.
For example, brother / mate, working as a system programmer S. 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 high probability JS would be the right choice.

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

In the case of SQL, I would not deceive myself. This is also a "fake" language. Difficulty between HTML and JS. Most likely, you will have to teach him to everyone. But over time, I would advise you to still try something like JS that supports procedural and OOP paradigms. Plus, in the study of SQL is still there. If you do not master it, there is no point in continuing.

But bash is different. Heard, JS allows you to replace bash through a module in node.js. So, if you need to write scripts from scratch, JS will be more interesting. If you correct the writing to 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. Here are the options in the order they should go.

  1. Video lessons. They became a lot on any topic. Youtube will definitely give out playlists on any popular technology. Even in Russian. Everything is clear there, and you should start to sculpt your first “Hello, world!” With them. Only one drawback. They may not cover all the depths of the language being studied. But you have enough problems without it.
  2. Multimedia tutorials. Most likely, this collection of video lessons, plus something else. Very often sold for money.
  3. Books The hardest to perceive. They just cover more subtleties of various technologies. Leave it for later. When exhausted the possibilities of the previous options.

But only please, here and below. No need to buy any courses and pay for miracle tutorials. All the "wonders" have long been, the maximum on the torrent. 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 before you began to get up all sorts of technical problems. You can do everything according to the instructions. But your examples may not work. At least because instructions can be written for the previous versions of software tools. The most difficult step can be with the first start of the source code, which you just rewrote from the tutorial.

The most common mistakes associated with the fact that beginners tend to rush and consider some things are not mandatory. You, like any normal person, think in the books about programming there are minor moments. You probably want to quickly get a result in the form of an intern position. And already there, surrounded by competent colleagues, you will understand and thoroughly study everything. So “some tutorial” 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 tutorial should be perceived as a field that needs to be plowed. All those who miss the little things end up facing intractable problems. And instead of a company of competent colleagues, they are waiting for complete loneliness in studying the material again.

For example, did you poorly remember a secondary term? A couple of days later, a code interpreter or compiler will give you a verbose error message. In which there will be dozens of terms, like those that were previously encountered in the textbook, as well as those that have not been encountered. And the error that you recognize may be the key. After its correction, all the rest will magically disappear. Most of the reasons for abandoning studies at the initial stage are related to sorting out the errors issued by the interpreter or the compiler.

It seems to you that a detailed description of using quotes with arithmetic operations is some crazy nonsense that you will never use? You may not be. But the author considers it simple. Therefore, further in the textbook, the addition of characters with or without quotes will be found everywhere. But even if you decide that it is better to take a textbook on another programming language, on which you have high hopes. He, too, will torment you with strings of the type '5' + 3. Moreover, with the same “silly” verbose explanations.

Unsolvable problems, this is part of the life of any programmer. And no matter how hard you do everything, you won't get anywhere from them. Personally, even though I have 5 years of experience, I also look into books about something incomprehensible and complex. And also sometimes I think: “There is some kind of nonsense. How am I going to decide this ?! ”And absolutely the same as yours. I have a lot depends on solving problems that seem to be completely dead-end.

If you have problems with which you can refer to the forum or thematic group of the social network, then with my problems, it is useless.

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

1) You need to think very well about the reasons. Analysis of the compiler, runtime, or interpreter messages (javascript) associated with the error. You should understand very well what the computer is writing to you about the problem. If you do not understand, look on the Internet by text or error code. Very often explanations are found, but in English. Even after the transfer, little can be understood. But we must try very hard. In fact, this is not just a situation where you solve a specific problem. This is a situation where you get a new experience. No less important than the knowledge from the textbook. Along with this, an analysis of potentially problematic code. If you have copied or copied the code from somewhere, you need to understand it thoroughly.
If in one and a half or two hours you seemed to be researching and understanding everything. But they did not find a solution. So you need to leave the problem until tomorrow. Even if there are more ideas.

2) Do something else that does not depend on your problem and it turns out. You can even continue to study your current study guide. You will be surprised, but in time ideas will come up how to solve the problem. If they are not entirely clear. To rush immediately to the decision is not recommended. It is better to write and leave for tomorrow.

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

4) If everything is still bad, prepare a question for a mentor or a forum. You need to clearly understand what you want to do. And what is your code. Requests to understand for you in the code, which you did not even bother to study well, speak of complete disrespect.

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



2.4 Work with mentors


A small set of rules for working with various experienced specialists, mentors, mentors, etc.




3


! . . . , ! , , , .

, , , , .

, ! , , , . , , — ! . !

They tell me that you throw learning, you indulge in pleasures, you wander from the street to the street where you smell of beer. And beer seduces people, it upsets your soul. You look like a chapel without her god, like a house without bread. You are taught to sing under the flute. You sit in front of a girl and you are smeared with incense. Your flower wreath hangs on your neck.

I will bind your legs if you wander the streets and you will be beaten with a hippopotam whip!

Instructions to the scribe. Ancient Egypt
After mastering the basics of javascript. You already have a good idea of ​​what to write program code.

And you are ready to spend six months or a year on mastering a profession. And not least, for you this is 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 like this lesson. And they are ready to do it even for free. By sacrificing the time you can spend on entertainment, recreation, etc. Once you have tried, you know perfectly well whether you like programming or not. Lovers have one very good quality. They do not need to be motivated. They will work a lot, in good faith and with pleasure to receive new knowledge. Then, with the same pleasure, they will share this knowledge with colleagues and friends. But the most amateurs of amateurs write articles and even entire books about their experience.

Professionalsare ready to do it just for the money. Or for the prospect of their receipt. Professionals need to be motivated. And they almost always stop in their development as soon as they get a good job. Even an increase in z. two times may not be enough reason for them to continue their studies. As a rule, only amateurs are eligible for advanced training.

Of course, pure professionals and amateurs are rare. Someone likes a job half or a quarter. Someone, having tried different technologies, finds something to do 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 an accountant is much more interesting than writing code. As a result, the developer will go for the whole team. Even after hours. Gradually retraining in a system analyst or project manager.

But basically, try different technologies. Some of them are carried away, but some are not. Even the same technology can first be carried away, and a year later bored.

For any person it is very important to understand which activity you like more. Because life comfort depends heavily on this.A common misconception is that work is only for making money. Although it 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 and leisure. As a result, there may not even be enough money for compensation.

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

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

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

The only exception I would make for C ++. This is a difficult language. He probably requires twice the time to master. What is just C or JS. In this case, the salary will be more than a maximum of 20%. C ++ is the language of C ++ lovers.

If you don’t like JS, and you feel the “professional” described above, then Java is probably the best choice. Once I couldn’t 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 probably the highest paid IT developers. Given that this technology is of average complexity. (I suppose in the Java world they are paid only for the ability to run jar files.)

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

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

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

You have to choose for yourself a large, fundamental book on a programming language. And study it to the end. Together with all the learning tasks.

Performing training tasks at this stage is a difficult, dreary exercise! You will be bored, uninteresting, want to drop everything. Most do. Motivate yourself, invent interesting tasks, keep learning. And you will not be this very majority.

In addition to the main programming language such as C, Java, JS, etc., it is necessary to study the following:

English
As you know, programmers are a people who can read English, but cannot speak. This is the language in which you will find a solution to your problems, communicate with customers. Conversational English greatly expands the range of job search. This is a very good effect on salary. Although, I must admit, time can be spent on it as much 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 PL \ SQL add-ins (except Java learning). But mastering the creation of tables, joins and unions is very desirable. Perhaps the most useful is learning from PostgreSQL.

SQL has one more aspect. This language is probably the most difficult thing to ask when applying for a job as a tester. Therefore, if you learn only him, there is a chance to get to work very close to programming. At such work it will be a little easier to learn programming itself. And you are very easily transferred from testers to developers. As soon as you show that you can write good code.

To master the "blind" ten-finger method of typing on the keyboard A
lot to print . Therefore, master necessarily. The network has enough free online simulators. You can try to master it before the first, “test” stage. If you do not have enough patience for even this, there is no point in moving on.

Version Control Systems
Of course it will be Git. Be sure to learn the basics and try in fact, on their educational projects. But last but not least. At first it will be difficult to understand what it is, what advantages it gives.

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

3.2 Generally accepted ways of obtaining knowledge


University
I can tell a lot about higher education. But this has no practical significance. In short.It is better to be an intern after a year of self-study than after four years of visiting a university. Those who will start studying according to my recommendations now, after 4 years, will carry out technical tests for hiring those who are now entering universities.

Paid training courses for programmers.
Everything here is very difficult. Demand creates supply. But this offer is often of very poor quality. You can try any of them. But please do not pin any hopes. Try to go through the first lessons for free. And run away from there if you do not understand anything in the classroom. No brands under which these courses are made will give you an understanding of the subject. "Guaranteed employment" there, as a rule, deception.

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

Here you will learn really expensive experts. And they will do it for their own internal needs. As a rule, such courses have some requirements for candidates. Yandex required mathematical training. EPAM required basic programming knowledge. Just do not get there. But if there is an opportunity to attend these courses, it’s definitely worth striving there! Even if you stay in the "slavery" of these companies for some $ 400-500 a month for a year. A big plus of such courses. There do not require any education.

3.3 Learning Strategy


Most students expect to learn programming just by learning. He sat down at the textbook for an unknowing subject, but finished teaching him and began to understand everything. The whole process for beginners seems to be linear. Moving from chapter to chapter, passing educational tasks, a person is gaining knowledge. People do not represent other models. Because they have never done complicated and long projects. But in fact, everything is not so simple. Any programmer knows, in the course of the project, new details are inevitably revealed that prevent or help to implement it. As a rule, the larger the project, the less it is like what was intended at the beginning.

A simple example.You ordered a costume in the studio. All details have been discussed. A week later the master calls with the news, the agreed form of the seams looks very bad on the suit, it must be changed. Then it turns out that we need to change some of the material. There is no need. You are changing and changing. In the end, get about 2/3 of what was originally conceived. In the case of software development. In the project of a business suit can get a swimsuit. And for the price of a suit. If you think this is unbelievable, then ask intelligent project managers. In the meantime, you need to learn one thing, in the project of your study there will be many unexpected things. And you should be able to work with these surprises.

If you do not go into the wilds of project management, you should develop in IT not linearly, as described at the beginning. A "spiral".It looks like this. If you do not know the computer well. No need to guess that in a year you will be a C ++ or PHP programmer. First you study computer. You open up new opportunities and obstacles. For example, they began to understand more what you want to do in the end, websites or desktop applications. Then, at the trial period stage, you will try programming 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 learn? Someone at the very beginning of the path may not have suspected system programming. What is a separate direction, where developers write invisible to the ordinary user of the program. And maybe for you it will be more interesting than what you dreamed at the beginning.

In the process of learning there will definitely be reading textbooks and solving problems from there. But the very sequence and order of training manuals must obey the "spiral" cycle. To each stage gave a good basis for the next.

You have to be your own manager and plan for achievable goals, stages. Right now, many young people are dreaming of how they will be the creators of a top-end website or operating system. And someone wants to write a calculator and get a position of an intern with it. I hope you guess who in a year will be a successful programmer. 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, the "managerial" qualities are very useful to those who consider themselves "stupid." In IT it is very easy to be smart and very hard on the contrary. A clever person can easily take a textbook, read it and immediately do something useful. The stupid will take the same tutorial to read and understand nothing. So it is necessary to break the training material into parts and train more (write code) on the basis of these parts. It is possible to break the material into such parts so that it can reach anyone. There are no insurmountable obstacles for those who are able to plan their educational process and solve “insoluble problems” (2.3). You will master absolutely everything, regardless of intelligence. Let it take much longer. But it is much more important for you to have complete and tested knowledge / experience than the speed of their acquisition.

Of course, it will be very difficult for you to understand and, most importantly, put such model into practice. But those who succeed, waiting for a nice bonus in the form of the prospect of becoming a "project manager." If now you just want to get a salary for a programmer, then you’ll want a salary for a project manager so much that you won’t be able to sleep. There is only one minus. Still, first you need to become a good programmer.

3.4 When to look for a job


It is very difficult to say when to look for your first job in this specialty. In fact, you can start your job search immediately after the first stage. I suspect many will do so. If you are up to 23 - 25 years old and you live where the software development industry is well developed, you will succeed. Maybe you will not become a good specialist. But earn a living for sure.

On the other hand.There are people who live where no one is involved in software development. And there are people who are far beyond 25. Such people should study longer. To turn from low-skilled into highly qualified. For the sake of getting highly skilled programmers into their ranks, the employer is ready for much. You may be offered assistance in relocation. Or even remote work. Age over 30 or 40 years old will not make much difference. The main thing is to show your high level of experience.

Starting to look for work as early as possible makes sense if you are already working at a high-load job. Where you do not read the books on programming. In this case, you do not care after what work in the evening to study the subject. Current or after work as an intern.

An early search has a big minus. After the interview, the employer will have some opinion about you. Which does not want to change over time, if you once showed a low level of knowledge. After six months, when you know much more, your resume may not even be considered. Because the opinion of you will remain the same. One can only hope that the first interview will eventually be forgotten. But it is at least six months. It may be that the employer maintains a database of candidates. To not interview them twice. In this case, everything will be very sad.

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


Newbies very often ask this question. There is no definite answer. This question can only be answered by a specific employer at a specific point in time. Answer for the entire labor market at all times is impossible. Your chance to get a job "Junior" or, as I say, "trainee", vary over time depending on several processes and factors.

The process of your self-preparation makes you more attractive to employers. At this time there are suitable for you job. Closely related to the programming language you are learning. You send your resume there. And the employer chooses the most appropriate of the responding candidates. Qualification of candidates is limited on top by salary vacancies. Perhaps you will be the best for this salary. Or maybe not. So, over time you learn and become more expensive. And at some point in any way you will be this very best of all responded.

There is also a factor in the age of the candidate. Which reduces your attractiveness a bit. The greater the age, the greater the decline. There is a factor in having a good portfolio that boosts. Experience, recommendations and more.

You can cost a lot as a C ++ programmer, but very little as a PHP programmer.
The most "free", a factor in your fame employers. When you are known to more employers. More chances to take you somewhere.

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


4 First job as an intern


4.1 How to search for the first job?


4.1.1 Portfolio


To start writing a portfolio. It should be a small program or script for a site that does work that looks like a useful one. The appointment should be clear to your potential employer. For example, the address book. If you make a calculator to calculate the trajectories of the flight of the Earth satellites, it will certainly be cool. But your future employer is unlikely in the subject. Therefore, will not be able to evaluate the result. It is desirable that the program somehow stored the settings and user data. There must be some small and complete piece of code. If you, say, send your patch to a free project, your employer may be too lazy to delve into the source code of the entire project. And evaluate what you 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. This should be a well-formatted and structured code. Be prepared, the employer will take a line from this code and score in the search engine.

In order for the code in the portfolio to be good, it should be given a week's rest. Those. write and leave for a week. Then conduct a revision of the entire code. After correcting errors, fill in some temporary ball and create a forum thread asking to see the source code of more experienced programmers. With the obligatory indication that this is your portfolio.

After correcting the errors that you specify. Perhaps it will even be a global rework of your creativity. Fill the code on one of the source code hosting. The topic where you were told about your mistakes is deleted. Future employer to know about the error is not necessary.

In the end, it is very important to understand every line that is written. Most likely, you will be dragged along it and asked all sorts of tricky questions.

Believe me, the creation of a portfolio and code review (code review) by more experienced colleagues will add + 30% to your experience. Also allows you to adequately assess your current qualifications. Your code, of course, will not be perfect. Get ready, they will find mistakes there (for free!) It's not so bad. But when you do not know why they wrote the code like this, and not in another way, the real trouble. It means only that the code was not written by you! In this case, they bounce off with a wish to come in six months with their code.

4.1.2 Summary


In general, the summary can say a lot about a person. For example, poorly structured summary. Most likely, a developer who does not particularly care about the structure of the source code will write.
Copied from the network section, for example, "Professional Qualities". Says that the candidate is inclined to lie. The lack of accomplishments that are not remembered even at the interview says that the person is “professional.” And much more.

Once there was a funny story. I undertook to criticize the resume of one colleague. The findings were disappointing. I say: “You have such a bad resume that I would take you to work! You are a good specialist. But with your resume of good work you will not find. Therefore, you can be kept on a small salary. And you're not going anywhere! ”

To this was not. It is also advisable to give a resume to HR specialists and programmers for evaluation.

Naturally, the resume does not need to lie or give dubious facts. It will be very carefully read by people with great life experience. Any attempts to hide something or to embellish will be regarded extremely negatively.

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

4.1.3 Job Search


Now we come to the most interesting.
You need to learn clearly, trainees and inexperienced developers are rarely needed. Employers are looking primarily experienced. But their salaries do not always allow you to hire anyone. 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 a resume for all vacancies that fit your profile. For example, studied JavaScript. Send resumes wherever this javascript was required. Despite the minimum required length of service, the availability of specialized higher education, the fact that the vacancy is already closed and much more. At the “other end of the line,” they know better what to do with it. Also send to all companies that theoretically have or may have specialists in your profile. Mail usually disassemble the secretary. Small if they send your letter in the trash. The opinion of these employers about you does not matter. Even if it is the most prestigious firms.

The job search itself takes from a month to two. Usually, if you respond to a job, you will be contacted in 2-3 days. Then, during the week, an interview and / or test task. And further, within a month the employer will think about the results. Direct failures are usually not sent. They just forget about you. So get ready for a lot of interviews, after which you forget about them. No need to pin hopes on any options. Passed the interview and dive back into the study of programming.

4.1.4 Karma of the programmer


There is one very interesting moment when looking for a job. Suppose you studied JavaScript. Conscientiously taught and studied. Then you are looking for a job as a JavaScript programmer. And you are suddenly offered to become, for example, a system programmer. The employer may say your javascript is good. But internships for him are only for system programmers C. So you can go for intern C.

The trick here is after such a first job. Back to work with JavaScript will be a problem. And this is not some kind of magic there. Just as a C programmer will be experienced. As a javascript programmer inexperienced. Those. Returning to javascript lowers your paycheck. Perhaps even twice. Therefore, you will remain a system programmer C, for the rest of your life. I do not think this is a bad option. But you need to know about such restrictions.

4.1.5 Interview


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

If the interview is by correspondence, everything is simple. You need a good connection, internet and telephone. 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 calling is usually not required. Most likely you will need Skype and TeamViewer. Heavy development environments, compilers, editors are usually not needed. A simple code editor, such as Sublime or Notepad ++, is enough. The employer himself will write what you need to have for the interview.

Full-time interviews are written and so very much. I see no reason to repeat. In any case, having received an invitation, you should learn about the invited firm as much as possible. See feedback about her as an employer. And decide whether you want to work there. If you want, be sure to think of 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. And now you are looking for interesting work in this direction. First of all, you are waiting for interesting tasks from your future employment. The ability to communicate with like-minded colleagues. And, of course, to grind, their professional skills. It is this kind of plan that you have to ask questions at the beginning. You should be interested in what experience your future colleagues will have. What technologies are used in the project for which you are looking for an employee.

Of course, let's be frank. The majority of itching is the main question about wages. This is what needs to be figured out last. Such questions are usually usually asked by “professionals”. The bosses are looking for lovers.

Usually, the size of the intern’s salary, with some knowledge of the subject, 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 are a sysadmin. Get $ 500. I think $ 500 for the sysadmin in the middle of Russia ceiling. And here you are offered the post of a programmer (actually an intern) for $ 300. If for you it is "sucks." Don't even start learning anything. Close this article. And forget about programming as a future profession.

Your first developer salary must be sufficient to survive. The fact is that together with $ 300 you will receive experience and knowledge for $ 1000. Get team development experience. 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. After six months, catch up with your $ 500. And this will be just the beginning of your career.

Of course, it may happen that “Experience and Knowledge for $ 1000” will not be received. In this case, just look for another job.

You are not afraid of anything during the interview. We must 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 carefully.
No one will ever tell you a true opinion of you. A bad opinion can turn you against. That makes no sense. Suddenly you still come in handy. A good, may be the cause of requests for a higher salary.

Interview, it's like a first date with a girl. Everything is always polite, cultural and good. Only the following may not take place.



4.2 Internship


The task of the internship to polish the knowledge gained.

4.2.1 Freelance


Beginner programmers can read articles from the Internet, which tells how cool it is to be a "freelancer." Sit under palm trees, take one-time orders and "do not work for my uncle."

To understand the advantages and disadvantages of freelancing, you need to understand, the employer is willing to invest in your training, only seeing the long term. Otherwise, it is easier for him to overpay to a ready-made specialist than to wait for the beginners to solve complex problems. Therefore, freelancing does not give experience inland. You just no one will give 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.

No need to pin high hopes. Just try to find orders at the end of self-study. It will be great if you succeed. But do not assume that they have completed an internship and become a real programmer. This is a good lesson, only when you do not take serious companies. Or you have already worked there for 3-5 years.

4.2.2 Companies


Once I heard about one economic law. The greater the union of workers, the greater the income this association receives for each employee. Accordingly, in large firms, workers' wages are usually higher. Than the individual "freelancers." At least in IT. Namely well-known giants of the industry pay the most top salaries and buy the best minds. Therefore, the "uncle", gathering specialists in a handful and giving 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 collective development tools. Colleagues will share with you the experience to help correct errors. You yourself will be surprised how many new things are in the profession that you have not encountered before.

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

It would be correct, after 3-4 such questions related to the database, to take a guide on this DBMS and study it completely. This is usually occupied only by "amateurs". Which becomes curious that in addition to "joins", there is still there.

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 greatly facilitate the work. It is much more attractive than just abstract examples from books in the previous stage.

Internship flows smoothly into normal work. It is difficult to highlight the moment when you can consider yourself a full-fledged developer. Probably when your questions to your colleagues end with simple answers. And you understand, most problems will have to be solved by ourselves. Usually this period is six months. If you have worked well in the previous stage. If, however, hurried, settled, read the book on the main language in half. So continue to master the book and additional technologies.

After the internship, you are free to do anything. Freelance. Do independent projects and more. But my advice to you. Sometimes read the literature related to your work. For advanced training. If earlier 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 training. Do not 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.

Source: https://habr.com/ru/post/339528/


All Articles