Что означает «код не как у сениора»; и как его подтянуть?
Сталкивался с таким явлением, когда тебе говорят, что у тебя код пока еще далеко не как у Сениора и что нужно расти в сторону улучшения качества кода. Хотел вот уточнить чем код сениора отличается от кода джуна и мидла?
По себе знаю - код был ужасен, но потом когда открыл для себя стайл гайды, то улучшил немного качества своего кода.
Ну и во время код ревью взял на заметку новые мысли.
Но может быть есть какие-то критерии кода сениоров? Как придти к нему.
Читать всякие заметки из серии "Чистый код" ? или под сениорским кодом подразумевается что то большее? Различные уровни абстракций, применение патернов?
Как в php это прокачивать? Учить Симфони и ковырять его компоненты? Ато в Laravel всё слишком просто решается и можно обходиться базовыми конструкциями для быстрого достижения результата.
Это может значить все что угодно. И то, что в коде есть ошибки, и то, что написанное не нравится проверяющему, считающему себя сеньором.
А вообще я бы предложил такой критерий. Берешь psalm ставишь в нем 0 уровень и прогоняешь по своему коду. Есть ошибки - не сеньор, т.к. сеньор (по моему имхо) не может не использовать статический анализатор сейчас.
Критерий на этой планете (дыре) только один - ваши стальные яйца.
Он приобретается либо лицемерием/высокомерием либо знанием.
Знание - это "вы можете объяснить зачем вам это"
Лицемерие/высокомерие - это
а) "не важно что вы говорите, вы все равно не правы, потому что я по должности выше" (затыкаем)
б) "вы же не думаете сейчас что я некомпетентен в вопросе? я знаю три способа, вы что хотите услышать?" (заставляем его доказать, что он на свое работе не просто так - нормальный в этом случае даст вам ответ, потому что вы хотите знать, это ОЧЕНЬ важно для нормального руководителя. Ненормальный - заагрессивит, скажет что у него нет времени каждому рассказывать, придумает что вы ему что-то должны за это или будет мстить)
Я столкнулся с тем что я рос рос в коде, а потом все чаще в компаниях стали попадаться "системные архитекторы" которые говорят "мне важен результат, а не твой код". И ведь они правы! Правы в адекватном мире. В котором действительно чем меньше напишешь и стабильнее работает, чем быстрее сдашь - тем лучше.
Но даже в этом есть пределы.
1) Ты "изнашиваешься", устаешь, агресивишь, переживаешь, а изношенных снова выбрасывают в помойку, то есть ты будешь пытаться работать меньше, а они заставлять больше, и чем жестче ты будешь реагировать тем быстрее тебя запишут либо в изношенные либо в сопротивляющиеся. Быть счастливым полудурком - самая правильная стратегия. Главное закупится вазелином, потому что быть на чужом болте придется чаще чем хочется.
2) Поддержка. Возможность доработать и изменить завтра БЫСТРО, а не за "ещё неделю". За нее ведь должны платить. А никто не хочет. и любыми способами будет говорится что это не их проблема, создавая проблемы тебе. Проблемы будут у того, кто с ними согласен.
Чтобы быть начальником айтишников нужно быть чертовски спокойным и понимать, что ты либо с командой, благодаря которой у тебя всё получается, либо ты с бизнесом, ради которого готов мать продать. Но этот шарик сьехал с катушек. Когда беда случается - "почему ты не делал нормальный код?" Руководитель, который кроме телефона и чашки кофе в руках ничего не держал пытается доказать тебе, что это твоя задача писать хороший код, его задача - получать за это деньги. Ловко придумано? Если ты его КОММУНИСТИЧЕСКИ возвращаешь на землю - от тебя избавляются. Это всё обобщается до мысли: Пока всё идет хорошо - руководитель молодец, когда все идет плохо - программист дурак. Понимаешь к чему клоню? Пути наверх нет, он занят теми, кто перестал идти к цели по пути "давайте разберемся", они идут сразу к 10 целям по пути "надо найти того, кто за меня это сделает". Ты либо остаешься с низами и разбираешься по кайфу для себя, либо идешь наверх и строишь из себя гения. В эти моменты меня очень забавляют вопросы "какие книги по программированию почитать?". Дорогой мой, в мире где каждый изображает из себя гения любая книга несёт за собой 5% опыта человека и 95% продающего текста. Какие книги ты решил читать? Ты можешь только с кем-то вдвоем попытаться разобраться. За книгу тебе не выдадут бумагу, которую можно тыкать в лицо хитрым, чтобы отцепились!
Если поговорить про идеальные условия, где есть беспокойство про завтра и никто не хочет ОТЖАТЬ ВАШ ТРУД, то качество кода это если вы разработаете для себя план действий как вы решаете задачи похожие на такую-то и запомните его. Следующий раз оно выстрелит на автомате.
Но я уверен, что времена, когда это работает - прошли. Чем больше контора, тем тяжелее в ней доказать, что вы не верблюд. Чем меньше контора - тем меньше это надо доказывать, и тем больше пахать как последняя сучка. Вот и получается что чем больше ты пашешь тем больше ты дурак и еще найдутся тысячи разного вида купленных ботов (подсадных уток, подписчиков, или даже протестунов и нацистов, пригожинских или других, везде одинаково!), которые на попытки кому-то что-то объяснить в публичном пространстве сделают тебя дураком, потому что:
1) ты неудачник
2) ты не понимаешь как устроен этот мир, коммунисты говно, бизнес - счастье
3) ты никого не слушаешь и просто идешь своей дорогой и тд тд тд.
Причины найдутся или придумаются.
Смысл в том, что если тебя ставят в положение "докажи", то что-то идет не так. Ты можешь задавать вопрос, "что ожидают", но не чтобы это узнать, а чтобы проверить - это втиралово, или действительно "можно лучше". Хм, а ведь даже "по-понятиям" такое положение имело два выхода - ты либо доказал, либо струсил.
А сегодня? Сегодня если ты пошел доказывать, то на тебе можно ехать. А если не пошел - то ты проблема. Чем больше на тебе ехать - тем больше проблем ты будешь получать и за большее будешь виноват, пока не уволят, а до этого унизят. Чем меньше на тебе ехать тем быстрее ты просто лишишься работы. И каждый из этих выродков будет повторять, что "мы же не в армии" или "ты не понимаешь, мы все равны".
Сначала отменили "коллективные договоры" (вернее, они есть, но "никто же так не делает и мы тоже как все") и внедрили мысль, что контракт защищает "обе стороны". Интересно от чего? Была ли у тебя компания которая предложила тебе написать свой контракт и согласится с тобой? Нет, они все говорят что у них "типовой контракт", как будто он бывает типовой. Типовой контракт состоит из одной строки "все разногласия определяются законодательством о труде". Потом был отказ от "главных инженеров"(которые тебя натаскивали к знаниям), их заменили "управленцы" (которые - мне все равно) и "лиды" (которые - я круче тебя). Потом было "платное образование", которое сегодня уже делит детей на элиту и бомжей. Потом появился фриланс, где можно просто и за малые деньги получить говно-код, который почему-то ещё и работает, главное что исполнитель будет делать за свой счет до тех пор, пока не заставит работать и это будет выглядеть как "покупка хлеба" - нет хлеба = нет денег, хотя речь идет о ручной сборке с меняющимися требованиями и неподсчитываемыми рисками. Потом они устранили отдел кадров и сказали, что нужны только рекрутеры, им думать не положено. А потом Зеленский подписал указ, что людей можно увольнять не доказывая их вину и раздал землю "гражданам" как когда-то ваучеры на предприятия, защитив бизнес от каких-то врагов. Интересно, кто же враги? Компании должны были служить опорой для мастера. Мастер мастерит в своем деле, в компании много мастеров каждый отвечает за свою часть работы и полагается на коллег. Сегодня компания это куча бабложоров, который и правда отвечает каждый за своё, но только от тебя требуется быть юристом, бухгалтером, переводчиком, аналитиком, программистом, инженером бд и тд. И все начальники говорят тебе, что "это не требуется". Отлично, если ты в это поверишь - тебя поставят раком именно в этой сфере. А тут ещё "случайность" - платная медицина и "страховка". Это когда ты не подходишь тебе напоминают, что ты будешь лечиться за десятки тысяч долларов, а не бесплатно. Круг замкнулся, цепи замкнуты.
Доказать можно. Но нужно понимать КОМУ ты доказываешь. Доказывать нужно в публичной плоскости. Коллегам и друзьям. И для этого существовал "коллективный договор", которых сегодня нет, все на контрактах, потом были "гражданские договоры", а сегодня и вовсе "самозанятость". Мы летим в черную дыру.
К большой войне, которая уже идёт, и "не Россия её начала", но нужен виновный и сейчас все будут топить, что это она. А Россия что? Чем-то отличается? Нет. Пытается выжить. И чтобы выжить вторглась первая. Избавилась от кучи безработных и самозанятых и вообще не парится, ведь она такая же, капиталистическая. И цель её - создать максимум, заплатить минимум. Если создающие не платят налоги потому что не могут - от них надо избавляться. Она избавляется. Какая страна сегодня мыслит через "ну так же нельзя"? Никакая.
Значит доказываешь лично ты лично за себя лично тому кто тебе платит. Начальник тебе платит? Нет. Потому что ему тоже платит тот, кому надо доказывать. Вот ему можешь. Но он не поймет, так что доказывать ты ему будешь не хороший код, а что тебе можно доверять и ты не предаешь. А этим низушкам что бы ты не доказал - все равно зависеть будет от настроения и количества наркоты в крови.
Что делать? Большевики ответ знали. Но их прокляли. Именно за это. А сказали что за гулаги. Ответ был: держись тех, кто понимает окружающий трындец и держит себя в руках, делай профсоюзы, официально старайся их узаконить. Тебе будут мешать, ты должен держаться, именем завтра и того, что твой сын будет в этом жить. Тебя не защитит никто, кроме твоих коллег, которые в такой же заднице как и ты.
Чем больше времени в центре бабло, тем больше вокруг лжи и какой-то неведомой ё..... х....; Бабло придумывалось как топливо системы. Заливаешь - работает, не заливаешь - не работает. Сегодня бабло это ценность. Они хотят залить в двигатель литр, а получить назад полтора. Откуда? А вот цель бизнеса найти у кого отжать поллитра, иначе "неэффективно". Что неэффективно? Никому уже не важно. Большевики считали что крупный бизнес нужно национализировать, то есть запретить ему распоряжаться судьбами людей и сделать, чтобы за это отвечала власть, целью которой является изначально не бабло. Не-большевики считали что нужно бизнесу дать больше свободы (вечная заезженная пластинка). Ну вот свободу дали. Как, хорошо жить? Помоему пластинка стала играть чаще, нужно ЕЩЁ свободы, а потом и власти. С другой стороны если национализировать только крупный бизнес, то средний включит "сидим и не рыпаемся а то национализируют", и значит средний будет вымирать (а сейчас вымирает вообще не бизнес, а трудящийся). Что делать? Надо бы у РАН спросить, только их беспокоит кто что сказал и кто поддержал спецоперацию, хотя уверен они имеют собственные мнения, но если скажут - перестанут быть РАН.
Медитируйте. Читайте книги Ленина и кино есть "Предел риска", посмотрите. Или становитесь уже бизнесменом и прекращайте переживать.
Уф, как много текста. Не думал что ответ на такой относительно простой вопрос даст такой очень развёрнутый ответ. При чём с частичной собственной жизненной позиции и опыта.
Автор, вы молодец что не поленились столько написать. За это даже "лайк" поставить не сложно =)
Дмитрий Кузнецов, Сожалею, но последовательность не мой конёк, у меня мысли к концу абзаца часто новые получаются и количество информации которая, я считаю, нужна в комплексе, растет до такой степени, что я не могу справится с декомпозицией. Потому что простой ответ на вопрос дали человеку в комментариях. "это чтобы поддерживать код" или потому что "код мог просто не понравится, потому что человек другой". Это как бы ответ. Но не ответ на вопрос "почему это произошло со мной?"
Блин, я когда Ленина читал вообще уставал с его языка, он вроде и понятен, но настолько сложен в отслеживании что за что цепляется... У Сталина проще. Но если цитировать Сталина - могут на столб повесить. И честно говоря если даже люди, которые едва умели читать и 50% не имели образования могли как-то это прочесть - то боже, насколько мы все тупые.
Григорий Васильков, у вас не только последовательность не конек.
Но писать вторую такую же простыню здесь не вижу смысла.
Просто дам одну цифру из общедоступной статистики: 51% российского бизнеса - это ИП.
Та самая "куча" из вашей цитаты.
Еще вспомню очень похожую на вашу фразу одного реального, а не гипотетического, владельца среднего бизнеса: "сидим и не рыпаемся, а то... отожмут".
Adamos, да, мне жаль, что вы не согласны, но ключевое различие здесь - наличие понятия "самоокупаемость". То есть "отожмут с целью получить большую прибыль" не то же самое что "национализируют с целью госфинансирования инфраструктуры". На самих чинушах сегодня висят те самые хозрасчеты (критерий успеха = заработанное бабло, а не выполнение плана по продукции, у них план по баблу есть), которые протолкнул Косыгин в 1963 году (только Сталин в ящик - сразу же атланты расправили плечи и давай население пичкать тем, что нужно требовать с предприятий отдачи, и через 10 лет оп, и протолкнули). И понеслось - эффективность предприятия определяется числом денег, которое из него можно выкачать.
Отсюда очень интересно выглядит, как власть камуфлируется под СССР. Совсем так же как любой директор. Берем СССРовскую идею. Если все получилось - "Россия - великая страна", если все плохо - "СССР подложил бомбу под Россию, вы же видите сами". Видим. Видим, что смысл в комплексном подходе, а не в использовании того, что удобнее пояснять и покрывать фейками.
То есть сегодняшняя национализация - это рейдерский захват теми, кто максимизирует поток в свой карман. Сталинская национализация - это народный контроль, чтобы бабло шло не на яхты, а на "булочку с трамвайчиком". Смысл в том, что в советах (органах власти) находились те, кто шел от самого начала, от станка до главного инженера, потом разбирался в отрасли и управлении, а значит знал какие бывают проблемы и почему то-то делать нельзя. Сегодня в парламентах и комитетах сидят не те, кто всё умеет, а те кто способен меньше думать, больше исполнять. И их кто-то туда взял, а людей, которые любят думать - не взял. И приказ "брать бабло" у них не вызывает вопроса "зачем государству бабло, если оно его печатает", кто-то нашел причину "нужно население держать в узде", кто-то "есть бабло - можно торговаться с бизнесом", кто-то вообще не понимает что происходит и "хата с краю" - это не контроль, это приспособленчество. Но причина по факту есть - и называется она "кредит", которых раньше не существовало. Нужно вернуть деньги, которые были взяты банков, и потому нужно извлечь прибыль, чтобы сделать "рост экономики". Экономика - это график, график маржи. И её тем больше, чем больше валютных операций и чем они жирнее. Если мерять количеством извлеченного топлива из двигателя, то всё неизменно идет к тому, что в итоге все топливо останется у тех, кто им торгует, а двигатели будут стоять. Но это такая прикольная форма государственной стабильности. Ничего же не меняется, значит продолжаем хорошо жить. А кто не справился - ну это статистика.
Здесь очень легко сказать, что "виноват во всём - народ, а мы хотели как лучше" и это будет сделано, если и дальше всё будет идти не так, вечное вставание с колен и тд. Но как Беларусь видела в 2020 году - достучаться можно до всей страны, найти их дома, вызвать на беседу, услышать жалобы, пояснить смысл и как оказалось - угрожать с телефона полиции, и сажать, надолго. То есть можно, если хотеть. И никаких тут "вас много нас мало" уже не скажешь, потому что оказывается на это надо всего 2-3 месяца. Но только им хотеть не хочется, всё и так хорошо. Просто не у вас.
Так что сегодня взято из СССР, превращено в жуткое подобие, и при случае повторяется что "ну вот, вы же видите, это не работает". Обратите внимание, что военка (урал) - работает. Калашников - работает. Всё что государство РАЗВИВАЕТ - работает. Все что государство ПОГЛОЩАЕТ - умирает. Потому что военка она как бы "ничего не может в мир создать, она только превращает деньги в продукцию". То есть у военки нет хозрасчета. А у остальных есть. И остальное не работает, а вот военка - работает. Я бы спросил "за чей счет работает", но она работает не за "счет", она работает за природные ресурсы, и единственная опасность высоких зарплат - это то, что заработав - люди перестанут работать и будут скупать всё, а другим не достанется. Вот почему в СССР старались держать единую зарплату, а награждали другим способом. Награждение должно выражаться в снижении цен, а не в повышении доходов конкретному исполнителю. Причастность к общему должна быть. Зарабатываешь столько же, но если хорошо работают - то за ЭТО ЖЕ можно купить больше, а не один человек может купить больше остальных, ведь это он молодец. Это и сделало возможным класс тех, кто знает, что главное это прибыль, а не низкие цены: заработай больше и трать больше вместо сделай так, чтобы твой труд был доступен большему числу других.
Григорий Васильков, в работе на оборонку, в отличие от МУПов, за развал производства в пользу своего кармана можно сесть, а не уехать в Испанию с барышом. Вот и вся разница в судьбе того, что национализировано.
Более того - в РФ приказано приватизировать МУПы, даже если они прибыльны. И их уже целенаправленно банкротят, чтобы приватизировать за копейки. Разумеется, только те, которые вообще могут давать прибыть. Приватизировать заведомо убыточное - дураков нет.
Если опустить паттерны / SOLID и прочую архитектуру и открыть любой рандомный php-файл, то сразу можно увидеть хороший код или шляпу. Обычно у меня такие критерии последнего:
Отсутствие кодсайла PSR или другого. Убогое форматирование. Двойные-тройные пустые строки; Лишние пробелы; Или, наоборот, код слеплен без единой пустой строки, которая логически бы отделяла блоки.
Отсутствие scrict-сравнения; Всегда стараюсь писать через ===, declare(strict_types=1), добавлять true в конец in_array и подобных;
Отсутствие type-hint'ов; хотя бы в phpdoc; Отсутствие указания области видимости метода / поля / константы;
Неадекватные названия переменных и методов, по которым непонятно, что это. Лишние переменные. Или отсутствие пемененной, где она была бы полезной, для улучшения понимания кода;
Тупые и очевидные комментарии ради комментариев;
Длинные портянки. Если метод, условно, больше 80 строк, то, мб, надо задуматься о декомпозиции;
Куча параметров в сигнатуре функции
Неиспользуемые переменные / константы / методы "на будущее".
Закомментированный код;
Хард код. Какие-нибудь api url прям в коде в переменной, вместо конфига или хотя бы константы.
Забивание на работу с ошибками. unserialize вернул false? Да неее, такое точно не произойдёт
Ну, это что на первый взгляд бросается. Потом видишь неоптимальный код. Какой-нибудь INSERT в бд по одной строке в цикле foreach.
Было бы, если бы Доктрина, которую рекомендуют тысячи людей за её невероятность, внутри была написана по этим канонам. Но доктрина внутри имеет по крайней мере половину из этих пунктов. И ничего, кричат что это прорыв. То есть и код не сеньорский и творит какую-то магию, но никто не выкатывает.
Знаете к чему это приводит? К тому, чтобы ни с кем не держать контакт. И просто создавать либы, а кому не нравится - пошел он лесом. Европка то примерно так и развивается. Выблёвываем в мир "новинку" и вталкиваем её в голову через наклейку "новинка".
Результаты есть.
1) Миллионы пакетов npm, а пользуются десятком-другим, остальное - мусор.
2) Часть людей ушла в python вообще, дескать это "лучшее что видел мир". Это лучшее умеет в 5 способов написать одно и то же, и в каждом будет разный расход процессор-память. И эти наши "лучшие" сначала срались чей подход "лучше", а потом каждый пошли своим путем и теперь вообще не понятно, что можно делать, а что сделай - и выстрелишь в ногу. Как можно назвать язык, в котором один другого не понимает - лучшим? А вот спросите у бизнеса. Вавилонская башня наяву. Вавилон очень удобен. Только для демократии и торговли. Проще говоря для процессов, которые меняют жизнь одного ценой всех.
3) Часть людей уходит в Go потому что у пыхи нет будущего. И никто из этих людей не может объяснить как сделать "асинхронку", они уверены что в пыхе асинхронки нет, а вот в Go она есть, потому что "го - лучше". Считают что бывают функции "блокирующие" и "не-блокирующие" и ждут десятилетиями, пока кто-то напишет неблокирующий аналог даже не попробовав посмотреть ролик про шину компьютера, где объясняется слово "прерывание". Я посмотрел код библиотек на Go, например nats. Я читаю этот клубок из while/for с методами по 400 строк, и понимаю что это трындец. Поменять это - крышей уедешь. Понять это - проблема. Зато на этом можно прикольно паразитировать, говоря что "там все легко", просто читающий недостаточно скиловый. А задаешь вопрос "если легко - показывай что именно" - обидки, месть, изоляция.
Стремится к новому - иногда стоит. Вести вежливое обсуждение "что можно улучшить в моем коде", когда время есть - тоже стоит. А вот выкатывать требованием - надо иметь меру, потому что лучшее враг хорошего.