Programming for non-programmers. June biography

Foreword: This is a story about books for those who decide to learn programming on their own. But since reading the list of books would be boring, I decided to supplement it with my biography.

So ... I'm over forty. I am a linguist by education, I work in the scientific field. I never came across programming, although formally I took informatics lessons at the school, which, in fact, came down to typing a program on BASIC from a training manual and seeing the mysterious DOS on the teacher’s computer. Oh, yes, there was still a very brief acquaintance with Fokal, but, again, everything was strictly according to the training manual.



I’m an orphanage, so after school I managed to enter the local university under the quota at the Faculty of Agriculture. Study ended exactly one year later due to dislike of the chosen discipline. Actually, it’s hard for me to imagine that most people at the age of eighteen are able to accurately determine their professional and life goals. I read biographies of people like Ilon Mask, who started programming already from the cradle, or the founder of Teranos, who had already set up her home chemistry lab at the age of five.

Most people, like me, however, are a herd of animals following the trends. We do not enter the university because of a craving for knowledge, but simply because everyone does it. Well, nobody especially wants to join the army either. There are more lucky individuals who purposefully enter promising universities for promising specialties on the advice of their parents, but this is again a matter of luck, connections and money. As a child, I loved to watch “Clever Men and Women” and, frankly, it was hard for me to imagine that, for example, children who were serving sentences or who suffer from alcoholism could have participated in this program en masse.

The country was actively preparing for the second Chechen campaign, and all restless and idle people were massively transported to conscription posts. I decided not to try my luck and went to the other end of the country away from the military registration and enlistment office to work as a laborer in the port. I have a rather slow brain, therefore, only after several years of productive communication with the “wounded” intellectual majority and with their more successful brothers who have already embarked on the path of success, I realized that the prospect of being a powerless worm at the bottom of society is a very dubious pleasure . Higher education was the only door up the social ladder.

So, I entered the linguist. Why? Because the local university taught linguistics and because the target faculty had budget places. Linguistics ... A very interesting specialty. Linguistics is a science about the structure of a language, but, as a rule, the vast majority of linguists have difficulty mastering their native language, not to mention foreign languages. The father of modern linguistics Noam Chomsky speaks only English and understands a couple of phrases in Hebrew, however, this did not prevent him from developing a powerful theory of grammar of languages, which is actively used by millions of people working in the field of linguistics.

And this feature of linguistics was my chance to step onto the next step. If a university graduates hundreds of specialists of the same type with a basic set of knowledge in accordance with the requirements of the Ministry of Education, the best way to stand out from the crowd would be to learn a couple of foreign languages. I did not want to miss university, so I had to quit my job at the port and get a night watchman at school. 4000 rubles per month. Every day, oatmeal and pasta. But, on the other hand, there is a lot of free time that I used to do homework and learn additional specialties. In addition to the English taught at the university, I decided to learn French. Why? Because it is the official language of diplomacy, a second language at the UN and, in the end, the language of economically developed countries.

Taking a French tutorial in my hands, for the first time in my life I asked myself: actually, do I have language skills? How can I be sure that reading a book and doing all the exercises will not be a waste of time? The work of a watchman with a beggarly salary could be exchanged for the position of merchandiser in a nearby shopping center or for the place of a warehouse worker at a brewery, but in this case I would not have time for self-education. In general, I took a step towards the unknown.

Work a day in three. Rewriting lectures. Homework. Coursework. French tutorial. Two years later, I reached a level that allowed me to read small newspaper articles and write straightforward essays. The big problem was speaking and hearing, so I had to enroll in language courses and sit on oatmeal from morning to night. A year later, I passed the exam at level B2, which allows you to enter foreign universities.

The question of language ability has remained open. Why did I learn French? Because of perseverance or because of genetic abilities? Or together because of both? My thoughts were interrupted by a call to the dean. “Do you have DELF B2? That's fine. We have signed an agreement with the University of Brest on the exchange of students. You’ll go for three months. ”

In the company of several provincial majors, I went to Brittany. Scholarship 500 euros per month, the end of oatmeal. Brest is a provincial city of average scall, in which, except for the port, there is no entertainment. My companions spat on their studies from day one and drove off to Paris. And I regularly went to lectures, after lunch, to the laboratory, where I asked for as an assistant on a voluntary basis. Contact with teachers has been established.

Return to the native provincial outback. Conversational French made it possible to get into the department of international cooperation in his native university. Two more years. Graduation. Release. I'm thirty. The military registration and enlistment office presents me with a military ID marked “ordinary reserve”. I'm going to Rennes for a master's scholarship program. 750 euros per month, a couple of years of lectures, exams and internships. I am offered to go through a competition for a state contract for writing a dissertation. The contest was successfully completed. Four years, 1,600 euros per month after taxes. Thesis is defended. I'm going to Shanghai, this is my first postdoc.

1000 euros per month. For China and even for Shanghai, an acceptable salary is quite acceptable. However, this is my ceiling. Career growth is possible, but it will require tremendous effort. The applicant for the position of assistant professor must have a stock of several dozen publications in worthy journals and experience in several countries. A period of heavy thought began. Despite years of effort and a degree, I ended up at the level that I would have got without French with oatmeal. Moreover, despite the rather deep knowledge in linguistics, I did not like this profession.

The prospect of being an eternal postdoc and doing unloved business did not please me, and quite often I began to get depressed. To put my brain in order, I started playing sports. First day. Run. 100 meters. I'm dead. I have never run in my life, bypassed the horizontal bars. I was the favorite target of punks. However, the hundred-meter bore fruit: depression did not happen. The brain began to work and analyze reality.

The film “A Touch of Sin,” an episode with a factory worker throwing himself out of a window because of hopelessness. I can run 1 kilometer. I am reading a critical article about the film. Three kilometers. The script was based on real events that took place at the Fokskonna factories, known for their inhuman working conditions. Five kilometers, lead hips, but I seem to be able to run a couple more. Terry Gough announces the downsizing of Foxcon and the creation of a fully automated enterprise.

I stopped. I have afterburn. Here it is, the trend. The world is rapidly moving towards total robotization. Carrefour replaces cashiers with automatic scanners. Cathay Bank is reforming its customer service department in the same vein. Paris metro workers on strike due to the opening of a new automated line. I have to start learning programming or stay outboard forever.

I have always sincerely believed that all people have their own limits in the field of knowledge acquisition. And I always thought that programming is a restricted area into which I am not allowed to enter. Despite my age, I remember very well the feeling of sobering dullness that I had every time I typed programs from the instruction manual on the keyboard of school computers. The comrades managed the task in five minutes and even managed to write some additional lines that made the computer squeak with a speaker and blink with the cursor. I, however, sweated aside and could not even run the program from the training manual.

Sport and long-term work as a watchman changed my attitude to this issue. If I can overcome myself and run eight kilometers, if I can patiently sit at a French language tutorial and write hours of exercises, then I can certainly learn programming. Well, if I can’t, then at least I’ll try.

So what to teach, where to start? Quora, StackExchange, Habr. The most popular and popular languages: Python, Java, JavaScript. I definitely don't want to learn web programming. Sculpting beautiful sites against the backdrop of smelly Chinese smog and a beach littered with plastic bottles is, in my opinion, the height of hypocrisy. Virtual reality must be true.

In general, the choice fell on Python. Everyone says it is a very easy language. This is just what I need. So, the book of Dawson. I got to the cycles and I’m tired of everything. Somewhere deep inside me sat an awareness of dissatisfaction with the chosen course. Moreover, the author chose to write the game as the main motivator for language learners. On the one hand, the war in Syria, millions of refugees, terrorism, global warming. And at this time, adults with a solid fundamental education are sitting in soft chairs and writing games. Yes ... But, nevertheless, Dawson’s textbook is still very distinct. And the IDE offered with the book makes it easier to get to know the language.

In terms of knowledge, I did not learn anything useful from the book, on the contrary, I had even more questions. For example: how the operating system is written and how it is written to the hard drive. How are messages transmitted over the network? Why do dos have poor graphics and windows has 16 million colors? Dawson's book had to be set aside and again lost in thought.

There is one German film called Who I Am. The hero of the film wants to join the company of hackers and they ask him to demonstrate his knowledge. They say: over there is a power station, turn it off. A candidate for hackers sits down at a laptop and types the code on the keyboard. The people behind him respectfully say: oh, you know how to low level! Are you with us. This phrase is pretty deeply ingrained in my brain. Low level ... It seems that this is the key to the answers to my questions.

So, you have to learn programming from the basics, from assembler. Quora, StackExchange, Habr. A set of books on assembler. A few weeks to familiarize yourself with each textbook. The abyss of hopelessness. Each book suggests learning assembler from a high-level language perspective, most often C. Pedagogically, this is incorrect. This is how to offer Russian language learners first to master the syntax of complex sentences, and then move on to the alphabet. From here, by the way, the second problem follows: the author assumes that the assembler is not a noob, and knows what and where to click to start the debugger, and indeed in what development environment you should write code. Oh yes: the textbooks mainly focus on FASMe or TASMe when it comes to Russian authors. I never saw Linux, therefore on FASM there is a cross. TASM does not have a clear development environment,

Several weeks of online searches have been successful. I found a book that could be placed under the heading “mind-altering”. Kip Irwin, seventh edition. Why is this book so good? Irwin is a musician by education, and with a thesis, which did not stop him from entering college again at a mature age as a programmer. He studied the language on his own as a hobby, so he perfectly understands all the difficulties that a beginner may encounter. His textbook explains everything: where to click, what to see, how to install. An excellent introductory course on Visual Studio, IAMM, DOS, and a bit of C ++. And the main thing is exercises.

I’m a postdoc, I work in a dust-free laboratory, my boss doesn’t get bored and does not make me work overtime. Evening time from six to twelve is devoted to assembler and programming in general. The first exercise is like my first hundred-meter race. The main thing is to realize that programming and, in general, the search for a solution to a problem is a nonalgorithmable and non-linear process. This process requires unpredictable time costs: maybe a couple of minutes, or maybe a few days. The main thing is to remember your previous success: if the last time I decided to exercise with two asterisks, then this time I will also decide.

Together with the first solved problem, it came to the understanding that programming cannot be taught. You can learn a couple of hundred algorithms, but still the day will come when you need to create something new. And then no Donald Knut can help. Is it possible to develop programming abilities? Lomonosov said that the best exercise for the brain is mathematics. Therefore, in addition to assembler, it was necessary to refresh knowledge on matan and begin to study discrete mathematics. Again the flour of choice, but simpler. Matanalysis, Stuart textbook, sixth edition. Discrete Mathematics, Kenneth Rosen, Seventh Edition.

There are a lot of discussions on the net about the uselessness of acma. I am extremely pleased to have learned the basics of this language. Low-level programming makes it possible to understand such non-obvious things for high-level languages ​​as the operation of the memory stack and why its overflow occurs, what is the danger of recursion, the fundamental importance of a linked list for memory storage systems, etc. The main thing is that ACM teaches a lean approach to computer resources and, accordingly, to energy consumption. If I were a billionaire, I would love to invest in developing systems like MenuetOS. Well, or at least shook hands with their developers.

Nine months on Irvine, getting to know FreeDOS, learning the standard C library, and first steps in C ++. A brief introduction to SSE technologies in the Kusswurm Handbook. The boss calls me into his office and declares that my dubious successes in the scientific field do not allow him to extend my contract. Not surprisingly: from morning till night my colleagues sweat over projects, forget about their personal lives and fight to the death with editors and reviewers for each article, and I sit out contracted time in the laboratory and run home to indulge in assembler, and generally think more about programming than about work.

In general, I have six months before leaving and I need to add gas. Putting discrete math aside. I need to start learning a high-level language and the choice falls, naturally, in C ++. I am already on “you” with Visual Studio, so everything should be easy. By the way, C is a subset of C ++, so you can kill two birds with one stone.

Crosses. In my opinion, there are a couple of worthy textbooks: Prata and Deitel. Prata is quite verbose in places. Deitel is simple, but explains everything from the point of view of OOP. With these textbooks, my first immersion in the world of objects began. Since my brain was hopelessly corrupted by assembler, I used Deutel’s textbook only as a source of additional information. The author devotes an entire chapter to the description of the “strength, power, and beauty” of the PLO, without bothering to describe the flaws of the concept. For example, Irwin openly says in the introduction that writing assembly language software is an unhealthy idea, but everyone should know assembler. Prata also does not go too far and describes the PLO fairly moderately. Deitel says: OOP is cool, so we will use it. 2 + 2? No problem: create a class, a couple of constructors, inherit methods and overload operators. Answer: 4.

A man came to a restaurant and ordered spaghetti. The waiter brought him a spoon, a fork and a straw. The client thinks: well, since they brought a tube, then it must be used. And begins to suck in turn pasta. Simple, powerful and beautiful. This is not a criticism of OOP, it just seems to me that everything has its own areas of application and limitations. OOP is probably good in graphics, where each object on the display corresponds to an object created from the description in the class. But here I recall the book of Abrash, who wrote games in pure assembler. Or Xavier Niel, owner of the French mobile provider Free. He founded the school "42", where applicants, after several months of preparation, are invited to write a video game in C. You can do without OOP.

Another language problem is pointers. Hundreds of articles and angry letters to the editor are also devoted to this topic. An assembler pointer is a very simple thing and does not require any special brain to understand. Implementing pointers in C / C ++ is really a problem. I do not want to dwell on the intricacies, I just want to say that pointers with castes and a dozen asterisk between brackets really cause a swoon. Why couldn’t you come up with something more intelligible like ESI / EDI and square brackets?

A week before leaving. Linguist. More than higher education. Absolutely useless creature in the labor market. I have a choice: either do a job search, or spend the accumulated money on travel and leisure. China is still a beautiful country. Hansu, Qinghai, Xinjiang, Karakorum highway. My resume sent out a few months ago went unanswered. I am sitting in the laboratory and browsing the university website. “The artificial intelligence lab is looking for people with a master's degree and programming skills.” They answer me in five minutes. Rendezvous in an hour.

The chef is interested in my past and asks a couple of questions about my motivation. He is a statistician by training, he never programmed, so he calls his postdoc to test me. Algorithms for converting phrases and finding words are easy. Genetic methods and Markov models ... uh, a complete zero. The boss tells me: you have exactly as much knowledge as a standard self-taught person could have. Assembler does not count, it is useless. But it gives me a chance, because I have knowledge of foreign languages ​​and the ability to learn. He is working on the Chinese language corpus and is planning to expand towards the Indo-European languages. A nearby postdoc says that you have to learn patterns. The PLO is inevitably like the collapse of imperialism ...

So the first day. Development environment - Visual Studio. Tongue - With Sharp. My task is to study the software that they started working on ten years ago. The syntax language is close to C ++, but there are a lot of methods unfamiliar to me, so again I have to look for a textbook and solve the exercises. This time the choice falls on the Bulgarian textbook written by the founders of Telerik. An excellent book for those who want to learn both language and algorithms at the same time.

Prata, by the way, described queues and stacks, but this was done in a non-imperative style: they say, let's solve this problem with the help of the stack. And what kind of stack this is and where it came from is not known. Bulgarians describe each algorithm and explain what range of tasks can be solved with their help. I once read StackExchange threads at the dawn of my youth and often fell into a stupor from phrases like “black and red trees”. Now I run into it, but at least imagine what a “tree" is in general. The textbook of the Bulgarians had to be supplemented by the book of the Pole Marcin Yamro. Clean algorithms, everything is simple and clear. Patterns: Judith Bishop.

Artificial intelligence and the body of the Chinese language. Sharpe is not enough. Need to learn the database. SQL, Agarwal reference. Great book, clear explanations. Algorithms and databases are followed by Petzold’s WPF and WPF Cookbook. XAML is easy to learn, but the bindings and MVVMs that come with it are not yet understood.

A year of work in the development of artificial intelligence as a junior. That is, in the academic environment there is no such thing as a software engineer. We are all research assistants. Everyone has their own project, and how it will be implemented is everyone's personal business. I already mentioned that my boss never programmed. For him, the main requirement is integration with previously written software, that's all. I sometimes talk with colleagues who previously worked in a corporate environment. Apparently, we have a rather relaxed atmosphere; everything is dispensed with without checking the quality of the code. Patterns gather dust on a shelf.

I still don’t know if I want to continue working as a programmer in the future and look for a higher-paying job in a private company, but I already know for sure that I don’t want to do AI. As our American partners say, AI is 99% hype. Fraud. Terry Gough will certainly be able to automate Foxconn's conveyor belt. Metro workers, cashiers in supermarkets and call center employees will also go freeze because this is an algorithm work. A computer, however, will never replace a teacher, a doctor, or an engineer. And I personally hardly trust the robot to control my car.

Ah, I forgot: I'm a linguist and still useless in the labor market. Where is he, the trend? What do you need to learn to stay afloat? Well, I'll see the news again. Yeah, Canadians arrested the daughter of the owner of Huawei. The Germans are worried about the vulnerability of state-owned telecommunications systems to the Chinese threat. Nokia has not yet reached the technological level of Huawei, so the dilemma is brewing in Germany: either wait a few years for local companies to give birth to a decent replacement for Chinese products, and at the same time put an end to the economic leap forward. Or upgrade the local mobile network to 5G, relying solely on the potentially unsafe products of the Communists. It seems to me that I should start digging in this direction. C, Linux, networking, electrical engineering, telecommunications standards. This is my next step.

Conclusion All the questions that I began to ask from the moment when the French tutorial first opened, remained unanswered. Is it possible to develop the ability to languages ​​or is it an innate feature of a person? Logic, abstraction, and programming are a similar issue. Neurophysiologists claim that the left hemisphere of the brain is precisely responsible for the linguistic abilities of a person and his ability to reason logically. Was my brain initially prone to analytic activity or was it the result of life circumstances? Why was I an apathetic child without any interests, and when I stepped over the line of twenty years, I suddenly gained perseverance and the ability to absorb fairly sensitive volumes of information?

The question is by no means an idle one, because supermarket cashiers, after the mass layoffs, will have to somehow adapt to the new conditions. If logical thinking is the result of training, then the tellers need not worry. Current programmers will have to worry because of increased competition. If logical thinking is encoded with genes, then the government will have to worry, because the cashiers will have to feed something. Well, all kinds of fighters for equality and equal opportunities for all, too, will need to somehow come to terms with this uncomfortable truth.

Well, at the expense of goals in life. The readers of this article must have a feeling of bewilderment: a healthy forehead, they say, but still rushing about in apprenticeships. The realization of what I would like to do came after my scientist presented me with the book “The Man Who Planted the Trees” by Jiono. After that, I attacked the publications of our scientist Zimov in Nature, describing the first geoengineering project in Eastern Siberia. There is still a wonderful work of zoologists from Novosibirsk, leading work on the adaptation of lions to the conditions of the polar winter. I would like to do just that. For 20,000 rubles a month.

Good luck to all!

Also popular now: