It so happened that I, on a volunteer basis, wanted to teach computer science in a technical lyceum not far from my work.
The headmistress otpinyvatsya for a long time, and with her character I am not sugar. Nevertheless, in September I was handed a grade 7a journal on the subject “Introductory course in computer science and programming”.
The guys are very active and funny. The class is friendly, but there is absolutely no herd instinct and hierarchy as such.
')
Almost immediately, I realized that the standard approach lecture-control will not work here - 2-3 people will accept it, and the rest will simply be scored for lessons. The fives are not important for them, but I will still be forced to put the marks necessary for the medals, finally knocking down the authority as a teacher.
As you know, it is very difficult to motivate such a team, and I decided that they should be interested.
After giving the first lesson an introduction to the main technologies that are used now in the industry - from C to Node.js, without hitting the details, and describing only the advantages, I asked to write on the piece of paper the technology that most liked what do you like to do after school?
In the next lesson, I pulled out a few of these pieces of paper and told me how I see a mix of things written. Improvisation impressed them. DZ - essay about how they see the union of these areas. And left his cell phone for those who need help in finding these links.
They immediately realized that it was possible to do dz for free. What I actually needed. I talked to almost every student, and at least did not remember their names, but wrote down everything that they were going to do.
The next lesson was devoted to the software life cycle, remote sensing - to start designing the requirements formed last time.
They quickly spotted that I was not going to check the homework, and I had only 10 projects on my desk, out of 20 people in the classroom.
I devoted a lesson to such a concept as “team”, told what architects, analysts, front-end programmers do, and where these professions came from, namely because of the need to separate data, logic and ideas. He finished the story with the words of Brooks that "the first system is doomed to be a failure," suggested rewriting projects based on the knowledge gained, and for those who do not want to study alone, find their team and define their role there. Those who are undecided write an essay on the topic “the role of information technology in modern society”.
A week later I had 6 projects, and one essay. The second, who was supposed to write an essay, was offered a troika and the opportunity to do anything in the classroom. As you know, there are no toys on computers :)
He agreed, but pride was hurt, and I played on it, promising to add one point for every hundred characters per minute. He talked a little about the ten-finger blind method, about the layout of the courtyard, about the IDE, how they help in creating complex systems, casually touched the profiler, debugger, interpreters, compilers and byte-code machines. He gave advice on how to select IDE (what is autocomplete, snippets, refactoring). With examples, he cited the need to use VCS, and proposed SVN for this purpose. I drew attention to the fact that the team would like to use the same versions of the programs, a few words about how this helps in exploring the capabilities of these programs. Well, as a ds - set up development environments. In case of questions, for resolving disputes or for obtaining student licenses, he offered to call me on a mobile phone.
The next lesson was devoted to abstractions, how to turn them into code, talked about methods of reducing the amount of code, reuse, showed with examples the need to create basic abstractions, detail about models, controllers and views, did not forget about the spiral, waterfall and iterative development models. DZ - determine how you will work, and create a working application that I could launch and test.
Actually, we did the rest of the quarter. According to the results, I put all the estimates. Fives exhibited publicly, telling what this man distinguished himself. Fours and threes without publicity in the diary, with a small comment insert.
In the next quarter, we were building up functionality, and when there were no issues, I recounted just for fun from memory. I immediately indicated that I did not require more than one and a half hours a week from them. If someone wants, can transfer the development to school - this is only welcome.
The third quarter, too, leisurely finished the projects, I talked about how the Internet works, how it developed, how they struggle with high loads. I didn’t forget the optimization, helped to set up profilers, showed how to use them and how to find bottlenecks, talked about stress testing methods. The guys were already absorbed by the project. Most of the time I spent the lesson in communication with small groups of students, trying to teach them how to use Google correctly.
The progress has increased - the guys really imbued, and the joint work only fueled interest. Moreover, ready-made applications have already begun to take shape.
And here is the fourth quarter. Testing. Realizing that among the teams, serious debates about the technologies used are on fire, I decided to play on this. They organized a competition - 2 projects, according to the results of having the smallest number of bugs, go to the conference to protect the school. Installed Redmine, told how to use it. To warm up, he gave ready-made versions for testing to the most active critics, a couple of tips on testing: checking the boundary conditions, entering incorrect data, using un-typical sequences of actions. Hinted that if the bug is fixed during the testing process, then it closes and, as it were, does not exist, and that any application can be tested, regardless of what task the team received.
Now we are at the finish line.
At the end of the year, we had very good applications.
The first one found all the axioms and theorems in geometric drawing + knew how to learn patterns and was written in ActionScript under AIR.
The second was engaged in counting the time when students should be at home, based on the electronic version of the school magazine, and if, until a certain time, the student did not come home and was not noted in the system, sent an e-mail to the address indicated in this journal. This is PHP + jQuery.
Simple, but not primitive.
As promised, I went with the guys to the conference, but unfortunately, we were out of competition, because In schools, computer science is taught from grade 9. But nevertheless, they gave us a chance to speak, we redeemed Muscovites, they also did not remain in debt. They gave us a projector, and we went home.
In September, we decided to combine our efforts by starting to write an API for projects. We decided not to be sprayed, but to cut 2 main directions - those who won last year.
Unfortunately, we missed the All-Russian conference, but in return we were presented with several soldering stations, booths and a bunch of electronic parts. But the guys still do not know about it, and consider themselves cool programmers ...
Truth be told - childhood is an unconscious happiness.
I look at them and understand that I was not mistaken with the choice of profession.