Обновить
47.42

Проектирование и рефакторинг *

Реорганизация кода

Сначала показывать
Порог рейтинга
Уровень сложности

Тест-кейсы из функциональных требований

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели715

Пользовательское требование описывает, что нужно пользователю. Критерии приёмки — фиксируют, как это проверить. Но между «что нужно» и задачей в Jira — пропасть. Чтобы её закрыть, я пишу функциональные требования — с use case'ами, из которых тестировщик может собрать тест-кейсы, а разработчик — понять ожидаемое поведение системы.

Читать далее

Новости

Как ускорить тесты проекта в 6 раз: от 10 минут к 101 секунде

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели2.5K

Почти 800 тестов, 10 минут на прогон, каждый пуш — ожидание на CI. Знакомо? Рассказываю, как довёл время до 101 секунды: снижение таймаутов, параллелизм ScalaTest, shared Testcontainers и защита от регрессий. Scala, SBT, PostgreSQL, GraalVM — конкретные шаги и подводные камни.

Читать далее

Паттерны проектирования

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели3.1K

Маленькая шпаргалка для тех, кто хочет понять что это и как называется. Изначальная цель написания - предоставить заинтересованным лицам краткую справку и возможность более эффективно воспользоваться поисковыми системами. Здесь перечислены как классические паттерны и антипаттерны проектирования от банды четырёх (GoF), так и прочие общепринятые.

Читать далее

Когда 200+ бэкенд-разработчиков меняют 400 микросервисов: зачем нужно архитектурное ревью

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели5.2K

Что будет, если больше 200 бэкенд‑разработчиков вносят изменения 2–3 раза в неделю в более чем 400 микросервисов, написанных на пяти разных языках — C++, Go, Python, Java и PHP? Ответ хорошо знаком любому, кто сталкивался с быстрорастущей распределённой системой: хаос появляется быстрее, чем успеваешь его отлавливать. И в какой‑то момент становится очевидно, что нужна надёжная точка контроля, чтобы поддерживать архитектуру в рабочем состоянии.

В Яндекс Еде этой точкой стало архитектурное ревью — процесс, который постепенно вырос из локальной инициативы в полноценный инструмент управления сложной системой. В этой статье я расскажу, как эволюционировало архревью, какие инсайты появились по пути и как этот процесс выглядит сегодня.

Читать далее

Чистая архитектура — красивая сказка для собеседований

Время на прочтение2 мин
Охват и читатели4.2K

В процессе поиска работы я изучил множество вакансий, и в подавляющем большинстве среди обязательных требований значились знание паттернов проектирования, принципов SOLID и прочих «столпов» правильной архитектуры.

На собеседованиях меня нередко просили не просто рассказать о SOLID, а буквально расшифровать каждую букву и объяснить её смысл.

Всё это формирует у кандидата вполне логичное ожидание: раз требования такие высокие, значит и кодовая база у работодателя должна быть аккуратной, продуманной и соответствующей этим принципам. Однако в реальности это часто оказывается иллюзией.

Читать далее

Часть 3: Архитектура нейросети для распознавания голосовых команд

Уровень сложностиСложный
Время на прочтение11 мин
Охват и читатели4.6K

def get_features_all(y, sr):
"""
Получаем различные параметры аудио которые в сумме дадут уникальный набор признаков
"""
# Частота цветности
chst = librosa.feature.chroma_stft(y=y, sr=sr)
# Среднеквадратичные колебания (энергия сигнала)
rmse = librosa.feature.rms(y=y)
# Пересечения нуля (частота смены знака сигнала)
zcr = librosa.feature.zero_crossing_rate(y)
# Центр масс звука (спектральный центр)
spe_c = librosa.feature.spectral_centroid(y=y, sr=sr)
# Ширина полосы частот
spe_b = librosa.feature.spectral_bandwidth(y=y, sr=sr)
# Спектральный спад частоты
rol = librosa.feature.spectral_rolloff(y=y, sr=sr)
# Значимые для обработки частоты (MFCC)
mfcc = librosa.feature.mfcc(y=y, sr=SR, n_mfcc=50,
n_mels=50, hop_length=1024)
return chst, rmse, zcr, spe_c, spe_b, rol, mfcc

Читать далее

Если вы умеете делать хороший code review, вы умеете работать с AI-агентами

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели9.9K

AI‑инструменты часто делают одно и то же: они выбирают слишком тяжёлое решение там, где достаточно простого. Ценность человека — в инженерном суждении: распознать плохую архитектуру, остановить усложнение, выбрать более простой путь, держать систему в здравом состоянии.

Читать далее

Разработка архитектуры приложения с использованием слоёв, подслоёв и архитектурных блоков

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели6.9K

В статье «Пример описания многослойной архитектуры, основанной на использовании наборов подслоёв и иерархии моделей данных» рассмотрен подход к построению многослойной архитектуры приложения с использованием трёх слоёв и девяти подслоёв.

Использование такого набора взаимодействующих между собой слоёв и подслоёв даёт возможность максимально детально описать структуру функционала приложения. Продолжая далее этот подход можно детализировать каким именно функционалом наполняются подслои приложения и для наполнения подслоёв использовать архитектурные блоки. Под архитектурным блоком далее будет пониматься типовой функционал определённого подслоя приложения.

Анализируя типовой функционал приложения можно выделить 9 основных архитектурных блоков.

Читать далее

Код стал шумом, а джуны — обузой: как ИИ перестраивает ИТ-индустрию и где теперь точка сборки

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели8.6K

Мы привыкли думать, что главным узким местом ИТ-разработки является capacity — количество рук, способных перевести бизнес-требования в рабочий код. Долгие годы индустрия строила "фабрики фич" и масштабировала пирамиду разработчиков. Но генеративный ИИ сломал эту физику.

Сегодня производство артефакта (кода, лендинга, дизайна) стремится к нулю по стоимости. Кодинг перестает быть рычагом конкуренции: он коммодитизируется и больше не ограничивает ни рынок, ни организацию. Объем кода и скорость коммитов превращаются в шум — они больше не коррелируют с ценностью продукта.

Если код стал дешевым, куда сместился дефицит? И почему ИИ, способный написать любую систему, никогда не станет в ней полноценным CEO?

Возьмёт ли ИИ на себя роль принимающего ре

От микроменеджмента до автопилота: 4 стадии рефакторинга AI-кода на примере десктопного приложения

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели13K

Реддит и Хабр забиты историями о том, как кто-то «написал приложение за вечер с помощью ChatGPT, вообще не зная программирования». Маркетологи называют это вайбкодингом — ты просто описываешь свои намерения, а ИИ выдает готовый продукт.

Я проверил, и вот мой спойлер: на масштабе чуть большем, чем программа на 500 строк, это не работает.

Август 2025 года. Мне понадобилась утилита со сложной логикой: конвертер выгрузок Telegram (JSON) в чистый текст для LLM. Проект десктопный, с GUI, графиками и парсингом. Вместо того чтобы писать код руками, я провел эксперимент: стать техлидом для связки актуальных на тот момент моделей (Claude 4.0 + Gemini 2.5 + Cursor).

Я заранее дал им архитектуру. Они собрали первый MVP. А затем, чтобы этот «MVP» (нет) не сложился как карточный домик через неделю, мне пришлось четырежды инициировать глобальный рефакторинг, потратить 40 часов на борьбу с галлюцинациями вокруг Matplotlib и разгребать цикличные зависимости.

Эта статья — рефлексия и разбор полётов. Это история о том, почему в 2026 году главный навык инженера — это умение видеть деревья за лесом и вовремя сказать ИИ: «Нет, твоя архитектура никуда не годится, всё переделываем».

Читать далее

Инженерия данных: паттерны проектирования

Время на прочтение5 мин
Охват и читатели9.3K

Приветствуем вас, Хабр.

В течение минувшего года мы серьёзно прорабатывали тему инженерии данных (Data Engineering), поскольку остались очень довольны читательским интересом к вышедшей у нас книге «Основы инженерии данных: как создавать надёжные системы обработки данных» Джо Риса и Мэтта Хоусли (оригинал — издательство "O'Reilly"). В январе вышла её допечатка.

Кроме того, у нас уже переведена и ушла в редактуру более продвинутая книга, также от O'Reilly, написал которую Бартош Конечны (Bartosz Konieczny); она называется «Data Engineering Design Patterns: Recipes for Solving the Most Common Data Engineering Problems».

Читать далее

KMP, XCode и 5% мазохистов: как мы писали AI-агентов на 4 платформы

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели11K

Все говорят, что AI заменит разработчиков. Я решил зайти с другой стороны — написать AI-агента, который заменит пользователей. Альфа версию для macOS уже зарелизил.

Послдение полгода работали с коллегой над двумя приложениями, одно десктопное (по ссылке выше), другое на 4 платформы — android, ios, web, backend. Много чего повидали, хочу поделиться опытом.

Дисклеймер. Статья содержит последствия массового использования expect/actual, сцены жестокого обращения с XCode и эпизоды длительного ожидания нотаризации на релизных сборках под OSX. Не рекомендуется лицам, планирующим запуск KMP-проекта на несколько платформ без предварительной консультации с психотерапевтом.

Читать далее

Как я перестал «вайбкодить» с LLM и собрал процесс разработки, который не разваливает проект

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели41K

Я использую LLM в повседневной разработке уже больше года и довольно быстро упёрся в типовую проблему: модель генерирует “красивый код”, но по мере роста проекта появляется дублирование, разъезжается стиль, растёт число заглушек и отладка становится дорогой. В статье покажу процесс, который мне помог: как разделять контекст по чатам, какие артефакты требовать на каждом шаге и какими чек-листами я проверяю результат.

Читать далее

Ближайшие события

Пользовательское требование — точка входа в документацию

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели5K

Когда документация переехала в вики, люди решили, что страницы бесплатные, и начали писать всё в одном документе. Платить в этом случае всё равно приходится, но только не деньгами, а временем и нервами исполнителей, которые эту документацию читают. Я покажу, как разбиваю это на систему связанных страниц, где у каждой — своя роль, а точка входа — одна.

Читать далее

Как построить карту вызовов REST-API из JSON с помощью PlantUML: автоматизация архитектурных зависимостей

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели6.1K

Проблема: никто не знает, кто кого вызывает

В 2012 году биржевой брокер Knight Capital потерял $460 миллионов за 45 минут.
Причина — активация устаревшего модуля, который начал массово размещать ордера.
Отчёт SEC указал на ключевую ошибку:

Читать далее

Как не отвлекаясь делать свою задачу Мой личный опыт

Уровень сложностиПростой
Время на прочтение1 мин
Охват и читатели7.2K

Привет всем! И Это я мне 16 лет создал свой продукт FocusMind, который не отвлекаясь делал целый месяц сам. Это секрет успеха в создание моего проекта!

Успех — это достижение поставленных целей, получение желаемого результата, признание обществом или ощущение личного счастья и самореализации.

Все мы хотим быть успешным но секрет прост. На примере когда ты разработчик который хочет создать свой продукт ты должен создать свой продукт. И каждый день тебе нужен толчок который будет говорит тебе что надо делать, завтра будет поздно, сделай сейчас, или вообще чтобы ты не забыл о своей цели и достиг его. У меня тоже были такие моменты как сейчас возьму ноут и доведу проект до конца но когда ты только что включил ноут это идея сразу пропадает как будто не было совсем или проста пропадает и я снова вижу рельс, играю, провожу время и патом виню что не делал во время.

Совет от меня. Это личный опыт!...

Стать лучше чем вчера

ADR, архитектурные тесты и кейсы из прода: ресурсы, которые реально меняют код

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели6K

У меня была привычка. Вижу классную статью про архитектуру —-сохраняю. Репозиторий с примерами DDD - в закладки. Видео про CQRS - в плейлист «Посмотреть потом».

Вы знаете, чем кончаются плейлисты «Посмотреть потом».

В какой-то момент закладок стало 300+. Половина ссылок битые, треть дублируют друг друга, остальное - статьи, которые казались гениальными в два часа ночи. Я сел и вычистил всё до 106 ресурсов. Собрал их в awesome-list на GitHub.

Но статья не про список. Статья про три вещи, которые я для себя открыл в процессе и которые почему-то мало обсуждают.

Читать далее

Четыре провала за четыре года — и четыре человека с AI, которые переписали всё за два месяца

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели5.1K

Четыре года мы пытались переписать нашу платформу для проведения IT-соревнований Codenrock. Четыре раза отступали. На пятый — два разработчика, тестировщик и UI-дизайнер справились за два месяца. У каждого — Claude Code на максимальной подписке. 

Это история о том, как технический долг накапливает проценты, как мы выбирали стек для новой платформы и что на самом деле значит «80% кода пишет AI».

Читать далее

SDD (Spec-Driven Documentation) – фреймворк для разработки технической документации в репозитории

Уровень сложностиСредний
Время на прочтение29 мин
Охват и читатели8.5K

По мере роста сложности программных систем документация становится не “сопроводительным текстом”, а инженерным активом, она участвует в принятии решений, согласовании требований, проектировании архитектуры, тестировании и эксплуатации. Однако на практике документация часто создаётся разрозненно, несколькими авторами, в несогласованных форматах. Это приводит к потере целостности и росту транзакционных издержек на коммуникации. В такой распределённой среде параллельно растёт применение AI-ассистирования при подготовке технических материалов, что повышает требования к формализации процесса и контролю качества создаваемых артефактов [1].

В программных проектах техническая документация представляет собой совокупность различных артефактов – требований, сценариев, диаграмм, описаний архитектуры и данных – распределённых между участниками и стадиями жизненного цикла. В условиях активного уточнения целей и решений, особенно на стадии исследовательско-опытных работ (research and development, R&D; далее – R&D), такие артефакты развиваются неравномерно, одни быстро детализируются и пересматриваются, другие остаются на уровне ранних гипотез. Это приводит к утрате целостности документационного контура, возникают противоречия между документами, различается уровень абстракции, дрейфует терминология, а изменения становятся трудно сопоставимыми друг с другом. Одновременно ослабевает трассируемость и затрудняется восстановление причинно-следственной цепочки “исходные данные → допущение → решение → требование → сценарий/диаграмма → проверка”, что увеличивает стоимость ревью и повышает риск ошибочных инженерных выводов [2–5].

Читать далее

Считаем ресурсы под PostgreSQL

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели7.5K

Не так давно на моей текущей работе впервые за весь мой немногочисленный 4-летний опыт бэкендера понадобилось для нового микросервиса рассчитывать ресурсы под PostgreSQL для данного сервиса. Раньше для меня данная тема было чем-то, чем занимаются DevOps/DBA и никогда прежде не задумывался и не исследовал информацию о том, как качественно рассчитать необходимые ресурсы, чтобы бизнесу не пришлось переплачивать за очень дорогие железки лишние деньги, чтобы потом оказалось, что от купленных мощностей в реальности используется 20-40% (опыт на нескольких работах показывает, что такое случается ну очень часто).

Q: Для кого эта статья?
A: Да в целом для любых технических специалистов, которые так или иначе взаимодействуют с технической поддержкой PostgreSQL и которым впервые нужно для новой БД (например, под микросервис) и сформулировать задачу для DevOps команды на поднятие СУБД для вашего сервиса.

Q: «Зачем мне это? Ну прикину я на глаз, что здесь нужно 50ГБ диска, 64ГБ RAM и нормально поедет»
A: Очень часто в условиях микросервисной архитектуры используется парадигма database per service и в таком случае нельзя просто запросить максимально мощную виртуальную машину. Ресурсы стоят много денег, инфраструктура должна масштабироваться, а значит необходимо уметь определять, какой именно мощности ВМ требуется и какие параметры PostgreSQL следует задать на старте.

В статье вы получите пошаговый расчёт диска, RAM, CPU и базовые рекомендации по конфигу PostgreSQL, а также в подарок готовый промпт для ИИ, если захотите делегировать все расчёты нейромозгу.

Ну давай считать
1
23 ...