“Those who know, do. Those that understand, teach.”
Why did we train?
Have you ever run a hiring cycle and all candidates appeared to have some important skill missing for your position? We have been there too and we are presenting our solution to you.
For us at Noor Games learning is a constant process. It is one of the cornerstones of our company philosophy. We were planning to start regular courses for future game developers at some point during the growth of the company. The intent was to pass the knowledge we collected through our experience to the newer generation, so that they could start their careers with a much higher level of expertise than we did years ago. The main reason for that was our desire to contribute to the information technologies sector of Armenia.
While these we considered to be just future plans, we were facing a very urgent issue, and the only way of solving it was to start the trainings immediately. That issue was hiring. To satisfy the growing demand of workforce for the projects we were working on we undertook a hiring cycle. For months we interviewed developers of various expertise and backgrounds with the main focus on C++ developers. We realized that the young and motivated did not have the minimum required qualifications needed for our positions, while the already mature professionals with many years of experience were usually working in large and stale companies. Their routine mostly involved developing features around legacy codebases and fixing 20 year old bugs. The ones that had the coding and software engineering skills we were looking for did not want to give up their usually unproportionally high salaries and other benefits for being part of a rapidly growing company and working on highly demanding and challenging projects in a motivated team with a great atmosphere.
So after long hours of interviewing dozens of candidates and realizing that our requirements would not be satisfied, we decided to train, and train as soon as possible…
How did we prepare?
Before we could announce our training, we needed to create awareness about our company, as well as our knowledge and skills.
As a startup, in a market with many companies aging decades which have had hundreds of employees, gaining exposure was a difficult job.
As the first step we chose to demonstrate our teaching abilities and methodologies via creating Youtube videos. They were focused on nearly basic concepts of C++ which were usually not discussed in university courses or similar trainings in enough detail, and left questions open for people just getting into C++. After posting them and sharing with current and past colleagues, we understood that we were on the right track. Even some experienced developers admitted to have found answers to questions they carried over from when they were just starting their programming.
We started posting our tutorials and sharing them on the social media. Now we remember the days we were counting every single view on the videos with a smile.
In parallel with the work on exposure we solved issues regarding the logistics of the trainings, as well as the content and the curriculum.
Overall the preparation stage took about 3 month.
At the point when we were ready to start the trainings we held a presentation regarding the gaming industry, its history, and the current technologies used. During the event we announced the plans for the trainings.
How did we do admission?
Using social media we shared the information about the admission process. 24 people were interested. We held 2 rounds of examination aimed at determining the skill levels of the applicants. The strategy for choosing them involved finding the largest group of people with almost the same level of skills in C++ and OOP and building the group around them. From the initial batch 8 were admitted to the course from whom 6 completed the course. The age of the students ranged from 20 – 30 years old. The majority of them had basic knowledge of programming concepts and C++, and some also had some knowledge in OOP.
What did we teach?
The course lasted 4 months. Trainings were scheduled to happen 3 times a week and to last 2 hours. However, the lessons usually lasted for 3 and even 4 hours. Since the students had only basic knowledge of C++ and little to no OOP knowledge, the largest portion of the course consisted of lessons on C++, data structures and algorithms, and OOP principles. Those were delivered with examples that also taught clean coding practices such as SOLID (R. C. Martin 2009). The last 10 lessons were focused on training in the Unreal Engine 4 game engine via developing a PacMan style game. During this course the students had to learn to use device inputs for controlling the PacMan character, AI for different strategies of attacking the character, rendering techniques for having different materials, physics for collisions, and other game engine aspects.
In addition to teaching programming, we used Agile methodology for organizing the training process, Git and Bitbucket for source code management, and Slack for communication. This resulted in a transparent and easily controllable environment for assigning homework, assessing the process of collaboration between teammates, and identifying areas of struggle. Also, the environment we had built mimicked the working environment of a real company so that the students would not need additional time for familiarization when employed.
What were the challenges for us?
The biggest challenge we had to overcome was the fact that we needed to train the students to a level that we needed in a very short period. We did realise that the amount of knowledge we needed to pass within 2 months generally takes 5 academic courses. Within the timeframe set we needed to deliver the information in a manner that would allow the students not only to understand but also to absorb it and to transform that information into sustainable skills. This was achieved by closely monitoring the Slack channel used by the students for discussing the questions related to course content, the commits in Bitbucket for the homework assignments, and having frequent Q&A sessions with each and everyone who was having difficulties of any kind.
The homework assignments were designed in a way that no single student would be able to solve it completely. The students were able to effectively distribute the work on different aspects of the problem and collectively solve problems which were above their individual skill level.
Thankfully, after tremendous efforts, we ended up being satisfied with the results and considered our goal achieved.
What are the results?
After the completion of the course we have hired 2 of the students. A huge benefit of hiring employees after a lasting interaction during the training in contrast to selecting them via interviews was the amount of information we could gather regarding not only their professional skills but also personal qualities. The latter include their attitude towards learning, attacking complex problems, receiving feedback from peers in a productive manner, and being a strong link in a team.
Another 2 of the trainees became developers in other IT companies in Armenia. In total this equals about 70% employment success rate for the participants. Compared to other similar training courses this is an exceptional result. As a company whose main focus and prior experience is in software development and not in education, we consider this result a huge success and something to be proud of.
We should also mention that in spite of our efforts those results would not be achieved without the determination, strong motivation, hard work, and sleepless nights of the students.
What did we learn?
Before representing a topic to the students in the class we prepared for it thoroughly. This refreshed our technical skills and also gave opportunities to discover new details on each particular topic.
We also learned a lot about the specifics of teaching the nuances of the topics to the students. Thus, during the course, many things were modified and corrected regarding the teaching methodology. For example, at some point the students were divided into pairs of stronger and weaker students. This resulted in the weaker students being able to grow quickly. Also, through teaching their weaker teammates, the stronger students improved the newly acquired skills and were able to understand what they had mastered and what they still needed to work on further.
At the same time, during the course we identified the points that the students were having the most trouble with and thus needed more time and attention.These points will be considered when designing future courses.
We also realized that it would be better to make the course shorter and more focused on specific aspects of game development, as well as the level of the group. This would make it easier for the students to absorb the material. Furthermore, in our future trainings we plan to admit students of a higher level, so that we can focus less on the basics and dive deeper into advanced topics more quickly.
What do we plan to do?
In conclusion, as the result of our efforts we have successfully trained candidates that suit the hiring needs not only for us but also for other companies in the industry. Needless to say, in contrast to familiarizing with the future employees only through interviews, we were able to base our hiring decisions on data we received during long and involved interactions.
Our success proves the effectiveness of our approach, and we plan to do similar trainings in the near future.
Please ask your questions and share your experience in the comments below. Don’t forget to subscribe to our blog for more posts like this and Like our Facebook page.
Vahagn Harutyunyan, Team Lead at Noor Games
Narek Aghekyan, CEO at Noor Games