📜 ⬆️ ⬇️

Through hardship to the stars. History of the internship program

I do not like the current market of web developers. In particular - Moscow. Actively do not like. Requests are high. The experience is small. And if it’s great that the code is often scary, team practices are not developed. Where these N years worked - it is not clear why they didn’t develop - no one knows. And you rarely find in the resume at least something from XP (review and CI, not to mention the pair coding with TDD) ... And so that not just “heard and always wanted”, but “know how to cook” right away - as you can see, They are not particularly looking for and, in all likelihood, chained in offices to batteries, they are quite happy in their roles as lead / timlid / architects.

And even if you agree on cooperation with an adequate-looking person, it is not yet known what will happen to him, how we will work together, whether he will join in as you expect. And there is still to check whether the impression of a person corresponds to how he will manifest himself in the role of a specialist.

So, there is a problem - we will act.
')
And we opened an internship program. Well ... so as not to lie: not exactly that they opened it, and not even the Program, but with a source of theoretically prepared, but practically inexperienced guys were found and agreed, they posted an announcement on the source forum, and I waited at the sea for the weather.

Next is a lyrical story about how it was.

Was given:



It was not given:



What to do with such sources is not very clear. Therefore, I put on an innovative, flexible methodology “I will begin, and then we will see.” And they went to the application (a little), but a lot was not needed. The selected methodology has banned a sharp start.

Some more input data
avoskinyh solutions and emotional languor.

Of course, we will practice in PHP (more often php-developers are needed, and the language for beginners is quite appropriate). And you have to accept that it will be Win. But we will take the bar high. Since almost no one has been coding on a “clean” php for a long time, let's take a framework. Of course, Laravel (wide functionality + we use in our projects + I personally like it). And Laravel also has a lack of Russian-language support (even if they immediately realize that they have to be able to work with English-language documentation ... only ruthless hardcore). Since there is no time, the “kindergarten” is unacceptable, therefore, a quick “drop-out” of children who are morally not ready for such an active practice is necessary. Plus, we need automation of the process, again, due to lack of time.

In addition, the internship should be a team. It must include git and group work on tasks. At the start, I naively thought that the tasks of future trainees would be brought to me on a platter (with a knob), and among them there might even be brilliant things that we will sell to Google for millions of money. But a backup plan is always needed, and he was: invent tasks for interns himself.

Two words about the height of the slats: we have complex projects. Basically, b2b-services on a financial topic (where there are not even fronts), only api-services and the implementation of all kinds of gates according to specifications. And we decided to do an internship (I remind) for a reason, but to develop activities in our field and to provide a personnel reserve.

And yet - “kicks” on my part should be completely absent. If the intern really wants to get practical experience, if he is motivated and interested, he will push me himself. I gave myself a pledge: to react in a timely manner and help constructively. To provoke activity in those who do not move themselves, did not see the point (again - time!), And be according to this.

Having thought through this whole strategy, I did not assess in advance its success or failure. Since I did not know which contingent to work with. Another flexible methodology to note is: “do what you must, and come what may.”

Playground


Due to the need for teamwork and the absolute uselessness for anybody of our own “corporate site”, the site of the FINTEK_FAB company was chosen as a platform for interns. By itself, the idea was born that the internship will be open, we will do everything on the git hub. No additional “troubles” in the form of dev servers and ticket systems were useful.

Trying at first to somehow systematize my work on this project (I am still a manager, and fearing a large flow of chaotic-minded trainees, could not do without a sharp attack of “management”), tried to formalize the process in Trello, then in some other This is a tick-thing, but this temperature quickly fell asleep and in the end everything remained at the level of tasks + commits in the git hub and in no way regulated Skype communication. I didn’t even have an Excel file, so I didn’t need to keep a record of the participants.

Start. Automation is our everything

The first thing that was done was, of course, the wiki resource, which described the long and tedious process of preparing the working environment on a win-platform. Which, theoretically, should be simple and universal, even for completely zero practitioners. Following the task of "high bar", Denvers and other LAMP-glasses under WIN were excluded completely. For lucky craftsmen linux-s was made the postscript “do it yourself, you can”.

In short, automation included a Vagrant configuration, a specially prepared and configured with all lamp-based software box (VirtualBox) on the ubuntu server, and a handful of instructions on how to run all this on windows. It was also necessary that it all work with PhpStorm (for two reasons: this IDE is used in our teams, and I didn’t want to delve into the subtleties of other environments). Ideally, the trainees with a slight movement of the hand should have started a working copy of the project with all the necessary body kits.

Note: when I started to regret about this decision with IDE (100 bucks then for a personal license - not superfluous!), Then under the internship program (more precisely, the result in the form of open-source libraries) in JetBrains gave us a free license, for which they - Separate senkyu.

After the appearance of Laravel Homestead, the instruction quickly moved to this feature, since With the first version, I have suffered enough (everything is too short), and it (feature) already provides a fairly powerful and flexible config for Vagrant and a supported (hurray! no longer by me) virtual box machine. (Who else is not familiar with the tool: Laravel Homestead can be used not only for development on Laravel).

First applications


Interviews as such, selection criteria, and so on - simply did not exist. He answered (and continue to act in the same spirit until now) - to everyone. A person sends a request, I ask him to find me on Skype. Next, contact, explain what's what, I answer questions. I voice the main points:



And it began. It was fun. I was worried that I chewed too much on setting up the development environment and wrote too many beeches on the wiki resource. That such prepared dudes will come and will not respect me for it. But everything turned out to be much more prosaic. At the entrance were expected people who received paid (O_o) theoretical training for 1-2 months to develop in PHP (O_O). But it immediately turned out that this training did not even include rumors about:



But perfectly guessed about the background in the form of software a la almighty Denver. I would not even take such people as cosmonauts, let alone code in any of our projects. But in the internship - what to do! I thought. Took, as they say, for a tug ... Wiki resources were added even more. The first participants brought a lot of profit in the form of an understanding of what to do with all this now.

Initially, I planned to eliminate theoretical training completely. Those. expected at least those who know the theory of php - who came then to learn how to code it. In general, the way it happened, but the above failures in the theoretical part had to be closed nevertheless.

Therefore, I started with those who could drive up to our office (a group of 4 people), and started a simple technique: small thematic workshops: introductory to the framework, demonstration of working with git-ohm, distribution of small simple tasks. With all this, I was actively helped by developers from the state of the company.

At the same time, the trainee's profit also appeared:



Eh. Would give me such opportunities for practice when I was just starting my journey in web development ...

On the results: after a couple of months, the first group naturally fell apart. We managed to do an internship section (to submit applications directly, and not through the source forum), a couple of tasks that did not fall into the git hub, sending letters and something else simple. In addition to coder profit, they received from me a wagon with a cart of all sorts of clever advice on the life of a developer — about how best to look for work, and about how to be friends with a possible future team, etc. One of the guys then successfully used the advice (got a job and was rumored to be quite satisfied), and one remained with us. Made a useful service - the kiwi system emulator. Now helping me with new interns. The rest are “missing”, and I hope only that my work has brought them a significant share of the benefits.

Remote



According to the results of the first participants after the optimization of the processes of “entry” and internship tools, I decided to open the field of activity to remote participants. Intentionally complicated his life, to put it mildly. In addition, we had to be left alone (our regular soldiers could not help in the format of remote work). For remote trainees, self-tuning of the work environment has become a strict condition for entry. That the result was quite a serious barrier.

About half of the applications after the first acquaintance and the task to set up a toolkit for work disappeared immediately and completely. For reasons unknown to me: in view of the relatively stable flow of applications and the extreme time limit, I deliberately did not seek feedback. It was enough for me that a dozen people had not previously had any problems with setting up the working environment, and they were all arranged.

About a quarter: asked questions, helped with tips and links to materials (I forbid myself to chew up the steps), but apparently they were expecting something simpler; someone could not cope with ssh-keys for ubunt, someone stopped at the stage of working with git-ohm.

About 10% more coped with everything, but then they disappeared too. Likely because summer and kitchen gardens :-). Nevertheless, the reason in this case was obvious - the starting “fuse” went somewhere else. They wrote to me about it, apologized, promised to return to the tasks, but never returned. All I could do was to console me with the fact that “you are not obliged to me anything, but on the contrary, I am asking you, therefore contact me at any time”

In general, the guys were treated in the majority of completely “null”. Probably my policy of entry level and refusal of detailed assistance was an obstacle for further work (but this is only an assumption). Many (I think) simply found themselves another (more formal) internship and learn the same (we keep silent about quality), but not for free.

Frankly speaking, I am not at all interested in why they did not want or could not continue. Since this is not yet part of the goals and objectives of the internship. And I needed those who will independently pass the first stage, having shown a sufficient level of patience, and then I will be able to teach them how to code correctly (in the right environment and on the right tools).

What else is important to note, there were no fools among the second half. I was afraid of everything and invented ways to politely dare especially "gifted", but they were not there. And all of my artistic and literary blanks disappeared in vain.

But enough about the sad


The remaining percentages successfully (and some people, having experience - very quickly) - overcame the starting piece and received tasks. Curiously, no one brought the task himself. I had to invent, invent something that should be useful and interesting.

In order to avoid individual work, I began to “dig” various things for webinars with a desktop demonstration, with the ability to remotely “poke fingers into the code”. About this you can write a separate story. It was investigated pieces of 20 different software on this topic. Many did not work at all. Many worked, but only for some participants. Plus it was difficult to bring several people together at one time, and then it turned out that they could not see or hear anything ... And everything was new. As a result, everything turned out to be completely working only in citrix (but still lagged the delivery of my screen in real time), and ultimately I settled on webinar.ru (that's where it all worked without complaints, only guys with narrow Internet had sorrow -channel).

And now that all the problems with the toolkit have been resolved, the effectiveness of remote “seminars” turned out to be significantly lower than offline workshops. This is not the webinar - when you simply “broadcast” (and let it be rich to the one who listened and poorly - to all idlers). Here I needed understanding and “hearing” - I couldn’t allow myself to later repeat to everyone what was voiced by the whole group. Subsequently, the number of self-contained, unasked aloud phrases “I told you so” just went off scale.

The Age of Individualism


The flow of requests was stable, but there were not many guys left in the active part. For reasons of uncomfortable webinars, as well as a small number of active audience, temporarily stopped the webinar approach and decided to try to work individually.

The process went now like this: we agree on a task (or one task falls on a whole group), the guys coded, they write to me in readiness, I take a branch with the task, I look at the code, I leave comments and a link in it in a separate branch. Github perfectly shows all my “cavils”, the intern takes (or not quite) all of them, and makes the next “release”. All differences are resolved via Skype. When the task is more or less implemented, the most time-consuming begins - you need to test. And of course I immediately catch the “shoals” that block further work. I report errors, and so on.

And suddenly I discover that we are now working on a “standard” development process :-) I’ve been so enthusiastic about trying to optimize my cooperation with interns that I didn’t immediately notice how the process went on such familiar rails.

About communications


Nothing complicated. The main thing - everything is honest, respectful and prompt. It is impossible to disappear, it is impossible not to answer for a long time - this is at least disrespect. You can not refuse, because it is contrary to the idea of ​​the project started. I warn participants of all difficulties and dangers in advance (this is another possible reason for the disappearance immediately after meeting). For stupid questions I answer with links in Google. On smart - I understand, I help solve problems. It takes a lot of patience and willingness to repeat the same thing (different people). And a certain limit of rigidity is necessary in order not to waste time idly, not to “sew up” and not to lose interest by yourself.

And it was always important not to miss those who are really interested. I am fully aware that people with initiative, quick to mind and sane - there is room to go, except for my not very systematic initiative. And now, when only the most motivated have remained of many dozens, who work together on tasks and help each other — I have less and less time, problems are solved much faster than at the beginning; The process goes on the trodden path. And ready for new experiments.

About the results


Experience - he is such an experience. That which I was afraid at the very beginning is now not to remember. The potential difference of the interns is great. The amplitude of sorrows and joys from the failures and successes of different people is high. The brain periodically goes into debug-mode and sometimes does not want to return from there. Ways to solve the same small tasks are not that amazing (which code I haven’t seen), but sometimes they are put into perfect stupor ... it’s kind of “wrong” done, but it’s unclear how right it is). In some things, some guys fail to argue, from their small experience they find impenetrable arguments in favor of their decisions. But for me personally, this event perfectly removes the oxidation of the brain covered with “long time experience”. And it significantly expands the horizons of perception of technical and human development problems.

In the dry residue, from me there are guys who:




To Be Continued ... As soon as possible





Pruflinks


fintech-fab.ru/vanguard - a section where you can apply. He is also a “corporate website” and an intern patient for experiments.
wiki.fintech-fab.ru/doku.php - the same, frightening novices, wiki.
github.com/fintech-fab/fintech-fab.ru - githab.
github.com/fintech-fab/fintech-fab.ru.homestead - configuration for vagrant.
laravel.com/docs/homestead - Laravel Homestead documentation.
fintech-fab.ru/qiwi/gate/about - so far the only task brought to a “complete mind”, implemented with excessive thoroughness, covered with the right tests with mocks and dancers, using asynchronous processing through task queues and http callbacks, designed as packages connected via a composer (agree ... to write such a thing in a resume for a junior is not weak, m?)

UPD: I do not understand why the commentators create the opinion that this project is for students only. I did not tell anything about the social and material status of the internship participants. Probably, there is an omission in the post, but I will not correct it in detail. Just to mention that at the moment, the participants of the internship are not students, but adults (from 20 to 56 years old), all have (judging by the initial information) a stable financial and social position. Work with universities only in the plans, because This requires funding for our project and a special intelligible concept of work in the student area.

Source: https://habr.com/ru/post/236207/


All Articles