Мой друган в очередной раз объяснял кому-то в уличной курилке, как устроен C#. Я глотнул кофе, закурил и облокотился на ограду, чтобы послушать. Он рассказывал, какие интересные тонкости нашел в сборщике мусора. Говорит, в дотнете он устроен довольно просто снаружи, но очень хитро в деталях реализации.
Я не встревал — просто слушал и мотал на ус. Было 11 утра, я только что закрыл тикет, который от меня ждали завтра, и мог весь оставшийся день слоняться по офису. Витян всегда был очень прокачанным парнем. Он контрибьютил в рослин, изучал сорцы всех инструментов, которыми пользовался, и действительно глубоко шарил в дотнете. Я знал — мне до него как до луны. Но у нас все равно почему-то были одинаковые позиции и зарплаты.
Я предложил ему глянуть на тестовое, которое шутки ради делал для одной вакансии, хотя всерьез менять работу не думал. Какой же программист не захочет посмотреть на код? Мы пошли смотреть. Я открыл главный файл с кодом, проходит секунда.
— У тебя тут течет память.
Да, я прочитал про хвостовую рекурсию, но не прочитал, что в дотнете этой оптимизации нет. Он быстро накидал мне десяток тейков, я все поправил и послал тестовое работодателю. Вспомнил, что кроме задания нужно было ещё пройти тест по английскому и кинуть им скриншот с результатами. Ноль проблем, мой хороший друг отлично знает язык — попросил его пройти, только не слишком идеально.
Мне сказали, посмотрят вечером. Свободного времени было море, но разработчик всегда найдет, чем себя занять. Я предложил самому громадному коллеге поспорить, кто сожрет больше пиццы. Проигравший платит по счетам. Когда получаешь смешные деньги, которых все равно ни на что не хватает, их не особо и жалко проигрывать. Все расходы взрослого человека я перекладывал на своих родителей, а сам прожирал зарплату в офисе или с женой — наконец-то я хоть что-то зарабатываю, могу вот так запросто заказать себе три пиццы! Остаток дня я сидел, как тюлень, переключал жирными пальцами видосы — один нелепее другого.
Дома ждал сюрприз — тестовое зашло. Написали, что хороший код, назначили интервью. Я капец обосрался — какое ещё интервью на синьора, мой бог, они же меня размажут. Я джун, которого из вежливости называют мидлом. Ничего толком делать и не умею. Но думаю — вот когда дорасту, собесы тоже будут, а сейчас я хотя бы узнаю, что вообще требуется. Посмотрю, как это происходит.
Сначала они спросили про мой опыт. Я рассказал про текущую работу, здорово приукрасил стаж и свой вклад. Ну а чего такого — они же меня все равно не возьмут, а так хоть собес подольше продлится.
Первые несколько технических вопросов были легкие — отличие значимых типов от ссылочных, типы данных в сишарпе, базовое ооп, паттерны проектирования. В моей компании были внутренние экзамены, и я был обучен как обезьянка отвечать на такие вопросы. Солид принципы — я не понимал их тогда, не особо понимаю и сейчас — но смог что-то промычать в ответ, расшифровать аббревиатуру, и налить воды в стиле: «дублирование кода это плохо, наследование надо применять вдумчиво, файлики с кодом должны быть маленькими».
Я почувствовал — скрининг кончился, сейчас пойдут серьезные вещи, и мне конец.
— Филипп, можете рассказать про сборку мусора в дотнете?
О, ещё как мог. Мои новичковые мозги мало что понимают, но у меня хорошая память, и рассказ из курилки я помнил почти слово в слово. Где-то на середине я понял — интервьюер досюда уже и сам не знает, как оно работает. Отлично. Закончил рассказ, и, чувствуя инициативу, стал рассказывать про F#. На моей работе часто приходилось ждать вечных билдов, и иногда я реально самообразовывался. F# мужик тоже не знал, поэтому просто слушал. Я закончил, и мне сказали, что я подхожу.
Что? ЧТО?
— Филипп, у вас не указана ожидаемая зарплата в резюме, мы готовы предложить ТРИ ТЫСЯЧИ ДОЛЛАРОВ.
Я выпалил «согласен» быстрее, чем успел посчитать, во сколько раз это больше моей текущей зп. Закрыл скайп, посчитал. И охренел. Это что получается — теперь я удаленщик, синьор и богач? То есть, это я могу сейчас пойти, выкинуть свою четверку, взять себе мерс в кредит и разъезжать по своему полудеревнскому городу? Да. Получается, что все мои бывшие коллеги — тупицы, а я нашел путь.
Я победил, решил все свои проблемы и состоялся как человек, потому что полушутя получужими руками сделал тестовое, и запомнил монолог в курилке? Да.
Я по-быстрому свинтил со старой работы, оборудовал себе дома рабочее место, и стал привыкать к своей новой роли. Мне самому не очень-то верилось, что все так круто изменилось, и казалось, что надо срочно начинать вести себя по-другому. С этого момента все, что я говорил, начиналось со слов «Как человек, который получает $3k, я считаю...».
Я оповестил всех, кого только мог. Запомните, Фил — умный и успешный парень. Я стал раздавать всем советы, потому что теперь только я один понимал, как устроена жизнь. Я обучил своего младшего кузена, что в школе хорошо учатся только идиоты. Вот я не учился, и все у меня круто — надо быть как я.
Сначала я ясно понимал, что получил работу случайно. Но задачи не оказались рокет саенсом, и я понимал как их решать. Не хотел, но понимал. Когда получил деньги первый раз, кажется, я окончательно утратил связь с реальностью. И действительно уверовал, что я стал профессионалом экстра-класса. На той работе использовались довольно старые технологии, и я быстро решил, что такому крутому парню как я не по рангу возиться в этом дерьме. Я послал их к черту, и провернул тот же трюк с другой работой — чуть получше — уже свято веря, что я ее действительно достоин. А потом ещё с одной. И ещё.
Везде меня спокойно апрувили на синьора/ведущего, везде я мог выполнять задачи где-то на грани, когда тебе ещё не пишут, что с тобой надо серьезно поговорить, но уже собираются. И я легко это себе объяснял — задачи неинтересные, я не хочу их делать. Тупой бизнес меня торопит, потому что ему насрать на качество. Процессы сломаны, я один понимаю, как все должно работать — но говорить им не буду. Это не моя война. Поищу пока нормальную работу.
Но «нормальной» работы все не было. На каждой из своих работ, кроме самой первой, офисной, я под конец жутко выгорал особо ничего не делая. Я не знаю, что было бы, если бы я честно фигачил как мог свои восемь часов в день. Мне нравится программировать, но я иногда неделю не мог заставить себя сесть за комп. Работа была пыткой, потому что мне было мало просто нафигачить код и закрыть тикет. Я подсознательно боялся, что если сделаю что-то не так — они все поймут. Меня пару раз увольняли с работы, но ни разу из-за низкого качества кода. Потому что я реально неделю мог делать всплывающее окно. Лишь бы все было идеально на моем уровне понимания.
Я получал приличные деньги, у меня был удобный график, и работа, которую легко сделать интересной при желании, но я был глубоко несчастлив. И винил в этом болванов, которые окружали меня. Раз у меня не получается работать, выдавать хороший перфоманс, и быть счастливым — значит мир вокруг не правильный. А эти гаденыши своими улыбками только усиливают неправильность. Меня стало тошнить от любого человека из индустрии, который затирал что-то про успех, командную работу, значение продукта и все в таком духе.
Я был несчастлив, зол и надменен. Я расхаживал как напыщенный павлин и поучал всех вокруг — делайте так, а не вот так. Используйте свою тупую голову. Глупцы, не вздумайте улыбаться, эта индустрия — гниющая помойка. Голанг ваш — говно собачье. Пхп мусор. Джависты застряли в прошлом. ООП — для идиотов. C#, который меня кормит — смешная поделка, только отбитый дебил будет использовать его для серьезного проекта.
Когда реальность вокруг тебя рассчитана на то, что ты умный, а ты на самом деле тупой — ты начинаешь притворяться умным. А что бы другой человек поверил, что ты умнее, проще всего доказать ему, что это он тупой. Чем я и занимался. Причем я подсознательно понимал, с чем это связано, но это только усиливало ощущение, что мне здесь не место. А это ощущение усиливало злобу.
Неделю назад мы с друганом бухали по скайпу, как всегда проходились по дебильной индустрии, в которой всё не так, как нужно. Зашла речь про типы и IoC контейнеры — и Паша говорит
— А я тут кстати интересный фреймворк пишу для .net core, у меня инверсия зависимостей реализована на порядок удобней, чем родная.
Паша пошарил экран, и следующие четыре часа я наблюдал, как выглядит офигенная система, которую я никогда бы не додумался построить — а если бы и додумался, то точно бы не построил; как выглядит разработчик, которым я никогда не буду. И какая, мать твою, гигантская разница между выпендрежным ивановским дурачком и настоящим синьором с 10+ опыта.
Фреймворк, на мой дилетантский взгляд, очень крутой. Я бы рассказал, в чем именно, и как сделано, но, во-первых, Пашок хочет сделать это сам, а во-вторых, я недостаточно интеллектуален для этого. Я похвалил его работу, повосхищался зацепившими меня деталями, сбросил звонок. И сел охреневать. Гаденыш в сто раз круче меня.
Он синьор, я синьор, у нас одинаковая зп. Я даже поувесистей его буду на рынке — статьи делают свое дело — но боги, сколько же всего он знает. И умеет, блин, этим пользоваться.
Это не первый раз, когда я встречаю более знающих кодеров, но я всегда говорил себе: «Эти остолопы заучивают доку, а вот я умею думать. Я изучу все что нужно, главное, что и учиться, и анализировать я умею». Размытая фраза «Умею думать» всегда была моей визитной карточкой. Этот скилл объективно не проверить, поэтому все кто меня знает делились на тех, кто верит, и тех, кто нет. Вторых я записывал в тупиц.
Но Пашок-то на деле продемонстрировал — думать он умеет лучше. И знает он больше.
Я вспомнил, как люди восхитились моей реализацией тестового на том первом собесе. Зашел в репозиторий утешить себя — а там джуновский говнокод. Очень, очень плохой. Похоже, тестовое они использовали, просто чтобы понять, а программист ли я вообще. Само собеседование я сумел выволочь, потому что от природы неплох в риторике. Я умею направить беседу, куда мне нужно. А собеседующий видимо справедливо считал, что джуны на такую вакансию просто не придут.
Но когда меня заапрувили, я почти мгновенно уверовал — тут все по делу. Я теперь синьор.
Мой друг-журналист постоянно затирает мне, якобы мы — разработчики — любую непонятную ситуацию закрываем заглушкой, которую называем объективностью. А потом сами верим, что победили так хаос и все упорядочили.
Вот мы четко обозначили, на какие грейды делить людей и по каким-критериям куда кого записывать. Отряхнули руки, взглянули и решили — проблемы больше нет. А теперь вспомните, сколько желторотой мелюзги называет себя синьорами. Они пришли на свои галеры, их там пару лет погоняли тасками для шестерок, а потом — чтобы вылечить пацанам выгорание — торжественно повысили до нового слова, чтобы не убегали на соседнюю галеру (где их этим словом давно заманивали).
Но вот мелюзга встречает в интернете ворчунов, которые не верят в его синьорство и хотят поставить на место, и думает — «это их субъективные оценки. Объективно я синьор, раз меня им назначили, дали таски и заплатили большие деньги».
Они — не то чтобы проблема. Так, маленькая заноза в заднице, повод настоящим инженерам поворчать. Они просто поверили в систему, которая дает им приятный статус, и никому не навредили. Проблема — это я. Я заставил систему поверить в себя, хотя сам знаю, что до статуса синьора, до синьорских денег и задач мне еще ползти и ползти. Но раз система поверила и так, значит никуда ползти уже не надо.
Ненавижу выводы — но они есть. Этот сраный трехступенчатый грейд должен отправиться на помойку уже вчера. Будь сейчас общепринятая система грейдов из пятнадцати — 90% чуваков в индустри не дотянули бы и до четвертой ступени. Байки, что Россия такая крутая, «ведь только здесь можно стать супер-гипер-пупер-лидом до 30 лет» — тоже на помойку.
Вот когда под словом синьор из коробки будут представлять не мелкого бородача в ярком свитере, а злого дядьку лет сорока — вот тогда и поговорим. А сейчас, мои уважаемые друзья синьоры, давайте признаемся, что настоящих синьорских тасок мы и в глаза не видели, дружно возьмемся за руки и пойдем к чёрту.
Смотрите мой подкаст. Последний выпуск вот
extiander
в копилку
Израиль, синьором считают (действительно много, с обоих сторон) человек проработавший 6 лет.
АД
pnovikov
На самом деле синьором можно стать вообще в любом возрасте, если убить аналогичное синьору количество монстров (вместо участия в бесполезных митингах и самолюбования). Но это сложно. Это работать надо.
andreyverbin
Правило 10000 часов никто не отменял. Синьорами программисты начинают себя считать начиная с 3х лет опыта работы. На самом деле этим программистам понадобится проработать хотя бы 10 лет, чтобы действительно стать синьором. И все это время читать, изучать и не застревать в одном и том-же болоте. И вот тогда будет синьор.
Дело конечно же не только в количестве лет, а в их качестве. Но нужно потратить очень много лет чтобы изучить весь тот корпус знаний, который нужно знать. Кроме того нужно ещё и мозги натренировать. То есть нужно чтобы нейронные связи в голове перестроились под решение программерских задач, под аналитику и принятие правильных решений.
Разница между теннисистом и программистом не такая уж и большая. Чтобы успешно ударить ракеткой по мячу недостаточно теоретических знаний, также не нужно иметь какую-то особенную физическую силу. Нужно 10 лет отрабатывать удар, умение распознавать полет мяча, оценивать его траекторию и т.п. В боксе, борьбе, футболе то же самое. И все это происходит в голове. У вас может быть идеальные физические данные для тенниса, но если а голове нет нужных нейронных связей, вы играть не сможете.
Программисту тоже нужно 10 лет тренировать мозг, чтобы успешно распознавать проблемы, быстро и эффективно усваивать информацию, отсеивать ненужный маркетинговый шум и т.п. То есть определяющий фактор это скорость формирования нейронных связей в голове, а это за 3 года не делается.
pnovikov
Ну то есть как я и говорил — работать надо. А это сложно :)
khim
Хотя формального опыта у него, к этому моменту — меньше трёх лет.
maxbl4
В 8ом классе он начал писать продуктовый код и зарабатывать этим деньги? Решать проблемы в продакшене? :)
Начать учиться разработке в 8 классе это в целом неплохо, не особо рано, но допустимо. Чтобы к второму курсу найти работу джуном part time, а к выпуску иметь неплохое представление о разработке. И вот с этого момента начнется отсчёт десяти лет :)
nicholas_k
Деньги платят даже за CRUDы по 10 штук в сутки, это не показатель.
И задачи на продакшне не всегда сложные, хватит преувеличивать. Самому себе можно придумать задачи посложнее.
Напишите обращение матрицы по Гауссу и это будет сложнее, чем 90% задач на проекте средней сложности.
maxbl4
Синьёрность измеряется не только и не столько в сложных алгоритмах. У больших компаний есть неплохое описание уровней, например в Microsoft. Очень примерно это звучит так: уровень работника зависит от сферы его влияния. Джуниор/миддл работает в рамках своей задачи, части небольшого проекта. Синьор работает в рамках целого проекта, он принимает решения в соответствии с целями проекта и пытается двигать его вперёд, а также свою комнаду. Более высокие уровни оказывают влияние на соседние проекты и целые направления бизнеса. И это не значит, что они становятся менеджерами и отдают указания. Можно написать очень крутой алгоритм сжатия данных и использовать его в своей задачке или проекте и всё — это не синьор поведение, хотя алгоритм может быть супер сложным и идеальным кодом. А вот суметь объяснить соседним командам, а может и всему миру, что твой алгоритм лучше, продвинуть его и изменить подходы к сжатию данных — это синьор поведение.
Это невозможно прочитать в книжке, к этому приходят только с практическим опытом. Нужно работать на проектах, создавать новые вещи, общаться. Конечно же гениальный человек может это сделать быстрее, чем за 10 лет. Но есть также огромное количество людей, которые не делают ничего такого и за всю жизнь, потому что нужно оторвать зад с дивана и начать делать больше, чем от тебя требуется в задачке из таск трекера, больше чем от тебя требует твой босс зануда. А чтобы знать, что именно делать, нужно интересоваться, тем что происходит в мире, тем чем занята твоя компания, зачем она это делает и так далее
ads83
По этому показателю автор — вполне может быть сеньором. Ну и что, что он не пишет свою крутую реализацию фреймворка? Если он предложил к использованию библиотеку, помог с внедрением и обучил коллег — это уровень сеньора? Вроде бы да, и тогда зря он себя ругает :)
Во многих компаниях востребованы люди, которые помогут настроить процессы. На мой взгляд, они более востребованы, чем специалисты, способные написать фреймворк-круче-стандартного.
И лично я не понимаю, где проходит граница между (тим/тех)лидом и сеньором, который двигает вперед проект и команду
Починить тесты (часть выбросить) и настроить CI, добившись от команды пушить только код, проходящий тесты — это уровень сеньора или нет?
Написать автотесты на Селениуме, когда их не было, облегчив жизнь тестерам; организовать переход с Java7 на современные версии, поборов проблемы; выделить из монолита сервис(ы), который нужен не только текущей команде, но и паре "соседей". Все это задачи, для которых технического навыка может хватить уровня copy-past со Stackoverflow, но навык взаимодействия с людьми существеннен и без него "не взлетит".
И лично я не знаю — это уровень среднего сеньора, или сеньора, претендующего на техлида? А может, чем-то должен заниматься архитектор и кто-то зря думает, что он "средний сеньор"?
AnthonyMikh
Наивно или чтобы вычисления были устойчивы?
0xd34df00d
В 8-м классе начал писать код по заказу каких-то биоинформатиков (да, не за деньги, ну и что), в 9-м — начать опенсорс-проект, который обеспечивал прохождение phone screening'ов и половины технических интервью следующие лет 13.
sentyaev
Для уников в принципе можно и за 3 года пройти этот путь. Это 80 часов в неделю, даже выходные иногда можно устраивать. Главное чтобы потом в дурку не забрали.
khim
Не получится. Чуть выше же написали: сеньор должен общаться с людьми и делать проекты, которые захватывают многих.
Если вы, к выпуску из института, освоили плюс-минус технические вопросы так, чтобы занятьсы уже и организацией команды — за три года вы можете этому научиться и без 80 часов в неделю. А если вы будет осваивать и то и другое одновременно — то 80 часов не помогут: даже если вы готовы работать 80 часов в неделю, то нафига всем остальным, кто не пытается стать сеньором, это делать?
Piter_Y
У меня старший за 3 года выбился в сеньоры. Так что да, возможно…
Bringoff
Получить тайтл сеньора и стать сеньором — не одно и то же. Вся статья об этом. Меня начальник сеньором на публику величал в одной компании, когда у меня и двух лет опыта не было. Это не значит, что я им был.
arheops
А я у меня первая работа после универа была с титлом «ведущий инженер»(тоже, в принципе)
Это говорит о том, что я был супер-крут? неа, только о том, что мог решать задачи(мидл уровень).
Piter_Y
Ну, так и я знал ведущего программиста в ВУЗе, не знавшего ни одного языка программирования))) Просто на должности лаборанта зарплата маленькая.
homocomputeris
Зачем отменять правило 10000 часов, если оно никогда не было верным?
ardraeiss
Этот комментарий зря минусуют. За 10к часов можно, в том числе, успешно выучиться что-то делать неправильно, если делать это постоянно неправильно. Можно и организм немного угробить, если, например, 10 тысяч часов потратить на неправильные приседания со штангой.
Одно только потраченное время не является достаточным условием.
И необходимым оно тоже не является.
Комбинация вложенного времени, усилий и правильности делаемого — вот это уже "да".
Arik
Ведьмак 3
ABy
Для этого совсем не обязательно тратить 10к часов, можно справиться и за 10 секунд
fillpackart Автор
Я больше, конечно не возраст и опыт имел ввиду, а скорее системы, которые ты построил. Но они кореллируют
gluck59
Не на каждой работе нужно построить систему.
Или синьоры рождаются исключительно в стартапах?
vitaly_il1
AFAIK, не очень связано со стажем.