📜 ⬆️ ⬇️

Learning to program is harder than it sounds.


Just "El clasico"

“Many letters”, “not mastered”: as experience shows, programming requires certain abilities, which only a small percentage of the world's population possess. Modern fashion for express courses in this area is generating more and more speculation on the topic, which does not at all contribute to the growth of the number of qualified programmers.

This post is prepared taking into account the realities of the UK, and therefore it is quite logical that in other countries the situation may look different, in particular, when it comes to the social status of software developers.
')
The media does not cease to cover the lack of qualified programmers (“programmers”, “coders”, “software developers”, since all the terms mean the same thing, I will use them interchangeably). There are constant disputes about the low level of qualification of programmers. In fact, we simply are not able to prepare personnel that meet the “solid demands of tomorrow”. Here is what The Telegraph writes:

“According to the Scientific Council, by 2030 the number of specialists in the field of information and communication technologies will increase by 39%, and in the O2 report for 2013 it was noted that in order to meet the demand for such specialists in the period up to 2017, it will take about 745,000 new employees .

In addition, according to the results of the research conducted last year by City & Guilds, three quarters of IT employers, computer and information services noted a clear shortage of qualified personnel, while 47% of respondents stated that the current education system is not able to train good specialists. ”

According to the majority of respondents, the problem arose due to lack of adequate training. Our educational institutions let out few programmers. For example, Yvette Cooper, representing the interests of the highest echelon of the Labor Party, in her interview for The Guardian commented on the situation as follows:

“The miners' sons and daughters must learn programming. Since the world wide web was created largely due to the ingenuity of the best minds of the British people, we have tremendous advantages. In addition, we are fluent in English, but what does our nation do to consolidate its position in the center of the new technological revolution? Why are we not making efforts to create colleges, technical and vocational schools, and not just universities that train programmers?

There is an opinion that it is not so easy to start learning programming because of the serious selection for the relevant courses and faculties. Here is what the Guardian writes about this:

“This is, of course, one of the first-priority skills needed in the 21st century, however, if you are not sufficiently provided to afford tuition, or you are not fortunate enough to enter the right school, you will most likely encounter considerable difficulties wishing to achieve your goal” .

Thus, it seems that everything is solved simply: the high requirements for candidates and the lack of accessible training lead to the fact that access to high-paying positions in this field is obtained only by representatives of a rich and well-educated elite. But the fact is that a substantial part of the country's population could successfully practice programming if they had access to education and related professional training, which, alas, is not present at the moment.

As a result, there are currently several initiatives in support of programming. The UK government announced 2014 as the “Programming Year”:

image

The slogan reads: “Begin programming this year, it’s easier than you think.” In an interview for Newsnight, the executive director of the campaign for the Year of Programming, Lottie Dexter, says that you can "get to the bottom of the day." On the website of the non-governmental organization Code.org, “dedicated to the involvement of the general public in the process of studying informatics,” we find the following quotation: “Code.org sets itself the task of debunking the myths about the complexity of programming.”

image

Is it really easy to master programming and, therefore, get a high-paying job so easy? Is it true that anyone can learn this? What, you can invite the first comer from the street, a brief excursion and an entire army of professional programmers will appear?

But what about the traditional formal education? Can I get useful information about training programmers in universities?

Given the shortage of qualified personnel, it can be assumed that graduates of computer science departments are not facing unemployment. Alas, it seems, is not so simple. Researchers at the Agency for Higher Education Statistics have found that young professionals who have studied computer technology have “notoriety because of the lowest percentage of employment compared to students in other fields.” Why so? It's funny, but to face the discrepancy between the real skills of graduate students and the skills that employers expect from them. Or, more precisely, after three years of computer science training, they are not able to program. An interesting idea was voiced in his comments on this article by an anonymous university professor:

“Every year the same thing is good, if a third of them [computer science students] have the skills necessary for future programmers. One third of them have so little knowledge that they would no doubt be surprised to learn that they did not just take a course in a couple of weeks, study the specifics of the profession, but didn’t even come close to a possible certification. If you decide to test them for serious programming skills, I guarantee just disastrous results. It is not customary for us to overwhelm students, so we have to look for options to continue studying, even if the students really do not have the necessary qualifications. ”

In the course of other studies obtained similar results. Speaking of graduates of specialized courses, it becomes obvious that between those who know programming and those who do not understand the subject, there is a gulf.

"In particular, the majority of applicants cannot study programming: 30-60% of applicants wishing to join the secrets of computer science at the faculties of various universities simply fail the first course."

Remember, we talked about accelerated computer courses. We have just seen how things are going with students who have entered the university to study computer science. Here, in some way, the mechanisms of natural selection must work. Even if the students demonstrate, to put it mildly, poor results, then what about other volunteers - candidates for “future programmers”, whose attention is attracted by such rapid courses?

Consider the problem from the other side. Let's try to find out how successful professional software developers learned programming. After reading the above statements, we can assume that they all studied in expensive, exclusive schools. But no. Analyze the results of a survey of software developers, conducted by Stack Overflow in 2015. Please note: this is an international study, but I think its results are relevant for the UK:

image
41.8% - self-education;
37.7% - bachelor's degree, computer science (or related field);
36.7% - advanced training courses at the enterprise;
18.4% - master's degree, computer science (or adjacent field);
17.8% - online courses;
16.7% - projects in computer science (or in the related field) as part of university studies, no diploma;
6.1% - certification at work;
4.3% - other;
3.5% - intensive programming course or specialized evening courses;
2.2% - PhD, computer science (or related field);
1% - tutoring.

Only a third of the respondents received a diploma in computer science or related subjects and almost 42%, the largest group, self-taught . I conducted my own small and not quite scientific experiment on this topic: I took part in the monthly congress of .NET developers here in Brighton, where I quickly interviewed those present. So I managed to learn that there are even more self-taught programmers among excellent programmers, as the results of research show. For fun, I also conducted a small survey on Twitter:

image
Are you a self-taught programmer?
76% - Yes
24% - No
101 votes

76% of respondents say that they learned everything themselves. It was interesting to read and comments to the survey. Some of the most common ones looked like this:

image
I have a diploma in computer science, but still I am 95% self-taught. At least, if we are talking about applied knowledge.

Even programmers with diplomas in computer science claim that most of the knowledge gained is their personal merit. Someone complained that it was difficult to answer the question, because the industry is changing rapidly, and therefore it has to constantly learn. Accordingly, even if you received a formal education in your time, this is not enough to build an excellent career. Any classic course of study is only a small element in the system of continuous professional development, which is inherently connected with the profession of a programmer.

As a result, we are faced with a very strange and unexpected situation. Traditional education for programmers does not seem to be very effective, and most successful specialists in this field are self-taught. On the one hand, we see examples when people do not need teachers in order to achieve recognition as professionals in their field; they have enough variety of online resources available to everyone. On the other hand, there are those who fail to grasp the principles of programming, even after several years of study.

Sneaking thought about the inconsistency of allegations concerning the obstacles faced by enthusiasts interested in learning programming. If most modern professional software developers are self-taught, what barriers are we talking about? Anyone who has access to the Internet can learn how to program with appropriate abilities.

The obvious conclusion is that there are two categories of people: one gives programming quite easily and is enjoyable, while representatives of the other cannot master the subject, no matter how well they are taught. According to Yvette Cooper, the head of the company of the “year” and “programming hour”, we are faced with the phenomenon of an elephant in a room: people just do not want to admit that programming requires certain abilities. This is not something that anyone can learn, and it is not as easy as it seems, or, more precisely, easily, but on the condition of predisposition to the subject. The harsh reality suggests that most people will not even be able to achieve even relatively good results in this area.

If we agree that programming requires certain abilities, it is very funny to watch the turmoil caused by the “well, all in programmers” movement. It is enough to draw a parallel between this specialty and other professions with increased initial requirements for candidates. Simply replace “programmer” or “programming” with “doctor”, “engineer”, “architect” or “mathematician”.

• "You can learn math in a day."
• Practice your surgery this year. It is easier than you think!
• skyscraper.org aims to debunk the myths about the complexity of the architecture.
• “Sons and daughters of miners must learn from lawyers.”

My friend Andrew Cherry has voiced a brilliant thought on this topic:

image
People! Show me the field of activity in which you will spend your free time on holding free seminars for those who want to join the ranks of specialists in this field. Is it not absurd?

There is only one answer: this is software development. Want to become a doctor? Learn seven years at a medical university.

Accepting the fact that abilities are important for building a successful programmer’s career, you can look at the problem of “shortage” of personnel differently. Question: how to convince talented people to choose programming, and not other professions with high initial requirements? The problem is, people with the necessary qualities can go on any other path from a huge list of excellent options, and I would like to dwell on the negative social and career aspects that often incline candidates not to the advantage of programming.

Software development is undoubtedly a very attractive area for employment. Work is well paid, mobile, plus the profession itself is interesting and brings a lot of bonuses. At the same time there are problems with the image. I first encountered this trend at a university in the 1990s. I was just getting a degree in sociology (yes, I am also a self-taught programmer). As for social status, we, the students of other specialties, looked at fellow students-informatics with condescension. It was the most "non-cool" people in the hostel - mostly guys who dressed terribly. If anyone paid attention to them, it was out of pity and disgust. When, before defending my diploma, I told my girlfriend that I might do programming, she exclaimed: “Oh, no, what kind of news. Do you need it? ”If you had conducted a survey in any company consisting of representatives of the middle class in the United Kingdom, and asked to compare, say, medicine, law, architecture, and something like accounting with software development, I assure you, the latter turned out to be would be in the category of activity with the lowest social status. Even in the field of business or, at least, traditional enterprises, software development is perceived as a relatively low-paid type of medium employment, suitable for adolescents or low-skilled specialists. It is also terrible that all these courses with the slogans “learn to program, this is easy” only reinforce the impression that software development is not a serious matter.

But there is another difficulty associated with software development. If, on the one hand, it is easy to get into the market for these services, then novice specialists do not have a generally accepted pattern of becoming a profession. Google, for example, “how to become a doctor”, or “how to become a lawyer”:

image
Google: how to become a doctor
Sources: US Bureau of Labor Statistics; Profession section (August 2015)
Step 1: Get a bachelor's degree;
Step 2: Take the test for admission to the medical college;
Step 3: Enter the medical university;
Step 4: Get medical practice;
Step 5: Get a license.

There is a whole list of steps that must be taken to obtain recognized professional qualifications. After completing the necessary conditions, you become a professional in the relevant field. I did not mean that it is easy to become a doctor, but everyone understands how this can be done. Now ask Google "how to become a software developer." Answers, like what I used, boil down to obscure platitudes: “learn a programming language,” “get involved in an open source product development project,” “join a community of local programmers.” There is no clear plan for career development, no guarantees about when and if you will become a professional at all, not a word about whether you will be able to get a high-paying position in the future.

image
Google: how to become a software developer
Good luck!) You are on your own.

Now imagine a person with the necessary abilities who was an excellent student at school and for whom complex intellectual tasks are not difficult. Offer him to choose: on the one hand, a career, for example, medicine, you need to go through several stages - yes, it will not be easy, but you will pass the exams well and end up with high status and well-paid work. Or how about this option: believe, learn something on your own, and it’s not clear what it is; Try to become an assistant, replenish your knowledge - more by trial and error - and continue to move towards your intended goal. There is no guarantee that in the end you will get a high-paying job. And by the way, while you are still undecided, the whole world will think that you are an outcast. What would you choose?

So, can software development add to the list of traditional professions and set the bar high for specialists in the field? Attempts to do this have already been made. The British Computer Society (BCS), which dubbed itself the “IT charter institute,” has set itself the issue of professional qualifications and standards in this field of activity. Only bad luck: a similar initiative is completely ignored by representatives of the software industry. Even if they took the body seriously, how to check the qualifications of specialists? How to conduct an exam? There are not many developments on this issue, because, not having time to appear, any mechanism quickly becomes unusable due to the rapid development of Internet technologies. Take, for example, object-oriented programming. 2000- , , , , , , , , . ? , .

, , , , – , , , . , , , , , ? , LISP? - Glass Bead Game ? , . . - , .

. – , . , , , , . , . - - , , . , , , , , . — , , , — , .

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


All Articles