The main office of Rus Wizards is located in the small town of
Taganrog , and even the presence of an
institute by the side does not lead to programmers queuing at the door. Only one way out - to raise personnel within the company.
But we were not taught to teach, we were taught to program, so everything had to be mastered by ourselves, reinventing bicycles, falling from them, stuffing cones. It has been almost a year since our first student practice took place. We can tell you about what we came to and how the learning process is organized now.
I will tell on the example of the native development department for Android, but the main points will not change much for other areas.
Determine the base level
First, the future employee is interviewed, where he answers general IT-related questions and Android-specific questions. Identifies weaknesses and the level of training of the trainee.
We issue literature
The trainee receives a list of "literature". This is an internal coding standard (90% based on the
Java standard) and the Apress book on Android
2 , and
3 .
')
We issue a series of "Laboratory work"
Now the trainee needs to reach down to some basic level. We have a list of short assignments, a maximum of one day, on the main aspects of developing for Android, this is:
- Intents (Intent)
- Activity
- Application Settings (Shared Preferences)
- Services (Service, Intent Service)
- Lists (ListView, ArrayAdapter)
- Layout
- Multithreading (Thread, AsyncTask, Handler, Thread Pool)
- Work with the system (BroadcastReceiver, ConnectivityManager, LocationManager, SensorManager ...)
- Http
- Databases (SQLite)
At the same time, the ability to work with the main tools for version control (Git) and task tracking (Redmine) is also checked.
The first "combat" project
As soon as the intern has matured, he, under the control of one of the developers and / or managers, starts his first interesting project. Especially for this, the company's internal forum has a section “I want a program for myself”, where employees can describe the idea of ​​a good program, which does not exist yet, but we would like to. Not necessarily the idea should be new, the argument “I don’t like everything that exists, because ...” is absolutely appropriate. The project is absolutely complete, and this is emphasized, the only way (in our opinion) it will be interesting for a person to do it. Also, the goal is immediately set - publication in the Google app store (or Apple for iOS). Within the framework of such “student” projects, for example, mobile clients for the oDesk exchange (
Android /
iOS ) were made.
The combat project is designed for a period of about a month. Thus, on its termination the probationer’s probation period also ends.
Results of the project
The designer draws up buttons, icons and other pleasant tinsel, so that the result looks more solid. The project is published, and the intern in parallel learns to prepare programs for publication.
+1 programmer
Now, and only now, we have a ready-made programmer to whom we can assign projects coming from customers (the company is mainly focused on outsourcing). A situation in which someone from the authorities will say, “What does that guy do? Let us do XXX! ”Is unacceptable.
Of course, successful work is encouraged materially and, more importantly, morally and publicly!
Not all! Internal "conferences"
The programmer is ready, but he still has little experience, so we hold internal mini-conferences. The format is as follows: at the forum, employees offer interesting topics related to work (cloud services, multithreading features in Android, PUSH technology, etc.), while young professionals take on one topic, prepare and give a short report for 10 minutes. As a result, everyone will learn about the interesting technology (at least in general terms), and, to make it even more interesting, the best report of the month is encouraged by a gift (which almost nobody knows beforehand).
How do you grow specialists? What are you doing to make employees interested in moving forward?