Есть основания полагать, что данный коммент попал к нам их параллельной вселенной. Это объясняет и загадочный момент с 200к. Потому что в моей наблюдаемой вселенной фраза "да просто намути стартап" звучит примерно как
да просто получи гражданство Японии - сможешь по всему миру ездить
проще вертолет свой купить и в пробках не стоять
проще свой гугл написать, чем на булшит из топа выдачи смотреть
Именно. Скорее всего у этого робота колесики с подшипниками стоят дороже, чем эта камера. А софт вообще какой-нибудь опенсорсный. Понапихать камер сверху, сбоку, снизу и еще в где-то в 5м измерении на больших масшатабах производства можно почти бесплатно. Ровно по той же причине существует львиная доля IoT.
В общем раз это теперь тред баек про Яндекс, то добавлю свою. У меня ситуация была с другого угла зрения. Осенью один за другим к нам на собес приходили один джун+ и один сеньор оттуда. Мы тоже даем задачку под конец, она она вообще изи левел. В общем эти двое стандартную задачку раскололи за какие-то секунды и потребовали посложнее. Дали посложнее - тоже влёт. Берём?
Нет, не берём. Реальность такова, что мы занимаемся энтерпрайз-разработкой. Задачки на кодинг - это так, на сладкое. А в первую очередь мы хотим видеть, что для человека нет "магии" в том, что он делает каждый день. Поэтому мы задаем вопросы не "что такое Х", а типа "почему в этой ситуации ты используешь именно Х и есть ли альтернативы". Еще мы проверяем умение читать код и видеть антипаттерны в код-ревью. В итоге поплыли оба. Потому что по гамбургскому счету нам параллельно, что человек пишет 4 вида сортировки по памяти, если он не может объяснить, а за счет чего именно ускоряется поиск в БД с использованием индекса и какие индексы когда стоит применять. Или если не видит явные косямбы конкурентного доступа в предложенном коде. Код-то читать каждый день придется, в отличие от "вращения деревьев".
Какой вывод? Да никакого по всего двум-то кандидатам. Но я все больше прихожу к мнению, что ИТ-гиганты это вообще ни разу не кузницы кадров.
а что, вы хотели бы чтобы человек написавший список вот так как он написан в посте работал над чем-то важным и сложным?
Не хотел бы. Но при условии, что это самая финальная-расфинальная версия, обдуманная как следует в спокойном рабочем режиме и обмазанная юнитами. Я не приведу точную цитату, но Роберт Мартин в своей книге говорит что когда он пишет код, то это самый грязный код на свете, но вот когда он посылает код в репозиторий - этот код уже чистый.
Если хранить состояние класса не нужно, обычно лучше использовать интерфейс.
Хороший пример использования абстрактных классов — паттерн "шаблонный метод" (template method). Шаблонный метод манипулирует переменными экземпляра (полями) внутри конкретных методов.
Вводите в заблуждение. Абстрактный класс в этом паттерне имеет возможность манипулировать полями, но скорее всего ничем таким не занимается - его суть в другом. А в энтерпрайзе с использованим DI-контейнера класс вероятнее всего стейтлесс.
Обычно к этому паттерну приходят, когда видят, что каждая реализация интрефейса содержит дублирующийся код. Тогда общий код выделяют в абстрактный класс, а различающиеся частности реализуют в наследниках.
Знаете, люди во власти и бизнесе во все времена хотели быстро и бесплатно. Однако даже в тоталитарных государствах инженеры позволяли себе быть несогласными с этими хотелками и гнули свою линию - делать так, как следует. Кстати, свободой и жизнью рисковали.
А вот чем рискуют современные погромисты? А ничем. Кого уволили за отказ забить на юнит-тесты? Кто получил по голове арматурой за желание писать строго по солиду? Кто уехал валить лес за то, что выполнил рефакторинг?
Моя позиция такая, что за код отвечает кодер. Если код - кал, это вина кодера, а не бизнеса который что-то там хотел. У кодера есть 100% рычагов влияния на технический уровень. Не пользуешься ими - пеняй на себя.
Все имеющиеся механизмы отсрочки от частичной мобилизации должны быть прописаны на уровне федеральных законов
Ок, будет написано что-то вроде "после начала очередной верденской мясорубки выпускники специальности 123456 поедут туда не сразу, а с отсрочкой в 3 месяца". Это ИТ-отрасли какой именно страны должно помочь? Армении, Грузии или Сербии?
Ну так "безопасность" это одна из двух марионеток, которые достают, когда хотят устроить очередное представление. Другую куклу - "детей" - сюда вроде никак не примотать. А "безопасность" вообще под любым соусом идет. Вот вы против безопасности что ли? То-то же.
У автора кода имеется своё видение. В большинстве случаев автор даже не знает о том, что именно хотят наиболее уважаемые товарищи
Ну значит имеем косямбу то ли от товарищей, то ли от автора. Написать гайд по основным моментам - невеликий труд. Прочитать его и уточнить неясности - тоже.
Далее начинается ожидание, и это самый интересный для нас этап. Продолжительность такого ожидания неизвестна и зависит от загруженности ревьюера.
Договоритесь об SLA на данную процедуру среди своих коллег. Например, МР не может висеть без внимания больше рабочего дня. Закрепите соглашение на общем собрании, а потом карайте нарушителей.
Ведь автор кода свернул на кривую дорожку уже достаточно давно и уже долго продвигался по ней, принимая одно решение за другим.
Судя по контексту, автор кода свернул не туда, когда решил запихнуть всю задачу в один МР размером с кита. Это решается декомпозицией задачи. У меня была такая проблема в одном стартапе, куда разом запустили трех джунов. После нескольких жестких разборов полетов и одного увольнения все чудом научились делать МРы с более скромными скоупами.
В общем я вижу в вашей истории проблему не с ревью, а с коммуникациями в команде и с общей культурой разработки.
Поэтому я готов был попробовать себя как Junior, но меня определили в Senior.
...И вот прошел год,
Добрый совет всем "сеньорам" с опытом в целый 1 год. Когда начинает казаться, что поймали Б-га за бороду, то просто сходите на собес. Только не в ИТ-гигант, где вас литкодом помучают, а в продуктовую или аутсорсинговую контору средней руки. Туда, где людям не наплевать, кого брать в штат. Там будут задавать вопросы на понимание. На многие вещи по-другому сразу посмотрите.
Потому что так не бывает, что один годик подергал апишки и поперекладывал grpc - и хоба ты спец.
В одной компании мы разрабатывали свой фреймворк на базе React. И решили мы как-то сделать простое приложение для ведения заметок для проверки его в деле. Заняло у нас это несколько дней ...
Неудовлетворённый таким положением дел, я взял свой любимый конструктор $mol и сделал аналогичное приложение за 2 часа (я засекал).
Аргументы уровня "защиты Чубакки". А если кто-то выполнит ту же задачу на реакте за 2 часа, то что? Я тоже могу сказать, что напишу парсер JSON на Kotlin за 2 часа, а на Erlang за неделю. Это вообще хоть что-то говорит об этих двух языках?
пришел в разработку, где мне не приходится делать вид, что я постоянно чем-то занят. Пока идет сборка, я могу почитать Hacker News и ни от кого еще не слышал, что лучше бы мне за это время навести лоск на скобки.
Так вы попробуйте рассказать это боссу. А еще лучше заказчику, если работаете на аутсорсе. Узнаете много нового о своих профессиональных качествах. А если в конторе есть тайм-трекинг в каком-либо виде, то это автоматически вызывает гамму самых разнообразных бестолковых приседаний.
Не сосем понятна выгода от гоп-стопа в наше время. Что предполагается отжать? Мелочь в кошельке? Телефон? Одежду? Сколько на этом можно будет заработать? Хотя бы Ладу получиться с этого купить?
Если бы мелкие преступники умели в планирование и стратегию, то они бы не были преступниками. Ну или хотя бы не мелкими. Мне кажется, суды полны делами типа "грабанул бабулю, забрал 5000 рублей, уехал на 5 лет".
Господин Мишустин, смотрите, какие у меня опасения.
Я гуглю рост преступности в РФ в 2022 году. Особенно с использованием оружия.
Я прикидываю экстраполяцию этого явления лет на 5 вперед
Я также прикидываю, что не все лиходеи будут разбойничать и грабить банки. Большинство будет по-старинке гоп-стопать и ставить на счетчик обывателей.
Я прикидываю, что гоп-стопать выгодно тех, кто получает кратно выше медианы и при этом ходит без оружия и без охраны.
И тут мне почему-то кажется, что скоро быть айтишником будет небезопасно в самом прямом житейском смысле слова. Как было небезопасно где-нибудь в провинции в 90х ребенку выходить во двор в новенькой олимпийке и белых сияющих кроссовках.
Не я убежал от ответа, а вы видимо убежали от чтения моего первого коммента, где я свою позицию пояснил. Да, старший учит младшего. Это очевидно. Но обучение ремеслу разработки это чуть сложнее, чем просто накинуть на сеньора пачку буратин и надеяться, что он это как-то разгребет. А именно это и произошло в нашей занимательной задачке:
Ни у Коли, ни у Васи особого опыта работы с подчинёнными не было. Советовать им, разумеется, никто не брался – слишком уважаемые были личности. Пришлось нашим героям самостоятельно решать, куда и как двигаться.
А мой поинт в том, что если вы хотите нанимать джунов завтра, то вы должны были раскошелиться на сеньоров вчера и на мидлов сегодня. Чтобы все эти люди строили устойчивую систему, где джун и ничего не сломает и легко сможет влиться в работу. Также вы должны были вложиться в грамотный HR-процесс. И уж точно не пускать это на самотек и усмотрение самих сеньоров. Выращивание должно быть системой, а не игрой в рулетку "авось проканает".
Почему я так думаю? Потому что я видел всю дичь с наймом толпы джунов в компанию к единственному сеньору на 2х предыдущих работах. Ничего кроме "Коли" там в принципе получиться не может. И, наоборот, я вижу как легко джун вливается в мой текущий коллектив, преимущественно сеньорский.
Сначала берется из воздуха тезис, что хороший кодер автоматически обладает навыками педагогики и менеджмента. Потом этим тезисом лупят "Колю" по сутулой спине. Удобно. А главное, ни слова про ЛПР, которые всю кашу заварили.
Проблема "Коли" только в том, что он повелся на авантюру жадного руководства. Именно жадность и недальновидность толкает на все эти эксперименты с "выращиванием". В жизни чтобы производить что-то нужен капитал: площади, помещения, станки, склады, сырье. В процессе производства профессионалов из буратин капиталом являются качественная архитектура, покрытый тестами код, живая документация, рабочие процессы и уже существующий сильный коллектив. Если из всего этого у вас только "Коля", который все на себе тащит, то проблема тут не в "Коле", а в рваче, который решил Б-га за бороду ухватить за мелкий прайс.
Минус самообразования в том, что в большинстве случаев у ученика будет оставаться без ответа вопрос "а нахрена это вообще". Не в смысле "зачем я учусь", а в смысле "вот я узнал об ХХХ, но не вижу ему применения".
Например для меня таким местом стало изучение спринга после изучения джавы. Я в упор не понимал, зачем весь этот замут с фреймворком, XML, аннотациями и т.д. Я же буквально только что без проблем создавал объекты сам через new - а сейчас вы мне говорите, что это плохо. Почему?
Соответственно, чтобы понять какие-то вещи, которые имеют смысл в реальном промышленном использовании (но не имеют смысла в HelloWorld-программах) нужен проводник в этот самый мир промышленного использования. Будут это курсы или ментор - не так важно. Но как мне кажется среднему свитчеру освоить это самостоятельно будет запредельно сложно.
Более того, я вижу по собеседованиям, что иногда люди даже с опытом под 4 года в упор не понимают базис. Потому что попали на проект, где не было серьезных старших спецов, и пришлось вариться в собственном соку.
Мне ситуация с этими книгами немного напоминает ситуацию с простонародным восприятием религии. Вот у нас куча полезных книг, которые точно хуже не сделают И почти все знают, что есть какой-то там SOLID, какой-то там GRASP и какие-то там паттерны. Но на деле выполнять это всё как бы не обязательно. Большинство все равно предпочитает накручивать в своем коде такие спагетти, как будто завтра не наступит и разбираться не придется. А если ты такой умный решишь побыть евангелистом и внедрить в команде хорошие практики, то рискуешь встретить спектр реакций от простого игнора до агрессии.
Да, но я потому и написал про культуру. Культура это когда договоренности выполняются. А когда все дружно вертят любые договоренности, то код тоже будет выглядеть, как будто его вертели.
Есть основания полагать, что данный коммент попал к нам их параллельной вселенной. Это объясняет и загадочный момент с 200к. Потому что в моей наблюдаемой вселенной фраза "да просто намути стартап" звучит примерно как
да просто получи гражданство Японии - сможешь по всему миру ездить
проще вертолет свой купить и в пробках не стоять
проще свой гугл написать, чем на булшит из топа выдачи смотреть
Именно. Скорее всего у этого робота колесики с подшипниками стоят дороже, чем эта камера. А софт вообще какой-нибудь опенсорсный. Понапихать камер сверху, сбоку, снизу и еще в где-то в 5м измерении на больших масшатабах производства можно почти бесплатно. Ровно по той же причине существует львиная доля IoT.
В общем раз это теперь тред баек про Яндекс, то добавлю свою. У меня ситуация была с другого угла зрения. Осенью один за другим к нам на собес приходили один джун+ и один сеньор оттуда. Мы тоже даем задачку под конец, она она вообще изи левел. В общем эти двое стандартную задачку раскололи за какие-то секунды и потребовали посложнее. Дали посложнее - тоже влёт. Берём?
Нет, не берём. Реальность такова, что мы занимаемся энтерпрайз-разработкой. Задачки на кодинг - это так, на сладкое. А в первую очередь мы хотим видеть, что для человека нет "магии" в том, что он делает каждый день. Поэтому мы задаем вопросы не "что такое Х", а типа "почему в этой ситуации ты используешь именно Х и есть ли альтернативы". Еще мы проверяем умение читать код и видеть антипаттерны в код-ревью. В итоге поплыли оба. Потому что по гамбургскому счету нам параллельно, что человек пишет 4 вида сортировки по памяти, если он не может объяснить, а за счет чего именно ускоряется поиск в БД с использованием индекса и какие индексы когда стоит применять. Или если не видит явные косямбы конкурентного доступа в предложенном коде. Код-то читать каждый день придется, в отличие от "вращения деревьев".
Какой вывод? Да никакого по всего двум-то кандидатам. Но я все больше прихожу к мнению, что ИТ-гиганты это вообще ни разу не кузницы кадров.
Не хотел бы. Но при условии, что это самая финальная-расфинальная версия, обдуманная как следует в спокойном рабочем режиме и обмазанная юнитами. Я не приведу точную цитату, но Роберт Мартин в своей книге говорит что когда он пишет код, то это самый грязный код на свете, но вот когда он посылает код в репозиторий - этот код уже чистый.
Вводите в заблуждение. Абстрактный класс в этом паттерне имеет возможность манипулировать полями, но скорее всего ничем таким не занимается - его суть в другом. А в энтерпрайзе с использованим DI-контейнера класс вероятнее всего стейтлесс.
Обычно к этому паттерну приходят, когда видят, что каждая реализация интрефейса содержит дублирующийся код. Тогда общий код выделяют в абстрактный класс, а различающиеся частности реализуют в наследниках.
Знаете, люди во власти и бизнесе во все времена хотели быстро и бесплатно. Однако даже в тоталитарных государствах инженеры позволяли себе быть несогласными с этими хотелками и гнули свою линию - делать так, как следует. Кстати, свободой и жизнью рисковали.
А вот чем рискуют современные погромисты? А ничем. Кого уволили за отказ забить на юнит-тесты? Кто получил по голове арматурой за желание писать строго по солиду? Кто уехал валить лес за то, что выполнил рефакторинг?
Моя позиция такая, что за код отвечает кодер. Если код - кал, это вина кодера, а не бизнеса который что-то там хотел. У кодера есть 100% рычагов влияния на технический уровень. Не пользуешься ими - пеняй на себя.
Ок, будет написано что-то вроде "после начала очередной верденской мясорубки выпускники специальности 123456 поедут туда не сразу, а с отсрочкой в 3 месяца". Это ИТ-отрасли какой именно страны должно помочь? Армении, Грузии или Сербии?
Ну так "безопасность" это одна из двух марионеток, которые достают, когда хотят устроить очередное представление. Другую куклу - "детей" - сюда вроде никак не примотать. А "безопасность" вообще под любым соусом идет. Вот вы против безопасности что ли? То-то же.
Ну значит имеем косямбу то ли от товарищей, то ли от автора. Написать гайд по основным моментам - невеликий труд. Прочитать его и уточнить неясности - тоже.
Договоритесь об SLA на данную процедуру среди своих коллег. Например, МР не может висеть без внимания больше рабочего дня. Закрепите соглашение на общем собрании, а потом карайте нарушителей.
Судя по контексту, автор кода свернул не туда, когда решил запихнуть всю задачу в один МР размером с кита. Это решается декомпозицией задачи. У меня была такая проблема в одном стартапе, куда разом запустили трех джунов. После нескольких жестких разборов полетов и одного увольнения все чудом научились делать МРы с более скромными скоупами.
В общем я вижу в вашей истории проблему не с ревью, а с коммуникациями в команде и с общей культурой разработки.
Добрый совет всем "сеньорам" с опытом в целый 1 год. Когда начинает казаться, что поймали Б-га за бороду, то просто сходите на собес. Только не в ИТ-гигант, где вас литкодом помучают, а в продуктовую или аутсорсинговую контору средней руки. Туда, где людям не наплевать, кого брать в штат. Там будут задавать вопросы на понимание. На многие вещи по-другому сразу посмотрите.
Потому что так не бывает, что один годик подергал апишки и поперекладывал grpc - и хоба ты спец.
Аргументы уровня "защиты Чубакки". А если кто-то выполнит ту же задачу на реакте за 2 часа, то что? Я тоже могу сказать, что напишу парсер JSON на Kotlin за 2 часа, а на Erlang за неделю. Это вообще хоть что-то говорит об этих двух языках?
Так вы попробуйте рассказать это боссу. А еще лучше заказчику, если работаете на аутсорсе. Узнаете много нового о своих профессиональных качествах.
А если в конторе есть тайм-трекинг в каком-либо виде, то это автоматически вызывает гамму самых разнообразных бестолковых приседаний.
Если бы мелкие преступники умели в планирование и стратегию, то они бы не были преступниками. Ну или хотя бы не мелкими.
Мне кажется, суды полны делами типа "грабанул бабулю, забрал 5000 рублей, уехал на 5 лет".
Господин Мишустин, смотрите, какие у меня опасения.
Я гуглю рост преступности в РФ в 2022 году. Особенно с использованием оружия.
Я прикидываю экстраполяцию этого явления лет на 5 вперед
Я также прикидываю, что не все лиходеи будут разбойничать и грабить банки. Большинство будет по-старинке гоп-стопать и ставить на счетчик обывателей.
Я прикидываю, что гоп-стопать выгодно тех, кто получает кратно выше медианы и при этом ходит без оружия и без охраны.
И тут мне почему-то кажется, что скоро быть айтишником будет небезопасно в самом прямом житейском смысле слова. Как было небезопасно где-нибудь в провинции в 90х ребенку выходить во двор в новенькой олимпийке и белых сияющих кроссовках.
Ваши предложения, господин Мишустин.
Не я убежал от ответа, а вы видимо убежали от чтения моего первого коммента, где я свою позицию пояснил. Да, старший учит младшего. Это очевидно. Но обучение ремеслу разработки это чуть сложнее, чем просто накинуть на сеньора пачку буратин и надеяться, что он это как-то разгребет. А именно это и произошло в нашей занимательной задачке:
А мой поинт в том, что если вы хотите нанимать джунов завтра, то вы должны были раскошелиться на сеньоров вчера и на мидлов сегодня. Чтобы все эти люди строили устойчивую систему, где джун и ничего не сломает и легко сможет влиться в работу. Также вы должны были вложиться в грамотный HR-процесс. И уж точно не пускать это на самотек и усмотрение самих сеньоров. Выращивание должно быть системой, а не игрой в рулетку "авось проканает".
Почему я так думаю? Потому что я видел всю дичь с наймом толпы джунов в компанию к единственному сеньору на 2х предыдущих работах. Ничего кроме "Коли" там в принципе получиться не может. И, наоборот, я вижу как легко джун вливается в мой текущий коллектив, преимущественно сеньорский.
Берем сеньора, даем N джунов. Через Х месяцев получаем сеньора + N мидлов.
Как по вашему, это детерминированный исход событий? Или таки авантюра "авось проканает"?
Сначала берется из воздуха тезис, что хороший кодер автоматически обладает навыками педагогики и менеджмента. Потом этим тезисом лупят "Колю" по сутулой спине. Удобно. А главное, ни слова про ЛПР, которые всю кашу заварили.
Проблема "Коли" только в том, что он повелся на авантюру жадного руководства. Именно жадность и недальновидность толкает на все эти эксперименты с "выращиванием". В жизни чтобы производить что-то нужен капитал: площади, помещения, станки, склады, сырье. В процессе производства профессионалов из буратин капиталом являются качественная архитектура, покрытый тестами код, живая документация, рабочие процессы и уже существующий сильный коллектив. Если из всего этого у вас только "Коля", который все на себе тащит, то проблема тут не в "Коле", а в рваче, который решил Б-га за бороду ухватить за мелкий прайс.
Минус самообразования в том, что в большинстве случаев у ученика будет оставаться без ответа вопрос "а нахрена это вообще". Не в смысле "зачем я учусь", а в смысле "вот я узнал об ХХХ, но не вижу ему применения".
Например для меня таким местом стало изучение спринга после изучения джавы. Я в упор не понимал, зачем весь этот замут с фреймворком, XML, аннотациями и т.д. Я же буквально только что без проблем создавал объекты сам через new - а сейчас вы мне говорите, что это плохо. Почему?
Соответственно, чтобы понять какие-то вещи, которые имеют смысл в реальном промышленном использовании (но не имеют смысла в HelloWorld-программах) нужен проводник в этот самый мир промышленного использования. Будут это курсы или ментор - не так важно. Но как мне кажется среднему свитчеру освоить это самостоятельно будет запредельно сложно.
Более того, я вижу по собеседованиям, что иногда люди даже с опытом под 4 года в упор не понимают базис. Потому что попали на проект, где не было серьезных старших спецов, и пришлось вариться в собственном соку.
Мне ситуация с этими книгами немного напоминает ситуацию с простонародным восприятием религии. Вот у нас куча полезных книг, которые точно хуже не сделают И почти все знают, что есть какой-то там SOLID, какой-то там GRASP и какие-то там паттерны. Но на деле выполнять это всё как бы не обязательно. Большинство все равно предпочитает накручивать в своем коде такие спагетти, как будто завтра не наступит и разбираться не придется. А если ты такой умный решишь побыть евангелистом и внедрить в команде хорошие практики, то рискуешь встретить спектр реакций от простого игнора до агрессии.
Да, но я потому и написал про культуру. Культура это когда договоренности выполняются. А когда все дружно вертят любые договоренности, то код тоже будет выглядеть, как будто его вертели.