Code set: how to find good programmer



© Kevin van Aelst

How to find the sensible programmer? The challenge facing all IT-startups. On the recruiting resources you can drown in a beautiful summary of candidates with minimal experience on the matter, and sensible specialists either do a startup, or ask for more money. Conversation with business owners and technical Directors of companies which regularly have to hire coders, and know where to look for a trustworthy professionals, what to ask at the interview and in some cases it is necessary to give tasks to outsource.

Alex Pospehov, founder ICONIC MOBILE

To find a good programmer — the task of a different order than the search UI/UX designers and project managers. If you hire employees in sales or management of their quality and experience is clear in the initial communication, then no hard verification to understand the level of programmers is simply impossible. Search for answers my right hand in the business, our Director of development Daria Vorobyova was managing all our projects. We publish information about vacancies on large portals type HeadHunter.ru and at all branch sites where you buy access to a database summary.

But global resources like HeadHunter.ru on finding the right professionals and filtration summary takes a lot of time. Help social networking — mainly Facebook, where their friends always find the right people. Many ads we publish in thematic groups — it works. In a week we get about 10-20 a summary of the proposals, but in most cases it's either no experience, or programmers who made one application and imagines himself a guru iOS development.

Summary if we still liked it, we invite the programmer to the interview. It takes place in several stages: correspondence, communication via Skype with a group of technical specialists, where they ask the candidate questions about the process of development, experience and technical knowledge, and going after personal meetings.

Very often the people I hired in a hurry, showed itself with a phenomenal hand, working from morning till night, and those I "screwing" long, was not able to work in hard conditions. I'm not making any conclusions on this issue by itself with the seventeen years it has replaced nearly a decade of work places and watched how different can happen this process. Another thing that is important to specify the rhythm of life on the shore, because if the person does not fit into it, no other bonuses you will not hold up.

Alexey Simonenko, co-founder of Academy HTML In my experience, the most efficient way to publish job vacancy on the site to find work and support it with posts in their public — equally in Facebook, Vk.com and Twitter. My personal publications that go through the company's channels and personal contacts, give a good effect.

Unfortunately, most of the knowledge described in the summary and the actual knowledge differ significantly. If a person is confident, can write, knows something, although only heard about it. Need to check this, so after a conversation on abstract themes, identifying the needs of the candidate and determine the current level of knowledge is necessarily a small task. I'm always interested to see how that person will solve a particular problem. It is best that this happened right during the interview.

For me there is no difference between the familiar and unfamiliar. The most important is the actual skills and requirements of a particular job. For example, when I worked at the Agency, we got a programmer on the advice of the designer. He worked with him before. I didn't have any specific expectations, but in the process he showed himself a good specialist. Even more than I could expect. On the other hand, came to me once a very young girl. Nobody recommended that, but at the interview she showed a good side. Hope it had been high, and she did not disappoint us. And bad examples are everywhere, but most of these candidates are eliminated at the interview stage or test tasks.

We consider candidates from other cities — most importantly, that they have had a great desire to work with us and grow in your direction. The city is a small problem. You can always work remotely or we can help with the move. Now we have two guys from Taganrog, and two from Severodvinsk.

Yaroslav Markin, founder and CTO of Evil Martians Questions, of course, depend on what we expect from the candidate for the specified position. I am a supporter of the approach, in which interview do easy enough (basic questions to test General level of the candidate), and the test task is difficult. In the end, you can't hire a developer without checking the quality of code it produces.

However, I can say from experience that even a slight job interview bears fruit and helps to weed out a huge number of candidates: a lot of professional programmers who received decent wages for the knowledge of a language or platform, often do not know the most basic things — and this is a potential problem with the application security and performance and low-quality code from the start of development, which makes support of an application complex and expensive in the future. The most basic issues of safety, features and structures of language, patterns of object-oriented programming is often sufficient to understand the level of the candidate.

As for the portfolio: be sure to pay attention to completed projects and work. Often candidates with a huge number of languages and platforms listed in the summary, but with a small amount (and quality) of completed projects. For Internet business it is very important for a start — up is vital!) understand the priorities of the developer. You need to pay attention to people who are fundamentally important to deliver finished projects that can work at the business performance and be proud of your results; at the same time there are a large number of developers who are only interested in languages and tools (more and different) and not the impact of their own work. Often these candidates change jobs every six months, jumping from startup to startup. And, interestingly, it is often at such candidates with a big and impressive technology portfolio is a rather superficial knowledge of these technologies.

Specialized education is important for some specialties — for example, it is impossible to engage in professional modern graphics in a video game without a good mathematical base. For most developers (web programming, application development for business and so on) it doesn't matter. Interestingly, a large number of well-known programmers, including, for example, co-authors of the Linux kernel or some of the authors popular programming languages, specialized education simply has not.

Much more important is the initiative of the candidate, willingness to learn and try new things. For example, to keep the knowledge in web programming relevant (modern languages and frameworks), information should be obtained primarily mastering a huge amount of information from blogs by looking at whole speeches on international conferences and by participating in the opensource community.

"Interestingly, many well-known programmers, including, for example, co-authors of the Linux kernel or some of the authors popular programming languages, specialized education is simply no

What really counts is active in open source, especially for such specializations like web programming. Similarly, as a researcher is his summary of publications in decent journals, web programmer helps the participation in foreign projects open source (often the languages and frameworks used by thousands of people) or design your own. The first jobs of my company I asked the candidates to attach to the story and a link to opensource-profile, a recent offer to send a link to your work on GitHub is found in almost all jobs web programmer in the modern language or framework.

Freelancing and remote work — princeline different things that many confuse. If we talk about freelancing, I want to refer to a colleague Artem Gorbunov, head of the eponymous design Studio: "a Freelancer is a person who is not responsible for anything". First and foremost, when working with a freelancer, you need to understand the risks: what will happen to the project if the work will be delayed for a week? For a month? Of course, in some cases without recourse to the freelancer do not, as a rule, in the case that the required competencies in the company and it will not be needed constantly: well-known experts in very narrow areas, very often work as freelancers.

However, if you want to give to third-party development is critical to business thing, you should look for a specialized company with a good portfolio. To attract third-party company for a startup or growing Internet business is in the following cases:

— Pivot when the main objective of the company's existence — finding a scalable business model with which you can work on. Cool hiring employees is time consuming and — especially important — requires the involvement of people who can find the right professionals to not hire them at random. In this case it makes sense to spend, even big money, for the fastest possible search MVP.

Growth: the company has found a scalable business model, and now the main thing — to seize the market. Need to do the maximum amount of functionality as quickly as possible. Work is never enough, and the involvement of a third-party company at this stage may give greater benefits.

My company helps start-UPS on these stages, in addition we select, looking for and hiring employees for an established startup, when knowledge and technical expertise you need to accumulate already inside.

Our company has been working completely remotely for the past nearly six years; is about thirty employees scattered from Budapest to Bali. We unequivocal supporters and advocates for this approach to work. More about this can be found in the popular book "Rework. Business without prejudice" Jason Fraida and David Hansson of Harmeyer. In addition to the obvious advantages it gives the ability to really hire the best employees without reference to location. Remote work allows you to instantly identify problems in planning and communications, to quickly make a decision about whether the person cope with the work. Indeed, for most people, a fully independent work can be challenging. However, if you hire such a person in office, it will only hide his problems with self-organization. So, if you work with a specialist remotely, the task Creator does not care how many hours a day he works and spends time in social networks — most importantly, the job was done on time and efficiently. In the case of office work, these problems disappear — the person sitting in the office during working hours, works on a computer how to understand whether there is a problem?

To finally decide whether to make an offer to the candidate, we necessarily give him the test job after interview. There are companies in which the candidate propose to solve the task on paper in a short time, but, in my opinion, this way you can weed out the really talented developers who are simply stressed out or tired. Therefore, the job we give to independent work in a relaxed atmosphere, for a few days.

However, the test task is not only to check the level of the candidate. Much more important to verify its responsibility and communication skills. We are trying to create the illusion of a working environment: there is a task, the task you want to evaluate in hours and to do by a certain date. Of course, it should be done at the proper level. A number of candidates fail the test only because they do not ask you the right questions and makes the task incorrectly or incompletely; often candidates do not warn, do not have time to do everything on a deadline, we often hear excuses about why the task was not done. All this allows to reliably judge what the problem could be with the candidate in real conditions.

As a test of the job we usually give a little generalized real task from the project, which is in the plan; generalized so that the candidate should arrange it as an opensource-project for reuse in other products. This allows to test the knowledge of code organization and architecture: often the developers surely have passed a simple test task, begin to "float" in the project, once it becomes more difficult for architecture.

The benefits of this approach, the mass: in the case that the task is done efficiently, the code used in this project. The candidate sees that he was given was not invented task and asked to solve a real problem — even if he doesn't propose, this code he will be able to show a future potential employer. Finally, in this way you can replenish your open source portfolio reaches even the fact that one of our developers immediately after the execution of the test task were given a free license for popular IDE (development environment) open source contribution.

Dmitry Kolobov, technical Director Habrahabr.ru For me, the education of the candidate not so much. Much more important than its practical knowledge: what technologies worked, what projects were involved, what exactly did. Experience in high load projects, as a rule, is a plus. The last four programmers we found by posting jobs on their own resources, previously Hantim.ru and now Brainstorage.me. The first stage screening based on the letter and resume. Usually immediately evident whether the individual is on the skill or not. Next, we are written off and invite for an interview at the office or via Skype if the candidate is in another city. Test tasks we have. The interview format of the interview candidates tell about themselves and their experiences we tell about yourself, about what you do and the work you have to do.

A budding entrepreneur, I think it is difficult to determine the technologies and assess the technical skills of the candidate. So I would be looking at which projects are implemented by the candidate, what part he participated in, how we fit together in the sense how we understand each other and how we see things. You can ask what you like on the Internet, what projects and so forth. And, of course, a probationary period has not been canceled.

Andrei Tatarinov, technical Director Zvooq Diplomas of universities with difficult entrance exams and program (MSU, MSTU, MIPT, MEPhI, St. Petersburg state University) — a sign of good mental abilities of the candidates. As well as working in companies with strict face control at the entrance: Yandex, Mail, Badoo, Undev. Portfolio, unfortunately, is often misleading. Because it is unclear how much time the candidate spent on a specific object in the portfolio, and the extent of his contribution to this object. So lately I give more importance to the interview and the behaviour and responses of the candidate during the fellowship. In the interview I use several types of questions:

Simple, specific questions that demonstrate whether the candidate knows how to program in General (e.g. FizzBuzz).

Questions about how things work, for example "what happens in the moment when a user opens your website in the browser". Here I am waiting to hear about:

network, DNS, TCP,

— nginx, caching, connection pooling, the application server,

frameworks, the routing of the queries in your framework

— database connection in DB connection pool, data,etc.

— tasks with varying parameters.

"Let's write...", for example:

web service, where you can draw circles,

— and now circles and squares,

— ...and stars,

— and now we have a lot of users

a lot, the server can not cope,

etc.

As a rule, if the candidate responds well to such questions, his knowledge of a particular programming language is not important. It is important whether he is ready to program in the language and the framework, which is adopted in your company.

In addition to the recruitment of the team, almost always there is the opportunity to use outsourcing/autstaff contractors. As a rule, the system that was developed by the company can be divided into two parts: the platform and some projects based on it. For the development platform, as a rule, you should take specialists. This is the core expertise of the company you want to value. The demand for resources in this area of responsibility are usually well predicted and fairly stable. The basic command should not expand uncontrollably. For project work you can use outsourcing. This allows to cope with peak loads on development (in this month you need 10 special projects, the next none) not diverting basic development.

The city outsource doesn't matter. It is best to work with the outsource company to ask the interviewer candidates, which they offer. I have had experience with companies that have multiple development centers: Moscow, St. Petersburg, Kiev, Minsk, Voronezh. But when hiring a remote development you need to remember that it is crucial to control: frequent regular synchronization status, the formal statement of problems, recheck the performance of the domestic team before delivery.

Ilya Saltanov, Director of development Sports.ru There are two basic building strategies team — hiring and outsourcing.

Programmers are well controlled and mobile have created a product around them grows technical expertise of the company. It is difficult to do advanced mobile game, if the developers outsourcers. But its engineers do a lot of problems: they are difficult to find, hard to hold, they cost the company in terms of salaries and provide working conditions.

In terms of a startup you first need to think about the team of outsourcers. It is generally a good exercise to try on their plans for the development to outsourcing. In addition, outsourcers can always just break a commercial contract if to continue the working relationship is not desirable.

The market development has seriously matured over the last few years, now for virtually any task you can find a great team in Russia, Belarus or Ukraine, and the guys will work as it should. Start looking right now with Russia, not necessarily to go abroad. In Minsk you can find a good team, much cheaper, than in Moscow. In Kiev, too, but not cheaper than in Yekaterinburg or Chelyabinsk. Sports.ru in the recent 2007-the year started on outsourcing Oleg Bunin, and still part of the software products we have developed full-time programmers and a part of the external commands.

The choice of HR strategy depends on the manufactured product. If the business is a startup based on software product, to do something disruptive proxy is almost impossible. When there is only an idea, founders, puking rainbows, and strange perspectives, to lure strong engineers is no easy task. In such circumstances, the business founders should invite them to my partners on the terms of shares, options. And a similar story it is really cool to sell the developer of large corporations, when in the company yet. Well, you need to understand that this partnership does not mean the subsequent work of the technology leader for food and a small salary.

To outsource often take companies that provide the service under the key: micro-management, development, testing, delivery of the product. The best way to search for the recommendations of friends and customer reviews. In fact, the track record is a determining factor. The staff are looking for specific people for a certain position in professional and social networks and the still — on resources with vacancies and resume. First and foremost assesses the personality of the potential employee's skills and knowledge. Track record plays a secondary role.

I would recommend start-UPS to avoid the services of recruitment agencies: first, expensive, long, unreliable, and secondly, you need to learn to sell your idea and future employees, not just investors and customers. In addition to networking, be sure to make noise in the market, parties, conferences, specialized sites, in the media. This will help future employees make the decision in favor of your company.

When you study the feedback for the position, just do not neglect summary: its content really can tell a lot about a person before meeting. We all have our tokens of insanity in summary, which you can weed out a candidate prior to the interview. For example, I try to avoid meetings with people who write about themselves as "web master"("doing PHP, MySQL, Photoshop, Apache, 3dmax, Java and Objective-C) or after ten years of experience are still writing about his school achievements: second place in city Olympiad on chemistry."

The interview should start with a discussion of the experience of the candidate (in which teams worked, what did himself) and go to skills (what he knows of the problems there — who he loves). You need to understand what level of questions the interviewer determines the level of the company in the eyes of the candidate: it is unlikely that the candidate will accept the job if all the job interview he drove on algorithms and numerical methods; and Vice versa — if the interviewers will not ask any technical question at the meeting.

Michael Herd, technical Director Coub Raw beginners, we did not take, Coub is already a fairly complex product and we already can't afford to take a zero developers and to improve their performance. So we are looking for a ready strong programmers. From the point of view of selection parameters is education no matter where people come from — is not important. We have developers from everywhere, from different backgrounds and with different backgrounds.

At the interview we give all the standard task in programming. It is embarrassingly simple, even our account from the sales Department decided it. But solve approximately 70 percent of applicants. Of course, you have to look at the code to see what the candidate has done, where he had worked. Well, if you can speak with former employers or colleagues. If you frequently changed jobs, it is an occasion to reflect. Of course, the man needs to fit in with the team.

Outsourcing is suitable only for single, well-formalized tasks that are not strongly associated with the main process. And only from very reliable, time-tested freelancers. Only the state, only hardcore.

Source: theoryandpractice.ru