Profession: Programmer. Not everything is clear

We wrote about front-end and back-end , about mobile development and testingbut these were special cases. When a person comes to the first or next profession, he rarely says that he will become a developer for iOS or a proctologist, as a rule this sounds like a “programmer” and a “doctor”. Specialization comes later, with experience. But in order to firmly state that you want to become a programmer, doctor, architect, geologist, etc., you need to get rid of the romanticization of the profession and approach it sensibly and meaningfully. Even if you suddenly decided to become a programmer in order to “enter the IT after 35”. If we talk about programmers from the standpoint of romance, then these are people who turn our ideas into code and make life better, easier, more convenient. To put it bluntly, the work of a programmer is a tense, often routine work with many pros and cons. We’ll talk about this.

Artist - Nadezhda Kotkina, posed - cyber_roach

Who is it?


The term "programmer" can hide narrow-profile programmers, software developers, engineers, system analysts, etc. Nevertheless, all programmers have one thing in common - the ability to put human requirements into machine code to make work or entertainment automated, convenient, simple. The programmer creates instructions for the computer, as a result of the execution of these instructions, some kind of target result is obtained. 

You should think about whether you are a future programmer, if ...

... your motivation comes from within, you like the process of controlling a computer, you want to not only use a program (game, application), but also know how it works, modify it.

... you don’t expect crazy incomes and don’t think that programming is a new rock and roll, primarily the desire to create magic: to turn ideas into code.

... you know how to make better any program, any site, any mobile application. You know exactly what you want from the program and want to learn how to make perfect code.

Where is it needed?


Today, programmers are needed everywhere and I do not think that this trend will change in the next 10-15 years. Programmers are needed in industry, science, space, business, medicine, transport, and even not in IT companies (joking with jokes, do you know how hard it is to find a great 1C programmer or developer for an online store on 1C-Bitrix ?!). In general, even in the institute of church and charity there is a demand for programmers. And this is great, because you can not only choose the profession of a programmer, but also relate it to your hobby: chemistry, biology, mechanics, communications, and even history and linguistics. Moreover, if you combine the skills of software development and the basics of core business, your market price will increase tremendously and competition will change.

Therefore, you need to understand not so much where to work, but how much of the development is closer to you.

  • — (, , , , IoT ..). .
  • - ( ) — - , , - . WEB, .
  • — , . , , .
  • — , , — (, , ..). .
  • , — , . , , . , COVID-19, :-)
  • ( ) — , . , . 
  • DevOps/DevSecOps — , . « , », DevOps , .
  • Applied development and software business is a separate development world where you can write a desktop on Delphi and earn millions, know COBOL and be the most enticed specialist in the market, browse Java and be in the lead roles in the community, etc. This is a risky development path, mainly for experienced developers, but if you happen to fall in love with C / C ++ / Java or some kind of “Latin from programming” - why not? 

Again, I list the main areas, but in fact, at their interface, new promising areas are formed, for example, natural language processing (NLP), AR / VR, game development, test automation, and so on. 

It is important to understand another division.

  1. - , , , , UI/UX .. , ( ?:-))
  2. -- , : , CRM, ERP, , , , -, 1 .. , , - , , . 

In the course of teaching programming, you will surely come to grips with all areas and tasks a little, therefore, literally six months after the start of training, you will have an idea of ​​which sides you are going to move to. For example, I have a friend who did not want to do anything other than that related to the software stuffing of readers. As a result, he went through Barnes & Noble, worked with Google projects and now works in China (satisfied, healthy, fan of life in the country). Everyone has his own path.

Basic Professional Requirements


Writing code in itself is not the most difficult task, it is much more difficult to understand the requirements, interpret them and translate them into a machine-friendly language. Working with the customer of the code (here we mean the client, colleagues, employers, etc.) is always nerves and adventures, because they themselves do not know what they want, they think simplistically and consider technology omnipotent. But if you pretend to be a professional programmer, you need to not only frown on the keys, but also actively work with people, with technical tasks, requirements, etc. This distinguishes the programmer from a simple encoder. 

  • Critical thinking - the ability to highlight the main thing in the requirements, to approach your own code and someone else's code in terms of constant optimization and improvement; skills to find the best ways to solve problems.
  • — . , , . — .

  • , , — , . , « », .
  • — , . , ?! , ! , , , , , . , , - . , , 00:09, + ;-)
  • — , . , , . 

  • — , , code style .
  • — . , , SDK, API, . — 6-12 .
  • — , , , . , -, ( , ). , , . 

I urge you not to believe in fairy tales about introvert programmers. If you want to grow in programming, then stick your introvert away. If you want to be an introvert, you will quickly run into the ceiling of professional development, because communication is still necessary in the activities of the developer. Even on a remote site you will have to communicate with colleagues, participate in rallies, retrospectives and discussions. 

The need for knowledge of foreign languages


Is it possible to do without the development of knowledge of a foreign (in particular English) language? Can. It is enough to learn the syntax and words of a programming language, you can think and communicate exclusively in Russian. Ignorance of the language will not be an obstacle to career growth, development, communications in so many companies. 

However - what gives knowledge of a foreign language?

  • . , ( ).
  • .
  • , , , .. , .
  • .
  • -.
  • .

There were a lot of discussions on Habré about a sufficient comfortable level of English proficiency to work in the IT industry. In my opinion, in order not to be deaf and dumb, you need a minimum of Upper-intermediate or Intermediate with active speaking (for example, you are good in grammar, but have a good level of language on the curriculum, in personal communication or on an internship).

Where to study


In modern Russian universities there are many programmer specialties, there are undergraduate and graduate programs, there are additional education formats. If you still just choose your university, then, of course, it is worth going to a special faculty, or to physics, mathematics and other technical specialties.

If you need programming as an auxiliary tool for your main specialty, then either look for an adjacent option (such as medical cybernetics and computer science), or study in parallel with the main specialization.

If you already have an education, then for you there is self-education, various courses, online schools, corporate universities, etc. You can learn programming with these learning tools, either completely independently or even with a mentor.You can read about further education here .


I draw your special attention: higher education is still important, because it matters to the employer, it is necessary when moving to another country, and it also provides the basis, the foundation, which will allow us to quickly develop in any new direction.

Moreover, it is not so important what programming language you learn, how important it is that you know about mathematics, algorithms, computing, network and server administration, principles of networking, stacks, and so on. And this foundation is just not bad at universities. 

Top Books and Learning Tools


Each specialty has its own set of books and resources for training, but there are things that everyone should read.

  • The Art of Programming, Donald Knuth
  • The Pearls of Programming, John Bentley
  • « »,
  • « . , », .
  • «. », .
  • « . Ebay?»,
  • « », .
  • « . »,
  • «. »,
  • « »,
  • « . »,
  • « -»,
  • «-. », ,

These books not only contain practically useful knowledge, but also coolly motivate, shape the thinking and worldview of the programmer. And I urge you: read, reading develops your thinking, memory and makes you invincible in any interview.

From your favorite resources:

  • Codecademy is a universal interactive platform for teaching programming languages. Licks, achievements, gamification are all motivation.
  • Udacity is an English-language resource for learning programming.
  • Codewars is a huge collection of test tasks for training skills in any programming language.
  • Coursera - no comment, just the best lecture “hodgepodge”.
  • MIT OpenCourseware is a sea of ​​courses from the Massachusetts Institute of Technology.

Here is a good overview of the courses , compiled by another author, more specifics on Russian-language courses. 

Another huge and fresh selection of useful online for programmers.

Advice: even if you are sometimes too lazy to study, listen to lectures at least in the background, so you immerse yourself in terminology, pay attention to some moments imperceptible during intensive study.


Myths of the profession


There are a lot of myths and rumors about programmers: about character, rudeness, inability to build a personal life, etc. But these are special cases that can be found in the profession. For example, at one time I was close to the field of medicine and I can say that there are also a lot of married women at work and married at work, a lot of harsh introverts and rude, but professional guys (rather, stoned). And in general it is difficult to imagine the "enclave" of happiness in any particular area.


And if the programmer is also a gamer ... You can always find a couple ;-)

Therefore, I will analyze the four most popular myths.

  1. . . , - , , , . , , — , , . 500 . , . « » «» , . , : . 
  2. . , . , , , , , , , - , . , . , , ( !), , , , , , — , , , .
  3. . , . , , CTO, CIO .. . 
  4. . . ? ;-)


If you are learning to be a programmer, one day you will definitely want to quit it all, because the path will seem too long. You will get tired of the monotonous training tasks, each unsuccessful compilation will cause dull, painful despair, you will dream of pointers, recursions and OOP principles (well, or unsuccessful function calls). All this fuss will seem insane far from not only your first independent project, but also from the first corporate merge ... 

The desire to quit is the first sign that you are going the right way, that you are really tense, and not mock some code using copy-paste method from Google (not even with GitHub!). Only when you are so trained in simple tasks that they become unpleasantly boring for you, can you confidently move to a new stage with an excellent knowledge base. 

The tip is simple: do not drop. Take a break, sleep with these thoughts, give up training for a week and return. You yourself won’t notice how something “clicks” in your head and everything falls into place and here it is, the first merge, the first review code, the first open source commit, the first performance at the meeting, your pet project, the first tasks on Middle posts. Do not stop - everything will be!


All Articles