I want to talk with you about why we repair plumbing more often than write dissertations about it, about different approaches to programming training and how we try to apply one of them in our new product Hyperskill.
If you do not like long intro, then go directly to the paragraph about programming. But it will be less fun.

Lyrical digression
Let's imagine a certain young lady Masha. Today Masha was going to wash herself fruit and watch the movie calmly, but what a bad luck: she suddenly found herself huddled in the kitchen sink. What to do with it is not yet clear. You can postpone this issue indefinitely, but there is free time now, so Masha decides to deal with the problem right away. Common sense suggests two options: a) call the plumber b) handle it yourself. The young lady chooses the second option and is taken to study the instructions on YouTube. Following the advice of Vasya_the_plumber user, Masha peeks under the sink and sees there is a snaking plastic pipe from several parts. The girl carefully unscrews one part at the base of the sink and finds nothing. The lower part of the pipe is tightly packed with an unknown substance, and even the plug found on the table cannot cope with the blockage. Experts from the Internet give disappointing forecasts: the detail will have to be changed. On the map, Masha finds the nearest store, takes with her an unfortunate piece of pipe and buys the same, only a new one. On the advice of the seller, Masha grabs a new strainer for prophylaxis. The quest is completed: the sink works as needed again, and its main character, meanwhile, has learned the following:
')
- The pipes under the sink can be unrolled and screwed;
- The nearest plumbing shop is a mile from the apartment machine.
Most likely, Masha did not even notice how much she learned and learned what was new, because she was worried about her own comfort in the future, and at the same time the screening and the washed apple. The next time when a similar problem arises, the girl will solve it many times faster. In fact, Masha did not just return the world to its usual state; she studied
inductively , that is, in particular cases, and
practice-oriented , that is, doing things, rather than studying them in detail and in advance.
Things could be different. Suppose Masha is sitting in a chair in the evening and suddenly realizes that she is not morally and physically ready for the clog in the sink. She hastily enters the Plumbing Academy, studies the types of sinks, pipes and possible connections, the classification of problems with plumbing and possible solutions to them. Masha does not sleep at night, remembering the terms and names. Perhaps she even writes a PhD in theoretical pipe study, where she talks about rubber pads. Finally, having received the certificate, Masha proudly overlooks the kitchen in full confidence that now even a small problem with the sink will be solved at the click of the fingers. In this scenario, the girl studied
deductively , moving from the general to the particular, and focused more on
theory .
So which approach is best suited? In the case of the sink and the blockage - the first, and here are the reasons:
- If only a working sink is important, then it suffices to know only what concerns this particular sphere. When Masha realizes that she lacks knowledge, she will definitely find a way to learn more.
- Encyclopedic knowledge may not be included in the real situation, because the habit is not fulfilled. In order to learn the sequence of actions, it makes sense not to read about them, but to perform.
Let's leave poor Masha alone and move on to the learning process as such.
Programming: learn or do?
We used to think that in order to develop and become an expert in an unfamiliar area, you first need to go to university or at least enroll in courses. We regularly listen to what they say, perform tasks. When the cherished diploma or certificate appears on our hands, we instantly get lost, because we didn’t understand why we need so much information and how to apply it. This is not a problem, if further in the plans - to write research papers and go with them to the conference. Otherwise, it is worthwhile to strive for skills, that is, to do and do specific things again, to try and make mistakes, to remember for a long time how best not to act.
One of the areas where the “hand-crammed” or “eye-diamond” goes next to the breadth of the horizon is programming. If you communicate with experienced developers, you will hear brave stories in which a person has been studying mathematics / physics / teaching from a young age, and then he is tired and has moved to the backend. There are programmers without higher education! First of all, the developer does not value the certificate, not the diploma, but the quantity and quality of written programs, scripts and websites.
“But wait!”, You argue, “It sounds beautiful - take it and do it! I can’t easily write a program for myself, if I haven’t programmed it before! This is not a plumbing phone in google find. ".
There is a bitter truth in this. One unfamiliar aspect pulls the other along with it, which, in turn, is the third, and soon this process turns into a magician's show, which continues to pull out the bound handkerchiefs and will not get them out of the cylinder. The process, frankly, unpleasant, on the 5th “headscarf” it already seems that the depth of ignorance is close to the Mariana Trench. An alternative to this is the same lecture on 10 kinds of variables, 3 kinds of cycles and 150 potentially useful libraries. Sadly
Hyperskill: we built, built and finally built
We have been thinking about this problem for a long time. About how long we thought, eloquently says the date of the last post on our blog. After all the controversies and attempts to integrate the new approach on Stepik, we succeeded ... another site. You may have heard of him as part of the JetBrains Academy. We called it Hyperskill, embedded project-based learning, tied to it a Java knowledge base and enlisted the support of the EduTools team. And now more.
Specific goal. We offer a “menu” of projects, i.e. programs that you can write with our help. Among them are tic-tac-toe, personal assistant, blockchain, search engine, etc. Projects consist of 5-6 stages; the result of each stage is a finished program. “Why, then, the remaining stages, if everything is already at the first?” Thanks for the question. With each step, the program becomes more functional or faster. At first, the code takes 10 lines, in the end it may not fit in 500.
A bit of theory. It’s impossible to sit down and, without knowing a word about programming, write even Hello World. Therefore, at each stage of the project you see what theoretical basics you have to master and, most importantly, where to get them. The basics are also located on the Hyperskill in the “Knowledge Map” section. If for the first stage of the project, students are not required to read data from a file, even if they are not able to continue. Then you will learn it yourself, for general development, or you will need it in the next stage.
Knowledge Map. It shows what topics you have already studied and how they relate to each other. Open any nice topic. You can run through his eyes, but we recommend to perform small puzzles to make sure that the information is in the head. Initially, the platform will throw you tests, after them - a couple of programming tasks. If the code is compiled and passes tests, then compare it with the sample solution (reference solution), sometimes it helps to learn a more optimal way of implementation. Or make sure your decision is fine.
Nothing extra. We are waiting for "green" users and experienced developers. If you have already written programs, it does not matter, we will not force you to add 2 + 2 again or turn the line over. To immediately get to the desired level, specify what you already know when registering, and choose a more complicated project. Do not be afraid to overestimate yourself: if anything, you can always return to a forgotten topic in the knowledge map.
Instruments. It's great to write small pieces of code in a special window on the site, but the real programming begins with working in the development environment (
I ntegrated
D development
E nviroment). Experienced programmers know not only how to write code, but also how to construct a graphical interface, collect different files into a project, use additional development tools, and the IDE takes over some of these processes. Why not learn these skills while you master programming? Here comes JetBrains and a special version of IntelliJ IDEA Community Educational with the pre-installed EduTools plugin. In such an IDE, you can take training courses, check solved problems and look into project tips if you have forgotten something. Do not worry if you first hear the word “plugin” or “IDE”: we will tell you what it is and how to install it on a computer or laptop with minimal suffering. Understand the theory, then go to the IDE and complete the next stage of the project right there.
Deadlines They are not! Who are we to bang on the head and indicate at what pace you write a program. When you like to write code and you want to finish it to the end, you finish it, today or tomorrow. Develop your own fun.
Errors. All of them admit, allow and you at one of the stages of the project, and then this stage will not pass automatic tests. Well, you have to figure out for yourself what went wrong. We could tell where the error lies, but does this teach you to write the code carefully? Read tips from IDEA or a theoretical topic about Bugs, and when the program finally starts working, the dopamine rush will probably not be long in coming.
Visual result. So, you have completed the first draft, what next? Use the fruits of labor! Play tic-tac-toe with friends, at the same time boast success. Upload the project to GitHub to show your future employer, write a description yourself, indicate there the knowledge that you used. 4-5 complex projects, and now, a modest portfolio for a novice developer is ready.
Opportunity for growth. Suppose you are looking at Hyperskill and you don’t see any important topic or useful project there. Let us know about it! If your background is wider and richer than a knowledge card, then write to us in the
Contribute form. Our team will share their own tips & tricks with you, so we will be happy to help you transform your knowledge into useful content that is understandable to users of different ages and levels. Maybe we will even pay, but this is not accurate.
Welcome:
https://hi.hyperskill.org/ Come, see, try, offer, praise and scold. We learn to teach you too.