Teaching experience at a development school, or why you need to go to school after university

Digital Design was one of the first companies to use .NET and C # in their work and became Microsoft's official coaching center. Education and Digital Design have gone hand in hand throughout our history: we have an IT university, we constantly run schools, we have been Microsoft's gold partner since 95, we have certified trainers.

When we launched the first development school, the problems with the qualifications of the personnel were completely different, or rather, there was a problem of their absence, as well as the lack of the necessary information. Now Microsoft is actively promoting its technology and investing in training, so if a person wants to, he can find all the information himself and become a programmer. We are visited by specialists who own the technologies that we use in our work, but to quickly incorporate them into practice, we needed a tool - the goal of organizing a development school was gradually transformed.



Why me and why the development school


My name is Suren, and this is not my first article on Habré (there is also about .NET and Sitefinity ), but today I want to talk about my teaching experience. Over 9 years of development, I have gained a lot of experience that I wanted to share. At the same time, it seemed to me that working with interns was not always built as efficiently as possible, because during the working day it was not possible to allocate enough time for structured training.

The other extreme is university teaching, which requires specialized education (√ done!), A huge desire to teach and share practical experience (√), lack of main job / free schedule (X), love of academic knowledge (XX) and a lot of free preparation time (XXX).

As a result, the .NET development school based on Digital Design IT University became the ideal options for me and, it seems to me, for beginners . And, importantly, for the company: thanks to the school, we were able to get to choose the best personnel, train them and, one might say, turn them into work.

Preparation for school


If you have not taught before or do not want to follow ready-made programs, then you need to spend 3-4 times more time to prepare for the lecture than for the lecture itself. I also decided not to follow the trodden path and make the program relevant: with the latest chips, tips and hints, because a good IT teacher is even more about experience than about knowledge (knowledge is now more about Google: there are probably no specialists who write code without internet). Plus, working with a prepared audience is a little more difficult, because you do not always understand what level to navigate to, so in the first school I decided to dwell on the information that I received during the work, referring to general concepts and terms.

And still a little theory


I prepared thoroughly for the first lecture, thinking over the plan and making sketches of what I needed to say. At the end of my clear report, I realized that only 10 minutes had passed, and it was time to start a pure improvisation. I quickly realized that students come to us first of all for real examples and cases - so we quickly moved on to tips on naming, database structure, how to forward data to the front and back. By the last 3-4 lessons, we went to mini-master classes: I coded with students, stopping at explanations and questions. For example, here we connect using in order to use the methods or properties we need, here we connect an additional library via NuGet to interact with the database as a set of entities. Then it became clear that the effectiveness of such lessons is maximum,but their intensity does not allow students to perceive all information in full. I had to shift focus, alternate types of information, etc. Much depends on students: if you don’t take the time to study independently and remember everything that was in the lesson, you won’t achieve the result.

Let's move on to practice


Of course, the theory is useful: simply without the knowledge of terminology, you will not be able to start practice, but because of the short training periods, we had to choose an accent! In fact, it turns out that for the lesson we give maximum material, and some people are screened out, but those who come to the company as trainees have already really learned the material and are ready to work. But our goal is to get the best staff, so the level of education and expectations from students are very high!

Often education sins isolation from applied tasks, and I quickly realized that even showing the work on concrete examples, students do not always understand how to use it later. In addition, if at the end of the course you expect students to have a level of knowledge sufficient to create a simple application, then you need to go this way with them at least once. Therefore, we decided to quickly proceed to the “Do” stage (or rather, “Repeat after me”), and soon began to learn by creating our own application. I explained what designing a database architecture is, how to work with it, and during the lecture we started developing an application. As part of the development, I touched on various topics: interaction with the file system and databases, working with images, uploading / downloading files through the interface, direct download,synchronous interaction - in a word, things that make it possible to understand what a language can, what form can and how to use this knowledge in the framework of test development. Using an example of a simple photo-sharing application with the ability to select additional functionality (determining geolocation, messaging, etc.), we examined the general principles of interaction with the platform. It is important that after the students have all the video recordings.


We acted in stages: we designed the database itself, filled it with content, made a drawing form, editing a user profile - all this is interconnected: if in lesson 1 we talk about templating using a client as an example, in the next step we do server-based using a template templating language that renders both on the back and on the front equally. This allows us to create an application that gives content immediately and downloads in the process, without changing the style or reconfiguring the templates. Along the way, we delved into technology and how to build queries in such a way as to quickly find answers, how to work correctly with the database, how to interact with the server, touched upon security issues - all this in the form of a master class. Of course, at every step I code in real-time, make requests and show how to achieve the result.This allows you to understand the basic process of system design, and then everyone can come up with something of their own and show these chips on the final defense of projects.

In the second school, it turned out to structure the practical data that a specialist needs to get to work. As a result, we got the largest harvest of interns who went in different directions: from automation of business processes to mobile development.

We are looking for information


Interestingly, such a simple skill as a quick search for the necessary information is very important during development. The key point here is the ability to clearly identify the search query. My first mentor constantly sent me to Google, answering my questions with links to the search result, he taught that request formation is an art. So the basic skill of constructing thought is useful here, otherwise Google may ignore you.

For instance.

Possible beginner search query: how to embed a database in a project / errors of embedding a database in a project / error text itself.

Possible developer request: include localdb in C #.

Essence: It is always better to search in English, since most of the manuals are not translated into Russian / translated by a person who does not know the terminology. By the way, about it, yes, for an exact request, you must necessarily know the terminology. For example, in this query, one of the types of the database inside the project is called LocalDB.

We stabilize the level of knowledge


The degree of knowledge of graduates of 2 schools could not but rejoice, but I was worried by the moment that, due to different issues and emphasis, the knowledge set of students of different graduations could be different. Of course, the set of tools that I use in my work is much wider than I give on the course. This time we managed to get to the concept of SPA applications, in the first 2 schools there was not enough time for this. As a result, we aligned the training plan, increased the duration of classes and their number in order to stabilize the volume of knowledge.

Error handling


To get as close as possible to the real working situation, sometimes I make mistakes that are often repeated (for example, when we make an Ajax request and incorrectly specify the types, we can’t understand why the backend is processing, and the front considers this an error / when we send data in the wrong data type to the back, and he tells us that nothing came) and I show with an example of debug'a what exactly is going wrong and why it might fall in this place. For example, when we output the template to the page layout, then try to use it, most often the characters can be escaped, and we will output unformatted html (the template will work, and html will be in the form of page tags) - we also learn to avoid all these typical mistakes. And all of these materials will be especially helpful in recording.

This, incidentally, is an important point: to consolidate the material, be sure to use video recordings and, of course, chats for communication. It is important for us that the guys constantly have a complete code and the ability to ask questions.

Learn on specific tasks.


Now the problem in the staff for us is that there are no ready-made specialists under our stack for the position of June. Even if a specialist has studied the issue well, it is unlikely that he will be able to combine knowledge of technologies to solve a specific problem, because it is impossible to learn a programming language without tasks. Most often, companies “chase” the jones in theory, and we quickly turn them into work. As practice shows, graduates of the school can as soon as possible (usually after an internship) start writing code that can be entered into the project after 1-2 iterations. The more high-quality information will be presented on the course, the faster they will be included in the design work, and projects are the life of any IT company.

If they ask me for advice, then ...


... I would advise students and novice specialists to fit in everywhere: mitaps, listen to reports online and offline, to keep abreast of all events, as technology is developing at such a speed that if you do not run, then you lag behind. It turns out such a dropout of specialists who are not involved and who are not interested - you just fall behind. In addition, take the opportunity to attend events at a student discount (spoiler: then no one will motivate you anymore!).

... for teachers, and indeed IT specialists with experience of 3-5 years, I would advise you to try it! If you even think that you cannot teach something unique, remember that for someone your experience can become a real insight. Working for a long time in one area, it may begin to seem that nothing interesting is happening, but there is always something that you know and know better than others. In addition, routine tasks for you, for someone today are a real challenge! I remember once I showed juna a simple solution in my opinion, and for him it seemed very unusual. He understood this example thoroughly and gained experience, and this is the main thing!

Instead of output


As a result, I can say that the scheme "abstract educational institution - school at the company - internship - work" is more effective than the standard "abstract educational institution - internship - work", because after 500 hours of internship the student does not always receive what we give at a development school in a few months. School is enough to gain general knowledge on the principles of standardization, interaction and quickly make an “instagram”, and with this you can already start working. At least this is our experience, and now we send applicants to the school

All Articles