Хекслет.Клуб официально открыт! Значит рассказываю. У меня давно была идея, объединять не только тех кто хочет вкатываться в it, но и тех кто уже работает и кому важен профессиональный рост, карьерный рост, возможность увеличить свой нетворк, если нужно переехать и устроиться куда-то зарубеж.
Как устроен клуб (к чему мы идем)
Внутри находится чат, в котором присутствуют как обычные участники, так и менторы, которые специализируются на помощи в прокачке. Чат состоит разговорных и автоматических топиков, в которые попадают истории от участников:
- Собеседования: Опыт прохождения участниками мидловых и синьорских собеседований с вопросами и требованиями
- Компании: Отзывы и рассказ о внутренней кухне работы компаний, в которых работают участники
- Менторы: Отчеты менторов и о менторах, с описанием планов развития
В разговорных чатах обсуждается все от алгоритмов и курсов до построения личного бренда.
Сам клуб управляется через бота https://t.me/HexletClubBot Через него дается доступ к чату, в этом же боте собраны полезные ссылки и база знаний клуба.
Ну что, поехали) Жду всех там
Ссылки: Телеграм | Youtube | VK
Как устроен клуб (к чему мы идем)
Внутри находится чат, в котором присутствуют как обычные участники, так и менторы, которые специализируются на помощи в прокачке. Чат состоит разговорных и автоматических топиков, в которые попадают истории от участников:
- Собеседования: Опыт прохождения участниками мидловых и синьорских собеседований с вопросами и требованиями
- Компании: Отзывы и рассказ о внутренней кухне работы компаний, в которых работают участники
- Менторы: Отчеты менторов и о менторах, с описанием планов развития
В разговорных чатах обсуждается все от алгоритмов и курсов до построения личного бренда.
Сам клуб управляется через бота https://t.me/HexletClubBot Через него дается доступ к чату, в этом же боте собраны полезные ссылки и база знаний клуба.
Ну что, поехали) Жду всех там
Ссылки: Телеграм | Youtube | VK
Telegram
Хекслет Клуб (Бот)
Наш клуб помогает разработчиком расти в карьере и зарплате. От создателей Хекслета
Заменит ли ИИ программистов? Вокруг себя вижу много панических настроений на эту тему, поэтому пост. Начну с анекдота
Клиент вызывает мастера починить сломавшийся станок.
Мастер приходит, осматривает станок, берет молоток, слегка ударяет в одном месте — станок снова работает.
Мастер выписывает счет на $500.
Клиент возмущается:
— За что $500? Вы же только один раз молотком ударили!
Мастер спокойно отвечает:
— За удар молотком — $5. За то, чтобы знать, куда ударить — $495.
ИИ действительно может генерировать куски кода, но написать код != создать работающую систему. Программирование это не только набор символов в редакторе. Это анализ требований, архитектура, проектирование системных взаимодействий, поддержка, развитие. ИИ не умеет брать на себя всю полноту инженерной ответственности: понимать зачем, почему и в каком контексте разрабатывается продукт.
Кроме того, задача программиста - не просто написать решение, а проанализировать его стоимость: насколько оно сложно в поддержке, сколько ресурсов потребует в будущем, сколько будет стоить исправление ошибок и адаптация под изменения. Иногда работа специалиста не в том, чтобы реализовать то, что попросили, а в том, чтобы предложить более дешевую, простую и надежную альтернативу.
Еще один важный момент: ИИ в своей природе в основном "копипастит" уже существующие паттерны кода, но не создает новых абстракций. Создание абстракций требует понимания сути задачи, компромиссов между сложностью и гибкостью, предвидения будущих изменений. Это работа мышления, а не перебора вариантов. Создание правильных абстракций определяет, насколько система будет масштабируемой, понятной и живучей. ИИ пока остается на уровне механического исполнения без глубокого понимания задач.
И наконец: реальные проекты - это не изолированные кусочки кода. Это сложные системы с множеством взаимосвязанных компонентов: базы данных, кэш-сервисы, очереди, микросервисы, балансировщики нагрузки, десятки или сотни серверов. Ошибки в таких системах проявляются не там, где был написан код, а на стыках между частями, под нагрузкой, в редких пограничных случаях. Диагностика и исправление таких ошибок требуют системного мышления, опыта и понимания работы всей инфраструктуры целиком. Пока ИИ не способен взять на себя такую ответственность.
Миф: ИИ сделает всех равными
Кажется, что с ИИ теперь каждый сможет делать то же самое, что и крутой разработчик. Но на практике ИИ становится инструментом в руках человека. Чем опытнее человек, тем лучше он ставит задачи ИИ, проверяет результаты и направляет процесс. Это усиливает разницу между сильными и слабыми разработчиками: кто умеет думать становится еще продуктивнее, кто не умеет, тонет в посредственных результатах.
Миф: ИИ заменит джунов
В этом утверждении зашито представление, что джуны нужны для выполнения каких-то базовых задач с которыми справится любой дурак. Поэтому без ии нам приходилось их нанимать, а вот с ии они больше будут не нужны. Компании нанимают джунов по другим причинам. Они готовы вкладываться в людей, чтобы вырастить из них квалифицированных специалистов. То есть никто не нанимает джуна, для того, чтобы он остался джуном. Тогда это был бы не джун, а вполне себе опытный, но очень низкоквалицированный специалист на низковалифицированную задачу.
Миф: Нужно срочно менять профессию
Как и с любой новой технологией, реальный сценарий это не исчезновение профессии, а её изменение. Появится больше задач по интеграции ИИ в продукты, по проектированию взаимодействия между человеком и машиной, по валидации и контролю качества того, что делает ИИ. Уйдут рутинные задачи, вырастет ценность проектирования, системного мышления и креативности.
Что действительно меняется
* Рутинные задачи действительно будут автоматизироваться.
* Навыки работы с ИИ становятся частью базового набора разработчика.
* Возрастет ценность знаний о системах, архитектуре, бизнесе.
Что вы об этом думаете?
Ссылки: Телеграм | Youtube | VK
Клиент вызывает мастера починить сломавшийся станок.
Мастер приходит, осматривает станок, берет молоток, слегка ударяет в одном месте — станок снова работает.
Мастер выписывает счет на $500.
Клиент возмущается:
— За что $500? Вы же только один раз молотком ударили!
Мастер спокойно отвечает:
— За удар молотком — $5. За то, чтобы знать, куда ударить — $495.
ИИ действительно может генерировать куски кода, но написать код != создать работающую систему. Программирование это не только набор символов в редакторе. Это анализ требований, архитектура, проектирование системных взаимодействий, поддержка, развитие. ИИ не умеет брать на себя всю полноту инженерной ответственности: понимать зачем, почему и в каком контексте разрабатывается продукт.
Кроме того, задача программиста - не просто написать решение, а проанализировать его стоимость: насколько оно сложно в поддержке, сколько ресурсов потребует в будущем, сколько будет стоить исправление ошибок и адаптация под изменения. Иногда работа специалиста не в том, чтобы реализовать то, что попросили, а в том, чтобы предложить более дешевую, простую и надежную альтернативу.
Еще один важный момент: ИИ в своей природе в основном "копипастит" уже существующие паттерны кода, но не создает новых абстракций. Создание абстракций требует понимания сути задачи, компромиссов между сложностью и гибкостью, предвидения будущих изменений. Это работа мышления, а не перебора вариантов. Создание правильных абстракций определяет, насколько система будет масштабируемой, понятной и живучей. ИИ пока остается на уровне механического исполнения без глубокого понимания задач.
И наконец: реальные проекты - это не изолированные кусочки кода. Это сложные системы с множеством взаимосвязанных компонентов: базы данных, кэш-сервисы, очереди, микросервисы, балансировщики нагрузки, десятки или сотни серверов. Ошибки в таких системах проявляются не там, где был написан код, а на стыках между частями, под нагрузкой, в редких пограничных случаях. Диагностика и исправление таких ошибок требуют системного мышления, опыта и понимания работы всей инфраструктуры целиком. Пока ИИ не способен взять на себя такую ответственность.
Миф: ИИ сделает всех равными
Кажется, что с ИИ теперь каждый сможет делать то же самое, что и крутой разработчик. Но на практике ИИ становится инструментом в руках человека. Чем опытнее человек, тем лучше он ставит задачи ИИ, проверяет результаты и направляет процесс. Это усиливает разницу между сильными и слабыми разработчиками: кто умеет думать становится еще продуктивнее, кто не умеет, тонет в посредственных результатах.
Миф: ИИ заменит джунов
В этом утверждении зашито представление, что джуны нужны для выполнения каких-то базовых задач с которыми справится любой дурак. Поэтому без ии нам приходилось их нанимать, а вот с ии они больше будут не нужны. Компании нанимают джунов по другим причинам. Они готовы вкладываться в людей, чтобы вырастить из них квалифицированных специалистов. То есть никто не нанимает джуна, для того, чтобы он остался джуном. Тогда это был бы не джун, а вполне себе опытный, но очень низкоквалицированный специалист на низковалифицированную задачу.
Миф: Нужно срочно менять профессию
Как и с любой новой технологией, реальный сценарий это не исчезновение профессии, а её изменение. Появится больше задач по интеграции ИИ в продукты, по проектированию взаимодействия между человеком и машиной, по валидации и контролю качества того, что делает ИИ. Уйдут рутинные задачи, вырастет ценность проектирования, системного мышления и креативности.
Что действительно меняется
* Рутинные задачи действительно будут автоматизироваться.
* Навыки работы с ИИ становятся частью базового набора разработчика.
* Возрастет ценность знаний о системах, архитектуре, бизнесе.
Что вы об этом думаете?
Ссылки: Телеграм | Youtube | VK
В этом выпуске подкаста «Организованное программирование» у меня в гостях Евгений Кот — легендарный эксперт, известный своими увлекательными разборами психологических и социальных тем. Мы глубоко погрузились в тему культурного кода, обсудили разницу в подходах к работе и тонкости взаимодействия в международных командах. Поговорили о том, какое значение имеют софт-скиллы в США, Европе и других странах, и поделились личными историями успешной (и не очень) адаптации к новым профессиональным и жизненным реалиям. Вы узнаете, как выстроить эффективную коммуникацию в многонациональных коллективах, как воспитание и культурные установки влияют на прxофессиональный рост, и почему культурные различия могут стать не только препятствием, но и серьезным преимуществом для вашей карьеры. Не пропустите — вас ждут уникальные инсайты и полезные практические советы, которые помогут вам успешно реализоваться в международной среде!
https://www.youtube.com/watch?v=V0Du67scNvU
Альтернативные ссылки: Аудио | vk
https://www.youtube.com/watch?v=V0Du67scNvU
Альтернативные ссылки: Аудио | vk
YouTube
Почему ваша амбициозность в Европе может обернуться одиночеством | Евгений Кот #42
В этом выпуске подкаста «Организованное программирование» у меня в гостях Евгений Кот — легендарный эксперт, известный своими увлекательными разборами психологических и социальных тем. Мы глубоко погрузились в тему культурного кода, обсудили разницу в подходах…
Как я делаю подкасты?
Не знаю пригодится вам или нет, но поделюсь тем, какой я использую подход для организации подкаста.
Подкаст я делаю не один, у меня есть помощник (буду говорить “продюсер”), который помогает с подготовкой гостей, монтажом и выкладкой подкаста. Это можно делать и самостоятельно, но я бы тратил реально очень много времени. Так что оно того стоит.
Темы и гости
Начальный план был поговорить с друзьями :) Потом уже в процесс стало вырисовываться, что классно идти по языкам, это нравится аудитории. Классно делать дебаты (я планирую несколько в ближайшее время), тут ИИ подтянулся и другие идеи появились. В общем пока оно идет, идей появляется больше чем слотов для вебинаров, поэтому тут все просто.
Что касается гостей, то недостатка в них нет. Я смотрю ребят которые выступали на конфах, других подкастах, много и часто пишут или являются признанными экспертами и адвокатами в их стеке. Ну и друзья конечно :)
Процесс
Выглядит так:
1. я договариваюсь с гостем о подкасте и времени. Заношу все это в спец табличку где есть график записей и отдельный список гостей с контактами
2. Гость бронирует слот и ему в календарь падает мероприятие с ссылкой на памятку, где написаны правила, рекомендации, как подготовиться, как оно будет проходить и так далее.
3. Продюсер высылает гостю форму, в которой гость отмечает как его представить, чем он занимается, какие штуки хочет попиарить и так далее.
4. Продюсер проводит с ними плановый техчек за 3-2 дня. Иногда это приводит к тому, что гость берет таймаут на докупку оборудования или смены локации. Плюс тут же проверяется что была заполнена форма и даются рекомендации по тому, как лучше провести подкаст
5. В день X мы записываемся и прощаемся с гостем
6. Продюсер берет исходники, делает из них аудио и видео версии, иногда (если требуется) дает послушать для доработки и готовит все это добро к выкладке. В этот момент он присылает мне варианты заголовков и описаний на согласование. Тут включается seo и chatgpt.
7. В воскресение с утра подкаст выходит на всех площадках (включая аудио).
8. Я делаю посты в соц сети.
Время
Самый гемморой это договариваться о времени. У всех разные часовые зоны, дети, планы, отпуска. Поэтому я сразу сделал ход конем, создал отдельный календарь под запись с единственным слотом в неделю в cal.com. Ну и просто сбрасываю его гостю, пока договариваемся о подкасте, а гость уже сам вписывается когда ему удобно. Изредка мой слот им не подходит и только в таких случаях мы начинаем договариваться вручную о конкретном дне. Буквально вчера я записал такой подкаст, а вот сегодня уже записываюсь по расписанию (пришлось два раза в неделю, чтобы нагнать график).
Само планирование я делаю раз в месяц-два. Сажусь, выбираю гостей и начинаю всем писать. Обычно после этого календарь забивается на пару месяцев вперед. Кстати, это всегда удивляет гостей, когда они видят, что ближайший слот только через месяц. Далеко не у всех такой горизонт планирования.
Техника
Мы долго искали комбинацию инструментов, которая бы нас устроила и остановились на микрофоне podmic и встроенной в мак камере. Мы сознательно отказались от камеры сбоку, которую часто применяют в записи подкастов. Это довольно сложная конфигурация для нас и гостей, при этом влияние на просмотр подкаста это вроде как не оказывает.
Софт
Стандартная схема записи подкастов это довольно утомительное занятие. Скачать и вовремя и правильно запустить audacity, записывать видео с двух устройств и потом все это залить на файлообменник. Я сразу хотел от всего этого убежать. Перепробовав десяток разных сервисов, мы вернулись к старому доброму стримярду, который за прошедшие годы научился делать локальную запись (то есть интернет как в зуме уже не влияет) и автоматически закачивать ее в облако. Поэтому для гостя и меня запись выглядит так, мы заходим в студию стримярда, жмякаем record и в конце end record. Дожидаемся пока студия скажет что все залито (обычно это происходит моментально) и расходимся.
Для выкладки аудио подкаста юзаем https://transistor.fm/
Не знаю пригодится вам или нет, но поделюсь тем, какой я использую подход для организации подкаста.
Подкаст я делаю не один, у меня есть помощник (буду говорить “продюсер”), который помогает с подготовкой гостей, монтажом и выкладкой подкаста. Это можно делать и самостоятельно, но я бы тратил реально очень много времени. Так что оно того стоит.
Темы и гости
Начальный план был поговорить с друзьями :) Потом уже в процесс стало вырисовываться, что классно идти по языкам, это нравится аудитории. Классно делать дебаты (я планирую несколько в ближайшее время), тут ИИ подтянулся и другие идеи появились. В общем пока оно идет, идей появляется больше чем слотов для вебинаров, поэтому тут все просто.
Что касается гостей, то недостатка в них нет. Я смотрю ребят которые выступали на конфах, других подкастах, много и часто пишут или являются признанными экспертами и адвокатами в их стеке. Ну и друзья конечно :)
Процесс
Выглядит так:
1. я договариваюсь с гостем о подкасте и времени. Заношу все это в спец табличку где есть график записей и отдельный список гостей с контактами
2. Гость бронирует слот и ему в календарь падает мероприятие с ссылкой на памятку, где написаны правила, рекомендации, как подготовиться, как оно будет проходить и так далее.
3. Продюсер высылает гостю форму, в которой гость отмечает как его представить, чем он занимается, какие штуки хочет попиарить и так далее.
4. Продюсер проводит с ними плановый техчек за 3-2 дня. Иногда это приводит к тому, что гость берет таймаут на докупку оборудования или смены локации. Плюс тут же проверяется что была заполнена форма и даются рекомендации по тому, как лучше провести подкаст
5. В день X мы записываемся и прощаемся с гостем
6. Продюсер берет исходники, делает из них аудио и видео версии, иногда (если требуется) дает послушать для доработки и готовит все это добро к выкладке. В этот момент он присылает мне варианты заголовков и описаний на согласование. Тут включается seo и chatgpt.
7. В воскресение с утра подкаст выходит на всех площадках (включая аудио).
8. Я делаю посты в соц сети.
Время
Самый гемморой это договариваться о времени. У всех разные часовые зоны, дети, планы, отпуска. Поэтому я сразу сделал ход конем, создал отдельный календарь под запись с единственным слотом в неделю в cal.com. Ну и просто сбрасываю его гостю, пока договариваемся о подкасте, а гость уже сам вписывается когда ему удобно. Изредка мой слот им не подходит и только в таких случаях мы начинаем договариваться вручную о конкретном дне. Буквально вчера я записал такой подкаст, а вот сегодня уже записываюсь по расписанию (пришлось два раза в неделю, чтобы нагнать график).
Само планирование я делаю раз в месяц-два. Сажусь, выбираю гостей и начинаю всем писать. Обычно после этого календарь забивается на пару месяцев вперед. Кстати, это всегда удивляет гостей, когда они видят, что ближайший слот только через месяц. Далеко не у всех такой горизонт планирования.
Техника
Мы долго искали комбинацию инструментов, которая бы нас устроила и остановились на микрофоне podmic и встроенной в мак камере. Мы сознательно отказались от камеры сбоку, которую часто применяют в записи подкастов. Это довольно сложная конфигурация для нас и гостей, при этом влияние на просмотр подкаста это вроде как не оказывает.
Софт
Стандартная схема записи подкастов это довольно утомительное занятие. Скачать и вовремя и правильно запустить audacity, записывать видео с двух устройств и потом все это залить на файлообменник. Я сразу хотел от всего этого убежать. Перепробовав десяток разных сервисов, мы вернулись к старому доброму стримярду, который за прошедшие годы научился делать локальную запись (то есть интернет как в зуме уже не влияет) и автоматически закачивать ее в облако. Поэтому для гостя и меня запись выглядит так, мы заходим в студию стримярда, жмякаем record и в конце end record. Дожидаемся пока студия скажет что все залито (обычно это происходит моментально) и расходимся.
Для выкладки аудио подкаста юзаем https://transistor.fm/
Статистика прохождений курсов на https://code-basics.com/ru за последние 28 дней. Из очевидного: к праздникам активность падает, а питон традиционно самый востребованный курс. Из неожиданного: ts уделывает js, а c# занимает по популярности аж второе место
Правда надо учитывать, часть курсов есть номинально, то есть внутри уроков то кот наплакал. Но все это можно накоммитить прямо гитхаб: https://github.com/hexlet-basics
Правда надо учитывать, часть курсов есть номинально, то есть внутри уроков то кот наплакал. Но все это можно накоммитить прямо гитхаб: https://github.com/hexlet-basics
В этом выпуске мы поговорили с Борисом Трушиным — учителем математики с 26-летним стажем в «Фоксфорде» и автором популярных YouTube-каналов. Jбсудили, зачем программистам нужна математика, какие навыки она развивает и как алгоритмическое мышление помогает в любой профессии. Разобрали распространённые стереотипы о «гуманитариях» и IQ-клубах, выяснили, почему не стоит сводить образование к запоминанию формул и механическому списыванию задач.
Поговорили о роли родителей и преподавателей в поддержке интереса ребёнка, о том, как важно давать возможность учиться на ошибках и сосредоточиться на понимании, а не на оценках. Затронули тему ЕГЭ: что в нём работает, а что можно улучшить, чтобы экзамен проверял по-настоящему глубокие знания, а не умение «тренироваться под тест». И, конечно, обсудили, чем искусственный интеллект уже сегодня помогает учиться и какие риски несёт будущее, где ChatGPT и подобные системы становятся персональными ассистентами.
Вы узнаете живые истории из школьной практики, получите советы по развитию логики и сможете применить их в подготовке к любому вызову — от собеседования в IT до повседневных задач. Не пропустите — этот выпуск даст вам чёткое представление о том, как математика формирует мышление и какую роль в обучении играет человек и технологии!
https://youtube.com/watch?v=QVOA8QrgJvA
Альтернативные ссылки: Аудио | vk
Поговорили о роли родителей и преподавателей в поддержке интереса ребёнка, о том, как важно давать возможность учиться на ошибках и сосредоточиться на понимании, а не на оценках. Затронули тему ЕГЭ: что в нём работает, а что можно улучшить, чтобы экзамен проверял по-настоящему глубокие знания, а не умение «тренироваться под тест». И, конечно, обсудили, чем искусственный интеллект уже сегодня помогает учиться и какие риски несёт будущее, где ChatGPT и подобные системы становятся персональными ассистентами.
Вы узнаете живые истории из школьной практики, получите советы по развитию логики и сможете применить их в подготовке к любому вызову — от собеседования в IT до повседневных задач. Не пропустите — этот выпуск даст вам чёткое представление о том, как математика формирует мышление и какую роль в обучении играет человек и технологии!
https://youtube.com/watch?v=QVOA8QrgJvA
Альтернативные ссылки: Аудио | vk
YouTube
Математики vs. гуманитарии в IT-профессиях | Борис Трушин #43
В этом выпуске мы поговорили с Борисом Трушиным — учителем математики с 26-летним стажем в «Фоксфорде» и автором популярных YouTube-каналов. Обсудили, зачем программистам нужна математика, какие навыки она развивает и как алгоритмическое мышление помогает…
Обновления без боли за счет версионирования конфигов
У рельсы есть одна крутая фишка, которую, как мне кажется, было бы полезно адаптировать и другим фреймворкам (если еще нет). Она связана с тем, как работает конфигурация самого фреймворка при обновлениях на новые версии.
Представьте себе ситуацию, выходит новая версия вашего любимого фреймворка, вы обновляетесь и часть кода перестает работать нормально, потому что появились новые дефолты. Перед вами стоит выбор, либо пойти все поправить под новую версию, что не всегда возможно сделать за короткий срок, либо искать что за конфигурация поменялась и фиксировать ее в нужном для вас варианте.
В рейлс такая ситуация разруливается автоматически. По дефолту все будет работать ровно как вы ожидаете и ни один элемент конфигурации не изменится. Достигается это за счет того, что каждый конфигурационный набор версионируется вместе с самим фреймворком и при инициализации проекта, эта версия фиксируется:
Обратите внимание на строчку
Ссылки: Телеграм | Youtube | VK
У рельсы есть одна крутая фишка, которую, как мне кажется, было бы полезно адаптировать и другим фреймворкам (если еще нет). Она связана с тем, как работает конфигурация самого фреймворка при обновлениях на новые версии.
Представьте себе ситуацию, выходит новая версия вашего любимого фреймворка, вы обновляетесь и часть кода перестает работать нормально, потому что появились новые дефолты. Перед вами стоит выбор, либо пойти все поправить под новую версию, что не всегда возможно сделать за короткий срок, либо искать что за конфигурация поменялась и фиксировать ее в нужном для вас варианте.
В рейлс такая ситуация разруливается автоматически. По дефолту все будет работать ровно как вы ожидаете и ни один элемент конфигурации не изменится. Достигается это за счет того, что каждый конфигурационный набор версионируется вместе с самим фреймворком и при инициализации проекта, эта версия фиксируется:
module Hexlet
class Application < Rails::Application
config.load_defaults "8.0"
config.require_master_key = false
config.active_record.schema_format = :sql
config.active_record.query_log_tags_enabled = true
config.active_model.i18n_customize_full_message = true
end
end
Обратите внимание на строчку
config.load_defaults “8.0”
. Это значит, что вообще все параметры, будут такими, как они были в версии 8. Если обновится версия фреймворка, скажем до 9, то с самой конфигурацией ничего не случится, так как она зафиксирована. Дальше я смогу либо сразу переключиться на новое поведение поменяв общую версию конфига, либо делать это постепенно указывая нужные параметры сразу за этой строчкой, тогда они будут переписывать дефолты.Ссылки: Телеграм | Youtube | VK
Telegram
Организованное программирование | Кирилл Мокевнин
Как из джуниора дойти до мидла, а потом и до синьора
Ютуб https://youtube.com/@mokevnin
Связь для предложений: @kirillpublic
Ютуб https://youtube.com/@mokevnin
Связь для предложений: @kirillpublic
Записал разбор видео Егора Бугаенко "Взлет и падение ооп". Изначально начал смотреть его для подготовки к подкасту с Егором, но не смог удержаться, чтобы не разобрать, а там есть о чем поговорить. Наслаждайтесь https://www.youtube.com/watch?v=GdQxgjj8lbY
Альтернативные ссылки: Аудио | vk
Альтернативные ссылки: Аудио | vk
YouTube
Разбор лекции Егора Бугаенко о настоящем ООП | Организованное программирование
В этом выпуске я открываю новое направление на канале — разборы. Начинаю с лекции Егора Бугаенко «Взлёт и падение ООП», которую он читал в Новосибирске.
✅ Подписывайтесь на канал «Организованное программирование» в Telegram: https://ttttt.me/orgprog
– Список…
✅ Подписывайтесь на канал «Организованное программирование» в Telegram: https://ttttt.me/orgprog
– Список…
ООП (неочевидные плюсы)
По следам последнего видео. У ООПшных языков, есть одна киллер фича и одно удобство, которые редко встречаются в других местах. Сейчас будет шок 🙂
Если у вас структура вызова сущность.метод, вы получаете автокомплит. Если у вас вызов функция(данные), то хрен вам, а не автокомплит. Как вам такое? Является ли это фишкой ооп? Вообще-то нет, да так совпало что в ооп это повсеместно, но это всего лишь вопрос синтаксиса языка. Зацените пример на go:
И на nim
и rust через трейты:
Ну и аналог (хотя и через классы) это экстеншены в Swift, Kotlin и C#
Кстати это довольно интересно, многие ассоцириуют синтаксис сущность.метод() только с ООП, но как вы видите, это вообще не так.
p.s. А как вы думаете, какая вторая деталь, про которую я упомянул в начале поста ? 🙂
Ссылки: Телеграм | Youtube | VK
По следам последнего видео. У ООПшных языков, есть одна киллер фича и одно удобство, которые редко встречаются в других местах. Сейчас будет шок 🙂
Если у вас структура вызова сущность.метод, вы получаете автокомплит. Если у вас вызов функция(данные), то хрен вам, а не автокомплит. Как вам такое? Является ли это фишкой ооп? Вообще-то нет, да так совпало что в ооп это повсеместно, но это всего лишь вопрос синтаксиса языка. Зацените пример на go:
type User struct {
Name string
}
func (u *User) Greet() {
fmt.Println("Hello,", u.Name)
}
func main() {
user := &User{Name: "Kirill"}
user.Greet() // автокомплит: .Greet
}
И на nim
type User = object
name: string
proc greet(u: User) {.method.} =
echo "Hello, ", u.name
let user = User(name: "Kirill")
user.greet() # автокомплит есть
и rust через трейты:
struct User {
name: String,
}
// trait описан отдельно от User
trait Greet {
fn greet(&self);
}
impl Greet for User {
fn greet(&self) {
println!("Hello, {}", self.name);
}
}
fn main() {
let user = User { name: "Kirill".to_string() };
user.greet(); // автокомплит срабатывает!
}
Ну и аналог (хотя и через классы) это экстеншены в Swift, Kotlin и C#
Кстати это довольно интересно, многие ассоцириуют синтаксис сущность.метод() только с ООП, но как вы видите, это вообще не так.
p.s. А как вы думаете, какая вторая деталь, про которую я упомянул в начале поста ? 🙂
Ссылки: Телеграм | Youtube | VK
Telegram
Организованное программирование | Кирилл Мокевнин
Как из джуниора дойти до мидла, а потом и до синьора
Ютуб https://youtube.com/@mokevnin
Связь для предложений: @kirillpublic
Ютуб https://youtube.com/@mokevnin
Связь для предложений: @kirillpublic
Записал выпуск про TDD с Ильей Ильиных. Получилось очень насыщенно. Прошлись по мокам, пирамиде, зацепили фреймворки, orm, spring boot и кучу разных языков
https://www.youtube.com/watch?v=SEfAGnQURQs
Альтернативные ссылки: Аудио | vk
https://www.youtube.com/watch?v=SEfAGnQURQs
Альтернативные ссылки: Аудио | vk
YouTube
Нужно ли писать юнит-тесты? Дебаты о TDD, моках и бережливом тестировании | Илья Ильиных | #45
В этом выпуске мы поговорили с Ильёй Ильиных , автором канала «Куда войти», и вместе выяснили, что на самом деле скрывается за трёхбуквием TDD. Обсудили бережливое тестирование, разобрали плюсы и минусы diamond-подхода, поспорили о юнит-тестах, интеграционных…
Когда речь заходит про создание проектов, многие любят приводить в качестве иллюстрации этот круг со словами “ты можешь выбрать только два”. Но что если я скажу, что этот круг полная херня?
Считается что качественно это значит долго, но это далеко не всегда так. Например любой парикмахер вам скажет, что качественная прическа должна делаться быстро (допустим 20 минут). Если ее делают час, значит это не опытный парикмахер. Да бывают сложные прически, которые так быстро не сделаешь, но в таких ситуациях неопытный даже не возьмется, потому что не сможет этого сделать.
Примерно тоже самое происходит в коде. Качественное решение это не решение которое максимально расширяемое и способное выдерживать любые нагрузки. Это достаточно хорошее решение в рамках текущих условий и ближайших планов на изменение. Опытный разработчик справится с такими задачами за разумное время, а вот не опытный, как бы ни старался, в любой не тривиальной ситуации выдаст решение не очень (мягко говоря), просто потому что он не знает как правильно и не набил нужных шишек.
Теперь посмотрим на круг. Там написано качественно + дешево = долго. Так вот долго это всегда дорого, потому что вам надо платить людям зарплату, а это далеко не только разработчики. У вас либо быстро и дешево, либо долго и тогда дорого. Либо там на самом деле никто не работает и просто создается видимость долгого процесса.
Если бы схема с качественно + дешево = долго работала, то в мире существовали супер успешные бизнесы построенные на Джунах, но этого не происходит. Любой кто пытался так сделать, в какой-то момент понимал, что это тупиковый путь. Вы видели чтобы заказчики радовались то, что на той стороне Джуны? Они не просто не радуются, но еще и проводят собесы, чтобы убедиться, что на той стороне профессионалы.
Но вообще каждый элемент в той схеме зависит от контекста. Дешево относительно чего? Например наш подрядчик по SEO взял миллион за работу. Это дешево или нет? А если в результате его работы мы смогли заработать 10 миллионов? Тогда это крайне дешево. А если выручка не изменилась? Значит мы заплатили очень дорого, за плохую работу. Правда? То есть получается стоимость определяется не фактической ценой, а относительна результата, который заранее не всегда возможно предсказать точно.
Точно так же тут можно продолжать разносить все остальные связки, но это я оставлю на ваше усмотрение :)
Ссылки: Телеграм | Youtube | VK
Считается что качественно это значит долго, но это далеко не всегда так. Например любой парикмахер вам скажет, что качественная прическа должна делаться быстро (допустим 20 минут). Если ее делают час, значит это не опытный парикмахер. Да бывают сложные прически, которые так быстро не сделаешь, но в таких ситуациях неопытный даже не возьмется, потому что не сможет этого сделать.
Примерно тоже самое происходит в коде. Качественное решение это не решение которое максимально расширяемое и способное выдерживать любые нагрузки. Это достаточно хорошее решение в рамках текущих условий и ближайших планов на изменение. Опытный разработчик справится с такими задачами за разумное время, а вот не опытный, как бы ни старался, в любой не тривиальной ситуации выдаст решение не очень (мягко говоря), просто потому что он не знает как правильно и не набил нужных шишек.
Теперь посмотрим на круг. Там написано качественно + дешево = долго. Так вот долго это всегда дорого, потому что вам надо платить людям зарплату, а это далеко не только разработчики. У вас либо быстро и дешево, либо долго и тогда дорого. Либо там на самом деле никто не работает и просто создается видимость долгого процесса.
Если бы схема с качественно + дешево = долго работала, то в мире существовали супер успешные бизнесы построенные на Джунах, но этого не происходит. Любой кто пытался так сделать, в какой-то момент понимал, что это тупиковый путь. Вы видели чтобы заказчики радовались то, что на той стороне Джуны? Они не просто не радуются, но еще и проводят собесы, чтобы убедиться, что на той стороне профессионалы.
Но вообще каждый элемент в той схеме зависит от контекста. Дешево относительно чего? Например наш подрядчик по SEO взял миллион за работу. Это дешево или нет? А если в результате его работы мы смогли заработать 10 миллионов? Тогда это крайне дешево. А если выручка не изменилась? Значит мы заплатили очень дорого, за плохую работу. Правда? То есть получается стоимость определяется не фактической ценой, а относительна результата, который заранее не всегда возможно предсказать точно.
Точно так же тут можно продолжать разносить все остальные связки, но это я оставлю на ваше усмотрение :)
Ссылки: Телеграм | Youtube | VK
Организованное программирование | Кирилл Мокевнин pinned «Записал разбор видео Егора Бугаенко "Взлет и падение ооп". Изначально начал смотреть его для подготовки к подкасту с Егором, но не смог удержаться, чтобы не разобрать, а там есть о чем поговорить. Наслаждайтесь https://www.youtube.com/watch?v=GdQxgjj8lbY …»
В этом выпуске мы поговорили с Егором Бугаенко — автором «Elegant Objects» и сторонником «честного» ООП-мышления. Он раскрыл, почему классическое объектно-ориентированное программирование — это не архитектура, а иллюзия порядка, за которой скрывается хаос.
Разобрали, почему null, static и наследование — главные разрушители систем, как мышление «в классах» ведёт к техдолгу, и почему ORM прячет от нас реальные ошибки в работе с данными. Егор настаивает: код должен быть сконструирован, а не написан, иначе система становится неуправляемой — особенно в эпоху LLM, когда ИИ сыплет автопатчами и код перестаёт быть осмысленным.
Также обсудили:
Почему композиция объектов — основа устойчивой архитектуры
Как мыслить модулями, а не строками кода
Что такое Fail Fast и зачем системе «падать» сразу
Почему архитектурное мышление — навык разработчика будущего
Как LLM усиливают хаос, если нет модели
Роль дизайн-долга и как он убивает бизнес-процессы
https://www.youtube.com/watch?v=X1HSGEADAhE
Альтернативные ссылки: Аудио | vk
Разобрали, почему null, static и наследование — главные разрушители систем, как мышление «в классах» ведёт к техдолгу, и почему ORM прячет от нас реальные ошибки в работе с данными. Егор настаивает: код должен быть сконструирован, а не написан, иначе система становится неуправляемой — особенно в эпоху LLM, когда ИИ сыплет автопатчами и код перестаёт быть осмысленным.
Также обсудили:
Почему композиция объектов — основа устойчивой архитектуры
Как мыслить модулями, а не строками кода
Что такое Fail Fast и зачем системе «падать» сразу
Почему архитектурное мышление — навык разработчика будущего
Как LLM усиливают хаос, если нет модели
Роль дизайн-долга и как он убивает бизнес-процессы
https://www.youtube.com/watch?v=X1HSGEADAhE
Альтернативные ссылки: Аудио | vk
YouTube
Егор Бугаенко про будущее программирования | Организованное программирование #46
В этом выпуске мы поговорили с Егором Бугаенко — автором «Elegant Objects» и сторонником «честного» ООП-мышления. Он раскрыл, почему классическое объектно-ориентированное программирование — это не архитектура, а иллюзия порядка, за которой скрывается хаос.…
Вы уже проходили? https://gosuslugi.ru/itskills Я только что получил сертификат по PHP (начинающий) с вопросами где нужно знать SQL и Веб (html + http). Защита от ИИ в стиле: "не используйте ИИ". Как бы там ни было, будем добавлять подготовку на Хекслет (ибо начнут спрашивать)
Конфигурация: данные vs код
Существует два основных подхода к описанию конфигурации: использовать код на каком-то языке (возможно dsх) или описывать все через универсальные форматы (yaml, json).
Например большинство линтеров и форматеров используют конфигурацию через json файлы. Хотя в JS экосистеме происходит сдвиг в сторону написания конфигурации для таких инструментов в js файлы. Системы сборки чаще делают кодом, например gradle или классический Make, хотя тот же maven использует xml.
Оба подхода широко распространены даже в рамках одной задачи, но разных стеках. Выбор не всегда очевиден и любой разработчик, которому приходится его делать, находится какое-то время в замешательстве.
Конфигурация на данных кажется классной идеей и практически незаменима, когда нам надо шарить ее между разными экосистемами. Классный пример это openapi спека. Она нужна и на беке и во фронте и внешним клиентам, которые пишутся на бог знает чем. При том что писать ручками саму спеку еще тот геморрой, поэтому вокруг созданы целые языки (не тьюринг полные) типа typespec, которые умеют генерить openapi спеку.
Но у такого подхода есть и масса ограничений. Во-первых сразу забываем про синхронизацию с кодом. Если конфигурация содержит имена модулей, классов, в целом какие-то связи с кодом, то в lsp придется встраивать доп поддержку, что вообще врядли кто-то будет делать. Во-вторых, есть места, где нужно иметь какое-то кастомное поведение, типовая задача замутить что-то этакое во время сборки. Если у вас конфигурация описана данными, то вы физически не сможете реализовать кастомное поведение без расширение языка конфигурации. Такое тоже, кстати, встречается. Возьмите ansible, можно написать свои модули.
Если описывать все это кодом, то мы получаем возможность достаточно легко писать кастомную логику, у нас включается lsp, начинает работать автокомплит проверка типов и многое другое. Но пожалуй главная проблема, в том что такой уровень свободы приводит к ситуациям, когда конфигурация превращается в полноценный код, который хрен поймешь и который желательно еще и тестировать из-за его сложности. А уж отладку каких-нибудь хитрых штук многие вспоминают как в страшном сне.
Иногда это приводит к решению пойти третим путем. Создать под конфигурацию свой собственный язык, который и конфигурацию на выходе может дать и при этом позволяет делать больше и удобнее чем тот же json. Например terraform. Но это не самый легкий путь, потому что для него нужно писать целую экосистему инструментов, но для фундаментальных вещей, как мы видим, это работает. При этом даже терраформ довольно ограничен и есть альтернативные решения, где все по настоящему программируется.
Так и что выбирать и на что ориентироваться? Как будто универсального ответа нет, видно как инструменты постоянно прыгают туда сюда и часто есть альтернатива для тех кто хочет гибкость (язык) или наоборот строгость (данные) со всеми плюсами и минусами описанными выше
p.s. Лиспофилы щас бы сказали что у нас два в одном и конфигурация и код описываются данными. Но это немного лукавство, потому что код как данные в лиспах имеет значение только внутри самих лиспов при написании макросов. Для внешних систем это не данные, которые можно взять и использовать
Ссылки: Телеграм | Youtube | VK
Существует два основных подхода к описанию конфигурации: использовать код на каком-то языке (возможно dsх) или описывать все через универсальные форматы (yaml, json).
Например большинство линтеров и форматеров используют конфигурацию через json файлы. Хотя в JS экосистеме происходит сдвиг в сторону написания конфигурации для таких инструментов в js файлы. Системы сборки чаще делают кодом, например gradle или классический Make, хотя тот же maven использует xml.
Оба подхода широко распространены даже в рамках одной задачи, но разных стеках. Выбор не всегда очевиден и любой разработчик, которому приходится его делать, находится какое-то время в замешательстве.
Конфигурация на данных кажется классной идеей и практически незаменима, когда нам надо шарить ее между разными экосистемами. Классный пример это openapi спека. Она нужна и на беке и во фронте и внешним клиентам, которые пишутся на бог знает чем. При том что писать ручками саму спеку еще тот геморрой, поэтому вокруг созданы целые языки (не тьюринг полные) типа typespec, которые умеют генерить openapi спеку.
@route("/stores")
interface Stores {
list(@query filter: string): Store[];
read(@path id: Store): Store;
}
Но у такого подхода есть и масса ограничений. Во-первых сразу забываем про синхронизацию с кодом. Если конфигурация содержит имена модулей, классов, в целом какие-то связи с кодом, то в lsp придется встраивать доп поддержку, что вообще врядли кто-то будет делать. Во-вторых, есть места, где нужно иметь какое-то кастомное поведение, типовая задача замутить что-то этакое во время сборки. Если у вас конфигурация описана данными, то вы физически не сможете реализовать кастомное поведение без расширение языка конфигурации. Такое тоже, кстати, встречается. Возьмите ansible, можно написать свои модули.
Если описывать все это кодом, то мы получаем возможность достаточно легко писать кастомную логику, у нас включается lsp, начинает работать автокомплит проверка типов и многое другое. Но пожалуй главная проблема, в том что такой уровень свободы приводит к ситуациям, когда конфигурация превращается в полноценный код, который хрен поймешь и который желательно еще и тестировать из-за его сложности. А уж отладку каких-нибудь хитрых штук многие вспоминают как в страшном сне.
Иногда это приводит к решению пойти третим путем. Создать под конфигурацию свой собственный язык, который и конфигурацию на выходе может дать и при этом позволяет делать больше и удобнее чем тот же json. Например terraform. Но это не самый легкий путь, потому что для него нужно писать целую экосистему инструментов, но для фундаментальных вещей, как мы видим, это работает. При этом даже терраформ довольно ограничен и есть альтернативные решения, где все по настоящему программируется.
Так и что выбирать и на что ориентироваться? Как будто универсального ответа нет, видно как инструменты постоянно прыгают туда сюда и часто есть альтернатива для тех кто хочет гибкость (язык) или наоборот строгость (данные) со всеми плюсами и минусами описанными выше
p.s. Лиспофилы щас бы сказали что у нас два в одном и конфигурация и код описываются данными. Но это немного лукавство, потому что код как данные в лиспах имеет значение только внутри самих лиспов при написании макросов. Для внешних систем это не данные, которые можно взять и использовать
Ссылки: Телеграм | Youtube | VK
Я сегодня вошел в режим, что пока codex (openai copilot) рефакторит мне одну часть приложения, я в это время с chatgpt работаю над другой. Но это все хорошо работает, только когда у этой фигни есть хороший пример перед глазами, тогда оно рефакторит батчами без допилки
p.s. Простите что последние недели было без особых постов, я опять глубоко ушел в кодинг и хочу закончить перед тем как войду в более спокойный режим. youtube.com/watch?v=8LiyDZ8QLD0 не забудьте глянуть новое видео про ИИ на ютубе и в аудио
Альтернативные ссылки: Аудио | vk
p.s. Простите что последние недели было без особых постов, я опять глубоко ушел в кодинг и хочу закончить перед тем как войду в более спокойный режим. youtube.com/watch?v=8LiyDZ8QLD0 не забудьте глянуть новое видео про ИИ на ютубе и в аудио
Альтернативные ссылки: Аудио | vk
Mantine > Bootstrap. Фух, вот я и закончил двухнедельный марафон, переписав Code Basics с Bootstrap на Mantine. Теперь можно выдохнуть перед следующим рывком и провести ретроспективу.
Кто меня знает давно, знают что я за решения где желательно не надо ничего делать и бутстрап для нас был таким решением на протяжении 12 лет и остается по сей день на Хекслете. Буквально полгода назад я делал попытку куда-то свернуть, но но нашел полностью готовый UI Kit, который бы соответствовал всем моим ожиданиям. Но было несколько интересных, среди них Mantine.
Почему я вообще хочу куда-то уйти, если бутстрап такой распекрасный? В целом переход на inertiajs и уход от северной шаблонизации + четыре основных момента по фронтендовым UI Kit:
- Мир ушел сильно вперед по подходам. Современные системы например полностью типизированы (а не просто херачим классы), очень сильно оптимизированы (вырезают всякое) и скомпонованы так, что дают больше возможностей. Бутстрап туда планирует прийти, но его всегда будет тянуть легаси
- Бутстрап это в первую очередь css фреймворк, а сейчас нужен не css, а React/Vue/Svetle. У бутстрапа есть внешняя поделка, которой занимаются в полсилы чуваки после работы. Кстати, tailwind по этой причине тоже не подходит, он может быть только базой для чего-то
- Сейчас во фронтенде нужны не просто компоненты, а полноценные решения типа DataGrid, которые из коробки дают тебе фильтры, пагинацию, поиск, инлайн редактирование и кучу всего еще. В бутстрапе такого нет и приходится тащить, что-то типа primereact.
- Против толпы не попрешь. Мир уже слишком ушел вперед, поэтому если хочется нанимать кого-то и быть привлекательным, то тоже надо двигаться (насколько это разумно)
В общем Mantine с тех пор тоже на месте не стоял и реализовал то, чего мне не хватало. Плюс, как оказалось при более детальном погружении, он настолько грамотно решает большой спектр задач, что тоже самое в других местах вообще без рукопашки никак.
Например Mantine из коробки идет с десятками буков для решения типовых фронтендовых задач. Я с ходу выкинул кучку внешних зависимостей и буду выкидывать еще. Он для меня решил проблему с подсветкой кода, потому что для этого постоянно приходилось что-то тащить снаружи и упорно настраивать.
Помимо основных компонентов, Mantine дает набор экстеншенов, для всякого, например систему нотификаций. Минус еще одна внешняя зависимость со своей стилизацией. Там же всякие чарты, модалки и много чего еще.
Из необычного, в Mantine есть компонент, обернув в который любой текстовый блок пришедший снаружи, например статью из базы, мы получаем все примененные к нему стили, так как будто они были глобальные. Раньше для подобного приходилось создавать свой класс с определением всех базовых тегов в который оборачивались все подобные тексты. Я даже и не думал в такую сторону.
Ну и еще не менее важно, что сам подход Mantine подразумевает работу через пропсы, а не классы. Да это мешает быстро проверять в devtools, но мы получаем полную типобезопасность и автокомплит. Хотя до этого момента, я думал что как же мне не хватает lsp для bootstrap (для tailwind такой есть). А оказалось что он и не нужен.
При этом все можно достаточно неплохо переопределить. Причем не только внешний контейнер компонентов, но и внутренности, для этого у Mantine довольно удобный механизм внутри, который тоже весь вдоль и поперек типизирован. Правда все равно не обошлось без доп подключения утилит tailwind. Например в mantine нет мелких утилит типа добавить границу сверху. Это сделано бай дизайн, типа пишите стили сами, так как это все таки готовый Kit. Но у меня таких использований классов буквальна парочка. Больше классов в проекте нет.
С учетом популярности Mantine (и она растет), я думаю что нашел надежное решение на много лет вперед. Буквально скоро начну внедрение и на самом Хекслете.
https://code-basics.com/ru
Ссылки: Телеграм | Youtube | VK
Кто меня знает давно, знают что я за решения где желательно не надо ничего делать и бутстрап для нас был таким решением на протяжении 12 лет и остается по сей день на Хекслете. Буквально полгода назад я делал попытку куда-то свернуть, но но нашел полностью готовый UI Kit, который бы соответствовал всем моим ожиданиям. Но было несколько интересных, среди них Mantine.
Почему я вообще хочу куда-то уйти, если бутстрап такой распекрасный? В целом переход на inertiajs и уход от северной шаблонизации + четыре основных момента по фронтендовым UI Kit:
- Мир ушел сильно вперед по подходам. Современные системы например полностью типизированы (а не просто херачим классы), очень сильно оптимизированы (вырезают всякое) и скомпонованы так, что дают больше возможностей. Бутстрап туда планирует прийти, но его всегда будет тянуть легаси
- Бутстрап это в первую очередь css фреймворк, а сейчас нужен не css, а React/Vue/Svetle. У бутстрапа есть внешняя поделка, которой занимаются в полсилы чуваки после работы. Кстати, tailwind по этой причине тоже не подходит, он может быть только базой для чего-то
- Сейчас во фронтенде нужны не просто компоненты, а полноценные решения типа DataGrid, которые из коробки дают тебе фильтры, пагинацию, поиск, инлайн редактирование и кучу всего еще. В бутстрапе такого нет и приходится тащить, что-то типа primereact.
- Против толпы не попрешь. Мир уже слишком ушел вперед, поэтому если хочется нанимать кого-то и быть привлекательным, то тоже надо двигаться (насколько это разумно)
В общем Mantine с тех пор тоже на месте не стоял и реализовал то, чего мне не хватало. Плюс, как оказалось при более детальном погружении, он настолько грамотно решает большой спектр задач, что тоже самое в других местах вообще без рукопашки никак.
Например Mantine из коробки идет с десятками буков для решения типовых фронтендовых задач. Я с ходу выкинул кучку внешних зависимостей и буду выкидывать еще. Он для меня решил проблему с подсветкой кода, потому что для этого постоянно приходилось что-то тащить снаружи и упорно настраивать.
Помимо основных компонентов, Mantine дает набор экстеншенов, для всякого, например систему нотификаций. Минус еще одна внешняя зависимость со своей стилизацией. Там же всякие чарты, модалки и много чего еще.
Из необычного, в Mantine есть компонент, обернув в который любой текстовый блок пришедший снаружи, например статью из базы, мы получаем все примененные к нему стили, так как будто они были глобальные. Раньше для подобного приходилось создавать свой класс с определением всех базовых тегов в который оборачивались все подобные тексты. Я даже и не думал в такую сторону.
Ну и еще не менее важно, что сам подход Mantine подразумевает работу через пропсы, а не классы. Да это мешает быстро проверять в devtools, но мы получаем полную типобезопасность и автокомплит. Хотя до этого момента, я думал что как же мне не хватает lsp для bootstrap (для tailwind такой есть). А оказалось что он и не нужен.
При этом все можно достаточно неплохо переопределить. Причем не только внешний контейнер компонентов, но и внутренности, для этого у Mantine довольно удобный механизм внутри, который тоже весь вдоль и поперек типизирован. Правда все равно не обошлось без доп подключения утилит tailwind. Например в mantine нет мелких утилит типа добавить границу сверху. Это сделано бай дизайн, типа пишите стили сами, так как это все таки готовый Kit. Но у меня таких использований классов буквальна парочка. Больше классов в проекте нет.
С учетом популярности Mantine (и она растет), я думаю что нашел надежное решение на много лет вперед. Буквально скоро начну внедрение и на самом Хекслете.
https://code-basics.com/ru
Ссылки: Телеграм | Youtube | VK
Code-Basics
Школа программирования для детей и взрослых
Быстрый способ изучить основы языков программирования Go, PHP, Java, JavaScript, Python, Typescript, Ruby, C# и многих других. В каждом уроке практические задания в тренажере и ИИ-помощник
Давно мы не искали себе разработчика, а тут начали. Вакансия называется: “Ruby On Rails” разработчик, при этом внутри сказано, что если не работали с ruby/rails проблем никаких, главное хоть какой-то похожий бекенд фреймворк на любом языке. Ну и фронтенд желательно, потому что мы тут в целом фулстеки и девопсы в одном лице. Опять же, всему чему надо научим.
Всего откликов около 300 и мы все их рассматривали без каких-либо автофильтров. Как она распределилась:
Часть ушла в отказ, потому что нерелевантная, это когда откликаются вообще не программисты или есть технические ограничения в стиле человек в другой стране, а мы не можем платить. Сколько таких было не знаю, это на уровне рекрутера. Тут важно сказать, что в Хекслете рекрутер не принимает решение по техническим скилам и даже не смотрит их. Задача рекрутера это ведение процесса и отсев абсолютно нерелевантные резюме. У нас разок девопс подал заявку на смм-маркетолога, вот типа такого.
Второй уровень отбора уже на мне. Тут большинство улетело в отказ потому что “я фронтенд разработчик подаюсь на вашу вакансию фронтенд разработчика”. Это почти дословно пишут в сопроводительном, а в резюме ноль бекенда. Чувствую автоматику тут я. Такое только с фронтами, их прямо очень много и они все без бекенд опыта. Уверен среди них много толковых, но только на этой должности нам нужен другой человек.
Было немало и гошников, но почти все они мимо. Если читать резюме, то подавляющее большинство рассказывает как подключало редис, создавало индексы в базе и тюнило производительность. Да у нас такое бывает, но все же хекслет это бесконечные бизнес задачи. Совсем другой профиль. Думаю что в этом случае ребятам надо делать несколько резюме иначе складывается ощущение, что их профиль это тюнинг высоконагруженных систем. Там про бизнес вообще ничего.
Кто пошел дальше? Фулстеки, питонисты, php-разработчики и рубисты. Не было чуваков с java/kotlin/c#, хотя я бы с удовольствием их рассматривал.
В целом на скрининге около 30 человек ( это 10%, нормальная цифра), где с ними в целом на полчасика поговорят про “почему уволился”, “чо хочешь”, “чем занимался”. Технички тут минимум и проводит скрининг наш синьор.
Дальше уже собес у меня. Пока был только один, но главное что я кардинально поменял подход. Мы просто открываем наш опенсорс, клонируем, разворачиваем и делаем какое-то мелкое добавление/изменение. Человека истессно заранее просят подготовиться, чтобы можно было пошарить экран. В процессе можно пользоваться вообще всем чем хочется. Результат пока единственного собеса, что мы не прошли стадию “развернуть проект”, застряли на работе в терминале. Я, кстати, большую часть просто молча смотрю в поваренный экран. То есть на собесе вообще ничего больше нет.
Из наблюдений. На части скринингов стало понятно, что резюме не имеет ничего общего с реальным опытом человека. И мы в целом перестали на них смотреть, зная как оно щас работает. Если видимо что профиль нам подходит, то ведем на скрининг, если нет, то в отказ. Но попытка понять по резюме сходимость это глухой номер.
Забавно, что многие стали в “о себе” писать капсом МОГУ ПОДТВЕРДИТЬ ОПЫТ :)
А главное что? Никакого отличия от того, как было пять лет назад. Как были сотни откликов и единицы тех кого хочется взять (тут пока еще не было этого), так и осталось
Ссылки: Телеграм | Youtube | VK
Всего откликов около 300 и мы все их рассматривали без каких-либо автофильтров. Как она распределилась:
Часть ушла в отказ, потому что нерелевантная, это когда откликаются вообще не программисты или есть технические ограничения в стиле человек в другой стране, а мы не можем платить. Сколько таких было не знаю, это на уровне рекрутера. Тут важно сказать, что в Хекслете рекрутер не принимает решение по техническим скилам и даже не смотрит их. Задача рекрутера это ведение процесса и отсев абсолютно нерелевантные резюме. У нас разок девопс подал заявку на смм-маркетолога, вот типа такого.
Второй уровень отбора уже на мне. Тут большинство улетело в отказ потому что “я фронтенд разработчик подаюсь на вашу вакансию фронтенд разработчика”. Это почти дословно пишут в сопроводительном, а в резюме ноль бекенда. Чувствую автоматику тут я. Такое только с фронтами, их прямо очень много и они все без бекенд опыта. Уверен среди них много толковых, но только на этой должности нам нужен другой человек.
Было немало и гошников, но почти все они мимо. Если читать резюме, то подавляющее большинство рассказывает как подключало редис, создавало индексы в базе и тюнило производительность. Да у нас такое бывает, но все же хекслет это бесконечные бизнес задачи. Совсем другой профиль. Думаю что в этом случае ребятам надо делать несколько резюме иначе складывается ощущение, что их профиль это тюнинг высоконагруженных систем. Там про бизнес вообще ничего.
Кто пошел дальше? Фулстеки, питонисты, php-разработчики и рубисты. Не было чуваков с java/kotlin/c#, хотя я бы с удовольствием их рассматривал.
В целом на скрининге около 30 человек ( это 10%, нормальная цифра), где с ними в целом на полчасика поговорят про “почему уволился”, “чо хочешь”, “чем занимался”. Технички тут минимум и проводит скрининг наш синьор.
Дальше уже собес у меня. Пока был только один, но главное что я кардинально поменял подход. Мы просто открываем наш опенсорс, клонируем, разворачиваем и делаем какое-то мелкое добавление/изменение. Человека истессно заранее просят подготовиться, чтобы можно было пошарить экран. В процессе можно пользоваться вообще всем чем хочется. Результат пока единственного собеса, что мы не прошли стадию “развернуть проект”, застряли на работе в терминале. Я, кстати, большую часть просто молча смотрю в поваренный экран. То есть на собесе вообще ничего больше нет.
Из наблюдений. На части скринингов стало понятно, что резюме не имеет ничего общего с реальным опытом человека. И мы в целом перестали на них смотреть, зная как оно щас работает. Если видимо что профиль нам подходит, то ведем на скрининг, если нет, то в отказ. Но попытка понять по резюме сходимость это глухой номер.
Забавно, что многие стали в “о себе” писать капсом МОГУ ПОДТВЕРДИТЬ ОПЫТ :)
А главное что? Никакого отличия от того, как было пять лет назад. Как были сотни откликов и единицы тех кого хочется взять (тут пока еще не было этого), так и осталось
Ссылки: Телеграм | Youtube | VK
hh.ru
Вакансия Разработчик Ruby on Rails в Москве, работа в компании Хекслет
Зарплата: от 180000 до 230000 ₽ за месяц. Москва. Требуемый опыт: 1–3 года. Полная. Дата публикации: 20.06.2025.
Удивительная история. Артем Малышев в 2010 году попал ко мне на работу, но не прошел испытательный срок. Год назад я делал шортс на ютубе, где об этом упоминалось. Так получилось что Артем увидел это видео узнал там себя и написал мне. За это время, как оказалось, он проделал громадный путь и даже стал кор разработчиком популярных опенсорс решений включая компоненты Django. В общем мы договорились, что обсудим его путь на подкасте:
- что давал ранний фриланс на Upwork и почему там важно сразу считать стоимость не только работы, но и валютного контроля;
- как автоматизация антивирусных отчётов превратилась в первый серьёзный питон-опыт;
- Как один твит, XSLT-плагин и 20 чашек кофе привели к внезапному контракту в Германии;
- коридорный разговор на конференции, который привёл к гранту Mozilla и работе над Django Channels;
- историю о контрибьюторе, продавшем поддержку библиотеки без ведома автора — и чем всё закончилось.
https://youtube.com/watch?v=EL8Nnufo6UQ
Альтернативные ссылки: Аудио | vk
- что давал ранний фриланс на Upwork и почему там важно сразу считать стоимость не только работы, но и валютного контроля;
- как автоматизация антивирусных отчётов превратилась в первый серьёзный питон-опыт;
- Как один твит, XSLT-плагин и 20 чашек кофе привели к внезапному контракту в Германии;
- коридорный разговор на конференции, который привёл к гранту Mozilla и работе над Django Channels;
- историю о контрибьюторе, продавшем поддержку библиотеки без ведома автора — и чем всё закончилось.
https://youtube.com/watch?v=EL8Nnufo6UQ
Альтернативные ссылки: Аудио | vk
YouTube
Open Source без романтики: деньги, интриги, выгорание — и рост | Артем Малышев #49
В 2010 году я много собеседовал начинающих разработчиков, и одним из них был Артём Малышев. Он не прошёл испытательный срок, но само собеседование и несколько недель работы с нами оставили у него сильное впечатление и задали вектор всей его карьеры
Подписывайтесь…
Подписывайтесь…
Глубокий спец vs Фулстек. Я наверное никогда не устану говорить об этой теме, потому что для меня фулстек это нормальное состояние разработчика, в смысле легко достижимое, а не история про то что это обязательно плохой спец во всем. Более того, для меня норма, когда разработчик:
* Может в бек в несколько языков
* Может во фронт
* Умеет и настраивает пайпланый от Docker Compose до Github Actions
* Может сетапить и настраивать облака
(дисклеймер: речь не о том, что таким должен быть каждый, а что это не рокет сайнс все это уметь на хорошем уровне, достаточным чтобы классно делать проекты)
Что обычно имеют ввиду под глубоким спецом? Что человек прямо досканально знает все, быстро дебажит, создает качественный и поддерживаемый код (это ведь подразумевается?).
Знает ли досконально все? Вообще не факт, а скорее всего нет. От того что человек занимается только чем-то одним, не означает что он сидит и как не в себя копает во внутрь по этой теме. Как правило я вижу другую картину, если делать долго и упорно одно и тоже, то в какой-то момент это все делается на автомате, а дальше человек просто останавливается в развитии (соседний фреймворк не считается) ну либо становится тем, о ком я пишу выше.
Быстро дебажит? Вполне, это правда, но не на каждую проблему, а на какие-то кейсы, где что-то стреляет. Но во-первых сейчас эту часть очень серьезно закрывает ИИ, а если он не справится, то в команде наверняка есть кто-то кто в этой теме сечет больше.
А качественный код? Вот тут вообще никакой корреляции. Да, мы все слышали, что приходят беки и пишут фронт, после которых надо все переписывать, но это не ситуация, которую я рассматриваю. Мы все таки говорим про фулстеков, то есть тех кто целенаправленно учит, а не пишет фронт, потому что попросили, а он не сечет и не планирует учиться писать правильно. Что касается в целом подходов, то люди с более широким кругозором и опытом пишут обычно лучше. Потому что качество кода проявляется не в мелких деталях, что вы например в курсе про более крутой хук. Это все локальные оптимизации. Качество оно про более высокий уровень.
На практике все чуть сложнее. Главный фактор, который вижу я, помимо “я не буду этого делать” - компания и команда в которой работает человек. Где-то это норма, где-то нет и в зависимости от этого и идет рост.
Ссылки: Телеграм | Youtube | VK
* Может в бек в несколько языков
* Может во фронт
* Умеет и настраивает пайпланый от Docker Compose до Github Actions
* Может сетапить и настраивать облака
(дисклеймер: речь не о том, что таким должен быть каждый, а что это не рокет сайнс все это уметь на хорошем уровне, достаточным чтобы классно делать проекты)
Что обычно имеют ввиду под глубоким спецом? Что человек прямо досканально знает все, быстро дебажит, создает качественный и поддерживаемый код (это ведь подразумевается?).
Знает ли досконально все? Вообще не факт, а скорее всего нет. От того что человек занимается только чем-то одним, не означает что он сидит и как не в себя копает во внутрь по этой теме. Как правило я вижу другую картину, если делать долго и упорно одно и тоже, то в какой-то момент это все делается на автомате, а дальше человек просто останавливается в развитии (соседний фреймворк не считается) ну либо становится тем, о ком я пишу выше.
Быстро дебажит? Вполне, это правда, но не на каждую проблему, а на какие-то кейсы, где что-то стреляет. Но во-первых сейчас эту часть очень серьезно закрывает ИИ, а если он не справится, то в команде наверняка есть кто-то кто в этой теме сечет больше.
А качественный код? Вот тут вообще никакой корреляции. Да, мы все слышали, что приходят беки и пишут фронт, после которых надо все переписывать, но это не ситуация, которую я рассматриваю. Мы все таки говорим про фулстеков, то есть тех кто целенаправленно учит, а не пишет фронт, потому что попросили, а он не сечет и не планирует учиться писать правильно. Что касается в целом подходов, то люди с более широким кругозором и опытом пишут обычно лучше. Потому что качество кода проявляется не в мелких деталях, что вы например в курсе про более крутой хук. Это все локальные оптимизации. Качество оно про более высокий уровень.
На практике все чуть сложнее. Главный фактор, который вижу я, помимо “я не буду этого делать” - компания и команда в которой работает человек. Где-то это норма, где-то нет и в зависимости от этого и идет рост.
Ссылки: Телеграм | Youtube | VK
Telegram
Организованное программирование | Кирилл Мокевнин
Как из джуниора дойти до мидла, а потом и до синьора
Ютуб https://youtube.com/@mokevnin
Связь для предложений: @kirillpublic
Ютуб https://youtube.com/@mokevnin
Связь для предложений: @kirillpublic