Programming training. The point of view of the teacher and his advice
First a few words about yourself
He has been involved in programming for a long time, although for the most part he was engaged in cellular communications. In different years, both by switching and by the quality of the basic subsystem.
All the time I did some programs that make life easier for me and my colleagues. First of all, in C ++ Builder (I note that I used the licensed version). Some of the programs, such as a software package for analyzing the quality of the basic subsystem 2G and 3G, are still used (PHP + JS, the "trick" there is no longer in programming, but in the use of many algorithms to search for problem elements), although at the time of writing This article I have not been working in mobile communications for 2 years.
At the same time, I always taught everyone something. First of all, cellular communication. I even have several “copyright” courses to teach these very basics of cellular communications. But now it’s not about them.
Therefore, I think it is not at all surprising that at some point I began to teach programming. What I am doing now: web programming based on PHP, Javascript, HTML, CSS. Training is only individual. And now I want to share this experience, my observations. It will be useful, I think, for both students of programming and those who take the liberty of teaching others.
To begin with, I will answer the question "why does it take courage." Because it is also necessary to be able to teach another. I, they say, it turns out pretty well (as my wife says in such situations, “you don’t praise yourself - you sit like a spat upon you”). And yes, I may not know something. But I teach in such a way that a person himself will eventually be able to find the information he needs. My task is to give an understanding of the processes that are taking place so that the student has in his head an integral picture of what is happening. And any exact names of functions and a set of their parameters can always be clarified in the manual.
How is the training
The short answer is simple and monosyllabic: “remotely”. Skype + TeamViewer. All necessary tools must be installed on the student’s computer: Apache, PHP, mySQL or PostgreSQL, a code editor. At the appointed time, we connect via Skype, I connect via TeamViewer and the process has started. As a result, all codes remain with the student. He can analyze them, modify, do some homework. Yes, it is homework. If the student really wants to learn programming, he must work a lot on his own, and not just during the lessons. If only because for a serious study of programming you need to literally "plunge" into it, as if in a dream. Very well written about this in the article "Do not wake the programmer!" . I recommend reading if someone has not read it yet.
Generally speaking, I do not have a clear and rigorous “training program”. I teach everyone what he needs and at the level that he currently needs.
I also highly recommend that students read manuals on the language they are learning. Read books. Read articles. Chat on the forums.
By the way, about the forums. This is also very useful for learning! But do not just read, although it is also useful. Try to find the answer to the question asked by someone. It is likely that the answer is simple. And who will get the most benefit? The correct answer: one who did not know the answer, but found it and answered first. Why so, speak? Yes, it is very simple, it seems to me. If a person knew the answer, then he will not learn anything new for himself. If this answer was received by the author of the topic so that he did not think, then next time he again will not be able to solve the same problem. But the one who "did not know, but found the answer" really moved forward. And so, on the steps, you can go far.
Well, and, of course, just to delve into the essence of forum discussions, sometimes turning into “holy wars”. In the “right” forums, in the course of such discussions, there are usually many pros and cons of something discussed in a particular topic. Studying the opinions of both parties will help to better understand the essence of the problem under discussion.
That’s what I don’t recommend, these are video courses. For the programmer, they are evil! Because when you study programming, you often need to pause, think, delve into. And the video spurs, urges “forward, forward!”. As a result, it seems that he saw something, heard something, but remembered little. Yes, you can see it again. Once again. Once again. But you do not always get to the right place. If you revise after some time, it’s even more difficult to find the right fragment, you will again look a lot of superfluous.
And in printed text, whether paper or electronic, it’s easier to find the part of interest. On paper, you can make notes, and in electronic form, you can very quickly search for some keywords.
Videos are good, for example, to learn how to work in a graphical editor. Because there, indeed, it is better to see than to try to understand from the written explanation. Looked - repeated - you already know.
What are the students
I’ll try to make a small classification of student programmers, the good thing is, I talked with different ones. Naturally, I do not pretend to be absolutely correct in this classification.
1. Fearful
Characterized by the fact that he is afraid to study something himself. Waiting for him to chew.
Rather rare type. In general, I was surprised, if not to say, that I was shocked when I came across this. I had one such student. In fact, he was afraid to study on his own. I will explain something to him, then I give "homework": read this and that. No, he says, it’s better for me to explain. And well, I would remember everything well. So there were problems with this too - at each lesson they repeated part of what they had studied before. Moreover, as if not a word had been said before.
I tormented him for a while and said, “enough of me!”. On the one hand, from the point of making money, this is an ideal option, an eternal student. Which will never work on its own and can be taught forever. And he even managed to take some kind of order! And he decided that I would write for him this order, explaining along the way what I was doing there. And he will watch and, like, what to study. Yes, it was here that I said “enough for me”.
I don’t know, maybe he became a copy-paste programmer, I don’t communicate with him. And he is not capable of more. What I honestly told him about. And not a stupid person, no! But programming is not his path.
2. Non-programmer
This is a completely normal person who knows how to do something well. But programming, as they say, “doesn’t go” with him. A person can honestly puff, sniff, conscientiously study all sorts of docks, do everything that they say to him, including homework. But the learning process is very slow.
It is very difficult to deal with such students, and it is not easy for them.
3. Prosharenny
Here it is best to communicate with such, although at the same time it is most difficult. These are really Programmers, with a capital letter. People who themselves study all sorts of manuals delve into everything. And they need the help of a teacher only at the initial stage, for dispersal, for understanding the basics. And they will read the details at the docks. Without prompting. And they will quickly understand a lot.
Why is it best to communicate with them, although harder? Because they do not allow the teacher’s brain to numb. Encourage me to study more deeply what I teach. I need to be able to quickly figure out what is not clear and how to explain, so that it is brief and understandable. Although, it should be noted, the "well-worn" one most often understands perfectly. Understands and immediately begins to use.
The disadvantage of working with such students is that they usually do not work long. Because then they themselves are already developing.
4. Just a programmer
This type of student also works in the learning process himself, as does the “schooled” one. Most often already works as a programmer. He asks for training on specific issues, and not "in general." In contrast to the “past one,” it may not so quickly grasp the essence, but when it is understood (and it is understood quickly), it begins to actively use new knowledge in work.
Between the 3rd and 4th types of students, in fact, it is difficult to draw a clear line. It is more likely at the level of some kind of inner sensation than by objective criteria. One of the few criteria is described below.
5. Businessman
Such people, on the one hand, have a good understanding of programming. But, on the other hand, having started programming, they quickly realize that they will better organize processes than write codes themselves. Therefore, after some time, such people cease to be engaged.
And that's right, I guess. Everyone should do his own thing, which he does better and to which he, as they say, “lies the soul”.
His business is connected to the Internet, of course, otherwise programming would not be important to him.
For me, training is a commercial event, so the financial result is important for me. Although the process itself should be interesting, it is very clear.
What is interesting for me personally is the 4th and 5th types, so it is because orders come from them sometimes, quite unexpectedly.
For the 4th type, this is most often some small script that a person is willing to pay for, so as not to spend a lot of time studying. He will then return this spent money by making the order faster. Moreover, I do not just “give away the script”, but give advice on its use and reuse. Both immediately and after some reasonable time after the execution of the order.
The 5th type, a businessman, can also place orders. But he simply uses them, and does not embed them in his scripts. Due to the lack of the latter.
Recommendations for students who want to become programmers
Think about whether you need it! No, I'm quite serious. There are many other professions in the world that are no worse than programming. According to smart people, if we consider the tendency of people to do something, then about 5% of people are very inclined (type “well-worn” from my list), about 5% in general (in this case, “non-programmers” in my classification), the remaining 90% are prone, but to varying degrees. By the way. I attribute myself, rather, to the middle of these 90%.
If suddenly you, student programmers, find yourself in these 5% who are "not inclined", then do not waste your time in vain. I am sure that you can do something else that you can do much better.
Oh well. Are you still sure that you get into the very 90% and even closer to 5% that are “programmers from God”? Well, then we think further.
What does it take to become a programmer?
* Understanding why this is necessary.
From this we must begin. Why do you want to become a programmer? Do you think that programmers are "rowing money with a shovel"? Or maybe you have already tried and liked it? Want to work on a free schedule? A friend does well, but are you “no worse”? Think about what your ultimate goal is and what you need to achieve it.
* Abilities
I already spoke about them, I repeat. One must have a certain penchant for programming. Nothing will work without her. This is neither good nor bad, it is just a fact to be reckoned with.
* Ability to learn. Desire and perseverance in learning. Determination
Nowhere without them. However, as in any business, not only in programming. As the saying goes, “be at least seven spans in the forehead,” but if you do nothing, you won’t learn anything. You also need to be prepared not only to do, but also to remodel. Because it is well known that when a programmer looks at his code written earlier, he usually sees how it can be improved. And in some cases, such improvements make sense. Well, for example, did "something." And then he studied a certain library that he did not know about before. Which provides additional features. He scratched his head, thought, rewrote.
This also includes the fact that a lot of information can be gleaned from different books and manuals. You just need to not just read, but try to put it into practice. At least in the form of small test scripts. You read a book and try one, another, third ... But then, when writing real scripts, you have many opportunities in your hands. Which you can juggle as you want - provided that you have a good idea of what you are doing.
* Computer
It is understandable that it is needed. Which is better? Personally, I am more comfortable working with a laptop. Used to for many years. If I’m going somewhere, whether to the village, to the office, home or somewhere else - I take everything with me “in one bottle”, i.e. in a laptop. I have an HP laptop with a 17 '' monitor. Even with this one sometimes wants a bigger screen.
Perhaps you prefer a stationary computer. If only because the laptop monitor is usually not so big. In any case, RAM, processor, disks - there are not many, so the more the better.
* Programs
Better or knowingly free, or buy licensed.
And which programs? All kinds of servers, such as Apache or IIS, compilers and interpreters - this goes without saying. I won’t talk about them in detail.
But here's what you must definitely say - never save on tools! The programmer’s tool is not only a computer, but also the editor in which he “encodes”. Here you can’t save and use Notepad or another simple text editor. A full-fledged IDE is just what you need. So that there is code highlighting, and syntax checking, and finding the place of definition of a variable or function, and tips on the parameters of functions, and much, much more. Yes, if you have only 3 files in the project, then you do not need anything. But if the project is serious, in which there are tens to hundreds of files, then the IDE will allow you to work quietly, while Notepad lovers will waste a lot of time.
I don’t specifically name any specific IDEs because there are many different IDEs, one likes one, the other different. Each has its own "chips." And all of them, which are essentially paid. I repeat once again: do not save on tools. It is better to spend money on a good tool than to lose time and money later when working with a bad tool.
On this, I think, we can finish the discussion. Only those who want and can learn will go next. And those who change their minds are also great fellows. You must be able to stop in time and spend your strength on what works well.