
Visiting school of programming: what can be done with students in three days in a dark forest
On the Internet, it is not difficult to find a whole host of articles about modern education, about the discrepancy between the knowledge of IT graduates and their requirements for companies, how everything is bad and how everything needs to be changed.
In this article, we will talk about our attempt to move from conversations to real affairs. We do not have the resources to make a difference globally, so we are acting pointwise. A visiting school for programming is an opportunity to rectify the situation by influencing the most capable students.
Welcome to kat if you are interested in how we do it and what comes of it.
For five years we have been engaged in various activities in order to strengthen the position of IT education in the region. During this time, we came to different conclusions: for example, we formulated an important principle of “concentration of efforts”. Our resources are limited, so we need to focus our efforts on the most promising areas: to collect promising children in one place and invest in them as much as possible.
Several years ago, for the first time, we conducted mass training for our interns-programmers (as a rule, these are IT students) before the internship. Happened. We repeated this experiment. It got even better. So we could no longer keep it to ourselves and a year ago for the first time we announced the holding of an industrial development school called Kontur.Kampus .
We have conducted such schools four times already and have learned something good during this time. And since you need to share the good, you are reading our article!
What rules have we discovered for ourselves?
Sounds pretty pathetic. In fact, this means that you can get to our school only if you perform the test task in a quality manner - money, dating and communication will not help! :-) In the test, everything is evaluated: ideas, algorithms, code quality, the ability to decompose a task, accuracy with extreme cases.
By the way, it is difficult to conduct a school in different programming languages, so we fix C # (the main development language in our company) as the main programming language at the school and offer to run the test language on it. This ensures that everyone who copes with the task, at least at the basic level, has mastered the basics of the language, and also opens up more opportunities for participants to interact and exchange experiences. And lectures with practitioners in such conditions can be more meaningful and specific.

To completely immerse yourself in the process, you need to isolate yourself from unnecessary irritants ( do not wake the programmer! ). Therefore, for our school, we rent a remote cottage, where it’s difficult to get to and where it’s even more difficult to get out, so that for a few days students will not be distracted by anything. Moreover, the startup’s very romantic atmosphere is so attractive from the point of view of students!

In order not to interrupt students from their main studies, we try to take away as little teaching time as possible from them and conduct school from Friday to Sunday. That is, only three days, and not a single minute should be lost: classes go from 10 am to 11 pm (including short breaks for tea drinking and dinner). For some, it’s a real test - strain your brain for a damn day! But others sit until three in the morning, completing the "home" task, because "it’s interesting!" and “the homework won’t do itself!”
What is included in the three-day program?
Basically, these are basic topics that are necessary for almost everyone: clean code, refactoring, the ability to break a task into subtasks, testing, multithreading, elements of a functional programming style, version control system.
Any lecture, not supported by practice, quickly flies out of the student’s head in half an hour. Therefore, practice is our everything. We use the following empirical formula.
The greatest effect is obtained if all school topics are related to each other. For example, topics about clean code and decomposition agree well with the topic about a functional programming style; in the case of C #, all this is in good agreement with LINQ, which, in turn, is connected with the topic of multithreaded programming via pLINQ, and so on and so forth. The more ligaments, the better all material is absorbed.
And the last day we spend generously on Code Retreat. On Habré already wrote about him here . If you still do not know what it is - be sure to read it! With students who have just been told a lot of new and useful information, this works especially well. According to the students themselves, Code Retreat is consistently one of the best points in the school program.
Rest is also provided, but in reality it is only a change in brain activity: instead of writing a code, we invite participants to play charades or a “hat” with words like “monad” or “encapsulation” and similar entertainments.

Only practice, only with teaching experience, only hardcore. Yes, these are hard to find, but they exist. And another observation: very good teachers come from some recent school participants. Apparently, it helps them that they are much more on the same wavelength as students than adult male programmers. So, right during the school, we are looking for a teacher for the next school from the current participants.

This will not only facilitate the work of teachers, but also teach participants to work in different teams, consult, share experience. The rule is simple. A new topic is a new couple.

For a three-day school, each student can manage to work with a dozen other students. So they will all get to know each other again!
Again, students from pair programming are absolutely delighted!

We want to work with the best, so we do it completely free of charge: there is no fee for either living or studying. Our goal is to teach, not to hire. Therefore, selection and training are carried out without any regard to whether this person will go to work for us or not. Of course, this position is quite difficult to explain to the economic department, but if you do not do this kind of work, do not increase the concentration of twists per square meter, then those who still grow up into a good specialist will get bored, and they will go to where the concentration is higher. Thus, we not only risk losing someone who is already here, but we do not gain anyone.
On the other hand, we will not be completely upset if those who go through school then come to us for an internship and / or for work, since it often happens by itself! ;)
The importance of this principle is difficult to overestimate. Without feedback, you cannot develop. Therefore, we spend the last half hour or an hour behind a retrospective (yes, just like in Agile). As a result, you can very well understand which teacher is not cool (and you should not call him anymore), which topics have gone well, and which are not very, etc. The harder the feedback, the better!

Of course, in three days (even with the condition of a thirteen-hour school day) it is impossible to raise the level of education. But the effect of the school lasts much longer. Students understand what to strive for, what exactly is industrial programming in reality. They go on their own and pull their friends and acquaintances along, then they grow up, become professional developers, then some of them make teachers, each of them has 15 new students ...
The picture is utopian, but we believe in it and make efforts to realize it.
In February we are planning another school Kontur.Campus for students of Yekaterinburg and the surrounding area. Participation is naturally free! All the details are here!
In this article, we will talk about our attempt to move from conversations to real affairs. We do not have the resources to make a difference globally, so we are acting pointwise. A visiting school for programming is an opportunity to rectify the situation by influencing the most capable students.
Welcome to kat if you are interested in how we do it and what comes of it.
For five years we have been engaged in various activities in order to strengthen the position of IT education in the region. During this time, we came to different conclusions: for example, we formulated an important principle of “concentration of efforts”. Our resources are limited, so we need to focus our efforts on the most promising areas: to collect promising children in one place and invest in them as much as possible.
Several years ago, for the first time, we conducted mass training for our interns-programmers (as a rule, these are IT students) before the internship. Happened. We repeated this experiment. It got even better. So we could no longer keep it to ourselves and a year ago for the first time we announced the holding of an industrial development school called Kontur.Kampus .
We have conducted such schools four times already and have learned something good during this time. And since you need to share the good, you are reading our article!
What rules have we discovered for ourselves?
Elitism
Sounds pretty pathetic. In fact, this means that you can get to our school only if you perform the test task in a quality manner - money, dating and communication will not help! :-) In the test, everything is evaluated: ideas, algorithms, code quality, the ability to decompose a task, accuracy with extreme cases.
By the way, it is difficult to conduct a school in different programming languages, so we fix C # (the main development language in our company) as the main programming language at the school and offer to run the test language on it. This ensures that everyone who copes with the task, at least at the basic level, has mastered the basics of the language, and also opens up more opportunities for participants to interact and exchange experiences. And lectures with practitioners in such conditions can be more meaningful and specific.
Insulation

To completely immerse yourself in the process, you need to isolate yourself from unnecessary irritants ( do not wake the programmer! ). Therefore, for our school, we rent a remote cottage, where it’s difficult to get to and where it’s even more difficult to get out, so that for a few days students will not be distracted by anything. Moreover, the startup’s very romantic atmosphere is so attractive from the point of view of students!

School program
In order not to interrupt students from their main studies, we try to take away as little teaching time as possible from them and conduct school from Friday to Sunday. That is, only three days, and not a single minute should be lost: classes go from 10 am to 11 pm (including short breaks for tea drinking and dinner). For some, it’s a real test - strain your brain for a damn day! But others sit until three in the morning, completing the "home" task, because "it’s interesting!" and “the homework won’t do itself!”
What is included in the three-day program?
Basically, these are basic topics that are necessary for almost everyone: clean code, refactoring, the ability to break a task into subtasks, testing, multithreading, elements of a functional programming style, version control system.
Any lecture, not supported by practice, quickly flies out of the student’s head in half an hour. Therefore, practice is our everything. We use the following empirical formula.
- Right during the lecture, one or two pauses for solving prepared trivial problems on the topic. For example, right after the story about code refactoring and decomposition - a task in which you need to rename several variables and select a connected block of code into a method using the appropriate commands in the IDE; after the story about some kind of technology - to do something very simple with its help.
- At the end of the lecture you need one big “home” task on the topic for 2-4 hours. They solve it at a specially designated time for this after the lectures.
The greatest effect is obtained if all school topics are related to each other. For example, topics about clean code and decomposition agree well with the topic about a functional programming style; in the case of C #, all this is in good agreement with LINQ, which, in turn, is connected with the topic of multithreaded programming via pLINQ, and so on and so forth. The more ligaments, the better all material is absorbed.
And the last day we spend generously on Code Retreat. On Habré already wrote about him here . If you still do not know what it is - be sure to read it! With students who have just been told a lot of new and useful information, this works especially well. According to the students themselves, Code Retreat is consistently one of the best points in the school program.
Rest is also provided, but in reality it is only a change in brain activity: instead of writing a code, we invite participants to play charades or a “hat” with words like “monad” or “encapsulation” and similar entertainments.

Teachers
Only practice, only with teaching experience, only hardcore. Yes, these are hard to find, but they exist. And another observation: very good teachers come from some recent school participants. Apparently, it helps them that they are much more on the same wavelength as students than adult male programmers. So, right during the school, we are looking for a teacher for the next school from the current participants.

Work in pairs!
This will not only facilitate the work of teachers, but also teach participants to work in different teams, consult, share experience. The rule is simple. A new topic is a new couple.

For a three-day school, each student can manage to work with a dozen other students. So they will all get to know each other again!
Again, students from pair programming are absolutely delighted!

No hunting, no fees
We want to work with the best, so we do it completely free of charge: there is no fee for either living or studying. Our goal is to teach, not to hire. Therefore, selection and training are carried out without any regard to whether this person will go to work for us or not. Of course, this position is quite difficult to explain to the economic department, but if you do not do this kind of work, do not increase the concentration of twists per square meter, then those who still grow up into a good specialist will get bored, and they will go to where the concentration is higher. Thus, we not only risk losing someone who is already here, but we do not gain anyone.
On the other hand, we will not be completely upset if those who go through school then come to us for an internship and / or for work, since it often happens by itself! ;)
And most importantly, feedback
The importance of this principle is difficult to overestimate. Without feedback, you cannot develop. Therefore, we spend the last half hour or an hour behind a retrospective (yes, just like in Agile). As a result, you can very well understand which teacher is not cool (and you should not call him anymore), which topics have gone well, and which are not very, etc. The harder the feedback, the better!

Of course, in three days (even with the condition of a thirteen-hour school day) it is impossible to raise the level of education. But the effect of the school lasts much longer. Students understand what to strive for, what exactly is industrial programming in reality. They go on their own and pull their friends and acquaintances along, then they grow up, become professional developers, then some of them make teachers, each of them has 15 new students ...
The picture is utopian, but we believe in it and make efforts to realize it.
By the way!
In February we are planning another school Kontur.Campus for students of Yekaterinburg and the surrounding area. Participation is naturally free! All the details are here!