Это пост удивления. Я сходил на собеседования в три минских стартапа и в одну небольшую компанию, и вот что из этого вышло. Немного расскажу о себе. Не хвалы ради, а чтобы дать нужное представление. С детства увлекаюсь программированием. За уши не оторвать было от компа. В разработке 11 лет. Полсотни проектов разного уровня сложности: мобильные, кроссплатформенные, фронт, бек. Писал на 13 языках (без учета всяких html, css, bash, sql). На чем-то больше, на чем-то меньше, но все в реальных проектах. Пишу хороший чистый код, шарю в юзабилити. Немного open source, насколько позволяет время, майнтейню пару десятков пакетов для Arch Linux. Короче, развлекаюсь, как могу и в рабочее, и в свободное время. Последние лет 5 на фрилансе. Часто работаю над бизнес-кейсами заказчика от и до. ЧСВ не раздуто: когда видишь скилл, и как пашут некоторые ребята на GitHub… Ну вы поняли. И вообще я норм: носки меняю, дезодорантом пользуюсь, матом почти не ругаюсь :) Так вот, я завалил три из четыре собеседований, и я хочу об этом поговорить. Никому нет дела до твоего кода Самая удивительная на мой взгляд вещь. Тебя будут спрашивать про сортировку красно-черных деревьев, про методы стандартной библиотеки, которые используются раз в приблизительно никогда. Но код… В самом деле, зачем смотреть код человека, главная работа которого будет заключаться в том, чтобы его писать? Но это же самое интересное! Можно посмотреть, как разработчик организует проект, как пишет, какие технологии и как использует. Это сразу закроет тучу вопросов. Ладно, когда github пустой, а весь рабочий код под NDA. Но и тут можно выкрутиться, дав небольшое тестовое на час-два (только не на месте: для многих собеседование это всё-таки стресс). На моем github два десятка проектов на разных языках, PR'ы в репы Facebook, Microsoft, Mozilla, куча issue в другие проекты. Это же клондайк для оценки как hard, так и soft скиллов. И, похоже, только одна компания из четырех знала, что с этим делать (Akveo, вы молодцы). Мы очень классно обсудили, почему эти проекты появились, вместе посмотрели код. Глянули кое-что из рабочих проектов, как по коду, так и в релизе. От этих ребят я оффер в итоге и получил. Торжество бесполезных знаний Как часто вы пишете сортировки? Я вот последний раз делал это в универе. А знаете, какие этапы в https-handshake? Я знал когда-то, забыл — не надо. Но мне хватило 5 минут, чтобы открыть гугл и вспомнить, когда настраивал A+ рейтинг в nginx пару лет назад. И знаете что? Сейчас я опять не помню. Этапы рендеринга интернет-страницы в браузере? Каждый день с этим встречаюсь, правда-правда. А то, что поиск по B-tree индексам в PostgreSQL имеет логарифмическую сложность? Я вчера узнал, вот теперь и вы. А сейчас постарайтесь забыть как можно скорее! До тех пор, пока вам это ДЕЙСТВИТЕЛЬНО не понадобится. Оставьте в голове только то, что индексы надо использовать и что они бывают разных типов. Мы живем в мире, перегруженном информацией. И для разработчиков это особенно актуально. Каждую неделю появляются новые фреймворки, библиотеки или инструменты для разработки. Невозможно знать всё. Сейчас важна не столько информация в голове, сколько знание, что она есть, умение быстро её находить, разбираться и правильно использовать. А навык отдебажить и пофиксить чужую библиотеку в проекте важнее, чем помнить, как использовать стримы в nodejs. Со стримами хороший разработчик разберется по доке на раз-два. Я сейчас немного преподаю в универе в качестве хобби. И знаете что? У текущего поколения нет таких заморочек насчет забивания головы знаниями. Хотя многие из них действительно толковые. Они выросли с постоянным онлайном, где информация всегда под рукой. Другой подход. Конечно, хороший узкий специалист будет знать много разных нюансов. Просто за счет того, что скоуп меньше. Но забавно то, что большинство из этих компаний искало фуллстек разработчика. И хотели глубоких знаний во всем. Вот прямо сейчас. А ведь правильный фуллстек — это кругозор и умение углубиться, когда надо. Тебя валят Не везде это было, но встречалось. Интересно, это у нас менталитет такой? Задоминировать и показать свою крутость? Тебе ведь к ним не сильно-то и надо, хороших проектов у тебя на год вперед. Идешь с мыслью: "Ну классная же идея у стартапа! Правда ведь хорошо помочь могу". А тут вот это. И ребята вроде адекватные. Фиг пойми. А потом видишь, что вакансия полгода открытой висит. Ну-ну. Было пару собесов в западные компании. И там акцент был на то, что ты знаешь и умеешь, а не попытках подловить на незнании. Или это мне так повезло/не повезло? Был бы рад услышать мнение более опытных в этом вопросе товарищей. Будьте на равных. Вы нанимаете себе коллегу, а не сторожите будку. Пофигу на прошлые проекты Тоже удивительно. Их полсотни под капотом: маленькие и большие; командные и те, где ты в одно лицо спроектировал UX, API, написал 2 моб. приложения, фронт и бек; те, которыми гордишься, и те, за которые до сих пор стыдно. Ну комон, это же важно, давайте поговорим про это. Я же все расскажу: где был супер-стар и всех спас, а где залажал по полной. Нет, глупые вопросы про CSS. Проекты — то, откуда мы черпаем свой опыт. Это этапы развития разработчика. Как кольца на дереве. Всегда спрашивайте про проекты. Про самые сложные и интересные задачи, которые решал человек. Про то, чем он гордится. Это еще и поможет выстроить дружелюбную атмосферу. Помните же, что собеседование — это стресс? Людям нравится рассказывать о том, в чем они были хороши. Правда, с интровертами не сработает, но собес с ними — это вообще отдельная тема. Опытные разрабы Хорошего опытного разработчика не собеседуют как мидла на галеру. Он уже не про это. Он про то, как сразу сделать хорошо. Чтобы не пришлось потом героическими усилиями решать проблемы. Он про то, как выпустить продукт, а не судорожно фиксить затыки в производительности, хотя можно было с самого начала просто сделать по-другому. Все то, о чем вы спрашиваете, он уже где-то использовал в том или ином виде. OAuth? Да фиг знает, как он там работает. Пару лет назад делал, сейчас проект открою посмотрю. С того момента полсотни либ, SDK и протоколов подключал. Что, все помнить? Он не станет читать к собесу про ACID и CAP, как студент к экзамену. Умейте понимать уровень человека, который перед вами, и задавайте правильные вопросы. Ремоут Полупункт на самом деле. Потому что не для всех важно. Многие просто не умеют. Другие не хотят. Хотя, блин, 2020 год на улице, хорошего разраба днем с огнем не сыщешь. А тут целый потенциальный мир, вместо одного города. Казалось бы. С ремоутом как с сексом: в первый раз страшно и мало у кого хорошо получается. А потом с опытом все лучше и лучше. Не поверите: ремоут может быть продуктивнее работы в офисе. За счет того, что уходят все эти дерганья и отвлекания. А если еще и разные часовые пояса… Знаете админское правило 15 минут? Подожди, перед тем, как разбираться с проблемой пользователя. Часто она или решится сама, или станет неактуальной. Так и тут. Когда понимаешь, что не можешь дернуть человека — включается мозг, 1 шт. И да здравствует асинхронное взаимодействие! Искренне надеюсь, что эта статья кому-то поможет лучше выстроить процесс собеседований в своей компании или стартапе. Всем hello world, open source и жвачка!