Message to the future programmer

So you've decided to become a programmer.

Perhaps you are interested in creating something new.

Perhaps you are attracted by large salaries.

Perhaps you just want to change careers.

Not the point.

Important - you decide become a programmer.

What to do now?

Message to the future programmer

And here there are several approaches.

First: go to university to an IT specialty and get a specialized education. The most banal, relatively reliable, extremely long, most fundamental way. It works if you are still finishing school, or you have the means to provide for yourself the following from one and a half (at best, if you grasp everything on the fly and can start working in the 2nd year) to four (if combining work with study is not your forte ) years.

What is important to know here?

  • You need to choose the right university. See curricula, ratings. A good indicator is the Olympiads from the university. If the teams of the university at least periodically take places in the top ten at relatively large programming olympiads, then coding at the university will not be a rudiment (despite the fact that you personally may not be interested in olympiads at all). Well, in general, common sense rules: it is unlikely that the Bratsk branch of the Baikal State University will make a powerful full stack out of you.
    Examples of good universities: Moscow State University / St. Petersburg State University (obviously), Baumanka (Moscow), ITMO (St. Petersburg), NSU (Novosibirsk). Despite all their eminence, it is quite possible to get into them on the budget, if you do not aim for top departments.
  • Not a single uni. Despite the fact that you will be taught in a comprehensive way all sorts of things, this is not enough. Due to bureaucracy, the curriculum will almost always lag behind modern trends. At best, for a year or two. At worst, 5-10 years. You will have to make up the difference yourself. Well, the obvious: if you study the material on an equal basis with other students, then each of them will be your equal competitor. If you optionally come forward, you will look much better in the market.
  • Look for a job as early as possible. I started working in my second year. By the end of the university, I was already quite a middle developer, and not a modest junior with no experience. I think it's obvious that after graduation, earning 100k is more pleasant than 30k. How to achieve this? Firstly, see points A and B. Secondly, go to meetups, festivals, conferences, job fairs. Monitor the market and try to get a part-time junior / trainee in any company where you are at least approximately suitable. Do not be afraid of paid conferences: they often give very nice discounts to students.

If you follow all these points, then by the time you receive a diploma, you can become an extremely good specialist with work experience and a store of fundamental knowledge, which self-taught people often score due to their inapplicable nature. Well, the crust can help if you are going abroad: they look at it quite often there.

If you do not comply ... Well, you can get a crust and go with the flow, cheating and preparing for the exam overnight. But what do you think, how competitive will you be then? Of course, I'm not saying that you need to close everything with fives. You just need to get knowledge. Use common sense. Study what is interesting and useful, and do not care about grades.

Message to the future programmer

The main thing is not what they are trying to stuff into you. The main thing is what is interesting and relevant

Further, second method: programming courses. The Internet is full of offers to make you a junior in just 3 months of classes. Right here with a portfolio, and they will even help you find a job. For only 10k a month, yeah.
It may work for someone, but purely IMHO: this is complete garbage. Don't waste time and money. And that's why:

A person who is far from IT will not be able to enter the specifics of the profession in 3 months. That's not at all. There is too much information to learn, too much to understand, and more than that - to fill your hand.

Then what will they sell you? You will be sold a “mechanical skill”. Without much delving into the details, they will show you what you need to write in order to get exactly such a result. With detailed instructions and the help of a teacher, you will write some kind of application. One, maximum two. Here is the portfolio. And help in finding a job is sending out vacancies for juniors from large companies in which you are unlikely to pass an interview.

Why so? It's simple: it's very important for a programmer to think abstractly. A programmer solves problems that can be solved in a billion possible ways. And the main task is to choose one, the most correct one out of billions, and implement it. Creating one or two projects according to the instructions will give you some knowledge of the programming language, but will not teach you how to solve abstract problems. Drawing an analogy: imagine that you are promised to be taught orienteering, taken along a couple of simple tourist routes, and then told that you are ready to conquer the taiga alone in winter. Well, what, you were taught to use a compass and kindle a fire without matches.

In summary: do not believe those who promise to "roll" you in a short time. If it were possible, everyone would have become programmers by now.

Message to the future programmer

Left: what you will be taught. Right: what will be required of you at work

The Third Way the path chosen by the majority. Selfeducation.

The most difficult, but perhaps the most noble way. Let's dwell on it in more detail.

So you decided to become a programmer. Where to start?

First of all, you need to answer yourself the question: why do you want this? If the answer is “Well, it’s certainly not very interesting, but they pay a lot”, then you can stop there. You are not here. Even if your willpower is enough to shovel through a bunch of information, write thousands of lines of code, undergo hundreds of failures, and still get a job, as a result, without love for the profession, this will only lead to emotional burnout. Programming requires a huge amount of intellectual effort, and if these efforts are not fueled by emotional return in the form of satisfaction for the solved task, then sooner or later the brain will freak out and deprive you of the ability to solve anything at all. Not the most pleasant scenario.

If you are sure that you are interested, then you can decide on the specifics - what exactly do you want to do. If you don’t know how programmers can differ from each other, Google will help you.

I’ll write the first tip right away so as not to forget: learn English. English is needed. No English anywhere. No way. Without English, one cannot become a normal programmer. That's it.

Next, it is desirable to draw up a roadmap: a plan according to which you will develop. Study the specifics, look at vacancies in your specialty, find out superficially what kind of technologies are used there.

An example of a roadmap for a backend programmer (not for anyone, of course, this is just one of the possible options):

  1. Basics of html/css.
  2. Python. Basics.
  3. Network programming. Interaction between python and web.
  4. Frameworks for development. Django, Flask. (remark: just to understand what kind of "django" and "flask" you need to look at vacancies and read what is required there)
  5. Deep learning python.
  6. js basics.

It is a very, I repeat, very a rough plan, each of the points of which is huge in itself, and many topics are not included (for example, code testing). But this is at least some kind of systematization of knowledge, which will allow you not to get confused about what you know and what you don’t. In the process of studying, it will become clearer what is missing, and this roadmap will be supplemented.

Next: find the materials you will study from. The main options are:

  • Online courses. Not those courses that are “June in 3 days”, but which teach one specific thing. Often these courses are free. Examples of sites with normal courses: stepik, coursera.
  • Online tutorials. There are free, shareware, paid. Where to pay, and where not, you will figure it out for yourself. Examples: htmlacademy, learn.javascript.com, django book.
  • Books. There are many, many. If you can't choose, three pieces of advice: try to take new books, because. information becomes outdated very quickly; the O'Reilly publishing house has a fairly high level of quality and a normal presentation; if possible, read in English.
  • Meetups/conferences/lectures. Not so useful in terms of information richness, but extremely useful in terms of the opportunity to communicate with colleagues in the workshop, ask relevant questions, and make acquaintances. Maybe even find a job.
  • Google. Many underestimate, but the ability to simply find answers to some questions is very important. Feel free to google things you don't understand. Even seasoned seniors do this. The ability to quickly find information about something is actually equivalent to the fact that you know it.

Okay, we have decided on the sources of information. How to work with them?

  1. Read/listen carefully. Don't read when you're tired. Delve into the meaning, do not skip the moments that seem obvious. Often the transition from the obvious to the incomprehensible happens quite quickly. Feel free to come back and re-read.
  2. Review information. Firstly, it will be easier for you to understand your notes when there is a lot of information. Secondly, this way the information is better absorbed.
  3. Do all the tasks that the source offers you. Although no, it's not. Do ALL tasks that the source offers you. Even those that seem simple. Especially the ones that seem too complicated. If you get stuck, ask for help stackoverflow, even though through google translate. Assignments are written for a reason, they are necessary for the correct assimilation of the material.
  4. Come up with tasks yourself and do them too. Practice, ideally, should be more than theory. The more tightly you fix the material, the more likely it is that in a month you will not forget it.
  5. Optional: Make up quizzes as you read. Write tricky questions in a separate source, and after a week or a month, read and try to answer. If it doesn't work, try again.

And these 5 points are repeated for each technology that is being studied. Only in this way (with a thorough study of theory and dense coverage of practice) will you form a high-quality knowledge base with which you can become a professional.

And it would seem that everything is simple: we learn technologies one by one, we comprehend Zen, we go to work. So it is, but not so.

Most people who learn to program do it like this:

Message to the future programmer

the picture is honestly stolen hence

And here you need to dwell on each of the steps in more detail:

Start: you have zero knowledge. Point of departure. So far, nothing is clear, but probably extremely interesting. The path begins uphill, but lightly. Soon you will be climbing

Peak of Stupidity: “Hooray, you've completed your first couple of courses! Everything works out!” At this stage, the euphoria from the first success overshadows the eyes. It seems that success is already close, despite the fact that you are still at the beginning of the journey. And striving for this success, one may not notice how a rapid fall into the pit begins. And the name of this hole:

Valley of Despair: So you took basic courses, read some books and decide to start writing something of your own. And suddenly does not work. Everything seems to be known, but how to combine it so that it works is not clear. "I do not know anything", "I can't do it". At this stage, many give up. In fact, knowledge really exists, and it has not evaporated anywhere. Clear requirements and support just disappeared. The real programming began. When you have to maneuver in a space where there is a goal, but there are no intermediate stages, many fall into a stupor. But in fact, this is just another stage of learning - let everything turn out somehow, with great effort, ugly for the first ten times. The main thing is to bring the matter to completion over and over again, at least somehow. The eleventh time, things will go easier. In the fiftieth, a solution will appear that will seem beautiful to you. In the hundredth it will not be scary. And then it will come

Slope of Enlightenment: At this stage, the boundaries of one's knowledge and one's ignorance clearly emerge. Ignorance is no longer scary, there is an understanding of how to overcome it. Maneuvering in space without solutions will become easier. It's already the finish line. Already realizing what you lack as a specialist, you will complete your studies and consolidate the necessary and, with a calm soul, enter into

Plateau of Stability: Congratulations. This is the finish line. You are a specialist. You can work, you will not get lost when faced with unfamiliar technology. Almost any problem can be overcome with enough effort. And despite the fact that this is the end, this is only the beginning of an even greater journey.

Paths of the programmer.

Good luck with that!

Literature for optional reading:
About becoming a programmer and the Dunning-Kruger effect: Pumpkin.
Hardcore way to become a programmer in 9 months (not suitable for everyone): Pumpkin.
List of projects that can be implemented independently during the training: Pumpkin.
Just a little extra motivation: Pumpkin.

Source: habr.com

Add a comment