Не прыгайте выше головы — останетесь тупицей в плену больших денег



    В C# есть такие штуки — структуры. Это как классы, но хранятся на стеке, и работают не по ссылке, а по значению. В среднестатистической разработке их почти не используют. У структур много преимуществ, и я искренне топил за то, что их можно применять для улучшения кода. Типа, смотрите, мы можем использовать особенности структур, чтобы писать более безопасный и отказоустойчивый код.

    Такую чушь может сказать человек, который не знает, что у структур есть пустой конструктор по умолчанию, который нельзя ни убрать, ни переопределить. Знаете почему я этого не знал? Да, потому что я никогда их не использовал. Ведь хорошего разрабовского опыта у меня мизер. Я давно уже не хочу читать книжки про сишарп. Зачем, если мне и так платят?

    До первой работы, и пока не получил синьорский оффер, я учился как не в себя. Читал книги, декомпилил родные классы в дотнете, допытывал экспертов: «Как работает вот эта штука? А почему? А ты бы как сделал? А что быстрее?». День, когда я не узнавал новое признавался провальным. А в каждой задаче я видел возможность поучиться. Радовался замечаниям на ревью, и мог позвонить другу посреди ночи, чтобы обсудить с ним решение.

    Я делал все это, потому что чувствовал — я недостаточно хорош, я ничего не понимаю. Мне тогда казалось, что я и на свою-то джуновскую роль тяну с большой натяжкой, все вокруг были умными и компетентными, и я очень, очень сильно хотел стать таким же. Я думал, что если изучить все нормально, стать старшим разрабом — то ты будешь таким чуваком, который вечером придумал проект, ночью его сделал, а утром отправил на рынок. Поймите правильно, о чем вообще может стать 22-х летний пацан? Он мечтает стать крутым дядькой.

    Примерно тогда мой хороший друг, ни дня не проработавший прогером, взял да и устроился старшим разработчиком в сбербанк. Он много учился, делал свои проекты, и потому смог пройти собес. На его тогдашнюю зарплату он мог бы нанять десять таких как я, чтобы они делали его работу, и меня это прилично задело.

    Мой друг, ровесник, человек без опыта — взял, да и официально стал тем, кем хотел стать я. Без дурацких промежуточных шагов с годами набора опыта и обучения. После этого мне уже не хотелось учиться.

    Вместо десятка книг, статей и вопросов умным людям я стал сливать все свое время на лотерею собеседований. Она работает элементарно — разработчик должен знать настолько много всего, что эти знания даже теоретически не проверить полностью. Поэтому проверяют выборочно. Это как экзамен по билетам, где ты выучил только один, но можешь за день сходить на десять таких экзаменов — и хотя бы на одном он тебе попадется.

    Так у меня и сработало. Попался удачный вопрос, я подхватил разговор — и вот старина Фил уже старший разработчик с кучей денег. Это работает очень странно. Я знал, что сорвал шальной куш, и одновременно был горд, что наконец стал синьором.

    Разработка в целом так устроена, что когда ты недостаточно компетентен — да ничего не произойдет. Ты будешь незамечать кучу проблем, но от них никто не умрет. Ты прошел собес, и на новой работе никто не пытается доказать, что тебя взяли зря. Наоборот — если ты начинаешь не справляться, они пытаются убедить и тебя и себя, что никакой ошибки тут нет. Даже когда ты будешь демонстрировать вопиющую некомпетентность в каких то вопросах они просто скажут: «Ну окей, у Фила пробел с архитектурой бд, у нас у всех есть пробелы». И как бы, никто не заметит, что таких пробелов у тебя в 10 раз больше, чем у других.

    Легко спутать нормального инженера с человеком, который недостаточно компетентен, ведь все программисты переживают, что недостаточно хороши. Ну послушайте, если мы наймем первокурсника на должность техдира, и он начнет ныть, что недостаточно хорош, мы же не скажем, что это синдром самозванца? Он действительно недостаточно хорош. У него нет необходимых знаний. И необходимого кругозора. Его нужно уволить, или понизить.

    Но нет — разраб говорит, что он плохой, а люди вокруг думают, что ну не может же человек сам себя нормально понять и оценить, не бывает такого. И делают вывод, что он ошибся — то есть на самом деле хорош, плюс самокричтичен, а значит он еще лучше. И даже если произойдет чудо, и на одной из работ заметят подвох — ещё не факт что уволят, а если и уволят, то найдешь новую, и будешь потом сидеть, и рассказывать всем, что они мудаки, которые не понимают, насколько ты крут.

    Моя карьера так и пошла. Я сидел на удаленке, делал вид, что работаю, а сам проходил собес за собесом и каждые несколько месяцев получал оффер пожирнее.
    Я побывал старшим разработчиком, ведущим разработчиком, консультирующим экспертом, тимлидом. Работал с русскими, американцами, индусами и вьетнамцами. Строил гигантские системы, и маленькие стартапы. Учил людей писать код, пытался изобретать свои инструменты. Выработал свою философию и подход. Начал писать книгу про разработку.

    Но я забывал сделать вот что — учиться программировать.

    Когда у тебя высокий грейд, ты можешь делегировать все что угодно. Окей, не разбираешься в бд — пусть делает тот кто разбирается. Надо оптимизировать перформанс? Я не эксперт, пусть Лёха сделает. Я дам ему потом свое ревью. В какой-то момент я понял, что делегирую почти все задачи, которые заранее не знаю, как решить. Мозг ленив, и хорошо, что жизнь обычно держит тебя в тонусе. Но если ты самопровозглашенный гений технологий, который обманул систему — твой мозг ничего не будет держать в тонусе. Всю действительно сложную работу сделают холопы.

    Печальная реальность в том, что большинство разрабовских задач более менее сможет сделать любой из нас — и почти всегда ни у кого нет ни времени ни желания разбираться, насколько качественно ты это сделал. Разработчики — люди без ответственности. С нас никто не спрашивает за баги, которые мы наплодили год назад, а раньше их как правило и не обнаруживают.


    В индустрии принято, что большие шишки на досуге изобретают крутые инструменты. Чтобы изобрести что-то действительно нужное на сишарпе, нужен настоящий инженер, который хорошенько хлебнул говна, нашел какую-то сложную боль за свои десять лет опыта, и придумал как её вылечить. Поэтому я изобрел инструмент для фронтендеров. Я неплохо знаю тайпскрипт, но чистым фронтом никогда не работал, а потому, даже имея в голове полный концепт и готовность его быстро закодить, уперся в то, что я в целом понятия не имею, как правильно создать и оформить фронтенд-либу. Как настроить конфиги, как спроектировать внешнее апи, как и какие тесты подключить, какую файловую структуру использовать на проекте — да нихрена я не знал. Поэтому я позвонил своему другу фронту, и уговорил его сделать все за меня. Когда он сделал, мой интерес к проекту уже остыл. Я занимался поиском новой работы.

    По хорошему, мне бы сгореть от стыда, и уйти с головой в обучение — но уже не получится. Я взрослый мужик, у меня есть дела и поважнее, чем корпеть над учебниками. И жизнь не требует этого. Если ты просто хочешь хорошенько отдыхать, и рубить бабло — нужно делать все точно как я.

    Но я-то блин стал разрабом, чтобы делать интересные и важные вещи. Чтобы что-то построить, принести в мир. Решить настоящую и важную проблему, гордиться качеством своей работы. И я потерял все шансы на это. А взамен получил какие-то непонятные понты, возможность ничего не делать, и недоделанную американскую мечту. А сверху — огромную, просто астрономическую кучу цинизма.

    Хрена с два я хоть в чем-то стану разбираться, учиться, или вообще что-то делать, пока меня не загонят в угол. И хрена с два меня в этот угол загонят. Я чувствую себя куском говна на работе, но пути назад у меня нет — и я это принял. Берут, платят, не гонят — ну и хрен с ним. Я достаточно преисполнился, и научился жить, принимая, что я кусок говна.

    Но если бы я мог отмотать время назад, я бы все сделал по другому. Стать действительно хорошим старшим специалистом можно не играя в 23-х летнего синьора. Надо устраиваться на позицию по рангу, причем желательно во всякие яндексы, где твой трехлетний джуновский опыт действительно сделает тебя мидлом, а трехлетний мидловый — начинающим синьором. Да, лет пять-шесть ты будешь получать меньше, чем я. Но. Даже низкая джуновская зп в айти — это хорошие деньги. У тебя все равно будет синдром самозванца, но в отличие от меня, самозванцем ты не будешь. А самое главное — я то уперся в свой потолок, и никогда уже не стану разработчиком, который определяет индустрию. А вот ты сможешь. Ты охренеть как сможешь.



    На правах рекламы


    Мощные виртуальные серверы с процессорами AMD EPYC для разработчиков. Частота ядра CPU до 3.4 GHz. Максимальная конфигурация позволит оторваться на полную — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe.

    VDSina.ru — хостинг серверов
    Серверы в Москве и Амстердаме

    Комментарии 22

      +3

      Даже не узнал сходу статью от короля разработки, потому что нет фирменной картинки с кодом. Начал читать — что-то подозрительно, пришлось проверить автора...

        +1

        Когда у тебя высокий грейд, ты можешь не писать код.

          +3
          Один лишь заголовок выдаёт его с головой.
            0

            И даже самого важного: тега F# нет!

            0
            Кризис среднего возраста?
              +12

              Кризис среднего нытья.

              0
              На словах «Знаете почему я этого не знал? Да, потому что я никогда их не использовал» я стал что-то подозревать. Вернулся к началу — посмотреть автора — всё верно!
                +2

                Не очень уловил зачем эта статья здесь? Она повторяет мысли из старых статей, не дает никакой морали, только лишь одно горькое сожаление, и вообще, смотрится как нытье.


                Хотя, в конечном счете, умение хорошо делегировать тоже важный навык для лида, по сути они этим и занимаются, у них на глубокие познание не остается времени, но они имеют много поверхностных и от того знают куда что передать.

                  +4
                  >зачем эта статья здесь?
                  За деньги же, очевидно? Это же корпоративный блог, а не авторский.
                  0
                  Спасибо за статью!
                  Вижу две причины, по которой люди стремятся развиваться — это деньги и признание. Как только человек получает и то, и другое, то стимул идти вперёд уже сложнее и сложнее получить. Я восхищаюсь людьми, которые делают сложные и крутые вещи, это всегда отличный пример, к чему надо стремиться. Но, к сожалению, их не так много, большинство, впрочем как и я, хочет просто хорошо жить и ни в чем не нуждаться. Благодаря таким текстам лично мне становится определённо ясно, что надо постоянно развиваться и делать что-то полезное, то, что можно применить в жизни.
                  Будем творить!
                    +2
                    Вижу две причины, по которой люди стремятся развиваться — это деньги и признание. Как только человек получает и то, и другое, то стимул идти вперёд уже сложнее и сложнее получить.

                    Есть люди, которые не могут не делать что-то — им просто интересно копаться и узнавать новое, а вдобавок это еще приятные побочные эффекты имеет.

                    +9
                    > Поймите правильно, о чем вообще может стать 22-х летний пацан?
                    > Он мечтает стать крутым дядькой.

                    Крутой дядька в это время мечтает с точностью до наоборот, да.
                      +2
                      Как-то всё-это подозрительно. Если у синьёра не хватает компетенции, то это видно по его пул-реквестам и предложениям на митингах.
                      Обычно нормальные сеньёры выкупают дутых синьёров довольно быстро. Особенно если был опыт работы с синьёрами-индусами.
                        +1
                        Кто сказал, что на работе автора окружают нормальные сеньёры?
                        Его же прособеседовал кто-то, правильно?

                        Автор привел интересную аналогию с билетами на экзамене — выучил один, но побывал на 10 экзаменах и прошел.
                        Мне кажется, что вполне реально на Н-ое собеседование встретить человека, который абсолютно не разбирается в вопросе, и просто да-кает, и принимает соискателя.
                          0
                          К это моменту он уже находит другую работу. Он же прям так и написал))
                          +1
                          Так всё же, что не так с конструктором по умолчанию у структур?
                            0
                            Его нельзя удалить или переопределить, значит структуру всегда есть шанс создать некорректным образом. А дальше уже дело за законом Мерфи.
                            +4
                            Это как классы, но хранятся на стеке, и работают не по ссылке, а по значению.

                            Вы походу и сейчас не знаете о работе структур :) Структуры не обязательно хранятся на стеке. Простой пример: куда запихнутся миллион инстансов структур? Никакого стека не хватит. К тому же структуры можно передать и по ссылке с помощью модификаторов ref и out, об этом тоже не стоит забывать. А еще структуры весят меньше, потому что не нужно хранить индекс синхронизации, который есть у объектов (из-за этого, кстати, нельзя делать lock на структурах).

                              0

                              очень смешно смотрится разводка в финале — "никогда уже не стану разработчиком, который определяет индустрию. А вот ты сможешь", потому что наивные дурачки не должны кончаться.


                              никто и никогда уже не будет "определять индустрию". лет 30 назад еще может быть, а сейчас время хайпа, и хорошо если не проплаченного хайпа.

                                +1

                                Смотря что понимать под термином "определять индустрию". И сейчас можно определять, просто это будет не так заметно, как 30 лет назад, а работать, наоборот, надо будет больше. Впрочем, это касается и любой другой индустрии: попруйте сейчас в одиночку что-нибудь определить в математике или физике. В айти даже больше возможностей.

                                0
                                Эм, структуру можно эффективно использовать и пофиг на то что нельзя пререопределить конструктор по умолчанию. Guid и DateTime пример такого использования. Типичные такие ValueObject с заранее известным состоянием по умолчанию.
                                  0
                                  Ну, так жизнь устроена. Директор автосервиса тоже не умеет перебирать двигатели так же хорошо, как Лёха-дизелист и рихтовать кузов также хорошо, как Серёга-жестянщик.

                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                  Самое читаемое