Если не "прогаешь" на бизнес проектах, а чисто сам себе и для себя. То, скорее всего, твой код, скажем, "так себе" (не 100% но в большинстве случаев это так).
Ибо, обычно, основная разница между "лычками" - опыт реальной работы на реальных проектах и "да", он много решает.
На каждом проекте приходится работать с различным инструментарием и разными людьми с разным опытом (которым вы с ними обмениваетесь) и за счет этого твой код "растет" (местами "из под палки" когда на проекте требуют придерживаться определенных стандартов).
Само собой написанное мною выше работает не в 100% случаев и бывают и "самородки" что в соло научились писать классный код и бывают "лиды", что всю жизнь протирали жопу на каком-то легаси проекте и норм код писать как не умели, так и не научились. НО я описываю ту ситуацию с навыками и т.д., которая есть в большинстве случаев.
Ох уж эти галерные "сеньоры", которые считают высшим мерилом абстрактное "качество кода"(как будто оно может быть одинаковым для разных по направлению проектах).
Главное, чем отличается сеньор от мида - это умение искать источник нестандартных проблем и решать их. Не всегда кодом - главное решение, а не средство.
Дрочка на красивый код это обычный, линейный миддл(отличающийся от джуна именно этим, бо у джунов код кривой). И нет, это неплохо. Хороший миддл ценен. Но пока он дрочит на красоту кода, а не смотрит с уровня решения проблем, сеньором его не назвать, хотя на галерах называют.
Смотря, что подразумевать под уебанство, а примеру гугл при оптимизации с .css удаляет к хуям все отступы и переносы, прочесть эту билиберду становится нереально но это выигрывает доли секунды при открытие сайта.
Минимизация - это не для разработчиков для чтения (учитывая что в том же хроме в девконсоли есть преттиер для обратной раскрутки кода), а оптимизация для конечных пользователей
"Полное уебанство" недостаточно формальный критерий. И вообще не критерий.
"Работает" - если добавить "работает строго согласно коитериям".
Я тебе могу привести реальный пример, когда код - "полное уебанство" с точки зрения типичного писателя сайтиков-энтерпрайзиков, но именно оно работает. Потому что один из критериев - "менее 1500 наносекунд на обработку запроса" при сложной логике и с наличием шаред стейта, с колоссальной нагрузкой.
Так вот, идеальный, красивый типичный энтерпрайз код хуй уложится в эти критерии. А работать будет "уебанство".
Только потом оказывается что идеальный, красивый типичный энтерпрайз код легко читается, хорошо расширяется и быстро модернизируется, а полное уебанство работает только "строго согласно критерием", и при попытках вынуть один костыль или заменить один на другой всё ломается к хуям, и как итог приходиться переписывать всё под "идеальный, красивый типичный энтерпрайз код"
Переписал на энтерпрайз, выпал из критерия "успеть в 1500 нс". Код перестал работать.
Нет, железом это не решить. Не существует в природе процессоров с сингл кор быстрее. Распределение даёт при супер оптимальном сценарии ещё +3000нс на баоансер, и это если оно аппаратное за дохуя денег. И это при том, когда ты уже выжал всё, что можешь, аффинизировал всё по ядрам, выгнал операционку с твоих ядер, пустил сеть в обход ядра и процессора, и вручную работаешь с кешем чтобы не использовать тормозной volatile, заменил все ожидания на busy waiting потому что парк треда дорогой и медленный.
А типичный энтерпрайз тебе даст на простом перекидывании обычного треда исполнения с одного кора на другой в другой нума ноде уже задержку более твоего лимита. Да там тупо отправка по сети через стандартный стек уже вылезет.
Я к чему.
И это я ещё не начал про красивый энтерпрайз. Который красив в написании. Но когда у тебя 10-летний энтерпрайз, с его гигабайтом красивого, но в массе нихуя не делающего, кода, у которого 100500 похожих, но разных, сущностей, миллионы констант, которые использованы один раз, и три миллиона параметров в конфиге, который всё равно все конфигурят с билдом...
Нет, это не красиво. Не читаемо. Про расширяемость я вообще молчу. В 99.9% случаев заделы, оставленные мамкиными расширятелями, остаются мёртвым кодом, на который потрачено время.
Ниже уже много расписали, но "открою истину": качество кода - это не только читаемость, но и решения, имплементированые в этом коде. Любую задачу в коде можно решить десятками вариантов и разница между "лычками" обычно проявляется в оптимальности выбранного программистом (и тут лиды с большим опытом на различных энтерпрайзах имеют больший "пулл" вариантов, что они уже где-то видели/имплементировали).
Решать же проблемы должен и джун и миддл и сеньер. Они просто решают проблемы разного уровня или разной сложности.
Я про что.
Миддл - это решения в коде, обычные. И да, в среднем проекте миддлы - тот самый костяк, на которых держится основная кодбаза.
Сеньор - это решения проблем, зачастую выходящих за рамки кода(хотя при нахождении проблемы это ясно не всегда). Сеньор обязан обладать широкими знаниями за рамками используемых в проекте технологий(миддлу достаточно быть профи в этих технологиях), и решать проблемы вила "неведомая ебанная хуйня произошла", или "менеджмент родил сказочные требования". Решения за рамками кода включают, например, исследование, и объяснение менеджменту того, что их требования объективно выходят за рамки выделенного ресурса и времени. Ситуация не такая уж и нетипичная.
>Главное, чем отличается сеньор от мида - это умение искать источник нестандартных проблем и решать их.
Проблемы все решать умеют, лычки - они именно про качество кода, полученное на выходе при решении проблемы.
может, я раскрою тебе глаза, но если ты не руководишь подчинёнными, не созваниваешься с ними или не проводишь оффлайновые планёрки - никакой ты не сеньор. если ты социофоб - твоя карьерная ступенька после миддла - в архитекторы.
У архитекта соотношение общения, работы с Екселем и документацией к программированию как 8 к 2. Поэтому я ушел с архитектов обратно в лиды. Ну его нахер. Тут тоже хватает митингов, быстрых принятий решений, согласований со смежниками, обучения команд, решения их проблем, но все же самые интересные задачи мои и разработки у тоже хватает.
Идеальный сетап: 2-3 джуна, 2-3 мидла, 1-2 синьера и лид. Мидлы помогают джунам, синьеры ревьювают код и помогают с решениями тем и тем. Лид разруливает непонятки, задает направление и общий ритм, решает сложные задачи и обьясняет остальным как это сделать. Иногда дать самим сделать, возможно даже ошибку (если она не критическая для проекта), иногда подсказать как лучше, дать идею. И никакого микро менеджмента. Просто работаешь на более высоком уровне абстракции. А за 20+ лет опыта разработки в быстро меняющемся бизнесе ты уже знаешь как работать и чувствуешь куда ветер. Все уже было, просто на другом уровне абстракции.
и да.. и нет.. В принципе в четвертом фрейме должны бить Лид/РМ/BА (где последния два не вяжуться с общей тематикой пикчи). НО.. как всегда есть но .. как показывает практика: многие вообще скипают BА, РМ - нифига не шарит че происходит с технической точки зрения, а если контора "маленькая" то бывают кейсы когда и лида нету.. и да в таком случае единственный синьйор в тиме сидит на митах и пытаеться у бизнеса/овнеров выбить че они хотят ¯\_(ツ)_/¯
У нас вообще нет градации. PM есть, который в програмиинге не шарит, но все программисты - просто программисты, не джуны, не мидлы и не синьоры. И похуй сколько у кого опыта. Все равно у всех одинаковые обязанности. Просто менее опытных постепенно подтягиваем до нужного уровня.
У меня так было пока была своя контора. Лычек небыло, но был разный уровень знаний/возможностей, разная зп/премия и все это понимали. Когда проходил собес уже в международную контору, то лычку дали по результатам всех собесов (4). В моих командах лычка не значит ничего, у нас нет "я старше ты дурак". Только аргументированный диалог с равными правами. Иногда джун дает дельную идею. Иногда синьер лажает. Но окончательное решение за лидом. На нем вся и полная ответственность за команду
Добавлю, у нас небыло ПМ, БА и т.д. просто 15 человек программистов, а начинали вообще с 3х.
Кто-то может в С/С++, JS, кто-то в C#, кто-то в микроконтроллеры и ASM. Нужно натюнить нетворк? Херня разберемся. Поставить и натюнить Jira? У кого есть свободное время. Пережмите кто-то картинки на все разрешения. И т.д." Java developer? Ок у нас тут HTML и CSS нужно на сайте поправить. А потом пофикси ошибки с битриксом, я хз что там, клиент говорит обновления товаров не приходит"
Иерархия и процессы вносят порядок, хотя иногда и усложняют разработку.
Сейчас у меня обычно две-три тимы и два-три проекта, но менеджить это (только разработку, остальной галиматьей занимаются ПМ) гораздо легче, чем тогда одну. Хоть и были там все друзьями
Программист: коммитит две строчки кода в середине недели
Все эти люди на митинге: смотрят демо с агендой на 6 листов, слушая спикера 2 часа. При этом все понимают, что митинг сплошная вода, но так уж тут заведено.
После выключения камеры программист напивается, сидя в трусах, а спикер долго втирает жене на кухне насколько важна его корпоративная роль в развитии команды.
Не, ну а вдруг эти "2 строчки кода" решают проблему, над которой бились неделями\месяцами.
Тогда почти всё выше описанное вполне обоснованно.
Агенда на 6 листов может содержать разбор проблемы, её влияние и положительный эффект от решения.
Прогер напивается чтобы расслабиться и отдохнуть после долгих и тяжелых поисков решения.
А спикер молодец, потому что смог собрать и организовать команду, способную выполнять столь сложные задачи, которые вот так сходу и не объяснишь стороннему человеку.
на самом деле так и есть
приведу примеры из жизни крупной "финконторы"
cначала идет постановка задачи - "вот это не так считается, а должно считаться вот так"
и мы с аналитиком начинаем копать где это и как это вообще работает, перекапывая мегабайты кода бизнеслогики и этот этап может растянуться на несколько дней. бывает что мы зовем аналитиков из других команд, руководителей подразделений ибо бывают исторические хрени, в логике которых разобраться очень сложно. и конечно бывает, что мы находим баги в логике которую когда-то заложили и задача вырастает.
и вот уже потом, когда все стало ясно, я вношу пару десятков строчек кода или даже меньше в какой-то 2х мегабайтный пакет.
Всё потому что найти ошибку на 1-2 строки кода сложнее, чем ошибку на 10 файлов (хз как на столько надо проебаться, чтобы допустить такую большую ошибку)
Когда в одном реквесте с сайта завязано около десятка реквестов к разным сервисам. А потом поле дух недель копаний в коде и легаси говне, оказывется, что все должно работать. Просто какой-то пидор из левой тимы добавил в /etc/hosts на одной из сотен VM замену URL на IP БД. ( Что-то там тестил и забыл обратно поменять). БД переехала IP помянялся, но старая еще работает. DNS поменяли. Но один сервис из сотен работает как-то не так как нужно. Как быстро ты догадаешся это проверить? В кластере десяток VM и только одна работает не так. Гигабайты логов. Тысячи операцый в минуту
Разные компании по разному грейды понимают. Но обычно у помидоров больше социальных взаимодействий, потому что к тебе, как минимум, приходят более слабые сотрудники с расспросами о том как что-то сделать или приходится участвовать в обсуждении архитектуры. В некоторых компаниях могут вообще собрать отдел из того что было и тогда роль тимлида берёт на себя самый опытный.
У меня есть тима где 4 синьера. У всех синьеров зп выше 6к. Не знаю какая, мне ПМ не говорит, просто оговорился на 1:1. Клиент захотел только синьеров. Ну ок. Работать одно удовольствие. Задачи заестимейтили и разобрали, делают все в срок. За 8 месяцев никаких факапов, никаких багов. Все что взяли в спринт - все сделали. BA, QA и два девелопера. Никаких уточнений, переделок, чендж реквестов, никаких митингов со смежниками. BA все разрулил и дал четкую картину. Что нужно как и т.д вплоть до мапингов данных. QA накрыл все тестами и они автоматом каждый день постяться на конфлюенсе. Только кто-то из 3-d party меняет что-то мы уже знаем. Все, вообще фловы включая негативные покрыты тестами. Девы херачат по конвенции, с юнит тестами, peer review на GitHub, CI/CD. Все по процессам и аксептенс критериям. Реально не к чему доебаться. Дрим Тим мать его. впервые за 20 лет наверное
Если есть чёткое тз, что необходимо накодить, а сложные алгоритмы объяснены или переведены во что-то по типу кода, возможно даже с помощью математиков, то справится можно и без созвонов, но ещё желательно декомпозировать тз на отдельные задачи.
Ты это, аккуратней будь. Это очень незаметная херня. Вроде мидишь на третьем фрейме, потом потянулся, сходил за чаем до кухни, а уже оказываешься в четвёртом.
Фил Ранжин
@fillpackart
• • •
Напиши хороший код, и ты будешь нужен бизнесу пару дней. Напиши плохой код, и ты будешь нужен бизнесу всю жизнь
4:29 РМ • 21 авг. 2021 г. • Twitter for iPhone
Отличный комментарий!