📜 ⬆️ ⬇️

How to be a programmer in this cruel world

Hello, dear habouzpolzovateli and habopozetiteli. I want to share my views on the status-quo in the field of programming today.
It is noticed over 9000 posts on the kosher development of their precious personality in the field of everything to your favorite programming. The Internet is a big heap from which everyone extracts information absolutely randomly (they collect it bit by bit) and his brain makes a compilation of everything previously studied, which is why people find it difficult to take and understand other people's views (that is, don't give a shit in comments) and therefore, I ask either to agree or disagree with my opinion but not to discuss it. Next, I propose YOUR vision of the programming world and its classification, as well as a couple of assumptions about how to succeed. Go:

one)
I share people who are in the field of IT on interested and just being in it. Programmers, like any other kind of people, are divided into researchers and sedentary.

The first ones hold in their head a picture of what should be fulfilled, and when the external picture coincides with the internal one, they make a new one in their head. In other words, this is a goal setting. All IT gurus belong to this category - Bill Gates, Larry Page, Steve Jobs, etc. On the example of Jobs (quoted from Wikipedia When we demonstrated the project to the engineers, they immediately gave 38 reasons why it could not be implemented. And I say: "No, it should be implemented." "Why is that?" - they ask. " Because I am the CEO of the company - I answered - and I think that this can be done. ”And they had to obey ) you can see what I mean. Knows and does. If you are such a person, then you are terribly lucky - your life is full of meaning and full of happiness.

The second (sedentary) are those who love articles a la "How to become a programmer without mathematics," "How the humanities become a programmer," and look in Google for "salary of a programmer in Moscow" and tell me everything would be cool if I had my parents were richer, or if I studied at a university as a friend, in this teacher I’m learning nothing, etc., and so on.
')
Well, of course, there is an intermediate level in which people can take on technology and give up after a while, or see a perspective but blurred. Those who find themselves in this gap do not stay long in it - they either roll down to 2m or climb to the first. And this rule applies to any gap in any profession. I relate myself to this class and my star only rises on the horizon. I think that most of you reading this post are here with me.

2)
Let us go down to level 1 of abstraction below considering you and me to be in the intermediate level, for if it were not so, then you no longer need to read further, because you are already full of inner light or, on the contrary, despair. Level 2 I write for those who are actively looking for the truth as I do.

As in the MMORPG, you collect skills for growth (+ to attack, + dexterity, etc.) and place them in the skeleton of the hero's skills, and in programming we collect skills that elevate us above other programmers. I think that there are basic skills that a programmer needs like air, and everything else is just spraying this frame.

Skill 1 - mathematical thinking.
image
Math is easy. This is the science of how to come up with a model for any subject area. Yes, absolutely anyone ranging from “you have 5 apples and a car - 4 how many apples do they have” and ending with NP tasks about traveling salesmen “which delivery route will be optimal with the existing N stations and K trucks at these stations”. Without mathematics in any way. Totally.

Skill 2 - algorithms and data structures.
image
We assume that you do not agree with the previous paragraph, but it is impossible to disagree. One of the books of Wirth is called “algorithms + data structures = programs”. I declare with complete confidence that if you have thoroughly studied and understood any of the so-called bible algorithms (Kormen, Aho, Knut), then you ALREADY are 80% cool programmer, but unfortunately to do this you need point No. 1. Here so.

Skill 3 - the ability to instantly find and assimilate information.
image
Modern IT is the fastest growing area in the world. So if you didn’t have time to do everything quickly, then the technology that you so diligently taught was already unclaimed.

Skill 4 - knowledge of English
image
We skzhem so that this is the previous skill of the previous skill, due to the fact that almost all of the most valuable and new information appears in English.

It's all. Just like that. After all, everything ingenious is simply. The rest is technology.
Therefore, the choice of a specialized language does not make sense. C ++, Java, C, Python, ADA, Fortran — all of these languages ​​are composed of primitive data structures + operations + cycles \ iterations + blocks. Have to sweat, just mastering your first language.
Networks, distributed computing, expert systems, databases and everything else is just math translated into your language.

3)
Get down to another level of abstraction below. Here are practical tips and tricks.

To succeed in anything, you need to do it, because only what is being done all the time is well done.
Whatever you study, without practice it is zero. Do you think why after watching the video course, only the general impression remains in your head?

You do not know where to start - start with the algorithms. This is just a panacea for all ills. In the environment of regular boys it is customary to study the book of Thomas Cormen - algorithms. Construction and analysis. You can not miss the misunderstood material in any case - I did not understand something - google, habri, ask, look, look, and so on. Everything is by induction - I didn’t understand simple things - you won’t understand (or understand correctly) and complex ones.
At the same time, register on the site topcoder.com - this is a platform for programmers from all over the world created with the aim of competitions in all types of programming. But we need air like subdivision algorithms.

Tk is one of the most effective ways to learn - paying special attention to it.

- Go to topcoder.com
- we crawl
- In the upper right corner go to the community portal
- Download a special application (called platform or arena) in the O (n) section - the algorithms section
- We go into it and log in

image

What is the platform?
This client server application allows you to connect to a bunch of people who will compete with you.
The type of competition we need is SRM (single round match) which are competitions that are held almost weekly and give you a chance to get a rating (with a good rating you have sooo great chances to get a good company with the right people).

How to score?
there are 2 divisions (2nd for hard programmers and 1st for hell programmers) in each of them 3 tasks-
1 - 250 - 350 points
2 - 450 - 650 points
3 - about 100 points
moreover, a regularity is noticed that quite often 2 and 3 tasks of division 2 are also 1 and 2 in 1 division.

An incredibly useful feature of the platform is of course the practice rooms, this is an infinite number of tasks that are incredible in practicality and applicability in life. You can also watch solutions of the same problem by other users - the best programmers in the world.

Unfortunately, this miracle is not available to everyone - you need to speak English at least with Google translation and at least one of the C ++, Java, C #, VB languages.

In order to immediately take a horse on a white horse to come to Topkoder Grad I will give some simple tips. I am writing on c ++ so the tips will be appropriate

1) connect all that is possible from STL and begin to deal with it because the main indicator of the programmer’s efficiency is the ability to use the highest level of abstraction. Why write new code if others have already written it? "A good artist copies, the best - steals" Picasso.
#include <iostream> #include <string> #include <cassert> #include <complex> #include <cctype> #include <climits> #include <queue> #include <utility> #include <algorithm> #include <vector> #include <sstream> #include <functional> #include <cmath> #include <cstdio> #include <cstdlib> #include <numeric> #include <map> #include <set> #include <list> #include <time.h> 

2) write your macros (these are pieces of code that are dynamically substituted into the source code by the preprocessor)
 #define ff(i,m) for(int i = 0; i < m; i++) //      #define VI vector<int> //        #define VS vector<string> 

3) choose a convenient IDE (development environment such as VisualStudio, Xcode, Code :: Blocks, JetBrain, etc.)
4) Practice, practice, practice, practice and then practice again !!!

This is the easiest way to get everything at once. So with the topcoder finished.

Another important aspect of our level 3 abstraction is the study of the field as a whole. People I tell you - read Habr - all the most interesting people of Russian IT gathered here. Read, read and once again read all the interesting, taxing and uninteresting articles, just as reading matter or magazines and soon realize that such issues as salary in Moscow and the choice of language will start to lose meaning.

Well, do not forget about 30 minutes of English per day.

So in conclusion I want to wish all of you and us good luck and success in learning. The better you get the better I get. We are the future of this country - let's develop together and help each other. I hope that someone this post will be useful.

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


All Articles