About novice developers and how to work with them


Over the past ten years, many novice developers have passed through me. Yes, and what a sin to hide, I, too, once was a novice developer. During this time, I received thousands of questions a la “how to become a developer”, as well as requests to take people to my practice. Unfortunately, even under the strict guidance of more experienced specialists, not everyone has the strength and motivation to go to a new level. Statistics is a stubborn thing: the number of “trying” and “achieving success” is distributed according to the Pareto principle, i.e. 20/80, where out of ten people, a maximum of two manage to pass the initial test. The rest fall off on the road or the learning process with them stretches for many years. And yet, what should be a beginner developer, what skills and knowledge should he have? This will be discussed in the article.

Most often, a novice developer (hereinafter we will call him simply a junior) is a third or fourth year student, sometimes a graduate of a college or university who decided to connect his future activities with the IT field. A junior differs from a specialist in that he does not have (or very little) practical commercial experience. That is why juniors are usually asked questions about knowledge, logic, etc., to weed out completely unreliable ones.

The first question that I usually ask the junior is: in what area would you like to work? To develop desktop applications, for example, or to write games or mobile applications, or web / cloud products, or maybe even move towards design or testing? This is very important, because each area has unique properties and knowledge that you need to possess. Although the solution here is quite simple: you need to offer the junior to try himself in different areas, and after a month to ask what he liked more. Well, then move in this direction.

The second point, which I immediately focus on, is that I explain to the junior that he will not be able to get a lot of money, a tennis table and a masseuse in addition, and he will have to work hard to achieve all this.

Thus, I immediately make it clear to juniors that without a solid investment of effort and time, as well as a clear understanding of the roadmap of their development, it’s better not even to start.

And then we begin to talk. Our conversation is analyzed for the presence of certain phrases. Let's take them in order.

As a university, I’m a waste of time,

huh, and then you spend a week on the matrix multiplication function, try to build a triangle by two points, write a search using exhaustive search and make square eyes when I ask the program to encrypt passwords using RSA -algorithm or embed digital signature. (If you think these are fictitious examples, then I will disappoint you).

Life shows that without a theoretical and mathematical background, you can easily become a successful coder, but not a high-level specialist. There are exceptions to this rule, but they are exceptions.

The second signal this phrase sends to me sounds like this: I do not know how to manage my time . Time management is one of the most important junior skills. If a person cannot combine university and practice, then most likely he will not cope with deadlines and critical tasks in the future.

Microsoft - g # obviously, I will write for Linux

We change Microsoft to C #, and Linux - to Java or Microsoft to Linux, and Linux - to Microsoft and get a typical portrait of a fanatic. There is no need to mess with fanatics at all. For fanatics, the process is important, not the result; for them, it is not important that the task is carried out in the most optimal way, and most importantly, that it is on the “right” technologies. I want to add that in the first year of my junior career I wrote in Pascal, Turbo C ++, Visual C ++ (MFC and WinAPI), .NET 1.1, PHP, ColdFusion, Perl, Java, until I realized that I was closer and clearer. It will be very difficult for a person who is initially obsessed with a specific technology to become a really good specialist.

I will not hide the fact that the “technology problem” is often encountered even among established specialists. Recently I witnessed a demonstration of one project that could be implemented in a maximum of four hours using regular ASP.NET MVC and jQuery tools. But, firstly, the project was stretched for almost a year (in fairness it should be noted that this was not a commercial project), and secondly, the demo featured such words as open source, node.js, the database in as a json file. All this was poured through the command line on github, after which it was compiled using special scripts, and then another script laid out the HTML page on the hosting.



Suddenly, a junior may start a session, take a term paper, he can find a job as a car mechanic or a pizza delivery man, because “they pay there now,” and “here you exploit me for free.” Due to the fact that many employers can disappear at any time, they don’t want to take juniors to work or practice or do not entrust them with important tasks. The junior's task is to take the difficult task as soon as possible and successfully complete it. Only after that a minimal level of trust can appear towards the junior, which, naturally, is desirable to develop and not be screwed up. By “screwed up” I mean getting into a situation, the description of which begins with the word “suddenly”.

Responsibility is another critical junior trait.

I understand everything, no questions

Two weeks after the start of the practice, I ask how things are progressing, are there any questions. If the junior is clear and he has no questions, you can expel him without a twinge of conscience at the same moment. After all, the novice developer questions should appear every ten minutes. He should find some of them on the forums, some on StackOverflow, but a question should appear stably once a day. Observation works flawlessly: if there is no question for a long period, you can no longer wait for the result, and say goodbye to the junior.

The opposite rule also works here: if questions come too often, then the junior does not know how to use Google. But ...

... another important skill of a junior is the ability to independently search for the necessary information and answers to your questions.

Speaking of dates. The first assignment I give the junior is never tied to specific deadlines. Those. do it tomorrow - ok, in a week - ok, in a month - ok. By this I make it clear that I have a lot of time, I can wait. And here it immediately becomes clear how much and sincerely the junior wants to become a specialist. If the first task for a couple of hours will be done a month, then there is a high probability that a person does not have a lot of motivation to do something quickly, and this will directly affect the efficiency of his work.

And how much will I receive?

I also hear this question often. You need to understand that juniors in any company are investments in the future, time of experienced specialists and a huge risk for the company (see Suddenly!). It is very good if the junior comes across a company that is ready to learn it for free, and generally fine if the company is ready to pay something else.

The record was broken by one third-year student who agreed to work remotely at a party time, having 1 month of experience with specific technology. He wanted a salary of about $ 2,000. Ambition is very good (such a thing), but you need to know the measure :)

Where to start?

This is the most common question I get. The answer is quite simple: take your hobby (music, sports, numismatics) and make a website for him, a mobile application and / or a game. First write a site in PHP, then on ASP.NET, then develop an Android application, then port it to iOS. And then try to put the site on the hosting, promote it, and publish the mobile application in some of the app store. You will get minimal, but still experience the full cycle of project development from idea to publication, and this can be indicated in your resume. And at the end of the journey you will definitely know what suits you best.

And what about companies and universities?

Many companies are not ready to work with juniors.

The reasons are called different:

- Now we will teach him, and he will go to competitors;
- we are a young international company, we work only with professionals and trained specialists;
- Our specialists are too harsh to spend their time on juniors;
- the task of training specialists lies entirely with the state and universities, what have we got to do with it?

Despite the presence of such moods, many companies have already realized the importance of working with novice specialists. They are taken to practice, taught courses, recruited to non-complex and non-critical projects, sent to conferences and seminars. Indeed, many junes “burn out”, many do not finish the practice, do not cope with the pace of training, and dissolve in the crowd. But working on the systematization of knowledge and teaching methods, combining practical and theoretical knowledge, combining the efforts of private companies, as well as the state and universities, it is possible to achieve a qualitative and quantitative increase in novice specialists.

Many also consider online platforms as an alternative to classical learning, where, in fact, it all depends on the desire and motivation of the students themselves. But this is the problem. After all, all the great initiatives, such as iTunes U, Coursera, etc. they encounter a negligible number of those who take the full course (the number of graduates varies in the region of 1-3%). That is why the presence of mentors is necessary in order to increase this indicator to at least 30%. And here the cooperation of all the players of the IT market is necessary, including the state.

The most interesting and promising example of cooperation for the training of young specialists was shown by Yandex and the Higher School of Economics, which announced the opening of the Faculty of Computer Science. This excellent example should be picked up by other companies and universities.

Instead of the conclusions. In

total, the ideal junior understands that at first he will have to spend a huge amount of time on training, he can combine studies / work with training / practice, has such skills as responsibility, independence, the ability to search for the necessary information, ask questions, and is also highly motivated and adequately ambitious.

It is very important for the mentor to understand that each person has different skills, productivity, motivation. The mentor's task is to find the right approach to a person, understand his true motives, and most importantly - to discern the potential in a person. Potential is the acceleration with which a person can develop, gain the necessary knowledge and improve himself.

And yes, all of the above can be replaced with one phrase: sit down and work. And for many, these words are enough.

Also popular now: