On the Internet, it is easy to find a whole lot of articles about modern education, about the mismatch of knowledge of graduates of IT specialties and the requirements for them from companies, about how bad things are and how things need to be changed.
In this article we will tell about our attempt to move from talking to real business. We do not have the resources to change the situation globally; therefore, we act precisely. The retreat programming school is an opportunity to rectify the situation by affecting the most capable students.
Welcome under the cat, if you are wondering how we do it and what comes out of it.
We have been engaged in various activities for five years 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 you need to focus your efforts on the most promising areas: collect promising children in one place and invest as much as possible into them.
Several years ago, for the first time, we conducted mass training for our interns-programmers (as a rule, they are students of IT specialties) before starting an internship. Happened. This experience we repeated. It got even better. So we couldn’t keep it in ourselves anymore and a year ago we first announced an industrial development school called
Contour.Campus .
')
We have conducted such schools four times already and have learned something good during this time. And since the good need to share, you read 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 a test task with high quality - money, dating and connections will not help! :-) In the test, everything is evaluated: ideas, algorithms, code quality, ability to decompose a task, accuracy with extreme cases.
By the way, it is difficult to conduct school in different programming languages, so we fix C # (the main development language in our company) as the main programming language at school and offer it and perform the test one. This ensures that everyone who has done the task has mastered the basics of the language, at least at a basic level, and also opens up more opportunities for the interaction of participants and the exchange of experience. Yes, and lectures with practitioners in such conditions can be more meaningful and specific.
Insulation

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

School program
In order not to tear students away from mainstream education, we try to take away as little study time as possible from them and spend the school from Friday to Sunday. That is just three days, and not a single minute should be lost: classes are held from 10 am to 11 pm (including short breaks for tea and dinner). For some, this is a real challenge - to strain the whole brain, damn it, the day! But others sit until three in the night, completing the “homework” assignment, because “it’s interesting!” And “the homework will not do itself!”
What is included in the three-day program?
Basically, these are basic, necessary for almost all topics: clean code, refactoring, the ability to split a task into subtasks, testing, multithreading, elements of a functional programming style, version control systems.
Any lecture, not supported by practice, rapidly 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 to solve the prepared trivial tasks on the topic. For example, right after the story about refactoring and code decomposition - a task in which you need to rename several variables and select a coherent block of code into a method using the appropriate commands in the IDE; after the story about some technology - to make 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. Solve it in a specially allocated for this time after the lectures.
The greatest effect is obtained if all the topics of the school are related to each other. For example, topics about clean code and decomposition are in good agreement with the topic about functional programming style; in the case of C #, all this agrees well with LINQ, which, in turn, is associated with the topic of multithreaded programming via pLINQ, and so on and so forth. The more ligaments, the better absorbed all the material.
And the last day we spend generously on Code Retreat. On Habré about him already
wrote here . If you do not know what it is - be sure to read it! With students who have just been told a lot of new and useful things, this works especially well. According to the students themselves, Code Retreat is consistently one of the best items in the school program.
Rest is also provided, but in reality it is only a change of brain activity: instead of writing code, we invite participants to play charades or a hat with words like “monad” or “encapsulation” and similar entertainment.

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 with students than adult programmers men. So, right during the school, we look at the teacher for the next school from the list of current participants.

Work in pairs!
This will not only facilitate the work of teachers, but also teach the participants to work in different teams, consult, share experiences. The rule is simple. New theme - new couple.

During a three-day school, each student can have time to work with a dozen other students. So they are all acquainted with each other!
Again, students are completely delighted with pair programming!

No hunting, no pay
We want to work with the best, so we do it for free: no fee for living or studying. Our goal is to teach, not to hire. Therefore, selection and training are carried out without any consideration of whether this person will go to work 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 coolants per square meter, then those who still grow into a good specialist will get bored and they will go where the concentration is higher. Thus, we not only risk losing someone from those who are already here, but we are not gaining anyone either.
On the other hand, we will not be completely upset if those who pass through the school, then come to us for an internship and / or a job, good, as often happens on their own! ;)
And the most important thing is feedback.
The importance of this principle is difficult to overestimate. Without feedback can not be developed. Therefore, we spend the last half-hour-hour behind retrospectives (yes, just like in Agile). As a result, you can very well understand which teacher is not cool (and you shouldn’t call him anymore), which topics went well, and which topics didn’t, etc. The harder the feedback, the better!

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