On the role of test tasks in the life of the developer

How many technical interviews have you had in your life?



Over the past five years, I have visited 35 technical interviews of all imaginable types and specifics - from Kazakhstan startups for collective purchase of meat for the winter to German and American fintech services and banks; with biases in programming, distribution and management; remote and in the office; limited and unlimited in time; stressful and relaxed, in different languages.



This, coupled with ~ 20 interviews that I conducted myself as an employer, is a sufficient number to become the king of interviews to make the following observation (initially completely unobvious) and establish myself in it: I am convinced that this is largely due to the number of interviews starting to resemble a marginal habit, I studied my stack professionally and became a competitive specialist despite the fact that before that I had already worked 10 years in web development.



This article is addressed to programmers who are at the beginning of the path and have not yet exhausted the depth of knowledge. In it, I want to expand the thesis on the enormous educational benefits of test tasks and technical questions asked for interviews - and invite everyone to my freshly written telegram bot ActualizeBot , where, in my opinion, you can go through a technical interview at least every day until they end. And so that they do not end, you can also share an interesting technical task, a question, or a useful / fun situation experienced during an interview.



Iโ€™ll tell you more about the bot below, let's first understand why it is so important to know and understand the answers to these technical questions and tasks, even if you have been successfully cutting freelance projects for years.



Why does the quality of our fundamental knowledge leave much to be desired?



Technical interviews, if you have not yet become the king of interviews, are a serious stress for the body, as well as a job search in general - whether you are a beginner specialist, a switcher, or a developer who has worked in one place for a long time (and for a โ€œlong timeโ€ in our time is also a year).



In many interviews, this stress has an aggravating human factor. Your interviewer may not be Alena Vladimirskaya, but an ordinary programmer of some kind, from whom it is difficult to wait for adequate tasks and their assessment or a team leader who will wait for the moment to bring down all your severity in your eyes, asking the question: What is for you agile !?



Once, without giving the necessary, but, as you know, unpredictable answer to this question, I was left without an offer, which I am extremely happy about.



Trying to avoid this stress and unnecessary movements in general, we distance ourselves not only from the loud exposure of our ignorance of some basic features of the language, but also from reducing this ignorance a little.



The problem is that in practice, such a class of tasks is not enough for us to get.

Any developer who has had to work in several places will confirm that the fundamental or creative tasks posed in the interview rarely have anything to do with what the programmer deals with in real life - you donโ€™t need any recursions, graphs or asynchronous elevator control systems on the planet with negative gravity in the other arm of the galaxy. Unfortunately.



As for my native JavaScript, there is a good example - if React.JS hadnโ€™t appeared, 98% of JavaScript programmers would have successfully continued to live blissfully unaware of what bind is โ€” more than 20 years after it appeared โ€” and would have continued to be perplexed getting questions about him at interviews, and only those who invent all these highly abstract libraries, frameworks and modules would continue to work with him. Today, thanks to the reaction, this number has been reduced, according to feelings, to 97%.



Obviously, seeing the "isolation from the realities" of these tasks, many developers ignore them or spare time to dive into them - and continue to engage in a daily routine, that is, figuratively speaking, walking along the minefield for production not only without a mine detector, but also knowing that they are in a minefield.



What is fraught with a lack of fundamental knowledge of the language



The answer to this question seems banal, but for some reason in human nature - always pushing its solution into the far corner - and this plays a sad role in the life of junior and middle programmers, extending their path to the heights (and depths) of language knowledge by a couple of years old.



The application code using the frameworks and libraries that they are used to writing every day cannot be considered reliable if they write it without a sufficient understanding of various aspects of its execution. A good illustration of this from the world of JavaScript is the fate of the JQuery library, which was once an engine of progress, and today, being a self-contained field of knowledge divorced from the rest of the language, it occupies its natural place in the market - semi-professional hastily written and working like a script as a present the same fast layout on bootstrap from inexpensive freelancers.



The future of projects being developed with this, albeit unknowingly, but irresponsible approach, is prosaic and short-lived: significant loss of time out of the blue, disruptions, financial and reputation losses, and, as a result, a decrease in enthusiasm for continued cooperation.



On the other hand, little for a person who has chosen the path of a programmer can be compared with the pleasure of understanding what he is doing. Understanding that he, like Baron Munchausen, prancing on a minefield riding a horse. Needless to say, a decent employer can clearly see people who are recklessly walking around the minefield and people who are frozen in indecision to take a step in a situation where you can run and jump without thinking about anything?



ActualizeBot



Seeing the benefits of interviews, and also understanding that going to idle interviews is not entirely ethical, I thought it would be great to create a bot where a beginner or transplanting into another language could engage in educational program without resorting to real interviews in that volume in which happened to me. And remembering how programmers like to discuss and compare tasks that they had to solve - especially if it was something non-trivial - I realized that everything fits together, rejected all doubts and voila.



At the moment there are 3 simple functions in the bot:





At the moment, the following languages โ€‹โ€‹are offered to choose from: JavaScript, Java, Python, PHP, MySQL. The choice is somewhat limited due to the boundaries of my understanding. I hope with the help of the habrasociety to replenish this list.



The bot is launched in a purely rock and roll format, payment for anything is not expected.

You can go to it at the link: ActualizeBot



Briefly about technical implementation



This bot is one of several small projects on which I bring the first public version of my open source open source miniframe to develop bots with a complex structure, lovingly named Hobot and available in NPM for hardcore.



The framework is built on the basis of Telegraf.JS and TypeScript, its zero-zero-first version, equipped with an example of use, can be viewed on the github and immediately try it. Soon I will unload the version 0.0.2 extended and combed for the person from the side and devote a separate article to it (trunk). I would be glad if for someone it turns out to be as relevant as it is for me.



So how many interviews have you had to attend?

I am sure you have something to tell!



All Articles