With love from Stepik: Hyperskill educational platform

I want to talk with you about why we repair plumbing more often than write dissertations about it, about different approaches to teaching programming and how we try to apply one of them in our new Hyperskill product.

If you don't like long introductions, then skip right to the programming section. But it will be less fun.

Lyrical digression

Let's imagine a certain young lady Masha. Today, Masha was going to wash herself with fruits and calmly watch the movie, but here's the bad luck: suddenly she found a sink in the kitchen clogged. What to do with this is not yet clear. You can postpone this issue indefinitely, but there is free time now, so Masha decides to deal with the problem immediately. Common sense suggests two options: a) call the plumber b) cope on their own. The young lady chooses the second option and begins to study the instructions on YouTube. On the advice of Vasya_the_plumber, Masha looks under the sink and sees a snaking plastic pipe from several parts. The girl carefully unscrews one part at the base of the sink and finds nothing. A piece of pipe below is tightly clogged with an unknown substance, and even the fork found on the table does not cope with clogging. Experts from the Internet give disappointing forecasts: the part will have to be changed. On the map, Masha finds the nearest store, takes an unfortunate piece of pipe with him and buys the same one, only a new one. On the advice of the seller, Masha also grabs a new strainer for prevention. The quest is completed: the sink works as it should again, and its main character, meanwhile, found out the following:

• Pipes under the sink can independently unwind and twist;
• The nearest plumbing store is one and a half kilometers from the car apartment.

Most likely, Masha didn’t even notice how much new she learned and what she learned, because she was worried about her own comfort in the future, and at the same time a movie screening and a washed apple. 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, on special occasions, and practice-oriented , that is, doing things, and not studying them in detail and in advance.

Everything could have turned out differently. Suppose Masha sits in an armchair in the evening and suddenly realizes that she is mentally and physically not ready for blockage in the sink. She hurriedly enters the plumbing academy, studies the types of sinks, pipes and possible connections, the classification of problems with plumbing and possible solutions. Masha does not sleep at night, remembering terms and names. Perhaps she even writes a Ph.D. in theoretical pipe science, where she talks about rubber pads. Finally, having received the certificate, Masha proudly surveys the kitchen in complete confidence that now even a small-sized problem with the sink will be solved at the click of a finger. In this scenario, the girl studied deductively , moving from general to particular, and focused more on theory .

So which approach is better? In the case of a sink and a blockage - the first one, and here for what reasons:

1. If only a working sink is important, then it is enough to know only what concerns this particular area. When Masha realizes that there is not enough knowledge, she will surely find a way to learn more.
2. Encyclopedic savvy may not turn on in a real situation, because a habit has not been worked out. 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: study or do?

We are used to thinking that in order to develop and become an expert in an unfamiliar field, you first need to go to university or at least sign up for courses. We regularly listen to what is being said, and we carry out tasks. When the treasured diploma or certificate is on hand, we instantly get lost, because we still do not understand why we need so much information and how to apply it specifically. This is not a problem if the plans are to write scientific papers and travel with them to conferences. Otherwise, it is worth striving for skills, that is, doing and doing specific things again, trying and making mistakes, for a long time to remember how best to not do.

One of the areas where the "full hand" or "eye-diamond" go near the breadth of mind is programming. If you talk with experienced developers, you will hear good stories in which a person from a young age was engaged in mathematics / physics / teaching, and then he became tired and switched to the backend. There will be programmers without higher education! First of all, the developer appreciates not a certificate, not a diploma, but the quantity and quality of written programs, scripts and sites.

“But wait!”, You object, “It sounds beautiful - take it and do it! I can’t easily write a program for myself if I haven’t programmed it before (a)! It’s important for me to understand where to write, how to speak the programming language with the compiler in principle . It's not a plumbing phone in google to find. "

The bitter truth is in this. One unfamiliar aspect draws another, which, in turn, is the third, and soon this process turns into a magician’s show, which continues to pull the tied handkerchiefs and does not get them out of the cylinder. Honestly, the process is unpleasant, on the 5th handkerchief it already seems that the depth of ignorance is close to the Mariana Trench. An alternative to this is the same lectures on 10 kinds of variables, 3 kinds of loops and 150 potentially useful libraries. It’s sad.

Hyperskill: we built, built and finally built

We thought about this problem for a long time. About how long we thought, eloquently speaks the date of the last post on our blog. After all the debate and attempts to integrate the new approach on Stepik, we got ... another site. You may already have heard of him as part of the JetBrains Academy. We called it Hyperskill, built in project-based learning there, tied a Java knowledge base to it, and enlisted the support of the EduTools team. And now in more detail. Specific purpose.

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 rest of the stages, if the first one has already worked out everything?” Thanks for the question. With each step, the program becomes more functional or faster. At first, the code takes 10 lines; at the end, it may not fit in 500.

A bit of theory.It is 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 Hyperskill in the “Knowledge Map” section. If for the first stage of the project, students are not required to read the data from the file, even if they do not know how to continue. They will then learn it themselves, for general development, or will be needed at the next stage. Map of knowledge.

It shows which topics you have already studied and how they relate to each other. Open any pretty topic. You can go over it with your eyes, but we recommend that you perform small tasks to make sure that the information is in your head. At first, the platform will throw tests to you, after them - a couple of programming tasks. If the code compiles and passes the tests, then compare it with the sample solution (reference solution), sometimes it helps to find out a more optimal way to implement it. Or make sure that your decision is so beautiful.

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 fold 2 + 2 again or turn the line over. To get to the right level right away, during registration, indicate what you are already familiar with, and choose a project more complicated. 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 real programming begins with working in a development environment ( I ntegrated D evelopment E

nviroment). Experienced programmers know not only how to write code, but also how to construct a graphical interface, assemble different files into a project, use additional development tools, and the IDE takes care of some of these processes. Why not learn these skills while you master programming? This is where JetBrains comes to the rescue with 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 peek at project tips if you forget something. Do not worry if you first hear the word “plug-in” 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, and then go to the IDE and complete the next stage of the project right there.

Deadlines They are not here! Who are we to knock on the head and indicate at what pace you write the program. When you like to write code and want to finish it to the end, you add it, today or tomorrow. Engage in the development of your own pleasure.

Mistakes All of them allow, you suppose you are at one of the stages of the project, and then this stage will not pass automatic tests. Well, you have to figure out on your own what went wrong. We could say where the error lies, but does it teach you to write code carefully? Read tips from IDEA or a theoretical topic about Bugs, and when the program finally works, the dopamine surge will most likely not take long.

Visual result.So, you have finished the first project, what next? Use the fruits of labor! Play tic-tac-toe with your friends, and at the same time boast of success. Upload the project to GitHub to show the future employer, write a description yourself, indicate the knowledge that you used there. 4-5 complex projects, and now, a modest portfolio for the novice developer is ready.

Opportunity for growth. Suppose you look at Hyperskill and 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 map, then write to us in the Contribute form. Our team will share its 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 all ages and levels. Maybe we will even pay, but that's not for sure.

Welcome: https://hi.hyperskill.org/ Come on in, see, try, suggest, praise and scold. We also learn to teach you.