Что нужно знать, чтобы быть сеньором? |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2022-03-25 20:10
В последнее время случилась (и продолжает случаться) тьма публикаций про кадровый голод в айти, про переоценённость синьоров, недооценённость всех остальных, про золотые горы, скандалы, интриги и конский перекос баланса фракции "программисты". Ну, короче, вы сами всё читали и вполне себе в теме. Так вот, в сим опусе хочется вспомнить, а кто ж такой синьор и что ему крайне желательно знать, чтобы синдром самозванца не накрывал и чтобы окружающие уважали и на поклон за советом приходили.
Напоминаю, всё нижеследующее - это субъективное мнение автора, родившееся в ходе личного опыта и не претендует на истину в последней инстанции... да и вообще, на истину не претендует. Об авторе Давайте коротенько обрисую, чем автор успел позаниматься и кем побыть за свою не очень-то длинную жизнь, чтобы были более понятны некоторые нижеследующие предположения касаемо синьора. Карьера автора начиналась, когда руби 1.8.7 маячил на горизонте, макбуки ещё не были мэйнстримом и многие продолжали сидеть на 10.5 Leopard. В те времена автор сажал китайский фанерный бензиновый планер морковкой в попытках "разработать беспилотник" для обороны нашей родины, смотрел как одногрупники пишут распознавание образов для определения и сопровождения целей зенитных установок, используя GOTO в сишных макросах и понятия не имел что такое веб. Потом за старательные издевательства над Леной Сёдерберг и их качественное документирование залетел в веб, где и остался надолго. Сходил взад-назад по карьерной лесенке от джуна до своего отдела разработки, побыл системным архитектором и тех.руководителем... а потом вернулся обратно в район software engineer. Были и вечные холивары за кодстайл, и долгие обсуждения архитектуры с командой, и "мордобои" с руководством за ресурсы, и политические разборки с С-левелом и даже оптовая продажа чёрного дерева. К последнему, кстати, рынок до сих пор абсолютно не готов. Но это совсем другая история. Так вот, на эргодичность не претендую, но видал всякое, был по обе стороны баррикад процесса поиска работы/работников и у меня-таки есть шо вам сказать! Про синьора Так вот, синьор. Это, на самом деле, очень собирательный образ. Эдакая штука с чисто-утиной типизацией, с мат.ожиданием в районе "много знает и умеет" и дисперсией, не поддающейся никакой оценке. Как минимум потому, что с одной стороны, в это понятие включается "маркетинговая" составляющая вида "служи, дурачок - получишь значок", а с другой стороны, все старательно молчат про то, что бывает после синьора. То есть дважды синьор, трижды синьор и прочие кратные ордена Сутулова. Тут, лучше всего, привести примеры реальных людей: интересный господин азиатской внешности, специалист по связям с общественностью, лид рекрутмента и теолог-богослов или барышня - гейм дизайнер, DBA и балерина. Всё скилы на достойном уровне и абсолютно без шуток. Если нужно больше примеров, то ходите сюда. А вообще, в пору подтаскивать кардинальные числа для оценки этого бесконечного разнообразия, но не факт, что все оценят. Посему, ограничу область рассмотрения синьорами обыкновенными из программирования/разработки с уклоном в тот самый пресловутый веб. Фундамент Сразу скажу, что титулы "синьор реакта", "синьор AWSа" и подобные - это какая-то хрень. Это классический замес техников и инженеров воедино. Здесь "синьор" надо читать как "крутой знаток". То есть это аналог слесаря 6-го разряда. Чувак это эпической крутости и делает крутые вещи, но не является синьором. Увы, в индустрии всё давненько перемешалось, но давайте отделять мух от котлет. Синьор - это про фундаментальные знания и успешный опыт множества серьёзных разработок с применением этих знаний. То есть синьор - это инженер с богатым опытом боевых действий, в "устаревшей" советской классификации. Исходя из означенной парадигмы, давайте посмотрим, что же надо знать и уметь. Сети Давайте сразу с холиварного начнём, чтобы далеко не ходить. Классический вопрос "что происходит, когда мы вводим в адресной строке example.com и жмём ентер?" должен сразу влечь цепь воспоминаний про TCP/IP, некоторые мысли про альтернативы вида ARP и далее разворачиваться в пышное повествование о сборке пакета, вложениях пакетиков один в другой, порты, фрагментацию, способы передачи на разных уровнях, про подтверждение и неподтверждение доставки пакетов, различные application-протоколы, их особенности, роутинг, приблизительное представление о пути обработки пакета в netfilter и его собратьях и вот это вот всё. Короче, всё что Таненбаум завещал и ещё чутка сверху про application-level и железно-юниксовые особенности. Помимо вот этой горы "бесполезных сетей", надо бы понимать где и как это может выстрелить и пригодиться. Например, с ходу понимать что есть NAT, как его пробить и зачем он может пригодиться при организации внутренней сети. Как туда втиснуть туннели, как выборочно завернуть трафик в них, как работать с сетевыми интерфейсами в юниксе и вся эта прочая херобора. Конечно, с места хвататься и писать команды iptables не надо, надо просто знать широту спектра возможностей и места, где дислоцированы самые популярные грабельки. Оси Ну там, что логи в Здесь же нужно упомянуть app и web сервера и их настройку. Конечно, nginx и его сотоварищи уже давно тянут на отдельную специализацию и, быть может, уже сопоставимы с тем же ffmpg по монструзности, но базовый набор знаний должен быть. Всякие там vhost, настройка проксей/перенаправлений, прикручивание сертификатов, раскидывание приложений по портам, поддержка нескольких доменов и тд. А чо так много? Я бы сказал, что это мало. Тут ни пересборки ядра, ни процесса загрузки ОС, ни Хранилища данных Быть в курсе про места, где складывают данные: файловые системы, различные носители информации от дискет до NVMe и программные надстройки над ними. Здесь же, должны быть знания баз данных (хотя бы на уровне sql/nosql) и областей их применимости. Знать SQL и хотя бы один его диалект, подозревать о иных языках запросов и сдержанно их ненавидеть за изобретение велосипедов. Понимать отличия декларативного сикуля от прочего императивного мракобесия и, следовательно, уметь мыслить сикулем. Само собой, ACID, структуры данных, индексы, чтение эксплейнов любой степени тяжести и оптимизация запросов на базовом уровне. Так же, будет неплохо понимать куда какие данные лучше сувать (кэш, логи, финансовую инфу etc), что там с хранилищами key-value, document-oriented, column-based и прочими достижениями непоседливых инженеров и их мысли. Про интимные подробности различных базёнок, например, про временнУю сложность операторов в redis, про последовательность выполнения запроса в PG, про различные движки в ClickHouse или про лимиты BSON в Mongo можно не задумываться. Всё это логически вытекает из базовых знаний и Гугл радостно поможет с освоением, когда припрёт заюзать. Английский Вот так внезапно! Да, в нашем мире это тоже обязательный атрибут. Иначе, какой ты, нафиг, Клингонский Его техническим диалектом любой разработчик владеет "от рождения". С себе подобным мы можем коммуницировать крайне эффективно и даже не замечать что используем очень специфический набор терминов и синтаксических конструкций. Чтобы лучше понять о чём речь - посмотрите на рекрутёров. Им приходится изучать сей технический диалект, дабы коммуницировать с соискателями. Но, к сожалению, большинство рекрутёров не писали код в промышленных масштабах, а учили "язык" как любой другой иностранный. Отсюда же растут ноги кучи ляпов/мемов, которые регулярно появляются в описаниях вакансий и бодро разносятся по сообществу. Последний, кстати, про милф-разработчика. Второй же диалект - это бизнес-диалект. Когда прожект/продакт менеджер, саппорт или иной коллега, созерцающий продукт снаружи и общающийся с конечными пользователями доносит вам свои мысли. Эту штуку тоже надо знать, понимать и уметь синхронно переводить с технического клингонского на бизнес-клингонский и обратно. Программирование Один язык на уровне слепой печати продакшн кода из головы по запросу. Общее знание шаблонов проектирования и основных библиотек языка подразумевается. Если в арсенале есть что-нибудь низкоуровневое (по современным меркам), то жирный плюс. Ибо, например, после Си любой иной язык - это очень просто. Но, в любом случае, понимание алгоритмов и структур данных - в обязательном порядке. Ровно так же как и чёткое представление о ресурсах, их потреблении, управлении и учёте. То есть, вся эта магия с памятью и её уровнями, сложность алгоритмов (О разного размера), процессорное время, переключение контекстов, интерпретаторы/компиляторы, их особенности и плюсы/минусы хотя бы на базовом уровне. Чтобы, например, не удивляться "многопоточности" в GIL и его собратьях. Тут же процессы/треды/файберы и основные знания параллельного выполнения кода. Ну и основы функционального программирования. А то его, так или иначе, завезли уже во все языки программирования. А как же фронтенд? Да никак, просто в разделе "программирование" язык будет из подмножества js, а остальное останется без изменений. Ну и HTML+CSS добавится. Вёрстка, поток документа, приоритеты селекторов, работа с DOM-ом. А как же <название распоследней js-библиотеки/фреймворка>? Так же - никак. Это не фундаментальные знания. В конце статьи будет более развёрнуто об этом. Архитектура Это когда понимаешь, как увязать воедино всё вышеозначенное, чтобы оно на своих местах было, дополняло друг друга, а не мешало и чтобы минимально необходимый набор инструментов/технологий был, а не зоопарк. Здесь же, масштабирование, отказоустойчивость, CAP-теорема, оценка необходимых ресурсов (вычислительных мощностей, пропускной способности, кол-ва воркеров etc) и прочие высокоуровневые штуки, которые серьёзные дяди рисуют квадратиками да стрелочками на доске и от выбора/конфигурации которых крайне сильно зависит успех всего последующего процесса разработки. Кстати, самая лучшая похвала в архитектуре, это когда на презентации результата тебе недоумённо говорят "и вот эти три квадратика вы два месяца рисовали?!" и больше никаких косяков найти не могут. То есть всё на столько просто получилось, что "очевидно же!" и не может туда быть закопано несколько сотен человекочасов. Управление Тут есть несколько видов. Планированием То есть, понимание скрамов/канбанов/ватерфолов и бесхитростной анархии стартапов должно быть в ассортименте. Опыт взаимодействия с чем-нибудь типа Redmine/Jira/ZenHub/etc. Не должно возникать вопросов зачем происходит планирование, как, в первом приближении, оценить задачу при отсутствии половины требований, какие бывают методики оценок и когда какую хорошо применять. Представление об управлении рисками будет большим плюсом. С его помощью можно эффектно предложить забить на большой и тяжёлый кусок функциональности и чётко аргументировать почему это наилучший сценарий из возможных. Да и с бордер-кейсами будет работать гораздо легче, а не слепо закрывать их всех большими кусками бизнес-логики. Кодом Версионный контроль всякий. Git, нынче, в тренде. Чтобы было понимание что такое коммит, как он с сотоварищами в дерево организуется, чем тег от бранчи отличается, как правильно бранчеваться, сливаться и как это можно практически приложить для пользы личной и общественной. Процессом разработки От бранчевания, через тесты с кодоанализаторами до CI/CD и релизов. Почему тесты - это важно, почему не надо холиварить за линтинг, как быстро собрать CI/CD на коленке, как подкрутить существующий пайплайн под новые хотелки, как зарелизить чтобы потом не было мучительно больно и не пришлось красноглазить по пояс в консоли продакшена и прочие неприметные, но очень важные штуки. Людьми Труды Чалдини и Фромма штудировать не надо (хоть и увлекательно), но базовый набор навыков должен быть. Чтобы не говорить "Вася, твой код гумно, а ты мудак! Звездуй переделывать и шоб я это херню больше не видел!", а более конструктивно сообщать, что не были учтены некоторые требования, можно улучшить пару мест и если воспользоваться вооот этой приблудой, то можно сильно сэкономить время и силы. Иначе говоря, подавать личный пример, конструктивно помогать коллегам и, по мере сил, мотивировать окружающих на качественное исполнение своих обязанностей. Софт-скилы Как вы уже поняли из предыдущей части про управление, софт-скилы - это тоже часть синьора. Если гуру кода и владыка техники не может прокоммуницировать с ближним своим, то это очень крутой чувак, но не синьор. Эмоциональный интеллект должен присутствовать и активно использоваться по назначению. Надо уметь чётко описывать проблемы, пути их решения, аргументированно критиковать и предлагать альтернативы. Быть открытым к критике своих творений, а так же уверенно стучать пяткой в грудь и слать всех от джунов до С-левела на хрен, когда интуиция говорит, что вот тут должно быть именно так и никак иначе. Естественно, принимая на себя всю ответственность за такое решение. Если что, ответственность - это не только звиздюли, но и плюшки, если решение выстрелило и принесло с собой дополнительный профит и/или экономию. Последнее (в смысле, плюшки), нужно выбивать отдельно используя скил продаж. О нём ниже. Навыки самопродажи и прочей торговли, увы, тоже обязательный атрибут. У нас капитализм, всё вокруг - это товар, а что не товар, то уничтожить (если не согласны - труды Ленина вам в помощь). Так вот, без продажи не то что на нормальную работу не устроишься, даже своего мнения, порой, не отстоишь. Так что в синьоре ещё и продажник должен жить. Небольшой, но въедливый и честный. Что же в итоге получается? Получается большой и добрый монстер. Который дохрена чего умеет, ещё больше знает, но ещё не превратился в сферическое существо в вакууме и готов на новые свершения. То есть, мотивацию не растерял и она у него внутри, а не снаружи. Такого же растить минимум пятилетку в суровых условиях продакшена да в атмосфере профессионалов! Всё верно. По времени, считай, как высшее образование получить, если не больше. Только без халтуры, пьяного угара, складывания прибора на занятия, а всего лишь с вджобыванием по 8+ часов каждый день... иногда не только будний. Можно сказать, это современная вышка, которую все хотят, но никто не хочет давать, ибо дорого! Гдеж такого найдёшь?! Да, в общем-то, есть они и довольно много. Только все они чумаданом денег и пакетом опционов сверху придавлены к своим местам, чтоб далеко не отползали. Проблема в том, что, судя по вакансиям на рынке, именно таких и ищут, но не понимают сколько они реально стоят и какой на них спрос. Или не хотят понимать? Из-за чего, подавляющее большинство кадров плавно, но целенаправленно, течёт за бугор. Там мало того что денег больше, так ещё и условия приятнее. Например, круг общения ближе и роднее по менталитету, менеджеры вменяемые и общий уровень адекватности выше. Не говоря уж о задачах и их побочном эффекте в виде почти обязательных статей и опенсорса. На самом деле, за бугром уже поняли проблему и хантят прямо со скамьи институтской, если не раньше. Вот тут хорошо описано сие действо и последствия. Так что кому надо, тот находит. Но кадров не хватает и страдают в общем-то, непричастные области. Чем это обернётся мы все с вами увидим в ближайшем будущем. А пока живём как завещал Конфуций врагам своим: "чтоб ты жил в эпоху перемен!" Он же стоит как крыло от звездолёта и чугунный мост! Всё верно. Три года назад я писал, что в РФ вилки вакансий были в районе 2-3к$, а потолок - в районе 5к$ (300к рублей по тем временам) да и то, таких вакансий было крайне мало и явно ставку там не указывали. Теперь же 5к$ - это вполне себе норма даже для РФ. Такую сумму открыто указывают. А если копнуть чуть глубже, то по России у рекрутинговых агентств потолок в районе 9к$. А если выйти на Что же делать? Сухари сушить! Ну и базис прокачивать заодно с формированием целостной картины мира. Образование нам немного подкорректировали в последние пару десятков лет, поэтому кроме "помоги себе сам" ничего не остаётся. Кстати, если заметили, во всех вышеозначенных пунктах нет ничего про современные фреймворки, новомодные инструменты, библиотеки с переднего края науки и про прочие свежие и современные вещи. Всё относительно просто, базово и если отмотать лет на 10 назад, то мало что поменяется в повествовании. Потому что при всей скорости изменения мира разработки в частности и АйТи в целом, база остаётся одна и та же (хотя все старательно внушают нам обратное). При наличии той самой базы можно влиться в любой современный тренд за пару недель или месяцев и не испытывать никаких затруднений. Раскурить докер или разобраться с AWS при знании юникса и сетей? Легко! Изучить очередной js-фреймворк при наличии знаний в программировании? Да не вопрос! Освоить новую фишку очередного языка программирования? Позвольте, это же давно забытое старое и мы это уже знаем! В общем, прокачивайте себя, товарищи! Употребляйте в достаточных количествах знания фундаментальные. Старательно откладывайте их про запас, интересуйтесь смежными областями и навыками по взаимодействию с окружающими гуманоидами. И не будет у вас иного пути и желания, кроме нанесения добра и причинения пользы себе и ближнему! Комментарии на Хабре Хаб «Управление персоналом» на Хабре Источник: m.vk.com Комментарии: |
|