Into the wild. Results of the School of Programmers' projects in the era of self-isolation

For four months of classes, 54 lectures were given on two streams, backend and frontend, several cool workshops with live-coding were held. Hundreds of tasks have been checked, two hundred answers have been received for all questions. Then 2020 came and right after we removed the garlands from the trees, we all had to dress up in masks and put on gloves ourselves. And now, in order:







The tenth School of Programmers hh.ru has become special. Anniversary, a huge number of plans, an inexhaustible stream of students, the enduring motivation of our teachers and organizers. We have worked hard to make this release a model.





We have selected thirty people out of a thousand applications. And these guys turned out to be really cool, with a great desire to learn, a desire to overcome difficulties and become better.



At the same moment, our training moved into the project phase, and the IT world, as we know it, changed its shoes on the fly and switched to the total remote mode. This also affected the School: we urgently had to revise our plans, and transfer all our projects and learning processes online. And here I would like to thank our organizers and mentors for being able to urgently transfer all training to remote mode, schoolchildren who have reached this stage, were able to navigate and study effectively even from home, and all those who provided us with help and support. ...



All students were divided into teams consisting of back-end and front-end developers (although the division turned out to be rather arbitrary and someone had to try both), and under the guidance of mentors and our programmers who wanted to improve in team management, the development groups began to implement projects ...



In total, there were 5 teams, each of which worked tirelessly, eyes and brain for three months: planning and developing, participating in code reviews and retrospectives. The result was 5 projects that you are not ashamed to talk about and that you want to brag about, for example, when applying for a job.



You should immediately tell about the goal of the projects: in three months to teach the guys real teamwork, go through all the steps from planning and organizing infrastructure to working on UX and creating a full-fledged MVP. To do this, we offered each team one topic, which was supported by the mentors.



These topics are:



  • Service for the formation of commercial offers for employers - a service to support our sales'ov, which will allow us to work more efficiently, and our clients to receive truly individual offers;
  • An internal service for developers that allows you to gamify the coding process and create ratings for developers according to various criteria - the application must communicate with our GitHub account and show data about those developers who are faster, higher and stronger;
  • . / - :)/, - , - . , hh.ru . , , , ;
  • — , , . MVP google forms, , ;
  • Service for tagging vacancies. Now in our job and resume app, you can specify key skills that are priority tags for search and comparison. They need to be put down manually and they do not always do it correctly. The goal of the project is to automatically calculate tags based on other job fields.


Great projects, agree? Pulls for a separate web application or a full-fledged new feature of an existing application. By the way, if you had the opportunity to propose a topic or idea for a project at the School of Programmers, what could it be?



In the meantime, a few words about what technologies were used in the projects, and what were the results of the teams' work on the projects:



Team lead competency survey service



This full-featured web-based application that works independently of our main hh.ru .



On the frontend used:



  • react
  • react final form
  • redux
  • material-ui-kit to speed up interface prototyping


On the backend:





All parts of the application are wrapped in Docker.



The project team highlighted the following points as the results of their work: the developers created the service from scratch, implementing the basis for the further development of the corporate skills assessment system. We have gained experience in working with agile methodologies and code reviews. Created a close-knit team and had a lot of fun.



Developer rating service



It is a web service that runs independently of our main application and only relies on access to a GitHub account.



On the frontend used:



  • react
  • redux
  • final-form
  • date-fns
  • less as a preprocessor for styles


On the backend:



  • nuts-and-bolts (NaB)
  • jersey
  • hibernate
  • PostgreSQL


The entire application was divided into several parts: krona, which updates statistics from GitHub, a backend for calculating and analyzing statistics, a frontend for displaying charts, information and the rating itself.



As a result of the work, the team presented the MVP of their project, proposed several options for the development of functionality.



Service for the formation of commercial offers for employers



This application was implemented as a separate service within our ecosystem of microservices related to hh.ru.On the



frontend we used:



  • react
  • react final form
  • redux
  • material-ui-kit to speed up interface prototyping


On the backend:



  • nuts-and-bolts (NaB)
  • jersey
  • hibernate
  • kafka - as a technology for transferring events from business intelligence systems and web applications to a new service
  • PostgreSQL


One of the main challenges for this team was the need to also raise a copy of the MSSQL Server database, since this is where the data of business processes, analytics and clients is stored. A separate anonymized copy with data was used further for demonstration and testing.



Service to improve the quality of search results



On the frontend used:



  • react
  • redux
  • less as a preprocessor for styles


On the backend:



  • nuts-and-bolts (NaB)
  • jersey
  • hibernate
  • PostgreSQL


The students had to implement a complex model of interaction between users who evaluate the quality of search results, users-administrators who order the assessment and validate. It was necessary to understand how the search works and what the assessment and validation methodologies might be.



The best assessment of the project itself was the desire of the search product manager to quickly roll out the service to production.



Job tagging service



The most non-standard project that demanded from schoolchildren, in addition to the ability to program and build an application architecture, to understand the mechanisms for comparing, evaluating and transforming text in ML.



On the frontend, to implement the admin panel, we used:



  • react
  • redux
  • less


On the backend for collecting and analyzing data:



  • nuts-and-bolts (NaB)
  • jersey
  • hibernate
  • PostgreSQL
  • Apache Lucene
  • Yandex.Tank - for load testing


The main challenge was immersion in ML, study of TF-IDF, PMI metrics and their derivatives. At the final demo, the team shared that the main difficulties in implementing the algorithm were: the lack of sufficient time to analyze the data, the lack of quality metrics to compare algorithms, and a very large variability in the model parameters.



We are confident that the ideas and their implementation turned out to be worthy of our anniversary School. And 22 graduates will become excellent programmers - why be modest, they have already become. We invited 11 of them to work for us, and the rest will provide recommendations and made efforts to get the guys into a good company!



If you are interested in any of the projects, write about it, ask questions. If one of them "shoots", then we will definitely ask the team that worked on the project to tell us more about it.



By the way, admission to the eleventh School of Programmers is in full swing.   Moreover, this year we are completely moving online, and in this regard, we have increased the number of places to 40, and now applications can be submitted from any city of our vast! If this experience is successful, then we will make every effort to keep the School online forever.



The training is completely free.



The admission algorithm is simpler than bubble sorting:



1. fill out the form on the website



2. complete the test task



3. go through an online interview with our employees



We are waiting for you at our School!





Have a nice day and remember Moliere, let us summarize: "How nice to know that you have learned something!"



All Articles