I bring to your attention a translation of the article
“Should Everybody Learn to Code?” , Which seemed to me interesting.

To test whether professional graphic designers could write the simplest computer program, Brian Dorn, then a master's student at the Georgia Tech Institute, asked them to read and change the code snippet. Dorn wanted to understand if they could figure out for themselves how to automate work in Adobe Photoshop. Designers began to search for information on the Internet and, unfortunately, in many cases entered incorrect search queries: for example, they tried to figure out Java when they actually needed JavaScript for this particular project.
This could be due to the “lack of a common basic understanding of computer and software structures,” Dorn wrote in Communications magazine in May 2011.
According to his supervisor, professor and director of the Contextualized Learning Support Program at the Georgia Tech School of Interactive Data, Mark Guzdail, the results of this experiment show that “there are many people who need knowledge in computer science ... and who will use them in life, but they never studied this discipline, and their self-study is ineffective, which leads to a loss of time and motivation. "
')
All professionals who deal with the analysis and processing of information, or “engaged in work for which higher education is necessary,” must know how to read code that may be useful to them and be able to adapt it.
Many respected personalities from former US President Bill Clinton to Facebook creator Mark Zuckerberg and physicist and cosmologist Stephen Hawking have publicly stated that basic programming skills are necessary for everyone in the modern world. “The ability to program has become the fourth component of literacy. Everyone should know how our digital world works, not just engineers, ”said Mark Serman, executive director of the Mozilla Foundation. His quotes advocating this position, as well as similar quotes from many other celebrities, are on the initiative site
code.org .
According to forecasts of the Bureau of Labor Statistics of the United States, the growth in demand for IT professionals and professionals with technical education will be 34% by 2019. Many professionals are already in varying degrees associated with programming. Guzdail cites data from a 2005 Carnegie Mellon University study that predicted that in 2012, out of 90 million working people in the United States, more than 55 million would use spreadsheets and databases, which can be considered elementary programming.
A study by Carnegie Mellon University also shows that many people do programming without realizing it: for example, creating macros in spreadsheets or making queries in databases using SQL. “So, many experts will deal with programming,” says Guzdale, “and our research data on how people learn to program, and their typical mistakes, show that basic knowledge of computer science would be very useful to them for further self-education ".
Many of those who avoided courses in science and math in college now have great difficulty in self-taught programming, he says. “How many more people would use programming in their work if we helped them a little? Here is an interesting question. ”
What you need to learn
Everyone has to master “computational thinking”
(1) , says Jeanette Ving, corporate vice president of Microsoft Research and, in the past, a computer science professor at Carnegie Mellon University. Computational thinking helps people think abstractly and divide the task into small parts. Programming is one of the ways to learn this skill, says Wing.
“This does not mean that everyone has to learn a programming language like Python or C ++, although many people put an equal sign between programming and typing,” says Wing. On the contrary, it is worthwhile to concentrate on studying problem solving skills in computer science, in the same way as we learn to solve mathematical and engineering problems. Writing a program is a way to explicitly express the actions that a person or machine can perform. "A more fundamental skill associated with critical thinking is computational thinking, in order to understand what code you need to write."
Another point of view
Chase Felker, the author of an article in Slate magazine “Perhaps Not Everyone Should Learn to Program,” takes a completely different look at the question of studying programming. “To be honest, the mere thought that you can learn how to program in a year makes me shudder: I would be horrified if someone would write programs for me who had completed just a few classes. Not because he (unfortunately, most programmers are men) learned something wrong, but because he still doesn’t know too much. ”
Recognizing that some of his colleagues have successfully studied programming on their own, and that it is not necessary to study at a university to study programming, Felker believes that people need more than just memorizing the basics, they need to develop a certain type of thinking.
“If you don’t dream of becoming a programmer - and that’s so you’re not willing to devote a lot of time to learning, whether it’s independent or in an educational institution — I don’t understand why you need to learn to write code.” - writes Felker. "Yes, this is an interesting occupation, based on the ability to solve problems, and elegant solutions to these problems, which eventually begin to be born to you, will bring you much pleasure." Nevertheless, Felker believes that anyone who studies programming superficially is unlikely to be able to apply this knowledge in life.
In response to a statement by New York Mayor Michael Bloomberg in 2012 that he will start learning programming, programmer Jeff Atwood, the author of the Code Horror blog, asks: "... can you explain to me why Michael Bloomberg would be more effective in his daily managing the largest city in the United States if he woke up one morning with a first-class Java developer? ” Programming is important, Atwood agrees, but many other skills are important. "I would not advise everyone to study programming more than, for example, plumbing or plumbing."
The “everyone should learn to program” movement is wrong for several reasons, according to Atwood. It is based on the assumption that "the more code in our life, the better." The code becomes an end in itself, so the method is set above the task.
“Society and the government would benefit more from a basic understanding of how computers and the Internet work ... The ability to use the Internet becomes a fundamental skill, and we must first take care of such basic things before we come to much more complex programming.”
Guzdail expects that programmers may have resistance to his ideas. “I don’t suggest everyone to write code professionally. I would like everyone to graduate from the university, being able to write 10 lines of code that they need. ” The essence of learning to program in higher education is to teach students a certain level of computer literacy, including the ability to think in terms of code and understand how code can be useful.
Computer science in education

Experts in the field of computer science believe that the United States has been delaying the entry of basic education in secondary education for too long. “Many countries have developed and implemented national computer science education programs in schools to better prepare students for the new global economy. However, the decentralized system of decision-making in education in the United States strongly restrains attempts to introduce the standards of the computer science program. ” - says 2010 report “Addressing Core Equities in K – 12 Computer Science Education”.
According to Guzdayl, the biggest problem in teaching computer science in the United States is the lack of teachers. He estimates that there are about 30,000 high schools in the country, but only about 2,000 teachers with sufficient skills.
Children as young as 5 can learn programming. The question is whether they should spend time at that age. Doubts are caused by the fact that the cognitive abilities required for learning programming, such as the ability to think abstractly, usually develop in children by the age of 12.
Guzdail believes that computer science should be taught in school, but not at the age of 5-6 years old, given the current situation: only 12% of high schools in the US offer computer science classes, and much less than middle and primary schools, which creates a large time gap. . “Children most likely will not face programming long after the age of 5, why then give them this information at such an early age?”
Wing also believes that the study of programming at the age of 5 years may be inappropriate, but children as early as 5-6 years old can learn basic concepts, just like they study arithmetic. Growing up, they learn other concepts - what the algorithm is, how to present data, different approaches to analysis, she said.
Perspectives
Along with reading, writing, the basics of mathematics and natural sciences, computer science can become a standard component of the school curriculum. According to many experts, this will be a big step forward. The complexity of the problems in the world increases every year, and the systems that we have to create to solve them will require advanced skills of “computational thinking”, such as abstract thinking, decomposition and composition, according to Wing.
“I would introduce a little bit of programming in every class in science, math and art, maybe even in English,” says Guzdail. "The study of computer science in high school should be accessible to all, just like science and mathematics."
(1): The term
computational thinking appeared relatively recently, in 1996. In the Russian language at the moment there is no established translation (as a rule, the broader concept of “mathematical thinking” is used for translation). Further in this text we will use the English term.
From translator

Personally, I close the idea that in the modern world it will be useful for everyone to learn programming. And even if in the future programming will not be your main activity, it will allow you to build up the skill of computational thinking, which will be useful for completely different professions.
I teach programming and algorithms for biology students at the Institute of Bioinformatics. Experience shows that to master programming it is not necessary to have any serious mathematical or technical background, the main thing is to start, and everything will gradually come.
In this regard, I am glad to announce that the
Institute of Bioinformatics and I have launched an
online course on the Stepic platform for teaching programming from scratch in the Python language. The first task deadline will be next week, November 24th, so it’s not too late to sign up for the course! The emphasis in the course is made not so much on the Python language design, but on the formation of algorithmic thinking through the solution of programming problems.