Смертные грехи разработчика
Коротко про то, что больше всего беспокоит в современном мире разработки и почему нужно доказывать, учиться, тестировать и не лениться.
Я разработчик, но код давненько не писал
Нихрена ты не разработчик.
Если вы считаете, что написание кода — это опциональное требование для хорошего разработчика, то, пожалуйста, сойдите с этой планеты. Существует много возможностей, чтобы жить дальше, но перестать писать код. Можно перейти в менеджмент, можно в управление персоналом мигрировать, можно апнуться до высокой должности, а можно просто уйти в монастырь. Но при любом из этих раскладов вы перестаёте быть разработчиком, если больше не пишете код.
Почему? Во-первых: код — это не велосипед, если не практикуешься, то забываешь. Во-вторых: разработчикам очень обидно, когда "какой-то менеджер", пытается выдать себя за своего (да, в общем-то, это для любой профессии справедливо). В третьих: это вредно для ЧСВ; если вы перешли в другую область/отрасль, то отращивайте себе скилл с харизмой заново, а не тащите ссылки на былые успехи (см. последний грех).
Из примеров.
- Был как-то на собеседовании в Американской конторе. Там на одном из этапов господин, представившийся как CEO, начал спрашивать лютую дичь о Ruby по бумажке (в смысле по заготовленным шаблонам в гуглодоке). На вопросы о том пишет ли он сам код и зачем такое непотребство спрашивать у соискателей он тактично перевёл разговор и попросил сосредоточиться на задачах.
- Есть знакомый ресурсный менеджер, который психологом работает на досуге. Так вот этот господин до их пор код пописывает в свободное время и иной раз может сильно удивить кандидата любопытными познаниями в, казалось бы, нехарактерной для него области. Вроде не не программист, но все его принимают за своего.
Я же запускал тесты, зачем тестировать руками приложение?
Полагаться только на результаты тестов (даже если среди них интеграционные end-to-end прокликивалки) — это тяжкий грех. Как минимум раз за время разработки любой фичи нужно взять и руками прокликать весь цикл этой самой фичи. Во-первых, вы будете чуть лучше разбираться в платформе и в том, как её видит юзер, а не как она устроена внутри. А во-вторых, вы идёте по новому сценарию и здравому смыслу и можете обнаружить что-нибудь очевидное вам, но незаметное для автотестов. В любом случае, автотесты — это дополнение к ручной проверке самим разработчиком, не замена таковой.
Сразу же скажу про особенности. Я не говорю про полноценное ручное тестирование силами разработчика, для этого есть специально обученные QA-ребята. Я о необходимости запуска локального проекта и о минимальной проверке любых изменений именно там. А уж потом в автотестах, на деве, стейдже, препроде и проде.
Таки да, тут должны быть холивары про сложности многих проектов и их "невозможность" запустить локально. Лично я в такие эпические проекты не верю. А вот в лень и жадкость — верю. Посему давайте коротко пройдёмся во возможным проблемам запуска проекта локально.
- Маленький независиый проект — нет препятствий патриотам!
- Много внешних интеграций. Значит у вас есть песочницы для каждой из них. Либо у вас есть заглушки или локальные эмуляторы внешних сервисов. Либо у вас есть большие проблемы, которые скоро выстрелят.
- Много микросервисов. Суть да дело это предыдущий пункт. С той лишь разницей, что расширяются возможности по локальной эмуляции. Например, набор из докеров с реальными микросервисами вместо заглушек.
- Нужно много данных для работы проекта. Но очень редко нужен весь многотерабайтный массив данных для разработки. А если всё-таки нужен, то для этого делают несколько инстансов для разработчиков. Например, 2-3 огромных инстанса на команду из 10-15 разработчиков. Таки да, не шибко удобно и дорого для бизнеса, но иначе вы заплатите ещё больше за разработку на продакшене, которая будет производиться вне зависимости от хотелок высшего руководства.
- Монструозный монолит, который работает на определённом железе и только в правильной фазе луны. Если так, то, скорее всего, вы в кровавом энтерпрайзе и здравый смысл там не работает.
Я уже знаю достаточно и могу больше не учиться
Если коротко: "кто не развивается, тот деградирует".
В теоретических науках имеют место случаи, когда можно узнать базу и на ней остановиться. Там всё более-менее стабильно, доказано и неизменно. Физические законы, к счастью, каждую пятилетку не меняют. Так что, если не лезть на передний край науки, то можно жить и даже работу работать. Вот, например, интегралы по контуру: Фейнман их решал в Лос-Аламосе после Второй Мировой и сейчас их решают примерно теми же аналитическими методами.
А вот с разработкой и программированием так не прокатит. Единого неизменного божественного языка программирования пока не нашли (концепция из Лавины интересна, но пока не открыта). Скорость изменения технологий от пары десятков лет в случае операционных систем и БД до пары месяцев в случае JavaScript'а. И если не развиваться, то за год-другой можно изрядно потерять уровень, а за пятилетку просто обресетиться в ноль.
Дабы не сильно холиварить о скорости изменения технологий приведу пару примеров. Есть книжка Кернигана и Пайка 1992 года розлива. По ней можно неплохо освоить Unix и не сильно удивиться изменениям, случившимся 15 лет спустя. Можно взять книжку Тома Кайта про Oracle 8, который вышел в районе 2000 года и не сильно удивиться различиям, случившимся в версии 18c. А вот любую книжку по JS пятилетней давности можно смело пустить на растопку.
Я достаточно крут и могу это не доказывать
По-моему, это самое тяжкое и самое распространённое.
К сожалению или к счастью, доказывать свои навыки, проф.пригодность и вменяемость нужно всю жизнь. Когда вы перестаёте это делать, то можете обнаружить, что вы либо на пенсии, либо у вас деменция, либо вы просто сгорели. В любом случае, вам к специалисту.
Частота доказательств разная. В случае друзей и родственников доказывать нужно не так уж часто. А в случае незнакомых людей — на регулярной основе и по полной программе. Места, где потребно доказательство, очень разнообразны: на собеседованиях, на конференциях, новым коллегам, новым возлюбленным… даже в магазине, если покупка немного сложнее табуретки.
Если вы считаете, что рассказ о своём опыте без подтверждения навыков — это нормально и достаточно, то посетите соседнюю планету. Как по мне, это называется пижонством и зазнайством.
По части примеров в этой области туго, ибо большинство из них негативны и, думаю, читатель сам вспомнит что-нибудь подходящее из своего опыта. А с позитивными ещё сложнее, так как они не замечаются и просто выливаются в конструктивный диалог. Посему, уповаю на жизненный опыт читателя и, надеюсь, каждый подберёт достойный пример.