📜 ⬆️ ⬇️

The story of one programmer

I am a programmer, 24 years old. Height 170. Parameters 90-60-90. I want to share my experience from the institute times. What you need to pay attention to in the learning process (based on my observations), which may be useful in the future. I'll tell you at what points and what progress was observed. How not to give up if it’s boring to learn, and where to look for motivation.

image


In my school computer science was only in the 10th and 11th grades. We studied the language QBasic. We wrote programs no more than 30 lines. Against the background of the rest of my classmates, it seemed to work out quite well with the tasks, and the surrounding people said that "programmers are needed now." When I went to study as a programmer, I had no idea what it was all about.

In the first three courses, I still did not have a complete understanding and understanding of what I would do. In the first and second year there were semesters with the study of the C language. All other subjects consisted in familiarizing with areas that will help in programming. Some subjects were not estimated by some comrades, but in vain.
')

After studying at the institute, you realize the importance of the following things.



Coding style


In the first two courses, my programs were of themselves, I’m not afraid of the word, shit code (when I opened older programs for more advanced courses, I myself was shocked by the code design). I saw on one line several called functions, operators, and all this could be written without a space. From the first to the fourth course, the teachers basically only required of us the knowledge of the language, the application of the studied algorithms in solving the problem. We were not even told anything about the programming style, and that the student “doesn’t work”. Everything has changed since the middle of the fourth course. When we more or less coped with the tasks, the teachers began to make comments on the design of the code. I even have reports, exhausted, with arrows and recommendations for changing the location of pieces of code. The “cleanliness” of the code in my first three courses was almost zero. But then you try to write the code properly so that you are not ashamed to show others.

So, do not be afraid to show your code to more experienced programmers, your group mates, do not be afraid of criticism, because it is better to recognize your mistakes earlier and learn to write readable, competent code. Participate in open source projects or at least see how programs write, for example, on github. In addition, now there are books with recommendations on the style of writing code, which can help instill "code purity" already in the initial stages of learning.

Make your life easier - use version control systems


I first got acquainted with version control systems in my fifth year. And very grateful to the teacher who forced us to conduct the development of laboratory work in git. Having learned all the advantages and flexibility of distributed systems, having experience with SVN and git, I prefer git. And do not even bother working in git bash, although there are graphic applications for Git th.

Need to learn materiel


Many do not take into account some items. They say it’s boring, and it’s hardly useful for me. As practice shows, it still goes around comes around. Most of my friends at the interview were asked exactly what they were missing. Here are a few things, the knowledge of which was useful to me more than once.

Regular expressions


We had a whole subject on which it was possible to sharpen skills on drawing up regexp - compiler theory. At first we wrote simple lexical analyzers, later we began to write programs for parsing. After getting acquainted with regexp, you can see that they are needed both for parsing files and for checking the correctness of data (check the same IP address). And yes, they like to give assignments for interviews related to regular expressions.

Computer Architecture


How the processor works, how calculations are performed, how memory works, interrupts are processed and much more. Knowledge of the representation of numbers in the machine, the process of performing operations with numbers in the additional / reverse code will definitely be useful to any programmer working with a computer or FPGA, microcontroller, etc.

Knowledge of the OS


Working with threads, using synchronization mechanisms, administration, etc. At one of the interviews they were asked what the mutex is. Someone, due to a lack of understanding of the essence of the question, will start talking about lock () and unlock () functions for working with the mutex. But in fact, you need to convey that this synchronization mechanism is passive waiting. Depending on which direction you are going to work, the vital necessity of this knowledge is determined. But even to know and remember such things does not hurt.

When studying the operation of the OS and drivers, they first assembled the Linux kernel, although earlier for me it was something mysterious.

Hardware programming languages


Useful for general development. But so far in the work is not particularly useful. Although not: when at the lecture we began to talk about packaged and unpacked structures, I wondered if there was such a thing in the C language. Yes, I did not know that there is such a thing as bit fields.

Automaton Theory


And this theory can be useful in practice. For example, if you have some kind of long expression in if, it can most likely be simplified using Carnot maps or another method of minimizing a Boolean function.

Information Security


The knowledge of calculating CRC codes to control the integrity of the transmitted information during the exchange came in handy. We even had a whole lecture on what it is and how to make the right choice of a polynomial.

Network


Acquaintance with various protocols, with work and types of network configurations turned out to be useful.

This is only a small part of what may be useful to you in your further work (higher mathematics is no exception). This is a small list of knowledge that is actively used by me. Yes, many at the institute were told to us in passing, just for your reference, but thanks to this database, you know where to dig, when you need to solve the problem. And since the last two courses we had a lot of subjects in the specialty, significant progress and the application of knowledge in practice falls on the last years of study.

Lack of motivation can discourage learning


Many times now I hear from younger employees: “I have already completed my studies before the fourth (nth) course, and boring lectures, classes, and instructors only kill desire.” I am probably a little more fortunate in this regard. We had several teachers (they still work in other companies), looking at which you think: "I want to be the same." Their teachings, life stories inspired. Thanks to such people, students have a fire in their eyes.

To instill feelings in others, you yourself must be absorbed in them. To cause tears in others, you yourself must cry. To convince others, you yourself must believe.
(Winston Churchill)

If your teachers at the institute are not interested in giving lectures on paper, they do not give interesting tasks for laboratory classes, then you should not abandon programming (I have a couple of acquaintances who really abandoned programming) before they started. Many companies now hold free seminars and provide free training / internships in the summer. Believe me, having communicated with experienced programmers, you will feel differently. In addition, after the internship you have the opportunity to stay there to work.

What to say in the end


Despite the fact that the programmer gets most of the knowledge from self-study, the knowledge gained at the institute can be useful. You never know what might come in handy in the future. So one should not be so skeptical about the attended lectures, seminars and laboratory assignments. If you want to be a programmer, you will become one, but you will have to sweat for this and not give up when you encounter difficulties.

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


All Articles