Мой путь в разработке ПО.
Здесь мне хочется больше рассказать о становлении мышления, чем о конкретных происшествиях. Я люблю размышлять о всяком, так что будут отсылки к популярной культуре, не пугайтесь!
Два года назад у меня страшно бомбило из-за фильма. Вообще, это со мной бывает крайне редко. Один из моих прошлых начальников, который в течение определённого периода просил меня вести поминутный дневник рабочего дня, а потом отчитываться ему, хвалил меня за устойчивую психику.
Бомбило из-за простой, казалось бы, вещи. Крайне неудачной 9-й части фильма «Звёздные войны». Почему же она была неудачная? Да, повествование скомканное, но это же развлекательный фильм о победе добра над злом, чего это я взъелся?!
Взъелся я оттого, что двумя годами ранее 8-й фильм был для меня откровением. Откровением не в том смысле, что происходило что-то именно с точки зрения вселенной Лукаса, а в другом. В том, как точно показано то, с чем я сталкивался по жизни. Немного углубимся в аналогии.
Начинается новая трилогия с того, что молодые люди рождаются и растут на руинах некогда могущественной империи среди ржавеющих атрибутов прошлого. Продолжается тем, что они пытаются примерить на себя уже испробованные успешными предшественниками ролевые модели.
Результат, впрочем, оказывается маловоодушевляющим. Выясняется, что молодёжь опоздала к богатырям лет на двадцать. Последние выдохлись, разочаровались в былых идеалах и перешли в режим необременённого существования. Те, кто всё ещё что-то делает, истощены.
Я дважды бакалавр. Впервые образовываться я пришёл в 16 лет на «Менеджмент». После первого курса чувство собственной бесполезности стало обжигать, и я стал интересоваться разработкой. Второе образование техническое. Впечатления описаны в предыдущем твите.
В самом конце восьмого фильма Рей утаскивает книги, чтобы по ним начать учиться древним искусствам. Да, это моя тема. Я тот ещё книжный червь. Если не найден никто из живых, кто мог бы помочь, то мы воспользуемся замечанием почившего Мортимера Адлера:
Снова к фильмам. После 8-й части пройдёт лишь пара лет, и я получу впечатляющий ответ на вопрос, что же дальше?! Вышло однако следующее: «Герман, а хер его знает, мы откопали свадебного генерала, сейчас-то он всю молодёжь и отмудохает». В целом, ответ оказался недалёк от истины.
На первой своей работе разработчиком мне казалось, что устроено там дело как-то несерьёзно. Нам выдали jQuery, небольшой фреймворк, перерабатываемый Ruby в шаблоны покрупнее и сказали: «Ну, делайте». И мы начали. Но подождите, а как делать правильно-то?!
Ответов я не получил. Но сумел обучить нашим нехитрым делам целый новый офис удалённых разработчиков. Хорошие трое ребят из Ульяновска. Ещё успел отметиться голосом на автоответчике. Жажду знаний это не заглушало, и тогда я начал поиски классической литературы по разработке ПО.
Сама идея классической литературы стала зыбче для меня с тех времён. На лобовой вопрос интернет мне ответил какой-то невнятной солянкой на Stack Overflow. Кажется, что сама идея существования такого набора книг идёт ещё со школы, а та взяла её в нашем социалистическом прошлом.
Тогда я взялся за «Совершенный код». Хороших отзывов об этой книге я не слышал в последнее время, её называют нудной и очевидной. Видите, как наш мир впитал её? В начале книги есть рассуждение о метафорах. Это важный инструмент, мы им ещё воспользуемся в другие дни.
После перехода на новую работу я считал, что все чрезвычайно умны и начитаны, и не хотел отставать. Я шёл по известным изданиям, осиливая 6000 страниц технической литературы за год. Через некоторое время я всё же заметил, что так люди не делают, но решил не останавливаться.
Под конец подтвердилось, что нет пророка в своём отечестве, и желаемую мной дискуссию выстроить не удалось. Тогда я думал, что команды разработки выиграют, если будут организованы подобно древним философским обществам в поисках истины. Но вот миддл такого выстроить не может.
Тогда же я столкнулся с ещё одним вопросом, который попытался решить самоорганизацией. Процессы часто окружены бюрократией, которую легко забыть. За забывчивость можно было получить по шапке, а я такое не люблю. Чтобы избавить себя от этого, я разработал шаблон чеклиста.
Этот шаблон загружался в Todoist, а Todoist в лучших традициях излучателей информации болтался тонкой колонкой на каждом экране, где я работал. Тогда же стало заметно, что смысловая часть задачи совсем обделена вниманием, и нужно добавить ещё какой-то пункт.
Ничего приличного в голову не приходило, и закончил я так: «Понять, что необходимо сделать в задаче». Спустя многие применения этот пункт не только не отвалился, но и стал центральным во всей этой небольшой бюрократической системе. Она на удивление жива и несколько лет спустя.
В этом году я опубликовал её подробное описание: hackernoon.com/the-meticulous…. Теперь она называется «Тщательное кодирование». Возможно, я пробегусь по ней в один из дней.
По той причине, что проблемы разработки я стал решать самоорганизацией, я до сих пор не совсем чувствую себя именно программистом. Хоть я и возводил большие конструкции, и правил сложные ошибки, всегда это заканчивалось так: «Ух ты, а это я сделал?!»
На следующем месте работы я решил взять быка за рога. Сразу попросил закупить две книги: «Совершенный код» и «Чистый код», чтобы всем нам начать говорить на одном языке. Затея споткнулась о сильно выгоревшего тимлида. Тогда-то я и впервые услышал о скучности «Совершенного кода».
Тогда же я столкнулся с занятным явлением: натягиванием простого решения на сложную проблему. Задача состояла в разработке многостраничного парного списка котировок. Каждый список состоял из нескольких подсписков, дубликаты нужно было убирать. Требовалось много HTTP-запросов.
Моё решение умело обрабатывать все эти сложности, а также включало в себя прогреваемый кеш. То есть по мере использования приложения работало быстрее. Лучшие запросы — это несовершённые запросы, всё по заветам @igrigorik.
Единственной «проблемой» был объём этого решения — 3000 строк. То есть в моём представлении это не было проблемой, но высокопродуктивный исполняющий обязанности тимлида считал, что кода слишком много и всё переписал. У него вышло 800 строк. Только вот не работало.
Зарплата цвета #333 и привлечение давления сверху не способствуют выработке качественных решений. Я ушёл. В течение последующих нескольких лет я сменил пару работодателей, стал лидом и ощутил разные вариации на отсутствие менеджмента. Не рекомендую!
В Devexperts я пришёл в твёрдой убеждённости, что с уровня разработчика невозможно выстроить большую и качественную систему, но можно с уровня менеджмента. Надеюсь, что имеющиеся и поступающие знания и действия подтвердят справедливость моих идей.
До сих пор мне кажется, что практики работы в нашей отрасли достаточно зачаточные. Мы, конечно, используем клёвые инструменты от модных ребят с GitHub'а. Но видится мне, что для дальнейшего прогресса обратиться нужно к улучшению не техники, а организации нашей деятельности.
Об этом мы и поговорим. Своего выступления в @itunderhood я ожидал около двух месяцев, и это хорошо. Было над чем подумать, что попробовать.
Не утомила ли вас моя простыня?🙂
🤔
17.8%
Утомила, пощади, злодей!🤔
38.3%
Через боль к совершенству🤔
43.9%
Хочется ещё!Герман Тебиев