📜 ⬆️ ⬇️

Where do bad programmers come from and what is their problem

image

This publication reveals the problem of the emergence of bad programmers on a personal example, implying that similar situations are very often. However, at the end of the publication there will be an attempt to deduce the main key aspects, which, if not solved, then at least it is worth thinking about them.

Instead of introducing or how I learned about programmers


From time to time there are comments, and even articles with a touch of nostalgic attack about how a programmer paints his story about his acquaintance with another tape cassette. I have the same, they wanted to please my parents. My father traded him for his stereo, but here’s a non-core education and a lack of understanding of what to do with it further resulted in unsuccessful attempts to connect it. Because BC remained in the box, where it remained to this day.

My acquaintance with the computer took place a couple of years later, when parents' experiments with schools brought me to an educational institution, where they taught programming from a lower grade. Of course, I caught fire on this school, and I was especially impressed by the moment when I had the opportunity to play "Prince of Persia", while my mother talked about something with my future teacher. And it started ...
')
You can play at computers on computers, but only at computer science lessons, and only after you have completed certain tasks. These tasks smoothly passed from the solution of simple mathematical problems to the development of algorithms for their solution, and directly to their programming. The thirst for knowledge was amazing, although I suspect that not entirely honest observation ... I wanted to play more, but that was what prompted the early knowledge of the basics of Basic and TurboPascal.

We were explained about the types of variables, the syntax, the conditional operators, that knowing all this, you can now do anything. Then we were shown ASCII and the programming process was mixed with creativity. In class 5, we have already displayed the graphs of unpretentious functions, painted a working clock with a round dial, and an incredibly beautiful developing flag.

The school gave an incredible program, which had not yet matured brains barely coped. Lessons from 8 am to 6 pm Perhaps this served as a further transfer to another school, where the attitude to programming and keeping all the information in a row was not so priority. I was given free access to computer science lessons in the 8th grade, because all the material they wanted to teach was mastered in a previous school. Fundamentals of Basic, their mother so.

There was a lull, during which only the English vocabulary was replenished and the beginnings of understanding English grammar appeared.

Another change of school and nat. mate class, where with the stubbornness of a rhino the teacher of algebra hammered knowledge and formulas into us. Having agreed with the parents, the summer holidays were held under her tireless attention and with a pack of clean 48 sheet notebooks, which were written with formulas, examples and their solutions in 1-2 days. The basics of TurboPascal did not give release, but were introduced to Doom and Quake in class.

Institute, new delight and a bit of disappointment


At the time of admission experience with programming is still burning in the eyes. Computers began to appear everywhere and the craving for them grew.

Vocabulary of English from one school, nat. mate class in another allowed without problems to pass the entrance exams, despite the huge competition.

My opinion was based on the conclusions that were read from books: “To teach is what is interesting” and “To teach is what is useful in life.” The closer to the profile, as I thought, the better: Computer Science, Basics of Programming, Databases, Operating Systems, Networks, and more from heels of subjects. They made progress.

We need an understanding of how the hub differs from the router - I know that. Need a course in the form of a program on Delphi accounting for the passport office - get it. A program on TurboPascal for solving a particular mathematical or physical problem - yes, easily, show the formula and I will write you all down and build a graph, I'll draw an interface with buttons.

And here it turns out that programming is far from those children's pranks what they did in school, and in order to study further, it was necessary to master a "bunch of different types of mathematician." For some reason they were given to me with varying success. Discrete mathematics and mat. The logic seemed to me elementary knowledge, in consequence of which completely flew out of my head along with my own conjunctions and disjunctions, as well as the principles of operation of the Turing machine. Higher mathematics was easier than mathematical analysis, but here and there, before each exam, one had to turn to tutors for help. Probability theory has gone by. Ignorance of mathematics was reflected in other subjects - physics, electrical engineering. At all, where the required formulas and complex, for me, calculations.

Almost all humanitarian subjects were excluded from the interests, where the teacher did not manage to interest the hapless student. For some reason, history, cultural studies, English, for some reason, geography and something else was there. The exception was the philosophy to which the interest was in general, and not as knowledge in general, therefore it was not visited and was delivered by retelling the examiner of personal reasoning. The economy was understood and put on perfectly thanks to the charming teacher.

Returning to the core subjects and frustration in the subtitle, I will say one thing - it’s bad when students know the subject better than their teacher, monotonously mumbling material from the book, and there were plenty of them. All knowledge gained was only superficial. Can a person teach others if RAM memory, RAM, and RAM are completely different things for him, or does the processor have such a characteristic as cache size?

There were also teachers who, on the contrary, were so keen on their subject that they forgot about students, not reacting to them. Here it stands, writes something on the board, and does not hear that the material is not clear and requires additional explanations. He completed the formulas, figured out something in his mind, erased everything from the blackboard and started writing again. And after all, it is clear that the teacher knows his subject ... even insulting.

In the wake of disappointments and misunderstandings, the subject of OOP with the basics of C ++ passed by the ears. It became not interesting and boring.
Something about graphs, about classes, factories. But the school about which it was spoken at the very beginning made itself felt. A lot of information - you are looking for a suitable template, solve the problem by substituting in this template. Therefore, cursors on the PLO were solved and handed over.

Personal acquaintance with a computer at home seemed to bring me more knowledge than all the years of study. The ability to quickly type, translate formulas in TurboPasal and the knowledge of where to change the password of a Windows account in the eyes of teachers was read as a successfully trained student.

In the meantime, or about work


At some point, Photoshop got a hand. And then it went ... With ++ which was not digested, under the teacher’s gundage, it turned into an independent poking of the graphic package buttons on a computer in the far part of the audience, so that it would not be pale. Then followed the summer courses of the web designer and the study of HTML with CSS. And with the next semester I get a job in an IT company. It is still a “help” with a meager salary and huge ambitions.

The designs that were drawn caused loud laughter from their older comrades. So the lack of skills but the presence of knowledge allowed them to set me up for the formation of content for the Internet site - find a picture, cut out the background, add a description with formatting html tags.

HTML and CSS are good, the boss told me then, and slipped the book on PHP, after reading which I had to rewrite the old site in PHP. I wrote it for a long time. About a year, self-reading on the Internet how to implement this or that idea. How clumsy would not look in the code, but it worked as it should. There were voting and evaluation of news, and parsers rss feeds, and registration of users.

Developing the skills of Photoshop for online lessons and submitting my first working draft, I was already tasked with developing additional resources. Small internal projects of the company. Everything is simple and wooden. The form refers to the script that stores the checks, then redirects to the result page. Unexpectedly, I am back to programming. Let already on PHP.

Diploma


In the eyes of the dean's office, a student who has been working for more than a year has successfully defended his diploma — gold. Moreover, it is not necessary to bother with the further employment. Hold a diploma - run on all four sides.

Work, or the choice between knowledge and salary


Having received the diploma, it was worth thinking about the already normal employment, especially the old work began to burst at the seams, reduce staff, roll up directions. Senior comrades have already fled who where, there is no one to learn from. To find a new job for a newly-minted specialist with experience in a well-known company in the city is not a problem.

A week later, I signed the papers in a new place. Less work, more salary, but only need to learn SQL, to the level of “join” and variable declarations in stored procedures. In the appendage, a return to application programming in the form of Delphi.

After half a year, a new job finds me. There is a choice - to reinstall Windows in the state for a higher salary, or continue to write requests under the contract. The impression has begun to take shape that the world has its inexplicable order: work less, pay more. Damn it, let's take the path of less resistance. The change of work took only 3 days. And now, I'm an employee at a new place. I’m learning how to compress a twisted pair, change cartridges and restore Windows from a previously prepared image, in order to spend less time. Free time is spent surfing the Internet along the Internet, and the head of the department teaches you to play in the increasingly popular LineAge. Already out of boredom, the Apache is deployed on a working machine in the Denver build and simple utilities are written for internal needs, which would again save time. In his spare time at random, Corel, Flash is mastered.

Not! So it will not work. I am a programmer or someone. Moreover, the web is promising, it is necessary to develop in this direction. On the Internet, at this time, there is a debate about jQuery and Ajax, about Silverlight, which Flash will win, about the coolness of ActionScript (which has not reached its hands).

With this in mind, a train ticket is being bought in the direction of the capital, for money from the site collected on the knee of the site under the order on the rudiments of the CMS nouneym. By stupid brute force, the necessary and unnecessary when and page layout.

I am already a programmer, but for a full cycle there is not enough to learn how to draw, because there was an educational institution ready to explain how to hold a pencil in your hands. Made by Now it is worth thinking about finding a job. "I am a PHP programmer" - so I write in the summary. As a result, a lot of interviews where with each new conversation I feel like an idiot:

- How do you format the page? Tabular layout? This is the last century! Only div.
- Did you work with Unix, or at least with Linux?
- Can you build a plane in half an hour using a ruler and PHP? (this is how some questions sounded to me)

At the next interview I was asked a question, which explained, if not all, then a lot of things: “Didn’t they teach you this at the institute?”. My eyes opened to the immeasurable gulf between the level of education in a distant region and the central cities. I could not believe that they can talk about Linux at the institute. In my head they began to emerge that those guys, from their first job, were finishing centurionuses.

In the end, I found a place for myself. They put an empty computer in front of me, handed me a disk with Linux - this is your workplace. That's how I got acquainted with this system, it turned out awkwardly, I had to ask three thousand questions, until I got directly to direct programming in PHP. Here again, the surrounding questions began to arise: Where is your PLO? How did you never work with SVN? Do you know that there are CMS and such a framework? Here it is, now I grab knowledge. There are a lot of talented guys around who will explain and chew. But the salary in fact came out less than it was negotiated. Enough to exactly cover the cost of studying, renting an apartment in the suburbs and travel. Food and communal in this amount did not fit. Therefore, without knowing what it would be, how promising there was in terms of gaining knowledge and experience had to resign.

Okay, I think it did not work out. All is not lost, I still know something.

Here again, the inexplicable rule worked: "Work less, get more." The acquired knowledge of SQL and maintenance of accounting systems were useful - here's a DBMS with your own scripting language. There is a problem - solve, no - read the Internet. And the salary was enough even for a “walk” once or twice a month. "In his spare time he tried to make a paid Internet voting ticket, with reference to the SMS payment service - four unique visitors for half a year. He blew it and forgot.

And then it began, or the detection of problems


Mastering the scripting language took 3-4 days. Then only fantasy worked, what to do with it and how. From time to time, forgotten skills were recalled, and with the sample approach it was possible to connect, for example, a DBMS with a self-written program through DDE. The routine and the dullness of the days swallowed. Free time spent searching for "rzhaki" on YaPe and trying to catch a glimpse of technology. Somewhere at the same time the link to habr was dug.

Study completed, the capital did not succeed to conquer. I had to return to my hometown and continue the path of supporting the DBMS, replacing a couple of jobs, the principle of “less work - more money” began to lose ground. Frequent job changes, travel and profile changes did not allow us to build a career, and age has been sneaking up to the fact that it took a long time to think about our family, apartment and car.

Looking around, I began to notice that the people who were sitting at the computer in the office yesterday are now sitting with a cool laptop in a lounge chair in front of the ocean, somewhere in Thailand. Contact is simply flooded with applications and games. Every third programmer began to write a game for androyd. One by one, start-ups started shooting in different directions.

It began reading books as a recollection of what has already been passed, reading and attempts to comprehend some new trends, and from different areas. Re-read the big red book on PHP. Read books on working with JavaScript, jQuery, discovered the work with the DOM. And then a dead end ...

And then I will begin to highlight the main problems that I have encountered or are currently facing, in attempts to become a real programmer. The form is simple - the main idea, its components and it will be followed by its perception by the author.

Background to the problems:

1. Education

1.1 Outdated education system.
The phrase that the knowledge gained in school becomes obsolete by the time of graduation is not new and does not lose its relevance.

1.2 Non-professional selection of personnel.
A person who does not understand the subject cannot teach others. Nothing good will come of it.
After reading my whole story, imagine for a minute that I opened a training center and started teaching your children programming.
Yes, they will be able to write a small program for working with the database, but to explain why it works is not. About the cloud technology from me, they do not know the same.

1.3 The teacher lacks an objective answer “why?”.
It was possible to attribute this problem to the second subparagraph, but no. A somewhat different situation, in no way is an indicator of knowledge of the subject teacher. Rather reflects his pedagogical abilities. And not only in the field of training IT specialists.
Looking back, I understand that, for example, when creating games, knowledge of geometry and physics would be very useful. But did the teacher mention it? Or why not explain the close connection between conjunction and “and” in programming? On simple examples, close to real problems. Putting it in a wrong place, where you need to find the probability of finding an abstract number, from an abstract set, but find out the chance of winning the lottery or a combination in poker. I think with this approach, the theory of probability would be much more entertaining.

As a result, out of 30 people from the group, 20 reached the diploma. 5 of them work "conditionally" in the specialty, in fact, programming, only I do. Sometimes you still have to write small Delphi programs for internal needs.

2. Employment

2.1 The employer is still not ready to educate specialists
Without work experience, now you will not get anywhere, and not having settled down you will not gain experience. Although by personal example Moug say that the knowledge that I now have is acquired in the process of work and, in part, a manifestation of personal interest in certain issues.

2.2 The employer is not willing to pay
Sounds unfinished, but it is. Reading some books was accompanied by me along with a review of the requirements for high-paying jobs. Every year a trend is developing where knowledge is needed more, and they want to pay less.
I can assume that this is generated in a simple way (without taking into account the general computer literacy of the population): A programmer comes to the organization to perform certain functions.Gaining experience and eventually clicking these tasks as nuts, and in his spare time in the process of optimization, or on someone else's initiative, introduces additional "chips". Then he realizes that he needs to move on or go for free bread and leaves the place. From the programmer who came after him, not only basic knowledge was required at the moment of forming the position, but also the knowledge of the “chips” that his predecessor introduced. Only here the salary is the same. And so on on increasing. Wham! Hired a second employee to help, because the first one fails. Both have free time to introduce their innovations into circulation. Wham! Reduction, one is fired, the second is fired. Here you have a job with a bunch of requirements and a minimum payment.

2.3 Jumping wages, regardless of experience and knowledge
You have to choose often, especially as a young specialist. Sick problem of choice, which can play a cruel joke in the future. Here and now you will be paid a lot, but all the work will be in the same type of routine, but there will be enough money. And in another company they pay pennies, you need to work hard for days, but there are specialists from whom you can learn. It’s not a fact of course that colleagues will have time for you, and you yourself will have to educate yourself. The choice between the prospect of providing yourself financially or the potential to grow professionally. Do not forget that to work a lot never means to earn a lot.

Current issues:

1. The Internet from a source of information began to turn into a big trash.

1.1 Useless information
In a separate period of life, I was distinguished by the ability to find a needle in a haystack, for which I was valued in my social circle. Need to find where to buy a diesel generator at 4 am? Not ssy, now we find.

Now I can not find a solution to simple problems arising when trying to code some functionality. On most search engine queries, I find a bunch of similar problems in various forums, without an answer. If the answer is, then it is to refer to the search engine itself, rather than to the article that explains how to solve the problem. I get the links to the search engine myself in response if I could not find a solution and had to write it myself on the forum.

- I need to store data in Excel. How to do it?
- What for? It's simple - do not use Excel, use mySQL.

It was another version of common answers, only the conditions of the problem will not change from such a comment, and they will still be required to store data in XLS. In sports, for some reason, everything is easier. Want to pump your biceps? Do "here is takvota and here is takvota" (c) Nevsky.
Everything is clearly and systematized.

1.2 Not relevant or incomplete information
In recent years, you can notice a large increase in the number of channels on YouTube, a bunch of sites offering various courses and trainings. The most interesting thing is that a squeaky school voice is trying to explain the essence of the universe to you, but you have already seen it somewhere ... oh, yes, this is just a slick course from another channel. In defense of schoolchildren, I will say that already adult uncles are sinning like this. Often important details are lost in such re-filming. Lost feedback from the author of the course to ask him a question. And such courses usually unexpectedly break off - everything, there is no next lecture, the owner has scored on the channel.

Not so long ago, they offered to write a site for a fee, so I decided to master the next CMS, write a topic and a couple of modules to it. Visit the Drupal, Wordpress, DLE, Joomla community site and see the emerging issues. There is no programming there, no one will be able to explain how the work with templates is implemented, because there are no more problems “what settings to put in the plug-in?” And “how to change the picture?”.

- I will teach you to create websites from scratch on Drupal. Here is an intuitive interface about which I will tell a half hour, and then you will download 100 plug-ins and the site will be ready.

1.3 High threshold for understanding current information The
reverse side of the second paragraph. Remember the picture about the owl? Where it was necessary to first draw two ovals, and in the next step we draw the remaining owl.

Personally, I have difficulties to enter the article “in simple language, how to do cool things for dummies”, where only the introduction is clear, followed by the use of specialized terminology, the use of third-party technologies. It's like reading someone else's code, where only the first two lines are commented out.

And yet again, insulting. A person not only owns the material, he understands it, wants to share it, but simply can not convey to the end user - the reader. The mistake is that a person forgets that things that are obvious to him or, as he believes, to other specialists, others may be completely unfamiliar and incomprehensible. What is such a singleton?

For such purposes, on the part of programming courses, with a responsible approach, what kind of knowledge you need to have in order to successfully complete them.

2. "Inventors of bicycles"

2.1 Inventors.
There was a lot of inventors, and the most common invention was inventing names for old things. This way I now nareku "placeholder", and the library with functions - framework. Entering into the silent horror of all the ignorant. It sounds like that.

2.2 "Bicycles of inventors".
Of course, frameworks make it easier for people to work. But imposing the next is not the path of enlightenment.

- What the hell are you writing from scratch? Use this framework! Everything is there!
- Well, how can I learn and understand how everything works?
- You do not need it. Enough to know how to work with the framework.

Need to.And when I understand this, I myself will reinvent the next bike, because looking at the abundance of CMS frameworks and libraries, you understand that some of them only turn the steering wheel to the left, others do not know how to ride through puddles, and for the rest you need to fasten a dozen wheels.

But the main problem is not to master a new tool, but to choose the one you need, which can fully satisfy all needs, and which will remain relevant for a long time.

Also, to some extent, I consider the wrong approach, when it is advised to spend a lot of time studying one framework, so that later it is imperative to switch to another.

Personal issues:
Here I will voice those factors that directly interfere with a person based on his personal character.
We will not take into account the level of learning and banal laziness. Otherwise, laziness can be viewed as a lack of motivation or lack of knowledge of how to do the right thing with a minimum of effort and time. The level of learning also depends on the maturity of a person, on motivation and God knows what else. For example, I did not get a nerd. What was at school, what was at the institute - I wanted to have fun with everyone, take a walk, drink a beer and not be left without attention of fellow students.

1. Knowledge of English

I do not know how to speak it, I perceive it poorly by ear, and I certainly do not know the grammar. Nevertheless, the vocabulary allows, even with difficulty, to read technical documentation, occasionally peeping into the dictionary, well, or skipping a word and trying to grasp the gist from others.
This is one of the main personal mistakes - all documentation and primary sources in English. In Russian, there are translations, separately taken articles, covering only a part of the iceberg. It happens that they throw a link to your next question, and there everything is in English ... you understand that there is 70% of water in it, which you will have to translate with the same creak, trying to get to the point, and this requires effort.

2. Perfectionism

At the moment I am trying to unlearn the rule “if you do, then everything must be perfect, otherwise you don’t do it at all”. Thus, it is not ideal plug-ins that try to correspond from scratch, and interest in the project is lost while working on some specific details, before creating the overall structure of the project. I tried to make a game on a free engine and got carried away with drawing graphics, and the project got tired of creating a gameplay - too much time was spent.

3. Samoedstvo

I already mentioned that somehow I dug out a link to the Habr, and from that everything started. With each page, I feel just brainless single-celled. I do not understand 85% of the information laid out here and am amazed at how advanced techies can be. After all, everything is known in comparison - reverse inzhiring, computer vision, some mathematical formulas with intricate squiggles. From whereHow do you know all this? How did you get to the level of understanding adding multiplayer to someone else's game using Node.Js or developing the STM32F4 USB RNDIS driver? At such moments, a whole universe of knowledge begins to unfold around me, which are covered with a dark veil and are not accessible to me.
Awareness of all this depresses.

4. Social isolation

Partly this is my omission, in terms of moral and ethical standards for others, partly from the environment in which I grew up. Simply at the moment it does not seem to find a specialist with whom you could consult, or communicate on the subject of a beer. Among those around me, even those who have disaccustomed me to a programmer, have already scored on all these technologies, offering to do their advice - why suffer when the “buy-sell” scheme works successfully.

No, Skype here will not solve the problem completely. An older friend should always be in the accessibility area, so that he could poke a finger at the screen and say what is wrong, ready to support any project. Well, or slap the cuff. There is no person with whom to take up the project.

5. Easy to fall out of pace.

Did not follow the technology? Everything, yesterday's guru is not destiny, because the world has changed beyond recognition. For this purpose I try to read habr with incomprehensible articles, so that in a year or two, I began to meet familiar words.

Total

I am a programmer who seems to be kodit and knows something, but at the moment is not able to realize his ideas. But with them just no problems, as with fantasy in general. I have a lot of ideas, in my opinion very cool. From the point of view of the programmer - simple in execution, for the person owning. In the end, I am writing this article as a regular introspection. I hope that was interesting, and your comments.

But first, according to the “criticize-offer” rule, I will propose an idea of ​​solving problems in the form of Internet resources:

1. Systematization of knowledge

At first about systematization. There is nothing new, it is enough only to improve the current education program. We need an online resource with a tree of knowledge, which as a trunk has a list of necessary knowledge for becoming a programmer. Branches - specialization and direction. Each knowledge is a reference to literature. Everything is clearly defined which book to read. What technology to learn for what to achieve the selected result. Without too much trash. Want to know the basics of OOP? Read this book by this author and get the basic minimum needed for the next step.

All knowledge, like literature, has its own rating system of priorities and is chosen by majority by voting. What kind of book to read about OOP? That's right, the link will appear only on the one for which the majority voted. For a more detailed study, you can delve into the bark of the tree and open a list of the TOP 3 necessary books at this stage of the study.

Leaves - technology and knowledge only complementary branches of specializations. You sit on a branch with JavaScript - here's a leaflet with Angular.Js. The roots of the tree will be a collection of knowledge that is not obligatory for a beginner, but gives a solid basis for studying. For example, the root can be English or, for example, knowledge of the theory of probability. The level of complexity of trees is one - everything must be correctly and updated initially, without points of return to the material covered. Mathematics - its own tree, Electronics - its own tree, Physics - its own tree. Without intersections. Links between trees can only be in the roots.

2. Mentoring

Habr, training courses show that there are good specialists who are ready not only to share knowledge, but also to educate such specialists. For this purpose, an Internet resource is created to find a mentor, where a beginner can turn with his idea with a project or a desire to learn something. He describes his desire or idea on the resource in the general heap or a specific mentor. One post or appeal from one "student", which can be assessed by criteria of perspective, interestingness, etc.

Each student has his own card, with an assessment of the degree of knowledge of those or other technologies (with the existence of the tree of knowledge, the estimates are made on its constituents). “Subjective” assessments are entered by the student himself, “Objective” - by mentors after open interviews, whose chat logs are stored in the student’s card, or upon completion of the learning process or implementation of the conceived project.

A mentor card stores information about knowledge, a certain portfolio, the degree of interest in finding students, indicating the time he is willing to devote and the degree of involvement, and if desired, the amount of remuneration, for example, no more than 10% of the income of the project implemented under his leadership.

The mentor must be ready to go from the beginning to the end with the student, so a reputation system will be introduced for them. The process of implementation and training will depend on the mentor.

Between the mentor and the student will be a contract of a public offer, non-disclosure, or the terms of cooperation, if it implies a reward.

The registration is made with reference via a “real” identifier, such as a phone number with SMS confirmation, so that it would be possible to keep a black list, for mentors who scored on students, or students who dropped out of the training process. I signed up for a student 3 times in a row, and then refused him - welcome to the black list. The mentor said to read the book a month ago, and you rolled up the cotton - a black list, do not take time away from people.

In general, the resource on mentoring is not another online school with a personal teacher, but rather a chance for an inexperienced developer, or a beginner, to realize his idea under the guidance of a professional. On the basis of what may arise completely new projects and teams.

Actually, that's all.

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


All Articles