How not to become a programmer or ... you do not belong here

PROLOGUE


This article is for someone who decided to become a kulhacker programmer, for someone who still does not understand where he can get involved and who thinks that it will not cost him much effort.

This article is not recommended for reading by experienced programmers. After all, whatever one may say, but views on programming may diverge.
Therefore, I ask you not to minus much. If experienced programmers have something to say to beginners, write your article too.

Well, if you are in the process of self-determination in this profession - you are welcome!

TERMINOLOGY


According to the textbooks, programming is just a process of writing instructions in a programming language (PL).
But is it so simple to take and write a program?
Is it possible to write a program, is it just to list a set of instructions (instructions) to the compiler and is everything ready?
Just memorize commands and stamp yourself a program, but row the loot !?

Programming is a purely research creative, not a technical process.

Programming is the ability to abstract, think with objects, functional dependencies, virtual images.

Programming is the process of flight of creative thought, often beyond the scope of a working day and even a way of life.

It is important to understand that a program is not just a collection of lines of text.
This is not a sequence of code written out from a book. This is a complex multi-level product. These are tens and hundreds of objects of various structures with different behaviors that communicate with each other. And the programmer must understand and feel all the subtle connections between these objects.

When a programmer works on a program, it seems to live in his head.
You need to understand that a program is written by immersion in code. This is when the source code of the current module seems to be loaded into the brain and processed there (aka debugged).
Thus, already launching the program for execution, the “right” programmer knows perfectly how it will be executed, because before that it seemed to “lose like music” in his head.

I mean, I know a lot of such programmers who wrote some code and to check how it works, ran it and were very surprised when it fell out with an error in any place. They could not execute the code in their heads, and therefore, they did not understand how this very code worked. Well, they had no corresponding programs .

The most important skill in programming is to learn how to reproduce (execute) code in the mind.
The brain of the programmer should be able to run sections of code in the mind. You loop through the loop, compute the variables, and imagine roughly what will be the output.

The feeling that you feel the program is a very important step in becoming a programmer.
By the way, a good programmer differs from a bad one in that it spends 90% of the time on development, research and design, while a bad one spends these 90% of the time on debugging randomly generated code.

CONCLUSION. A programmer must be able to execute code in his head before he feeds it to the compiler.

BITTER TRUTH


As a rule, you cannot learn to be a programmer in an educational institution.
Used on most of the programmers - self-taught. Education can only lay the foundation for engineering knowledge. The rest is mental abilities and dispositions, multiplied by diligence and labor squared, and even in factorial (!).

I spent many interviews at work with programmers with a diploma in programming. During the interview, it turned out that they wrote only one program in their entire lives, and that was a diploma written by another person. I asked such a contender, but can a poet call himself a poet if he has not yet written a single verse? Usually, after all, a collection of poems comes out and then the poet receives the recognition and status of the poet himself. The answer was stupid silence and misunderstanding.

FORMATION


Our affairs are as follows. You read about algorithms, learn any language, write dozens of different small programs. Any programs - for yourself, for a friend, just to deal with technology, etc. And you devote a LOT of time to this. I’ll clarify again - MUCH time. And then you succeed? You enter, you understand, you like and you get a buzz from this, an inner emotional uplift! When the program works as planned, you feel a surge of happiness, endorphins and splash in your brain. Here it is! Excellent!

Only after that, you become someone like a programmer. And only then, an unwashed head, an old sweater and a beard ...

Laughter with a laugh, but by the length of the beard of one of our programmers, we will find out at what stage of the project he is.
CONCLUSION. A programmer is a person who not only writes programs, but also whom they work for.

ABOUT LANGUAGES.


There are many programming languages, but C ++ always stood apart on this list.
Why c ++?

C ++ is a minimalistic language that emerged as a collection of macros from assemblers. Rather, S. first appeared. But that is not the point, I am not a historian .
Why should an ordinary programmer know C ++?
It’s like a priest who does not know the Bible. As a marketer, unaware of 4P rule. Like a model without makeup. So C ++ is the very necessary baggage that should just at least lie in one’s head on one of the shelves.

You may not use C ++ in action, but you should know it as a canon, as the basis of all the basics. But nevertheless, C ++ is very dangerous when used, because, for example, when manipulating pointers, if the programmer does not fully understand their basics, you can fly to execute code in a data section (because of this, by the way, in JAVA, pointers canceled). And you can also “shoot yourself in the foot”))) the author of C ++, Mr. Straustrup, thought so . Because such a tool as C ++, you need to be very competent to use it to masterfully.

Also keep in mind that some modern languages ​​took C ++ as a base - Java, PHP, Perl, Ruby etc.
All known programs are written exclusively in C ++ (or C) - Windows, Linux, MacOS, iOS, Firefox, Kaspersky, Chrome etc. Moreover, many of the well-known programs have open sources and you can learn programming from them.

At the moment, only C ++ provides the fastest and most optimized code for the native native platform.

WHY DELPHI IS NOT AN OPTION?


Here I will accept a desperate attempt to dissuade beginners from programming in Delphi.

Pascal (IDE Delphi) is programming within the framework (IMHO). Pascal is a language invented by the scientist N. Wirth in 1970, during the development of another language of Module 2. Pascal was widely used to learn the basics of programming, but it only got commercial use in the 80s and 90s.

Over the decades of the reign of Borland and InPrise, he turned into a monster, borrowing ( stealing ) part of the syntax from C ++. Now Embarcadero continues to grow this monster, in the womb of which you will compile a gigantic-sized program. By the way, for Android too.

I used to drag a lot of people from the swampDelphi in C ++, which they themselves were subsequently incredibly happy about. Being C ++ programmers, they recalled with horror Pascal and no longer had the desire to program on it.
Also, I heard a lot of tales from programmers who tried to retrain the dolphists in Java and suffered a complete fiasco. Now many put an end to the dolphists. Allegedly, non-re-trainable.

Perhaps this is a challenge to you, gentlemen, dolphists! Try to write a program in C ++. After 2 months, Delphi (Pascal) will seem like a kindergarten and you will go to the next level of development (in high school). And there already Python is just around the corner.
Evolve! Are you weak?

Immediately I ask you not to breed a holivor about who is cooler - Delphi or C. If you write good commercial programs on Delphi and your users are happy with the product, then everything is fine. Write further. You have found your niche.

USE OF YAP


Now let's look at the world statistics for 2015, so what do they write programs on?
C (C ++, C #, ObjC) - 28.5% (these are normal guys)
Java - 21.5% (these are Android, server and mobile applications)
Basic (+ .NET) - 4.1% (this is the USA with their adored Visual Basic)
Python - 3.8 % (these are kulhackers, Linuxoids and geeks)
Delphi (Pascal) - 2.9% (these are Russia and Eastern Europe)
PHP - 2.7% (Web-programming)
Javascript - 2.5% (Web-programming)
Ruby - 2.0%

PROGRAMMER STEPS


Where will your training in programming begin?
1. Introduction to Algorithmization
Here, for starters, Pascal is still good. He is good at developing block thinking. Introduces the subject of programming. Does not scare away like C ++. And the leg will remain whole.
2. Variables and data types
3. Basic elements of the language
Structures, classes
Loops, branches, selections, transitions, functions
4. Familiarization with OOP
OOP - this is exactly the functionality that makes a human program “good” program. This is the skeleton (skeleton) of any decent program.
This is what the beginner's roof comes from. This is what foolish programmers are running from.
This is where abstraction begins.
Only one thing needs to be understood - OOP is the backbone of any well-designed program.
Without OOP, it is sometimes difficult to build a logical and intuitive interaction between program modules.
5. Acquaintance with technologies - work with files, streams, graphics, sockets, DBMS, Web, XML
6. Deepening - work on your projects for 6-9 months. It is important here not to pull ready-made components, but to write pure C ++ code.
It’s important to just get your hand up.

FRAME AND COMPILATOR (IDE)


A framework is a software platform that facilitates the development and integration of various components of a large software project.
A compiler is a program that turns your writing into executable code.

The IDE is a graphical editor editor that makes it easier to create visual forms and edit code.
The problem of modern programming is the excessive variety of frameworks, environments and YaPov.
You cannot learn all of them. The customer or the employing company determines a lot.
You can start learning with Visual C ++ (Microsoft's environment), Builder C ++ (Embarcadero), and Qt.

Visual C ++ is a classic. If you need a lot of convenient visual components, if you need a sophisticated interface - take Builder C ++. Need cross-platform - take Qt C ++.

I started programming in C ++ in DOS. Then (in the 90s) there was nothing more (unix does not count)!
Now we have C # .NET, Qt, wxWidgets, C ++ Builder, C ++ VisualStudio for Windows. And no less bold variations under Linux.
And if you look in the direction of Java, Android ... then it’s just salivating from the possibilities.

Get your head ready for an extensive infusion of documentation. As programmers say - RTFM .
Learn one language and one environment. Scientists have proved that a programmer with 3 years of programming experience in one language works 3 times more productively than a programmer with the same experience, but in a different language.

GOOD PROGRAMMING RULES


1. Wrote the first version of the program !? Throw it out and start writing the second version.
2. Start designing the program on paper — blocks, communications, morphology, diagrams (UML)
3. Self-documenting variables - bPersonNameValidity
4. 60% of the code — handling errors and exceptional situations.
5. Break the code into small modules. Good practice is one class, one module.

WHAT ARE THERE?


Separation into system (C) and applied (P) programmers.
C - they know the device of the operating system, the basics of the API, how the OS works (threads, processes, interrupts, hooks), they try to write all the code themselves without involving third-party components. Often supporters of VisualStudio. They do not like to create software with large graphical interfaces.
P - they write a program using third-party modules and components. Do not go into OS device. Love Delphi and Builder.

Embedding is the most professional level. Programming for hardware - hardware. Requires knowledge of electronics and assembler. The highest paid programming segment.

Web programmers - write code for dynamic sites. More often in PHP. Additionally, you need to know HTML, CSS, JS, etc.

EPILOGUE


It is naive to assume that you can learn to be a programmer in less than a year.
A programming language is like a musical instrument. You’ll probably grab the basic skills of the game quickly, but it will take years to perfect your skills.
Programming should be like, should be captivating, like any favorite process.
I recommend to demolish all the games on your computer. Waste time on useful things.
Develop analytical thinking.

By C ++. We read Straustrup. Keep his book handy.
And further. Learn English. Programmers should be able to read English fluently.
99% of the programming documentation in English. Do not wait for a transfer.
The names of the variables are also called English words, at the same time it comments on the code.
If, while learning a programming language, you feel that you are tearing your way through the jungle, that your brains are stuck in this muddy, that language constructions are terrible and difficult to understand, and you feel growing irritation, then it is quite possible that this is not yours. Give up!
Programming is not a profession, it is a diagnosis.
The main thing is that you tried, but it is possible that your calling is different.

PS


A little from the experience of others.
Programming is not an entertaining party, but painstaking work that requires a lot of knowledge and a certain mentality.
Learn the language! = Learn to program.

Only registered users can participate in the survey. Please come in.

Become a programmer

  • 26.3% After the article, I decided that I would become a programmer 125
  • 8.8% After the article, I changed my mind to study as a programmer 42
  • 31.7% The author did not open the topic. I’ll look for another source. 151
  • 33% The author complicates everything. Everyone can program! 157

Also popular now: