Прошлый опыт Flashcards
You wrote in your resume, that you added Grafana in new microservice. What does it mean?
After I created new service and moved all required code from old service into it, it was neccessary to setup Grafana here to make possible to see statistics regarding api and some internal metrics of the service, like tests coverage, for example.
So, I installed Prometheus client Go package, copied code related to prometheus from old service, and also modified it, removing not needed metrics and adding few new ones.
After that with help of other developer, who already used to do same task, we configured metrics showing in Grafana. We customized the dashboard, few custom metrics and ensured that all required metrics are shown.
And so, that’s it.
You wrote that you were working with high-load microservices.
What was the load?
What techniques did you use to work with it?
The load was up to 5000 RPS in peak.
In order to handle this load different optimization techniques were applied.
First of all, we use Golang, because it is very fast and optimized for asynchronous and parallel data treatment.
In order to optimize load on our database, we were using database sharding and replication, and also indexes for tables.
Also we had heavy queries caching.
How did you handle a disagreement with your boss or your collaborator?
Well… I have certain set of rules for cases like this. First, this is important to say, that even in case of disagreement, this is necessary to be calm and polite, because rage and rudeness don’t help to solve the situation.
Well, first situation is disagreement with boss. This case, at first, I am trying to get more information about boss point of view. Maybe, I just don’t know enough, and that is the reason. On next step, if I still have disagreement, I am trying to describe my position pros and cons as fully, as only possible, because maybe just my opponent don’t understand what I want to do, and thinks about something different, and that is the source of the problem. And if anyway we didn’t reach consensus, then I usually just do as my boss told me.
If to talk about dispute with my colleagues, then, I do step one and two as I described in first case, but then if we not reached agreement, I usually go and ask somebody more experienced in dispute sphere to look on our situation and tell us what to do here.
Talking about examples of this approach.
This conflict is tightly connected to one of my achievements on my current workplace - when I was implementing new permissions system instead of old one, based on roles.
At first, my team lead and higher managements didn’t want to change current system, because if it works, then why should we change it, right?
So me and other developers looked over tasks, related to adding new roles or changing old ones in our projects, and clearly shown, that with new system, first of all, we will need no changes in projects code for most of cases when we are adding new roles, and we will also need much less changes if we are adding new functionality, that should be accessible only by certain roles.
So, we explained how exactly our changes can help business to save time and money, and after that departament management agreed with our ideas and added roles system rework into list of projects, that should be done as soon as possible.
What stands did you have on your project?
What is difference between local, stg and prod stands?
We had three stands, local, staging and prod.
Difference between staging and prod is that staging is isolated from real users and have mocked data.
Prod is prod and used for delivery of final changes to real users, and staging is used for final testing before release.
Local is almost same like staging, because it anyway connect to same staging databases and services, but you can change program code locally and look how it affect program.
Does your company know that you are looking for a new job? How do you communicate with us during work hours, shouldn’t you be at work? How much work do you have to do before leaving your current job?
The company knows. The company is currently looking for a person for my position, and I am on unpaid vacation in order to be able to go through interviews without any problems with my timetable.
I have an agreement that after a new developer is found for my position, I will have to mentor him for two weeks, what means, tell him the basics about the processes in the company and how to do my job, and also answer his questions, and after that the company will allow me to quit in one day, without the need to work off. Therefore, you can consider that I am ready to go start working at any time.
What was most difficult engineering task you used to solve?
I would say that the most complicated engineering task I had to solve was at the university. One of tasks of my thesis project was to create a robot that would be possible to control through the WiFi.
This robot had two microcontrollers, first one is Arduino UNO, which is used to control robot itself and is inbuilt, and second one is ESP32, which was used as web-server to serve a web-page using that you could control this robot.
The problem was, that Arduino UNO didn’t have internet access, and ESP32 could not control the robot motors directly, so it was neccessary to connect them together in order to send commands from one microcontroller to another.
That was quite a lot of work to do, and biggest problem was that these two microcontrollers had different work voltage. Arduino UNO uses 5 volts, and ESP32 3.3.
So, first of all I wanted to somehow connect them using voltage divider, but I had problems with signal reading on Arduino UNO, because voltage level of ESP32 is too low. In theory, it was possible to make it work, but
existing serial data transfer libraries didn’t work for me.
After that I tried to write all required functionality
myself, using analog input of Arduino to read signal from ESP32, but quickly understood that this is not optimal solution.
Finally, I bought logical level shifter and fixed this problem.
Why you decided to leave you current workplace?
Причины:
0. Уфф… Ну, это достаточно объёмная история, смотрите. Дело обстояло так. Сначала в компании произошли перестановки, поменялся PM и руководитель направления. Это произошло почти сразу как я вообще пришёл в Wildberries, буквально через пару месяцев, я чисто только нормально заонбордиться успел.
После этого нашу большую команду, которая занималась кучей внутренних сервисов, взяли попилили на несколько команд поменьше. Я оказался в новой команде, но лид у нас остался старый.
Потом, ещё через несколько месяцев, в конце весны, наш лид уволился из компании. И вот это была поворотная точка. До этого момента всё было просто отлично, а вот после начались какие-то мутные события. Ну, в общем, наш лид ушёл, а на его место пришёл другой, новый.
Новый лид, судя по всему, привык к другому подходу к работе, к более жёстким процессам.
И он начал закручивать гайки и выжимать из разработчиков всё что выжимается, и буквально за пару месяцев полностью перевернул все процессы в команде.
Вообще, я что хочу сказать… Вот существует определённая договорённость, определённый социальный контракт в команде. Между разработчиками, и тимлидом. Если его пытаться формализовать, то звучит со стороны разработчика он звучит так - ты конечно главный, я тебя уважаю, я тебе подчиняюсь, но во-первых, я не твой слуга, я не твой раз, мы оба свободные люди и в этом плане мы равны, и что я со своей стороны делаю свою работу в срок и качественно, чтобы тебе никто ничего не мог предъявить за то, как ты руководишь, а ты со своей стороны тоже ко мне подходишь с уважением, и делаешь так, чтобы у меня были хорошие условия и отстаиваешь какие-то мои интересы в противовес тому же продакту, которому нужны фичи, желательно ещё вчера и вообще все какие смогли придумать.
Старый тимлид этот договор соблюдал, и при нём всё было просто прекрасно, как я уже говорил, там жаловаться не на что. Но новый, то ли этого не понимал, то ли ему просто было всё равно, но в этом плане он на нас клал.
Сначала по его инициативе отменили day off, и если раньше можно было за год пять дней взять в любое время отдохнуть, главное чтобы по итогам спринта таски за дедлайны не заходили, то теперь такой возможности не стало.
Потом у нас отменили оценку в стори поинтах, и ввели оценку в часах. То есть раньше у нас наши таски оценивались из расчёта 10 стори поинтов за спринт, где один стори поинт это плюс-минус от 4 до 8 часов, то потом стали считать из расчёта 80 часов в неделю, которые надо раскидать по таскам.
Да и вообще, стало некомфортно работать, лид стремится максимально занизить сроки задач, и каждый раз это какой-то эпик батл. Типа, почему 8 а не 6? Почему 4, а не 3? Почему 3 а не 2?
Из-за такого подхода у нас выросло количество багов в коде, да и вообще качество кода упало, и постоянно с его стороны какие-то разбирательства, по типу, почему баги, почему не уложился в срок, и постоянно вот эти претензии.
В общем, я ещё тогда уже начал чувствовать что я это всё не вывожу, морально устаю и выгораю
Я пробовал с ним это обсуждать, что это всё как-то слишком, а можно не нужно, и всё в таком духе, но по итогу ни к чему дельному мы не пришли и всё осталось как было
Мы с ребятами пробовали писать PM, стучаться к руководителю направления, но нас либо вежливо игнорили и кормили завтраками, либо в конце когда я уже на общем созвоне эту тему поднял, сказали что вот теперь так работаем, и ничего менять не будем
Я уже тогда задумывался об уходе, но всё ещё надеялся, что какое-то чудо случится, и всё поправится, и чудо правда случилось, правда не то, на какое я расчитывал.
В общем, я на время этапа калибровки во время осеннего ревью взял себе отпуск на пару недель, чтобы чуть отдохнуть от всего этого, потом после отпуска прихожу, у нас созвон с тимлидом, по итогам ревью, он говорит, у тебя PM, то есть частичное соответствие ожиданиям. То есть не выше ожиданий, не даже соответствие, а ниже. И это при том, что я как раз в том периоде перед ревью втащил в компанию, по крайней мере в наш отдел, крупную переработку системы ролей, которая значительно оптимизировала все связанные с этим таски.
А до этого, на предыдущем ревью, у меня не было никаких таких невероятно выдающихся достижений, просто тесты на сервисы наклепал, но мне тогда поставили ME, то есть соответствует ожиданиям.
Ну так вот, я спрашиваю у него, Максим, почему такая низкая оценка, у меня же вот достижение, вот достижение, вот достижение, вроде нормально поработал.
И он мне тогда сказал, что это всё конечно хорошо, но как-то всё равно недостаточно, и вообще мне надо лучше стараться, чтобы получить оценку повыше.
И я тогда так оху… Очень удивился с этого, и решил что наверное, компания моей мечты выглядит как-то по-другому.
- Наш департамент по большей части решили переводить в офис, а я в офис не сильно хотел, да и вообще я изначально приходил на удалёнку, и не было желания что-то в этом плане менять.
- Я раньше жил не в Москве, а в другом городе, сильно меньше.
Когда я устраивался, мне дали относительно Golang разработчика не очень большой оклад из-за этого. Тогда меня это не сильно беспокоило, потому что в провинции и в самом деле и цены на всё пониже, да и в принципе для меня тогда главным плюсом при устройстве была возможность поработать в большой компании над high-load проектами и изучить все связанные с этим технологии.
Потом я переехал в Москву, но оклад мне не пересмотрели.
Точнее, после ревью мне его повысили, но это всё равно сильно меньше чем у всех моих знакомых с плюс-минус тем же опытом.
Я пробовал это обсуждать, несколько раз подходил, но ничего внятного мне не сказали.
По итогу решил искать другую работу, потому что меня текущая зарплата не очень устраивает, а подвижек в этом направлении со стороны компании не предвидится.
- Наш отдел реформируют, и сотрудников переводят на корпоративные ноуты.
Против самой идеи я ничего не имею, но во-первых, там выдают маки, а я на маке работать не люблю, я привык в Windows, и хочу работать на нём, а во вторых на все ноуты ставят трекеры, а для меня это красный флаг в компании, нет никакого желания работать с поводком на шее.
Я пробовал обсуждать это с начальством, но мне сказали что тут вариантов не особо много.
Ну и по итогу я был вынужден уйти из компании из-за этого. - В компании идут реформы, и сотрудников в принудительном порядке переводят на корпоративные ноуты.
Я против самой идеи ничего не имею, тем более что мой личный ноут с которого я до этого работал, как раз сломался, но есть две проблемы.
Во-первых, ноуты все на винде, а я привык работать с мака.
Винду я тоже уважаю, и в игры с неё удобно играть, но для работы всё-таки лучше мак.
Это первая проблема.
Вторая проблема заключается в том, что в нашем отделе хотели при выдаче самих ноутов ещё и тайм-трекеры на них поставить.
Если честно, я считаю что это кринж, и вообще тайм-трекер в компании для меня красный флаг.
Я несколько раз пробовал обсуждать это с начальством, но по итогу мне сказали что тут вариантов не особо много, либо корпоративный ноут с трекером, либо переводиться в офис.
Я такого прикола не совсем понял, ну и по итогу к сожалению пришлось уйти из компании.
- Первые полгода всё было более-менее ок, а потом в отделе пошли перестановки, реорганизация команд и процессов.
По итогу я оказался в другой команде, точнее, нашу предыдущую команду разбили на несколько более мелких, людей распределили по новым командам плюс наняли ещё новых.
Проблема в том в новой команде идут постоянные овертаймы, куча проектов, а мне это ни разу не нравится.
Я ничего не имею против овертаймов
What did you like/dislike about your current job?
Firstly, the current team. They are all very good people and it is a pleasure to work with them.
Secondly, the organization of processes within the company and the number of issues that have already been resolved. Literally everything is set up here: there is a service for CI/CD, linters on all projects, full documentation on all issues, a technical support service that works well. To be honest, it is very difficult to think of something that could be improved within the entire company.
And finally, I really liked my first team in terms of process organization.
Назовите 3 своих положительных качества и 3 отрицательных.
My disadvantages…
I would say, that first of all, I tend to worry about things and double-check everything several times. In any matter that is important to me, I want to be 100% sure. This sometimes bother me because I am overthinking about simple things.
Second thing is that I have an optimistic planning bias - if I’m working on a task that I haven’t worked on before, I tend to underestimate the time it will take to complete.
Finally, I would say that my downside was previously that I believed that there was only one way to do everything right and that everything should be done only this way and no other way. For example, if we are talking in the context of development, then you need to use the same code style everywhere, the same frameworks, etc. But over time, I realized that not the whole world is divided into black and white, and that there may be situations in which the decisions that I consider wrong may be optimal.
My strong side is that first of all, I am not afraid to work with new technologies, I like learning new things.
Secondly, I also feel responsibility for what I am doing and for the project. As example, on my current workplace … (рассказ про внедрение новой системы ролей).
Finally, I would say that I am transparent. I am always trying to make my team and especially team lead know about current state of my tasks, estimates and possible problems. I think, this is must-have skill of every good developer.
Imagine that you have been given 2 tasks with the same deadline, but you will only be able to complete one on time. What should you do?
- I’ll go to the team leader and tell him about it, ask him to indicate which task to do and which can be moved.
- If both tasks need to be done at any cost, then I’m ready to work extra, maybe on the weekend, but in return I’ll ask for a couple of days off after the tasks are done.
Do you consider yourself a good employee? Why?
Yes, I think I am a good employee.
My answer is based on feedback from other people and especially from my team leads. Most of feedback I ever recieved was positive, and even if sometimes somewhere I had certain difficulties, I could quickly fix it.
Second, is that during my career I passed two reviews on my previous workplace and two on current, and every time after review I was receiving a salary raise and good grading. Probably, if I was a bad employee, I won’t receive it, isnt’t it?
What grade of developer do you consider yourself to be? Why?
I think that I am developer of Middle or Middle plus grade.
Why… That is complicated question.
To make long story short, first of all, I have extensive experience. 4 years is something, that is not possible to ignore. I was solving different tasks, worked with many technologies, and I think, my technical skills are great.
Second argument is my grade in current company. I am proud middle developer. I think, if I wasn’t a middle developer, probably I won’t be graded so.
Why do you want to work for our company?
(Какой вы видите идеальную работу/руководителя/компанию? Что вы ждёте от этой работы? / Что ищете в новой компании?)
Смотрите, я бы разделил свой ответ на две части.
// Общая часть:
Во-первых, я хочу сказать, что самое важное для меня при выборе компании, это команда. Это важнее стека, тасок и даже в определённой мере это важнее размера оклада.
Потому что твоя команда - это люди, с которыми ты будешь взаимодействовать каждый день, и очень важно чтобы это взаимодействие было уважительным и комфортным, просто потому, что если это вопрос уже здоровья, а нервы у меня не бесконечные.
Поэтому, при выборе компании, первое что для меня важно, это именно команда. Если в команде какие-то токсичные люди, то я из такой компании скорее всего очень скоро уйду.
Однако, к сожалению, команда, это то, что чаще всего ты можешь проверить только когда уже начал работать в компании. Ну то есть, я не бабка Ванга, у меня нет сверхспособности просканировать компанию и предсказать, токсики там или нет.
Поэтому, при оценке компании для работы до момента, пока я туда ещё не устроился, я опираюсь на другие факторы.
// Если большая корпорация:
Например, для меня важна стабильность и карьерный рост.
Я не хочу часто менять работу, для меня это каждый раз большой стресс, а я это не люблю.
Поэтому я хочу развиваться в рамках компании, и хочу расти, как минимум в синьор разработчика, а в перспективе возможно и в тимлида.
И в этом вопросе, кстати, мне ваша компания очень подходит, потому что я вижу в ней для себя перспективы в этом плане.
- I want to grow, in perspective of few years I would want to become a senior developer and maybe later even team lead. I want to take more challenging tasks, learn myself and teach others.
// Если аутсорс:
Я, если честно, успел немного устать от однообразия задач, что на предыдущей работе, что на последней. Я бы хотел поработать над разными проектами, с различным стеком, всё попробовать и набраться опыта с разными технологиями.
И в этом вопросе, кстати, мне ваша компания очень подходит, потому что я вижу в ней для себя перспективы в этом плане.
- I want to work on different projects on different stack, I find this interesting for me and don’t want to stay on same project forever.
// Дополнительно:
Ну и в целом, конечно, я хочу развиваться как профессионал и расти во всех смыслах
Базворды: рост, развитие, изучение, больше, лучше, учить
What motivates you in your work?
I am motivated by complex tasks and the opportunity to find effective solutions.
I like to dive into tasks, understand the nuances and find optimal approaches.
I also enjoy understanding that my code and solutions bring real benefits to users. When I understand that my work helps people or improves business processes, I feel great
In addition, in my work I am motivated by learning new things and growing as a professional.
How much do you know about technology X?
I know technology X at 8.
I think so because at work I had no difficulties with understanding the language and writing code in it, but I understand that I may miss some details of the implementation of certain mechanisms, and that there are people who can probably give me a lecture on this, so I cannot rate myself at 9-10, and I think that 8 is a fair assessment of my abilities at the moment