Антипаттерн «Кадастровый инженер»
Хочет всё размежевать, чтобы не слиплось. Считает, что разделение по репозиториям и приложениям — панацея от скверны лапшекода. Мол, щас всё растащим, и никто не сможет использовать Х в У.
Такой подход работает, но, как всегда, есть нюанс: можно ошибиться с границей разрезания. Например, нарезать не там в микросервисах, и получим неподдерживаемое распределённое нечто.
Крайнее проявление — вынести в отдельный репозиторий каждый компонент единой системы: тесты, вёрстку, сервисы, скрипты миграций и т.д. Тогда вашей работой становится жонглирование ветками и толкание локтями коллег в репозиториях в попытках собрать всё воедино хотя бы на CI-сервере.
Чтобы разрез сильно не болел, нужно научиться искать логические границы и уметь пресекать нарушения. Потом дать границам устояться, и только потом отрезать. Попытка что-либо отрезать в бардаке приводит к ещё большему бардаку.
Как понять, что разделили неправильно? Когда для одной задачи вам приходится коммитить сразу в несколько репозиториев и в строгой последовательности. У репозиториев оказался слишком высокий coupling. Да, представьте coupling и cohesion применим и в рамках git-репозитория.
Хочет всё размежевать, чтобы не слиплось. Считает, что разделение по репозиториям и приложениям — панацея от скверны лапшекода. Мол, щас всё растащим, и никто не сможет использовать Х в У.
Такой подход работает, но, как всегда, есть нюанс: можно ошибиться с границей разрезания. Например, нарезать не там в микросервисах, и получим неподдерживаемое распределённое нечто.
Крайнее проявление — вынести в отдельный репозиторий каждый компонент единой системы: тесты, вёрстку, сервисы, скрипты миграций и т.д. Тогда вашей работой становится жонглирование ветками и толкание локтями коллег в репозиториях в попытках собрать всё воедино хотя бы на CI-сервере.
Чтобы разрез сильно не болел, нужно научиться искать логические границы и уметь пресекать нарушения. Потом дать границам устояться, и только потом отрезать. Попытка что-либо отрезать в бардаке приводит к ещё большему бардаку.
Как понять, что разделили неправильно? Когда для одной задачи вам приходится коммитить сразу в несколько репозиториев и в строгой последовательности. У репозиториев оказался слишком высокий coupling. Да, представьте coupling и cohesion применим и в рамках git-репозитория.
🔥13👍7👏1
Небольшая заметка о стрессоустойчивости и вреде гиблых проектов https://vk.com/@-200496256-timlid-ozverel
VK
Что делать, если тимлид озверел
Читатель спрашивает: поставили нового тимлида, который орёт на всех и прямо заявляет, что знает лучше, и все должны делать, что им говоря..
🔥29👏1
Ребята из Postgres Professional написали неплохую книгу «PostgreSQL 16 изнутри»
Какие темы охватывает книга:
— Устройство shared buffer
— Как работает WAL
— Как выполняются запросы
— Зачем нам вакуум
— Как работают индексы
— Как устроен MVCC
— etc
Всего 665 страниц годноты на русском. Кому лень читать — у ребят есть ютуп-канал, посвящённый той же теме
Просвещайтесь!
#полезнота
Какие темы охватывает книга:
— Устройство shared buffer
— Как работает WAL
— Как выполняются запросы
— Зачем нам вакуум
— Как работают индексы
— Как устроен MVCC
— etc
Всего 665 страниц годноты на русском. Кому лень читать — у ребят есть ютуп-канал, посвящённый той же теме
Просвещайтесь!
#полезнота
🔥27👍7❤1
Последние несколько месяцев слышал от разных людей (у нас и за границей) похожие истории про техдолг:
Не можем получить новую фичу вообще никак. Сроки просраны, а результат не предвидится. Заливание баблом, джунами и индусами больше не работает. Начальство в бешенстве, переписывать нет времени, что делать — не понятно.
В общем, долго клали болт на соответствие потребностей и реализации, и вот вдруг ВНЕЗАПНО что-то пошло не так.
Возможно, это явление массовое и происходит от общепринятого подхода в индустрии: да пофиг ваще, бизнес бабки колотит, остальное похер. В ключевых системах ожидаемо накопилась критическая масса, и техдолг начал стрелять у всех. Ну или это просто совпадение.
Происходит ли у вас что-то подобное? Поделитесь, нам важно это знать :3
Не можем получить новую фичу вообще никак. Сроки просраны, а результат не предвидится. Заливание баблом, джунами и индусами больше не работает. Начальство в бешенстве, переписывать нет времени, что делать — не понятно.
В общем, долго клали болт на соответствие потребностей и реализации, и вот вдруг ВНЕЗАПНО что-то пошло не так.
Возможно, это явление массовое и происходит от общепринятого подхода в индустрии: да пофиг ваще, бизнес бабки колотит, остальное похер. В ключевых системах ожидаемо накопилась критическая масса, и техдолг начал стрелять у всех. Ну или это просто совпадение.
Происходит ли у вас что-то подобное? Поделитесь, нам важно это знать :3
🔥17😨5❤2
К посту про SQL. Пока лазил на сайте Postgres Professional, наткнулся ещё на одну интересную книгу — «Путеводитель по базам данных».
Что внутри:
— Какие структуры данных используются для построения СУБД
— На каких алгоритмах построены распределённые СУБД
— Репликация и бекапы
— Журналирование
— Управление доступом
Для хардкорщиков, сохраняющих петабайты транзакций в наносек, будет не очень интересно, а вот для спецов среднего уровня и выше или для тех, кто хочет систематизировать знания и закрыть пробелы, — самое то.
#полезнота
Что внутри:
— Какие структуры данных используются для построения СУБД
— На каких алгоритмах построены распределённые СУБД
— Репликация и бекапы
— Журналирование
— Управление доступом
Для хардкорщиков, сохраняющих петабайты транзакций в наносек, будет не очень интересно, а вот для спецов среднего уровня и выше или для тех, кто хочет систематизировать знания и закрыть пробелы, — самое то.
#полезнота
🔥21👍8
На следующей неделе планируем провести стрим на тему «Внедрение DDD на практике — профиты и проблемы».
К нам в гости придет наш товарищ Константин Шибков, старший Java разработчик СДЕК, автор курсов и статей по разработке, соорганизатор митапа про бережливые бизнес процессы AgileUfa и клуба разработчиков JavaKeyFrames.
Мы обсудим как Константин внедрял архитектурные подходы и паттерны и узнаем, что из этого вышло.
Ссылку пришлем позже, приходите и задавайте вопросы 🙂
Предварительно, запланировали стрим в четверг 31 октября в 18:00 МСК
К нам в гости придет наш товарищ Константин Шибков, старший Java разработчик СДЕК, автор курсов и статей по разработке, соорганизатор митапа про бережливые бизнес процессы AgileUfa и клуба разработчиков JavaKeyFrames.
Мы обсудим как Константин внедрял архитектурные подходы и паттерны и узнаем, что из этого вышло.
Ссылку пришлем позже, приходите и задавайте вопросы 🙂
Предварительно, запланировали стрим в четверг 31 октября в 18:00 МСК
Telegram
Java KeyFrames
- Совместно смотрим tech доклады и обсуждаем
- Решаем задачи с литкода с лайфкодингом
🗓Календарь событий - https://cutt.ly/JJpel8R
По вопросам: @sendel
- Решаем задачи с литкода с лайфкодингом
🗓Календарь событий - https://cutt.ly/JJpel8R
По вопросам: @sendel
🔥37👍6👀2
StringConcat - разработка без боли и сожалений
На следующей неделе планируем провести стрим на тему «Внедрение DDD на практике — профиты и проблемы». К нам в гости придет наш товарищ Константин Шибков, старший Java разработчик СДЕК, автор курсов и статей по разработке, соорганизатор митапа про бережливые…
Напоминаем, что сегодня состоится встреча. Ссылку скинем перед началом. Не пропустите!
👍13🔥4
StringConcat - разработка без боли и сожалений
На следующей неделе планируем провести стрим на тему «Внедрение DDD на практике — профиты и проблемы». К нам в гости придет наш товарищ Константин Шибков, старший Java разработчик СДЕК, автор курсов и статей по разработке, соорганизатор митапа про бережливые…
YouTube
Внедрение DDD на практике — профиты и проблемы
Костя из СДЕК рассказывает как он внедрял Domain-Driven Design и Clean Architecture что из этого получилось
Наш тг-канал https://t.iss.one/+aU7cRIEYz0JjMDhi
Наш сайт https://howto.stringconcat.ru/
Ресурсы Кости:
Agile Ufa https://agileufa.ru/
JavaKeyFrames …
Наш тг-канал https://t.iss.one/+aU7cRIEYz0JjMDhi
Наш сайт https://howto.stringconcat.ru/
Ресурсы Кости:
Agile Ufa https://agileufa.ru/
JavaKeyFrames …
🔥7
Нас много раз спрашивали как удобнее всего обрабатывать ошибки и исключения. Рассказываем, как мы это делаем и почему стандартный try-catch не всегда удобен.
Если видос показался полезным — поделитесь с братюнями. И подпишитесь на канал, конечно же
Приятного просмотра!
Приятного просмотра!
YouTube
Как ПРАВИЛЬНО обрабатывать ошибки в Kotlin и Java? Что я понял за 15 лет программирования
💻 Поваренная книга Дядюшки Боба: https://howto.stringconcat.ru/cleanarchitecture?utm_source=youtube&utm_medium=video&utm_campaign=error_handling
🎯 Телеграмм-канал с кучей полезной информации: https://t.iss.one/stringconcat
Рассказываем, как удобнее всего обрабатывать…
🎯 Телеграмм-канал с кучей полезной информации: https://t.iss.one/stringconcat
Рассказываем, как удобнее всего обрабатывать…
🔥16👍7💯3
Для тех кто пропустил или не подписан на наши ютубы - выпустили видосик на тему выбора языка и стека. Попробовали собрать в кучу те критерии, которые считаем важными. Для наших постоянных читателей такая тема может и не совсем актуальна, но вдруг кто хочет поменять стек либо же находится в начале пути
⚠️ Осторожно! В комментах местами портал в дурку, посему приглашаем к веселью (вы знаете что делать).
Приятного просмотра!
⚠️ Осторожно! В комментах местами портал в дурку, посему приглашаем к веселью (вы знаете что делать).
Приятного просмотра!
YouTube
Какие языки УГРОБЯТ твою карьеру? ПОЛНЫЙ гайд по выбору языка
💻 Наш курс по карьере: https://howto.stringconcat.ru/career?utm_source=youtube&utm_medium=video&utm_campaign=lang
🎯 Телеграмм-канал с кучей полезной информации: https://t.iss.one/stringconcat
Разбираем значимые критерии при выборе языка программирования и стека.…
🎯 Телеграмм-канал с кучей полезной информации: https://t.iss.one/stringconcat
Разбираем значимые критерии при выборе языка программирования и стека.…
👍7🔥3👎2😐1
Инфляция тайтлов: 18-летние синьоры уже реальность
(*пост не ставит целью оскорбить или унизить кого-либо)
И к сожалению эта напасть касается нас всех.
Инфляция тайтлов — это когда компании громко называют обычные должности. У всех, например, уборщица, а у нас — операционный менеджер мануального клининга, в этом духе. Такие должности по названию не соответствуют реальным обязанностям, уровню старшинства, да и заработной плате. Иначе зачем всё это, вообще?
(Продолжение ниже)
(*пост не ставит целью оскорбить или унизить кого-либо)
И к сожалению эта напасть касается нас всех.
Инфляция тайтлов — это когда компании громко называют обычные должности. У всех, например, уборщица, а у нас — операционный менеджер мануального клининга, в этом духе. Такие должности по названию не соответствуют реальным обязанностям, уровню старшинства, да и заработной плате. Иначе зачем всё это, вообще?
(Продолжение ниже)
🤣24🔥3
В продолжение поста
Громкому тайтлу можно меньше платить
Громкий тайтл может перекрыть разницу в деньгах, так что получать
Громким званием проще сманить. Люди переходят охотнее в новые компании, если им предложить тайтл выше их текущего + небольшая прибавка зарплаты. Жертве кажется, что она много добилась и двигается по карьерной лестнице вверх, а там уже томятся ещё 20+ гибридных позиций, порождённых инфляцией.
И теперь ничего не понятно
Нельзя наверняка сказать, чем занимается
Громкому тайтлу можно меньше платить
Громкий тайтл может перекрыть разницу в деньгах, так что получать
Principal Software Architect & Visionary Technologist
может меньше, чем обычный Developer
. Ну и ещё это престижно звучит: уезжал из деревни студентом, а вернулся тем, кого и назвать сразу не получается. Почёт и уважение обеспечены, — думает уязвимый к брехне человек и принимает офер.Громким званием проще сманить. Люди переходят охотнее в новые компании, если им предложить тайтл выше их текущего + небольшая прибавка зарплаты. Жертве кажется, что она много добилась и двигается по карьерной лестнице вверх, а там уже томятся ещё 20+ гибридных позиций, порождённых инфляцией.
И теперь ничего не понятно
Нельзя наверняка сказать, чем занимается
Senior Staff Software Engineer
. Где как. Одни компании требуют писать код в 2 раза быстрее, чем Senior Developer
. Другие ждут на эту позицию динозавра с 15 годами опыта. В общем, пока не допросишь HR, не поймёшь, что скрывается за названием позиции. А увидя должность Associate Vice President
, типичный разработчик вообще пройдёт мимо, подумав, что не про него. И совершенно зря.👍10❤6
Перед вами карьерная лестница разработчика в одном из банков Сингапура. Где Intern Developer – самый низ пищевой цепочки. Предположите, на каком уровне от разработчика не требуется писать код, а нужны только менеджерские скиллы.
Final Results
2%
Intern Developer
1%
Junior Developer
2%
Developer
10%
Senior Developer
40%
Associate Vice President
12%
Vice President
4%
First Vice President
2%
Senior Vice President
27%
Executive Director
😁15🤔2
Только Executive Director не пишет код. Даже Сеньер Вице-Президент код писать должен.
Хотя науке известен случай когда Executive Director перешел на позицию Senior Developer в другую "нормальную" компанию. Даже так случается 🙂
Хотя науке известен случай когда Executive Director перешел на позицию Senior Developer в другую "нормальную" компанию. Даже так случается 🙂
🤯18😁7😱3👍1🔥1
Ещё один способ оценки квалификации
Если вы руководите не только собой, вам рано или поздно потребуется как-то оценивать и называть квалификацию сотрудников. Самая живучая практика — модель Junior/Middle/Senior/Principal/etc. Но, как мы все понимаем, эти слова мало что говорят о человеке:
— В каждой конторе свой уровень сложности проектов, и что для одних Senior, для других — Middle+
— Инструментов много, владеют ими все по-разному. Вполне нормально, когда Senior не владеет чем-то, что на конкретном проекте не нужно.
— Фреймворками дело не ограничивается, есть ещё аналитическое мышление, знания в определённых предметных областях, конструкторские навыки и всякие там софт-скиллы. Короче, тысячи их: некоторые желательны, некоторые необходимы. Например, без навыков анализа хорошим разрабом не станешь.
Квалификацию все описывают в меру фантазии и ресурсов. Обычно получаются широченные таблицы с картами компетенций, которые, по сути, просто описывают подгрейды между базовыми джунами-синьорами.
Мы тоже попробовали, но пошли другим путём, от конкретного человека, а не от абстрактного идеала. Вместо этого мы декомпозировали квалификацию на составляющие и оценили каждую по шестибалльной шкале. Получилось так: пример оценки компетенций сферического Олега.
Выглядит неплохо, правда, чтобы поддерживать такую систему оценки, потребуется целый отдел. Но вы можете воспользоваться шкалой. Например, пройтись по ветке своей специализации на сайте с роадмапами и оценить свои навыки. Это помогает найти пробелы в знаниях и проблемные места.
Если вы руководите не только собой, вам рано или поздно потребуется как-то оценивать и называть квалификацию сотрудников. Самая живучая практика — модель Junior/Middle/Senior/Principal/etc. Но, как мы все понимаем, эти слова мало что говорят о человеке:
— В каждой конторе свой уровень сложности проектов, и что для одних Senior, для других — Middle+
— Инструментов много, владеют ими все по-разному. Вполне нормально, когда Senior не владеет чем-то, что на конкретном проекте не нужно.
— Фреймворками дело не ограничивается, есть ещё аналитическое мышление, знания в определённых предметных областях, конструкторские навыки и всякие там софт-скиллы. Короче, тысячи их: некоторые желательны, некоторые необходимы. Например, без навыков анализа хорошим разрабом не станешь.
Квалификацию все описывают в меру фантазии и ресурсов. Обычно получаются широченные таблицы с картами компетенций, которые, по сути, просто описывают подгрейды между базовыми джунами-синьорами.
Мы тоже попробовали, но пошли другим путём, от конкретного человека, а не от абстрактного идеала. Вместо этого мы декомпозировали квалификацию на составляющие и оценили каждую по шестибалльной шкале. Получилось так: пример оценки компетенций сферического Олега.
Выглядит неплохо, правда, чтобы поддерживать такую систему оценки, потребуется целый отдел. Но вы можете воспользоваться шкалой. Например, пройтись по ветке своей специализации на сайте с роадмапами и оценить свои навыки. Это помогает найти пробелы в знаниях и проблемные места.
roadmap.sh
Developer Roadmaps - roadmap.sh
Community driven roadmaps, articles and guides for developers to grow in their career.
🔥9👍7❤🔥1