Сложно такое осознать, я думал, меня настигнет эта участь несколько позже, когда мне будет хотя бы 30+ и я буду каким-нибудь крутым разрабом в известной компании, но мне 26 и я в NoName конторе.
Я долго пытался понять, почему все именно так и кажется пазл сложился. Хочу выговориться. Обычно, цель моих постов — рассказать на какие грабли я наступил, чтобы уберечь читателя, но видимо не в этот раз.
Копаясь в себе, я определил для себя 2 главные причины происходящего:
- отсутствие магии;
- наличие конвейера.
Отсутствие магии
Увлекаться программированием я начал давно: класса с 7го, как открыл для себя робототехнику. Тогда магией казалось все: до заветного написания Hello World в Bascom еще добраться нужно было, пережив разводку и травление плат. А на выяснения того, что ты не довоткнул МК или криво пропаял дорожку могли уходить вечера.
Дальше — больше, стены рушились одна за другой:
- осознание того, как можно запилить полноценный сайт, используя шаблон одной странички и контент из БД;
- понимание того, как ходит парсер и тырит инфу;
- уяснение процесса разработки под мобилки;
- разработка коробочных продуктов;
- выяснение того, как устроен игровой движок;
- и т.д.
Событий этих много, но я ясно помню каждое из них и при каких обстоятельствах они происходили, потому что эта была неописуемая радость и восторг от понимания, как все устроено. Думаю, многие понимают о чем я — эти эмоции ни с чем не спутать.
Но с течением времени магия постепенно стала улетучиваться: каждый раз смотря на очередной сайт, мобильную или десктопную прилу, ты видишь, как оно устроено и знаешь, как работает. Какая используется технология, шаблон, ЯП, GUI’шная обертка, алгоритм или либа. Понятно, что от случая к случаю, понимание это где-то больше, а где-то меньше, но это не имеет значения. Важно, что есть общее осознание системы и ее блоков, а реализация — это всего-лишь инструменты.
Все чаще, я начал ловить себя на мысли, что мне не интересно реализовывать то, что я точно знаю, как устроено. Я могу не спать ночами, думая, как решить ту или иную задачу, но как только, я понимаю, с помощью каких инструментов и технологий она решается, как декомпозируется, находится ответ, — дальше уже не интересно.
Прям какая-то нездоровая зависимость от знаний и новых технологий.
Наличие конвейера
Как только я закончил универ, я вышел на полноценные 40 часов в неделю. До этого я или фрилансил или работал неполную неделю (в лучшем случае 24 часа). И тут я начинаю понимать, что что-то не то, что все, что я люблю в программировании превращается в работу у станка.
Мне очень повезло с местом работы: я не делаю пресловутые мобильные дрочильни, не гоняю джейсонки, не разрабатываю очередную документно-оборотную систему. На проектах используются разные технологии, механики и железо. С нашим мнением считаются и можно напрямую влиять на конечный продукт. Но тебе все равно приходиться время от времени верстать какую-нибудь кнопочку или пилить скучную обыденную фичу потому что она нужна твоим пользователям.
Так все устроено: невозможно все время разрабатывать что-то уникальное.
Попытки выхода
Охх… что я только не перепробовал: pet-проекты, хакатоны, статьи на хабр, менторство, DevOpsing, менеджерские и управленческие задачи, но исход всегда один: отсутствие магии и наличие конвейера.
Из всего вышеперечисленного хакатоны мне зашли больше всего, но там свои подводные камни. В будущем планирую подробно осветить данную тему со своей колокольни.
Вместо заключения
Я знаю, я не один такой. Я видел ребят, которые занимают топовые позиции в крупных компаниях, но при этом пилят формочки или разочарованы тем, что увидели легаси код продукта, которым пользуются ежедневно миллионы, а он настолько ужасен, что школьник сделал бы лучше.
Иногда, я задаю себе вопрос: почему я не могу радоваться как другие? Почему есть те, которые машут в камеру заказчику раз в сутки, гоняют
Но ответ прост: я пришел ради магии будучи ребенком.
Revertis
Acid_Bl4ck
Это не ловушка, а вопрос перспективы и типа личности. Есть система ролей Белбина. Среди этих ролей помимо прочих есть «исследователи» и «финишеры». Первым интересней искать решение, чем воплощать его, вторым же важнее довести дело до конца. В хорошей команде нужны и те и другие и еще набор других ролей.
В вакууме можно бесконечно разводить полемику что важнее. По-хорошему просто должна быть структура, которая сможет позволить себе содержать чуть более «узких» специалистов, чтобы не нагружать людей работой, которая им просто не подходит.
khim
Ну нет в мире столько «финишеров», чтобы каждому «исследователю» их по 20-30 человек досталось!
Максимум что может получиться — найти 20-30 «обезъянок», за которыми нужно каждый день следить — инача подучите кучу кода, а работать всё равно ничего не будет.
А исследователю «следить за обезьянками» не, чтобы уж очень и интересно, так-то…
Acid_Bl4ck
Во-первых Ваше предложенное соотношение — ничем не подтвержденная спекуляция. В жизни я видел не так много чистых исследователей. Это не такой частый типаж как может показаться. Даже если сделать выборку по комментариям, в которых подавляющее большинство говорит, что пост — нытье. Очень многие готовы просто работать какую-то работу за деньги чтобы обеспечивать свою семью и/или хобби.
К тому же, в той системе ролей этих типажей десяток. Это ситуация не про выбор двух стульев. Даже при равномерном распределении у вас будет 1/10 часть «исследователей». Т.е. один на среднюю команду. Не говоря о том, что абсолютно чистые типажи встречаются редко, у человека обычно есть вторичная роль. Похоже, что не у автора поста. Такое тоже случается.
Во-вторых стоит уровень seniority. Джун и мидл специалистам вроде бы обычно не дают задачи на месяцы непрерывной работы, их задачи более атомарны. Их исследовательский зуд удовлетворяется изучением новых конкретно для них вещей и они не успевают устать от рутины в реализации. Не все работники в компании должны быть «в авангарде» разработки. Ваш же комментарий намекает, что у нас в условном коллективе все — скучающие синьоры.
Теперь мы переходим к ситуации, где у нас есть на коллектив всего максимум пара скучающих исследователей. И если их уровень квалификации достаточно высокий, а контора не маленькая, то под таких персонажей вполне можно найти или создать позицию — R&D, архитектор, внутренний консалтинг для всех команд.
khim
Дело в том, что во всех приличных коллективах я видел куда больше людей, которые тяготеют к исследованиям, чем к «финишёрству». Я бы тоже с большим удовльствие погрузился бы в какие-нибудь исследования — связанные или не связанные с моей текущей работой. Но кому-то нужно бороться с билд-системой. Кому-то — нужно фиксить рутинные баги. Кому-то — нужно ездить неделю по кругу на тракторе сбивая динозавров, чтобы баг воспроизвёлся (поверьте — это только со стороны кажется весело).
И потому люди заставляют себя заниматься и рутиной тоже. Чтобы взамен — получить день, два, от силы неделю в месяц (как повезёт) под исследовательскую деятельность. Исследования — это награда для большинства из них. Как и для меня, кстати.
Вот кого хватает в избытке — так это не финишёров, а людей, которым вообще всё пофиг, они от 9 до 5 хотят работать и ни об исследованиях, ни о финишёрстве не думать.
Но тут есть маленькая проблема — за ними нужно следить… иначе они будут честно приходить в 9, уходить в 5, а в результаты деятельности можно будет только выпитый кофе и съеденные плюшки записать.
Проблема в том, что для тех из них кому можно что-то поручить и не беспокоиться о том, будет результат или нет… исследования — и есть и хобби. Это то, ради чего они терпят рутину!
Отсюда и реакция на «гениальное» предложение «а давайте мы у вас всё самое интересное отберём и „даде Васе“ отдадим… — а вам оставим только то, что вы ненавидите».
За джунами и мидлами при этом нужно следить… и это тоже нифига не исследовательская работа.
Нет конечно. Людям, которые пришли в команду недавно действительно проще найти себе «исследование». Вот у нас как раз недавно новый человек объявился… он считал, что C++ неплохо знает… но увидев что-то в духе
const auto& [arg1, arg2] = std::tuple{t...};
побежал книжку про метапрограммирования покупать…Но ведь и то, что для сеньора рутина — не факт, что ему можно поручить делать!
И почти во всех эти случаях — всё равно человеку достанется изрядный такой кусок рутины. И внутренний консалтин и архитектор — мало исследовательских зачад решают. R&D — это уже ближе, но такую позицию, опять-таки нужно заслужить… потому как желающих куда больше, чем вакансий… — и даже там не всё будет сплошным исследованием. Статью, в конце-концов, кто будет к публикации готовить?
Acid_Bl4ck
Исследование это не обязательно контексте ученых и лабораторий. Любая нетривиальная проблема, которая идет вне стандартных пайплайнов — это исследование. Поиск корня проблемы, изучение контекста, анализ решений.
Тут идея не в том, что обязательно разрабатывать новые ЯП или парадигмы, а лишь в том, что процесс работы не должен иметь готовых стандартных решений, которые надо просто сесть и сделать. И консалтинг с архитектурой тут вполне подходят.
khim
Задача архитетора (если такая позиция предусмотрена) на 80-90% — это выбрать одно из проверенных временем решений и раздать задачи «индусам». Потом проследить, что он не налажали.
Задача консалтера на 80-90% — это рассматривать случаи, которые не относятся к предметной области спрагивающего, но являются чем-то отлаженным и налаженным для консалтера.
Да, и там и там предполагается некоторое, небольшое, время на исследования… но это хорошо если 10-20% времени удаётся этим заняться. А в остальное время вы должны, извините, доказывать, что вам не зря дают такое большое время на исследования.
Вообще в любой «творческой» работе — хоть в R&D крупной фирмы, хоть в университете, хоть где… рутина составляет 80-90%.
Это может быть оформление бумаг, обучение студентов и прочее, прочее, прочее… но «исследования» — это привилегия, которую нужно заслужить.
А уж чем вы её заслужите (доведением дела до конца, чтением лекций и обучением студентов и т.д. и т.п.) — это обсуждаемо.
Tyusha
Меня иногда посещает зависть к работникам (не обязательно IT), у которых работа в конце рабочего дня по определению сделана, не надо ни о чём думать, никакие дальнейшие задачи не крутятся в голове. Что я имею ввиду. Например, отпечатаны и подписаны все накладные, заполнены все документы, обслужены все заказы и т.д. Т.е. уходя домой, ты знаешь — ты сделала ВСЮ работу.
У меня и большинства здесь присутствующих такого состояния не наблюдается никогда. Постоянный under construction. Нет такого, что после окончания рабочего дня я могу сказать — всё, на сегодня делать больше нечего. Наверное это наоборот хорошо, что меня всегда есть, что ещё сделать, но иногда тянет к рутинной незамысловатой работе, у которой существует КОНЕЦ, а не как у нас.
khim
Neikist
Ну я это стараюсь решать тем что ставлю себе на день с утра подзадачи. Оно конечно все равно вне работы продолжаешь о ней думать, как можно было по другому сделать например, или что потом будешь делать, но чувство в конце дня приятное что сделал все запланированное.
UberSchlag
Вопрос больше про организацию своего времени и своих задач. Стратегически у вас вечный Under construction, но на каждый день можно напилить тактических задач, которые можно успешно закрыть. Это, кстати, один из важных пунктов, защищающих от выгорания в долговременной перспективе — защита себя от иллюзии отсутствия результатов труда.