Recently
, the question was discussed at Habré, is it really necessary to include programming in the list of compulsory disciplines and, thus, to popularize it, to make it massive. I would like to share my modest opinion on this issue from the user's point of view.
For the avoidance of misunderstanding, I note that basically the content of this article is the answer to some of the arguments cited in
Programming for all: the new standard of literacy and commentaries to it.
So why, from one point of view, the study of programming as a compulsory subject in school should not be considered a definite plus, and in some cases it is even a minus? In my opinion, there are several reasons:
')
Programming develops abstract thinking, perseverance, ability to plan work
Yes, one can agree with this, but other objects cope with it just as well. Algebra probably develops abstract thinking and assiduity where programming is more efficient, because not only does it not forgive mistakes, but it also does not have a compiler that would helpfully point them out and automatically open the documentation page with examples. The ability to design and plan in advance - the essays that students periodically write in Russian lessons (sometimes also in some others) cope well with this. Why? Because an essay cannot be written “just to work,” its content requires much more coordination than the average program at school. A good structure in the 300-line program is unlikely, most likely, you should expect something in the spirit of “asfdyausd.Cilck ()” - received and forgotten.
The problem is that if a student is really well loaded with various nuances of programming in order to form his subheading skills, then as a result you can get two or three enthusiasts and twenty-five people who will not be able to look at the computer later, not to mention that they simply will not cope with the task. Indeed, for many, programming is boring, and the computer itself is a tool for entertainment or work, and all the programs that they need have long been written by professionals. Therefore, it seems more reasonable to single out a separate specialization within the computer science course for those students who want to study programming in depth.
It should also be noted another subtle point: programming languages, environments, frameworks, etc. - technology, and technology is quite changeable. In this connection, the problem of determining a promising language for learning arises, otherwise there is a danger that after the end of 10 years of schooling, a person simply cannot fully use his knowledge, because the language or environment that he studied all this time is simply outdated .
Programming allows you to independently solve some domestic problems.
Yes, definitely. But is it advisable to spend several years on what will be needed at best once a year? Probably not. If a user needs a simple program or script, then he goes to a site like freelance.ru and is looking for someone who would write him the required software for a reasonable fee. Some advantages: quickly, efficiently, saves nerves and, most importantly, time, which is often more expensive than money.
In addition, you can search for professionals / enthusiasts among friends who could do the same for a symbolic bottle of beer. And again: quickly, efficiently, cheaply and does not require any effort at all.
What programs do the average user need? Browser, Word / Ixel, some kind of player, uTorrent ... and everything, apart from toys and service programs. Spending a lot of time and money on learning the language just for the sake of one small program is unwise, it is easier to order it in rubles for ~ 300-1500. But even in this way very few go, simply because the existing software is able to satisfy to some extent or even their needs.
And what is the result? We spent 10 years, a lot of parental nerves and a rather large amount of money to educate children, of which, at best, a couple or three people will ever use their knowledge in practice. On the other hand, those who have not learned to program will just go and buy the program they need. And they will pay for it much less than their training cost, but they will get a better product.
Well, and those who really need programming in everyday life, can go to any bookstore and buy a book on the language of interest. Here you can find some similarities with motorists: who wants - he is engaged in the car himself, who does not want - uses the services of a car service.
Programming allows the employee to automate the workflow
In other words, "Come on, I know how this is done!". This is fun, but such self-activity can be very expensive both for the organization and for the employee. The discussion cited the example of a milkmaid, but let's, for the sake of expression, imagine an accountant.
An accountant sits, prepares a report and decides to automate it, moreover, independently. Since he himself is an enthusiast at best, the probability of error is very high. Suppose he overlooks some language feature, but the project is compiled and there are no obvious errors. The report is submitted and a little later it turns out that due to a minor error the organization has lost a very decent amount of money.
It is then that the accountant sits on a chair and realizes that now he will pay this debt all his life, and if he is not lucky, he will even leave it to his heirs. In addition, his wife (suppose she was not used to going where she doesn’t understand) will run to a lawyer who advises her, for example, to demand the separation of property, and this does not help to strengthen the bonds of marriage.
Simply put, before you do something, you need to think hard about the consequences of your actions, because then they will have, roughly speaking, a long time to “accompany”. If the accountant from the example would go to a specialist and ordered the program from him, then he would not have to clear up the consequences of this error - even if she still remained, then the developer would be responsible for it.
The user needs to know how the system works.
Should not, by and large. And even in programming, surprisingly, it should not, otherwise the concept of encapsulation simply would not exist. The encapsulation definition can be slightly edited to more closely match the topic under discussion:
Encapsulation is a property of a programming language , which allows the user not to think about the complexity of implementing the program component used (what is inside it) , but interact with it through the provided interface (public members - methods, data, etc.) , as well as integrate and protect vital for the data component. In this case, the user is only provided with an interface - an object specification.
Correct me if I am mistaken, but it seems to me that the direct intervention of the accountant in the programmer’s field of activity violates the encapsulation property.
In the end, the user has only the interface and he interacts with it, completely without having to understand the intricacies of the implementation and without being able to break the logic of the program - is this a minus? It must be assumed that not everyone has a clear idea of how OpenCV algorithms work, but this does not prevent it from being used. Already, few people write programs on pure WinAPI, simply because .NET is faster, easier and eliminates the tedious routine.
Another example is mechanical wristwatches, which are widely distributed and have existed since the 17th century. How many people know how their mechanism works? How many can assemble a clockwork from scratch, even from ready-made parts? I think very few. No one needs this - the watch provides an interface for winding and tuning, and this is quite enough for the user. As it turned out, this is even too much, since the user will only have enough opportunity to adjust the time, and the winding was an extra hassle. It’s ridiculous, but until recently it seemed that the owner of the watch would always install itself on any type of watch. However not:

Life is too short even to safely remove a USB flash drive from a USB port, so why should one expect that a person after an 8-hour workday and an hour and a half standing in a traffic jam will come home and spend the rest of the time tensely sitting at a computer in trying to program a smart home? Most likely, he will simply go to the site and buy (order) himself a suitable program for his "smart home".
Well, and the perfect interface, which is the “Make everything well” button, is known, probably, to everyone. In my opinion, in most cases there are no sufficiently weighty reasons for not striving for it. Apart from some exceptions, the simpler and clearer the better.
Widespread distribution of computers
Everyone should be able to encode, because man / car and car / man communications will become as common as man / man.
This statement has a very weak part - “they will become just as common.” Let's see what is very common now:
- Windows computers
- Linux computers
- Computers with Mac OS
- IOS Smartphones / Tablets
- Android smartphones / tablets
Why are these systems so common? The answer is simple - because no special knowledge (and even often, reading instructions) is required to use it. The girl bought herself a smartphone in a beautiful box, unpacked, charged, plays Angry Birds, which she bought in two apps clicks in the app store and is happy.
The smartphone, the operating system of which you need to pre-compile from source, and the program must be written manually from scratch, do not buy, I think, even many geeks. Not because they do not know how to do it, but because they have lessons and more interesting than the invention of the bicycle.
In other words, to become common - you must first become simple and convenient.
Not so long ago, the
IBM 305 RAMAC occupied a room of 9x15 meters, costing 26 thousand modern dollars per month, and was, I suppose, quite difficult to manage and maintain. Now Excel can easily perform its functions, which does not occupy any space at all, is easy to use, and, most importantly, does not require any programming - you just need to click on the button.
In this regard, it would be strange to believe that in the future technologies will go far ahead, and the interfaces will suddenly roll back to the 1970s.
So what is to teach in school those who are not interested in programming?
In my opinion, you just need to teach well the things that many really come in handy in life. The first is, of course, Word or another word processor. Because documents, paper or electronic, will often have to be collected and everything. Ha! - you will say - this is already taught. But, in my subjective experience, many people do not know that paragraphs and indents are not beaten with an enter, that headings should be typed in a “title” for quite objective reasons, that there is an auto-selectable table of contents and other trifles that can greatly simplify life.
You do not need to teach a person different C-plus-pluses and Pythons - most people will never apply this knowledge. Teach them to format the document correctly in a word processor and it will save them a lot of nerves. In addition to the author of the document, it will save a lot of nerves and time and those who will work with this document. It seems - a trifle, not serious. But it seems so only until you have to urgently edit a 120-page document, typed completely in the usual style, indents and hyphenations are manually formatted with a bunch of spaces and single minuses, and the table of contents with page numbers is simply typed from memory.
Schoolchildren need to be taught to understand the basic principles of the interface, so that they would not then fall into a stupor with any change. "Oh, and here everything is different, I can not find anything, put the 2003 Office back to me." In short, to morally prepare them for the fact that tomorrow Microsoft will hire new
Indians of designers who really dislike tiles, and Shuttleworth will be overwhelmed by Unity and it will throw all its strength into developing Plurality.
It is necessary to teach to respond adequately to the incorrect behavior of the computer. It is necessary to teach people to calmly and correctly describe the existing problem and previous actions, and not to throw up tantrums in the spirit of “I have a window with a cross here, urgently fix it, I don’t know anything, I have to give a report in five minutes!”. If this manages to put an end, at least at the level of the subject of the federation, the technical support will come to indescribable delight, and in this subject somehow Silicon Valley will arise by itself. It’s not scary that Masha cannot correct the mistake on her own, let her just call the master (and who knows, maybe she will meet her love in the master’s face? I’ve seen it in the films), who can fix everything quickly and efficiently.
It would be nice to teach how to maintain a computer, at least to a minimum. At least to tell that it is not necessary to climb with a wet rag in the power supply unit in particular and in the system unit in general. And if you really climb, then pre-turn it off the network. Describe briefly the general symptoms of computer disturbances.
Be sure to tell you about the need to regularly create backups. Just tell them how to do them, because you can only
learn how to do it on your own experience.
You can set an incredible goal - to teach people to read instructions, at least before calling technical support. At least part of the "Problems and Solutions." And if you manage to teach a person to read the instructions entirely before using a program or a technically complex device, then a golden age, innovations, nanotechnologies, universal happiness and high-quality roads will immediately come to the country.
Conclusion
“Everyone should be able to encode, because human / car and car / man communications will become as common as man / man.” - yes, they will, but this is not an argument, because no one bothers to assume that interfaces to At that time, enchanting flexibility was achieved. But some things are unlikely to change, and even after 100 years, almost everything can be measured with some degree of convention by three parameters.
Which together determine the benefits. And while it is more profitable to hire a specialist to support a high-quality system, than to suffer with tons of homemade crutches - they will hire a specialist. While it is faster and easier to pay a specialist (or just ask a familiar enthusiast) than to suffer without any guarantees for yourself - they will hire a specialist and the spread of human-machine communications cannot be affected here.
Summing up, do not teach a person to design an internal combustion engine and independently change the suspension - teach him to confidently but carefully drive a car, and who knows, perhaps this will save many lives or even the nerves of other road users. A good driver is priceless, and the engineers will take care of the rest.
Thanks for attention.