О Роли Тестовых Задач В Жизни Разработчика



Сколько технических собеседований вы провели в своей жизни? За последние пять лет я посетил 35 технических интервью всех мыслимых типов и специфики — от казахстанских стартапов по коллективной закупке мяса на зиму до немецких и американских финтех-сервисов и банков; с упором на программирование, реализацию и управление; удаленно и в офисе; ограниченные и неограниченные во времени; стрессовые и расслабленные, на разных языках.

Это вкупе с ~20 собеседованиями, которые я провел сам как работодатель – достаточное количество для того, чтобы я стал королем собеседований, чтобы сделать следующее наблюдение (изначально совершенно неочевидное) и утвердиться в нем: я убежден, что во многом благодаря такому количеству собеседований это начинает выглядеть как маргинальная привычка, я изучил свой стек на профессиональном уровне и стал конкурентоспособным специалистом, несмотря на то, что уже 10 лет работал в веб-разработке.

Эта статья адресована программистам, которые находятся в начале своего пути и еще не исчерпали глубину своих знаний.

В ней я хочу раскрыть тезис о колоссальной образовательной пользе тестовых заданий и технических вопросов, задаваемых на собеседованиях, — и пригласить всех желающих в свой недавно написанный телеграм-бот. ActualizeBot , где по моему плану можно проходить техническое собеседование хоть каждый день, пока они не закончатся.

А чтобы они не заканчивались, вы также можете поделиться интересной технической задачей, вопросом или полезной/весёлой ситуацией, возникшей во время собеседования.

Подробнее о боте я расскажу ниже, давайте сначала разберемся, почему так важно знать и понимать ответы на эти технические вопросы и задачи, даже если вы уже много лет успешно ведете фриланс-проекты.



Почему качество наших фундаментальных знаний оставляет желать лучшего?

Технические собеседования, если вы еще не стали королем собеседований, — это серьезный стресс для организма, как и поиск работы в целом — будь вы начинающим специалистом, свитчером или разработчиком, проработавшим в одном место на долгое время (а в наше время «длинным» можно считать год).

Во многих интервью этот стресс усугубляется человеческим фактором.

Вашим интервьюером может быть не Алена Владимирская, а обычный программист, от которого сложно ожидать адекватных задач и их оценки, или хардкорный тимлид, который будет ждать момента, чтобы обрушить всю свою строгость в смотрит на тебя, задавая вопрос: Что для тебя гибкий!? Однажды, не дав нужного, но, как вы понимаете, непредсказуемого ответа на этот вопрос, я остался без предложения, чему был несказанно рад. Стараясь избегать этого напряжения и лишних движений вообще, мы дистанцируемся не только от громкого разоблачения нашего незнания некоторых основных особенностей языка, но и от уменьшения этого незнания хотя бы немного.

Проблема в том, что на практике мало мест, где мы можем получить этот класс задач.

Любой разработчик, которому приходилось работать в нескольких местах, подтвердит, что фундаментальные или творческие задачи, поставленные на собеседованиях, редко имеют что-то общее с тем, чем программист занимается в реальной жизни – никаких рекурсий, графиков и асинхронных систем управления лифтом на планете с негативом.

гравитация в другом рукаве галактики.

К сожалению.

Применительно к моему нативному JavaScript есть хороший пример — если бы не появился React.JS, 98% JavaScript-программистов успешно продолжали бы жить в блаженном неведении о том, что такое бинд — спустя более 20 лет после его появления — и продолжали бы недоумевать, получая вопросы о нем на собеседованиях, и продолжать с ним работать будут только те, кто придумывает все эти весьма абстрактные библиотеки, фреймворки и модули.

Сегодня, благодаря реакции, это число сократилось до 97%.

Очевидно, что, видя «оторванность от реальности» этих задач, многие разработчики игнорируют их или тратят время на погружение в них — и продолжают заниматься своими повседневными делами, то есть, образно говоря, шагая по минному полю разработки для производства не только без миноискателя, но и не зная, что они на минном поле.



Каковы последствия отсутствия фундаментальных знаний языка?

Ответ на этот вопрос кажется банальным, но человеку почему-то свойственно всегда задвигать его решение в дальний угол — и это играет печальную роль в жизни младших и средних программистов, удлиняя их путь к вершинам (и глубинам).

) знания языка на пару лет лет. Код приложения с использованием фреймворков и библиотек, которые они привыкли писать каждый день, не может считаться надежным, если его пишут без достаточного понимания различных аспектов его исполнения.

Хорошей иллюстрацией этого из мира JavaScript является судьба библиотеки JQuery, которая когда-то была двигателем прогресса, а сегодня, будучи замкнутой в себе областью знаний, оторванной от остального языка, занимает свое естественное место в на рынке - полупрофессиональные скрипты, наспех написанные и работающие по мере необходимости в подарок к такой же быстрой верстке на бутстрапе от недорогих фрилансеров.

Будущее проектов, разработанных с таким безответственным подходом, пусть и по незнанию, прозаично и недолговечно: значительные потери времени на ровном месте, провалы, финансовые и репутационные потери и, как следствие, снижение энтузиазма к продолжению сотрудничество.

С другой стороны, для человека, выбравшего путь программиста, мало что может сравниться с удовольствием от понимания того, что он делает. Понимая, что он, как барон Мюнхгаузен, скачет по минному полю верхом.

Надо ли говорить, что порядочный работодатель ясно видит людей, безрассудно идущих по минному полю, и людей, застывших в нерешительности сделать шаг в ситуации, когда они могут бежать и прыгать, ни о чем не думая?

ActualizeBot

Увидев преимущества собеседований, а также поняв, что ходить на пустые собеседования не совсем этично, я подумал, что было бы здорово создать бота, где новичок или разработчик, пересаживающийся на другой язык, мог бы заниматься образовательным обучением, не прибегая к реальные интервью в той степени, в которой это произошло со мной.

И вспомнив, как программисты любят обсуждать и сравнивать задачи, которые им приходится решать — особенно если это было что-то нетривиальное — я понял, что всё сходится, отбросил все сомнения и вуаля.

На данный момент бот имеет 3 простые функции:

  • Подписка на конкретный язык/фреймворк с целью получения для него новых задач.

    Вы подписываетесь и по мере поступления задач получаете их в ежедневной рассылке

  • Публикация задания или тестового задания.

    В моей книге говорят, что делиться — значит заботиться.

  • Отличный генератор имен, с помощью которого можно подобрать оптимальную подпись к тексту публикуемого вами задания, включая женские словари, не без феминисток
На данный момент на выбор доступны следующие языки: JavaScript, Java, Python, PHP, MySQL. Выбор несколько ограничен из-за пределов моего понимания.

Надеюсь пополнить этот список с помощью хабра-сообщества.

Бот запущен в чисто рок-н-ролльном формате; оплаты ни за что не ожидается.

Перейти на него можно по этой ссылке: ActualizeBot

Коротко о технической реализации

Этот бот — один из нескольких небольших проектов, в которых я представляю первую общедоступную версию моей мини-платформы с открытым исходным кодом для разработки ботов со сложной структурой, любовно названной Hobot и доступной в NPM для заядлых людей.

Фреймворк построен на основе Telegraf.JS и TypeScript, его версию с нулевым началом, снабженную примером использования, можно посмотреть по адресу github и сразу попробуй.

Скоро выложу версию 0.0.2, расширенную и причесанную для человека снаружи, и посвящу ей (стволу) отдельную статью.

Буду рад, если для кого-то это окажется так же актуально, как и для меня.

Итак, сколько собеседований вам пришлось посетить? Я уверен, вам есть что рассказать! Теги: #открытый код #Образовательный процесс в IT #Логические игры #JavaScript #node.js #тестовое задание #telegram-боты

Вместе с данным постом часто просматривают: