🤖 НОВОГОДНЯЯ ПОДБОРКА ЛУЧШИХ ТОП-Каналов о НЕЙРОСЕТЯХ за 2025 год 🔥 ... которые взорвут твой мозг (в хорошем смысле) ♨️
Хочешь быть в тренде — или остаться в «доцифровой эпохе»?
Выбор за тобой 😎 Забирай ПАПКУ😉
Здесь собрана вся мощь ИИ —📱 лучшие эксперты, инсайты и фишки, которые реально экономят время и приносят деньги 💰
Пока искусственный интеллект не решил, что ты опоздал —
👉 Подписывайся сюда
Что тебя ждёт внутри:
⚡️ лайфхаки по созданию промптов, от которых оживают тексты и картинки
⚡️ гайд по созданию ИИ-ассистента, который продаёт лучше человека
⚡️ техники продаж с помощью нейросетей, которые работают на практике
📌 Забирай подборку каналов и бонусов прямо сейчас —
через пару дней доступ будет закрыт ❌
ПОДБОРКА 👉 https://t.me/addlist/L9DAAGPcC7U3OWU0
Хочешь быть в тренде — или остаться в «доцифровой эпохе»?
Выбор за тобой 😎 Забирай ПАПКУ
Здесь собрана вся мощь ИИ —
Пока искусственный интеллект не решил, что ты опоздал —
👉 Подписывайся сюда
Что тебя ждёт внутри:
⚡️ лайфхаки по созданию промптов, от которых оживают тексты и картинки
⚡️ гайд по созданию ИИ-ассистента, который продаёт лучше человека
⚡️ техники продаж с помощью нейросетей, которые работают на практике
📌 Забирай подборку каналов и бонусов прямо сейчас —
через пару дней доступ будет закрыт ❌
ПОДБОРКА 👉 https://t.me/addlist/L9DAAGPcC7U3OWU0
Please open Telegram to view this post
VIEW IN TELEGRAM
ИИ сегодня есть почти у всех.
Но у большинства он так и остаётся «интересным», а не полезным.Генерация текста, новые идеи —а время и деньги продолжают утекать, потому что нет системы.Ключевой упущенный момент— не внедрить ИИ в процессы, а оставить его на уровне экспериментов.
Конец года — редкий момент спокойно понять, где ИИ действительно должен работать, а где он просто тренд.
Я собрал экспертов, которые умеют превращать ИИ из «интересно» в «результат».
Считайте это новогодним подарком от меня 🎄🤖
https://t.me/addlist/RYfTWaF26_04NjAyИИ — это космос. А мы только что построили ракету
Пришла идея: почему бы не собрать ЛУЧШИЕ КАНАЛЫ в сфере AI?
Например, Selarti. Сервис по созданию ИИ-сотрудников.
И еще множество полезных каналов.
В них вы найдёте:
⠀
-как создавать необычные креативы с помощью AI;
⠀
-лучшие нейронки для создания звуков, текста, изображений;
- промты для генерации рекламы
… и еще очень много пользы
⠀
❗️Забрать можно только в течение 3-х дней. Потом удалю пост.
⠀
Если вы давно хотели внедрить современные инструменты и кратно вырасти уже этим летом, то эта ПОДБОРКА то, что нужно.
⠀
Переходите по ссылке👇
⠀
ДОБАВИТЬ
Пришла идея: почему бы не собрать ЛУЧШИЕ КАНАЛЫ в сфере AI?
Например, Selarti. Сервис по созданию ИИ-сотрудников.
И еще множество полезных каналов.
В них вы найдёте:
⠀
-как создавать необычные креативы с помощью AI;
⠀
-лучшие нейронки для создания звуков, текста, изображений;
- промты для генерации рекламы
… и еще очень много пользы
⠀
❗️Забрать можно только в течение 3-х дней. Потом удалю пост.
⠀
Если вы давно хотели внедрить современные инструменты и кратно вырасти уже этим летом, то эта ПОДБОРКА то, что нужно.
⠀
Переходите по ссылке👇
⠀
ДОБАВИТЬ
Telegram
Selarti | Виртуальные менеджеры | Автоматизация продаж и лидогенерации
Автоматизация лидогенерации, продаж, коммуникации с клиентами с помощью искусственного интеллекта. Внедрение под ключ
👉🏻 Запись на бесплатную консультацию по внедрению: @selartisale
👉🏻 Регистрация: https://selarti.ru/?utm_source=tg
👉🏻 Запись на бесплатную консультацию по внедрению: @selartisale
👉🏻 Регистрация: https://selarti.ru/?utm_source=tg
🎄 Новогодняя подборка Telegram-каналов про IT и ИИ (чтобы войти в новый год в теме) ✨
🎁 Собрал(а) папку с каналами про:
🤖 — AI/ML и нейросети: инструменты, разборы, промпты
💻 — разработку и карьеру в IT
🧠 — новости и практику: что реально применять в работе
📌 Добавляй папку себе — пусть полезные каналы будут под рукой весь год: https://t.me/addlist/wWOGyWXY3bs1ZTJi❄️
🎁 Собрал(а) папку с каналами про:
🤖 — AI/ML и нейросети: инструменты, разборы, промпты
💻 — разработку и карьеру в IT
🧠 — новости и практику: что реально применять в работе
📌 Добавляй папку себе — пусть полезные каналы будут под рукой весь год: https://t.me/addlist/wWOGyWXY3bs1ZTJi
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Mэри Торрес
This media is not supported in your browser
VIEW IN TELEGRAM
Не дай Гринчу украсть твоих клиентов в Новом Году❗️
Давай честно: каждый эксперт и предприниматель мечтает в Новом году зарабатывать в 2–10 раз больше, купаться в заявках
и иметь популярный, продающий блог.
🎅 Бородатый Дед Мороз услышал твоё желание
и подготовил подарки, которые помогут тебе мощно стартовать в 2026 году:
⏺ Секретные связки, которые обеспечивают поток заявок за 7 дней
⏺ Как набрать первую 1000 подписчиков в Telegram бесплатно
⏺ Продающие скрипты для переписок, которые реально закрывают на оплату
⏺ Пошаговая модель выхода на первые крупные чеки
⏺ Как внедрить ИИ в блог и бизнес, чтобы экономить время и увеличивать доход
⏺ Как бесплатно привлекать подписчиков из Threads и получать заявки системно
⏺ Готовые сценарии запусков без сложных прогревов
⏺ Связки контента, которые приводят заявки даже с маленького блога
⏺ Стратегия продаж на январь–февраль (когда у всех «мертвый сезон»)
⏺ Деньги из блога за сутки: 3 рабочие схемы
🎁 Тебя ждет более 200 подарков про трафик, маркетинг, бизнес, ИИ, продажи!
НО! Есть проблема…
Гринч уже на подходе 😈
И он очень хочет забрать эти подарки себе и увести твоих клиентов.
Этого нельзя допустить.
⏳ Поэтому действовать нужно прямо сейчас.
КАК ЗАБРАТЬ ПОДАРКИ?
👇👇👇
https://t.me/addlist/aWtEM8VOYnZkM2Ni
Давай честно: каждый эксперт и предприниматель мечтает в Новом году зарабатывать в 2–10 раз больше, купаться в заявках
и иметь популярный, продающий блог.
🎅 Бородатый Дед Мороз услышал твоё желание
и подготовил подарки, которые помогут тебе мощно стартовать в 2026 году:
НО! Есть проблема…
Гринч уже на подходе 😈
И он очень хочет забрать эти подарки себе и увести твоих клиентов.
Этого нельзя допустить.
⏳ Поэтому действовать нужно прямо сейчас.
КАК ЗАБРАТЬ ПОДАРКИ?
1️⃣Подпишись на всех экспертов из папки
2️⃣ Перейди в чат с названием «ПОДАРКИ🎄» (он автоматически добавится, при подписке на папку)
👇👇👇
https://t.me/addlist/aWtEM8VOYnZkM2Ni
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Mэри Торрес
This media is not supported in your browser
VIEW IN TELEGRAM
Гринч долго ждать не будет!
В заснеженной долине маркетинга появился он — Гринч, хитрый и озорной, который крадёт клиентов у тех, кто медлит.
Но есть шанс:
🎁 Более 200 волшебных подарков ждут тебя, чтобы защитить твой блог и бизнес, чтобы помочь ему вырасти в 2026 году.
Внутри — практические инструменты, которые сразу приводят заявки, деньги и рост блога без рекламы.
😈 Гринч уже рядом.
Подпишись на папку и забери подарки первым 👇
https://t.me/addlist/aWtEM8VOYnZkM2Ni
В заснеженной долине маркетинга появился он — Гринч, хитрый и озорной, который крадёт клиентов у тех, кто медлит.
Но есть шанс:
🎁 Более 200 волшебных подарков ждут тебя, чтобы защитить твой блог и бизнес, чтобы помочь ему вырасти в 2026 году.
Тебя ждут чек-листы, полезные статьи, уроки, бесплатные консультации, курсы , полезные сервисы и подборки от топовых экспертов и предпринимателей на тему маркетинга и продвижения
Внутри — практические инструменты, которые сразу приводят заявки, деньги и рост блога без рекламы.
😈 Гринч уже рядом.
Подпишись на папку и забери подарки первым 👇
https://t.me/addlist/aWtEM8VOYnZkM2Ni
🔍 Тестирование в системном анализе: Не контроль, а наша общая гарантия качества! 🛡
Привет, коллеги-аналитики! 👋 Давайте развеем главный миф 🚫: тестирование (QA) — это не островок, куда мы сбрасываем требования и забываем. Это прямое продолжение нашей работы по проектированию системы! 🏗 Мы отвечаем за то, ЧТО должно работать, а тестирование проверяет, КАК это работает в реальности. 🔄
Почему аналитик должен погружаться в тестирование? 🤔
✅ Мы — хранители «истины» 📜: Наши требования и user stories — это эталон, с которым сверяют систему!
✅ Мы — ключевые проводники на UAT 🧭: Кто, если не мы, поможет бизнес-пользователю проверить, решает ли система его задачи? Мы разъясняем логику и фиксируем обратную связь!
✅ Мы — лучшие «переводчики» багов 🐞🔧: Когда находят дефект, мы определяем: это сбой (система не соответствует ТЗ) или уточнение (ТЗ не полностью отражало потребность)!
🔥 Давайте на реальном кейсе!
Допустим, мы описали бизнес-правило для корзины:
«🎯 Скидка 10% применяется, если сумма заказа больше 5000 рублей ИЛИ у клиента есть статус «VIP».
💻 Смотрим на код (упрощенная логика на Python):
# Давайте мысленно "протестируем" функцию:
# 1. apply_discount(6000, False) -> 5400.0 ✅ (Скидка по сумме)
# 2. apply_discount(4000, True) -> 3600.0 ✅ (Скидка по VIP)
# 3. apply_discount(4000, False) -> 4000 ❌ (Нет скидки)
# 4. apply_discount(5000, False) -> 5000 ⚠️ (Граничное значение!)
# 5. apply_discount(5001, False) -> 4500.9 ✅ (Есть скидка)
🧠 Что мы, как аналитики, можем сделать ДО передачи в разработку/тестирование? 🕒
Мы можем буквально набросать сценарии проверок в текстовом виде рядом с требованием 📝:
Сценарий 1 (Сумма > 5000, не VIP): 📥 Вход: 6000₽, VIP: нет. 🎯 Ожидание: скидка 10% (5400₽).
Сценарий 2 (Сумма < 5000, VIP): 📥 Вход: 4000₽, VIP: да. 🎯 Ожидание: скидка 10% (3600₽).
Сценарий 3 (Сумма > 5000, VIP): 📥 Вход: 6000₽, VIP: да. 🎯 Ожидание: скидка 10% (5400₽).
Сценарий 4 (Сумма < 5000, не VIP): 📥 Вход: 4000₽, VIP: нет. 🎯 Ожидание: нет скидки (4000₽).
Сценарий 5 (Граничное значение): ⚠️ Вход: ровно 5000₽, VIP: нет. 🎯 Ожидание: НЕТ скидки (важный нюанс! "Больше 5000" ≠ "5000 и больше").
🎉 Что это дает?
1️⃣ Предотвращаем недопонимание с разработчиком (особенно по граничному значению) 🤝
2️⃣ Даем тестировщику готовый чек-лист для ключевых проверок 📋✅
3️⃣ Повышаем общее качество продукта, потому что ловим противоречия еще на этапе анализа 🚀
🏁 Итог: Участие в тестировании для аналитика — это замыкание цикла качества 🔄. Мы гарантируем, что идея, рожденная в требованиях, живет в готовом продукте! 🏆 Используйте простые примеры и продумывайте сценарии — это ваш суперскилл, который сэкономит часы работы команды и нервы заказчика! 💪✨
#TESTING
Привет, коллеги-аналитики! 👋 Давайте развеем главный миф 🚫: тестирование (QA) — это не островок, куда мы сбрасываем требования и забываем. Это прямое продолжение нашей работы по проектированию системы! 🏗 Мы отвечаем за то, ЧТО должно работать, а тестирование проверяет, КАК это работает в реальности. 🔄
Почему аналитик должен погружаться в тестирование? 🤔
✅ Мы — хранители «истины» 📜: Наши требования и user stories — это эталон, с которым сверяют систему!
✅ Мы — ключевые проводники на UAT 🧭: Кто, если не мы, поможет бизнес-пользователю проверить, решает ли система его задачи? Мы разъясняем логику и фиксируем обратную связь!
✅ Мы — лучшие «переводчики» багов 🐞🔧: Когда находят дефект, мы определяем: это сбой (система не соответствует ТЗ) или уточнение (ТЗ не полностью отражало потребность)!
🔥 Давайте на реальном кейсе!
Допустим, мы описали бизнес-правило для корзины:
«🎯 Скидка 10% применяется, если сумма заказа больше 5000 рублей ИЛИ у клиента есть статус «VIP».
💻 Смотрим на код (упрощенная логика на Python):
# Функция применения скидки, реализующая наше правило
def apply_discount(order_amount, is_vip):
"""
Применяет скидку 10% если:
- order_amount > 5000
- ИЛИ is_vip == True
"""
if order_amount > 5000 or is_vip:
return order_amount * 0.9 # Возвращаем цену со скидкой 💰
else:
return order_amount # Цена без изменений ⚖️
# Давайте мысленно "протестируем" функцию:
# 1. apply_discount(6000, False) -> 5400.0 ✅ (Скидка по сумме)
# 2. apply_discount(4000, True) -> 3600.0 ✅ (Скидка по VIP)
# 3. apply_discount(4000, False) -> 4000 ❌ (Нет скидки)
# 4. apply_discount(5000, False) -> 5000 ⚠️ (Граничное значение!)
# 5. apply_discount(5001, False) -> 4500.9 ✅ (Есть скидка)
🧠 Что мы, как аналитики, можем сделать ДО передачи в разработку/тестирование? 🕒
Мы можем буквально набросать сценарии проверок в текстовом виде рядом с требованием 📝:
Сценарий 1 (Сумма > 5000, не VIP): 📥 Вход: 6000₽, VIP: нет. 🎯 Ожидание: скидка 10% (5400₽).
Сценарий 2 (Сумма < 5000, VIP): 📥 Вход: 4000₽, VIP: да. 🎯 Ожидание: скидка 10% (3600₽).
Сценарий 3 (Сумма > 5000, VIP): 📥 Вход: 6000₽, VIP: да. 🎯 Ожидание: скидка 10% (5400₽).
Сценарий 4 (Сумма < 5000, не VIP): 📥 Вход: 4000₽, VIP: нет. 🎯 Ожидание: нет скидки (4000₽).
Сценарий 5 (Граничное значение): ⚠️ Вход: ровно 5000₽, VIP: нет. 🎯 Ожидание: НЕТ скидки (важный нюанс! "Больше 5000" ≠ "5000 и больше").
🎉 Что это дает?
1️⃣ Предотвращаем недопонимание с разработчиком (особенно по граничному значению) 🤝
2️⃣ Даем тестировщику готовый чек-лист для ключевых проверок 📋✅
3️⃣ Повышаем общее качество продукта, потому что ловим противоречия еще на этапе анализа 🚀
🏁 Итог: Участие в тестировании для аналитика — это замыкание цикла качества 🔄. Мы гарантируем, что идея, рожденная в требованиях, живет в готовом продукте! 🏆 Используйте простые примеры и продумывайте сценарии — это ваш суперскилл, который сэкономит часы работы команды и нервы заказчика! 💪✨
#TESTING
❤3
🧪 Тестирование для аналитика: Код как источник истины и инструмент коммуникации
Привет, коллеги! 👨💻👩💻 Сегодня — разговор на техническом уровне. 🎯 Глубокое понимание кода не требуется, но умение читать базовую логику — ваш суперскилл для предотвращения дефектов. 🛡 Не мы пишем продакшн-код, но мы можем создавать его цифровые «двойники» для проверки требований! 🤖
Зачем аналитику смотреть в код? 🔍
1️⃣ Верификация сложной логики: Когда бизнес-правило содержит 5+ условий, текстовая спецификация становится громоздкой. 📚 Код делает её однозначной! ✅
2️⃣ Проектирование тестов: Глядя на реализацию, вы видите все ветвления (if/else) и сразу понимаете, какие тестовые сценарии обязательны! 🧪
3️⃣ Быстрое прототипирование: Прежде чем передавать требование в разработку, вы можете смоделировать его поведение! ⚡️
Кейс: Валидация промокода🏷
Бизнес-правило: Промокод дает скидку 15%, если:
✅ Он активен (не использован и не просрочен).
✅ Сумма заказа > 3000 руб.
✅ И пользователь НЕ является VIP-клиентом (для VIP действует своя, более высокая скидка).
💻 Давайте смоделируем это на Python. Мы создадим функцию-валидатор.
🔍 Анализ кода как аналитика:
Посмотрите на условие в if:
promo_active and order_amount > 3000 and not is_vip_client
Вы сразу видите три независимых критерия, соединенных логическим И! 🤯 Это значит, что для исчерпывающего тестирования нужно проверить все комбинации. Фактически, код — это исполняемая спецификация! 📜➡️⚙️
Шаг дальше: Пишем тесты вместе с требованием🚀
Вы, как аналитик, можете предложить заготовки тестов на основе этой логики. Вот как могут выглядеть простейшие модульные тесты (используем assert):
Что это дает на практике? ✨
✅ Нулевая неоднозначность: Разработчик видит не только текст, но и формальную логику! 🤝
✅ Скорость: Вы можете быстро проиграть десятки сценариев, меняя входные данные в коде! ⏱️
✅ Качество: Вы передаете команде готовый набор контрольных точек (assert-утверждений), которые сразу можно включить в автотесты! 🏆
✅ Документация: Этот код-пример становится живым дополнением к спецификации! 📚➕💻
Итог: 🎯 Владение таким подходом не делает вас разработчиком. Оно делает вас системным аналитиком, который говорит с разработчиками на одном языке.
#TESTING
Привет, коллеги! 👨💻👩💻 Сегодня — разговор на техническом уровне. 🎯 Глубокое понимание кода не требуется, но умение читать базовую логику — ваш суперскилл для предотвращения дефектов. 🛡 Не мы пишем продакшн-код, но мы можем создавать его цифровые «двойники» для проверки требований! 🤖
Зачем аналитику смотреть в код? 🔍
1️⃣ Верификация сложной логики: Когда бизнес-правило содержит 5+ условий, текстовая спецификация становится громоздкой. 📚 Код делает её однозначной! ✅
2️⃣ Проектирование тестов: Глядя на реализацию, вы видите все ветвления (if/else) и сразу понимаете, какие тестовые сценарии обязательны! 🧪
3️⃣ Быстрое прототипирование: Прежде чем передавать требование в разработку, вы можете смоделировать его поведение! ⚡️
Кейс: Валидация промокода
Бизнес-правило: Промокод дает скидку 15%, если:
✅ Он активен (не использован и не просрочен).
✅ Сумма заказа > 3000 руб.
✅ И пользователь НЕ является VIP-клиентом (для VIP действует своя, более высокая скидка).
💻 Давайте смоделируем это на Python. Мы создадим функцию-валидатор.
# Моделируем бизнес-логику проверки промокода 🎯
def is_promo_valid(order_amount, is_vip_client, promo_active):
"""
Проверяет, применим ли промокод 15%.
Параметры:
order_amount (float): Сумма заказа 💰
is_vip_client (bool): True если пользователь VIP 👑
promo_active (bool): True если промокод активен 🔥
Возвращает:
bool: True если промокод можно применить ✅
"""
# Ядро бизнес-логики из требований ⚙️
if promo_active and order_amount > 3000 and not is_vip_client:
return True
else:
return False
# Примеры использования (наш мысленный эксперимент) 🧠
print("Тест 1 (Обычный клиент, большая сумма, активный промо):")
print(is_promo_valid(5000, False, True)) # Ожидаем: True ✅
print("\nТест 2 (VIP-клиент, большая сумма, активный промо):")
print(is_promo_valid(5000, True, True)) # Ожидаем: False ❌
print("\nТест 3 (Маленькая сумма заказа):")
print(is_promo_valid(2000, False, True)) # Ожидаем: False ❌
print("\nТест 4 (Просроченный промокод):")
print(is_promo_valid(5000, False, False)) # Ожидаем: False ❌
🔍 Анализ кода как аналитика:
Посмотрите на условие в if:
promo_active and order_amount > 3000 and not is_vip_client
Вы сразу видите три независимых критерия, соединенных логическим И! 🤯 Это значит, что для исчерпывающего тестирования нужно проверить все комбинации. Фактически, код — это исполняемая спецификация! 📜➡️⚙️
Шаг дальше: Пишем тесты вместе с требованием
Вы, как аналитик, можете предложить заготовки тестов на основе этой логики. Вот как могут выглядеть простейшие модульные тесты (используем assert):
# Набор автоматических проверок (pytest-стиль) для нашего правила 🧪
def test_promo_validation():
# 1. Скидка ДА: всё выполняется ✅
assert is_promo_valid(5000, False, True) == True
# 2. Скидка НЕТ: пользователь VIP 👑
assert is_promo_valid(5000, True, True) == False
# 3. Скидка НЕТ: сумма меньше 💰
assert is_promo_valid(2000, False, True) == False
# 4. Скидка НЕТ: промокод неактивен 🚫
assert is_promo_valid(5000, False, False) == False
# 5. Граничное условие: сумма ровно 3000 ⚠️
assert is_promo_valid(3000, False, True) == False # Т.к. НЕ больше 3000!
print("🎉 Все тесты прошли! Логика соответствует требованиям.")
# Запускаем наши проверки ⚡️
test_promo_validation()
Что это дает на практике? ✨
✅ Нулевая неоднозначность: Разработчик видит не только текст, но и формальную логику! 🤝
✅ Скорость: Вы можете быстро проиграть десятки сценариев, меняя входные данные в коде! ⏱️
✅ Качество: Вы передаете команде готовый набор контрольных точек (assert-утверждений), которые сразу можно включить в автотесты! 🏆
✅ Документация: Этот код-пример становится живым дополнением к спецификации! 📚➕💻
Итог: 🎯 Владение таким подходом не делает вас разработчиком. Оно делает вас системным аналитиком, который говорит с разработчиками на одном языке.
#TESTING
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
🔗 Интеграция для аналитика: проектируем диалог между системами
Системы как люди 👥 — чтобы работать вместе, им нужен общий язык и правила общения. Роль аналитика — стать архитектором этой коммуникации, а не просто "соединителем проводов".
🎯 Ключевые вопросы при проектировании интеграции:
1️⃣ ЗАЧЕМ? — Какая бизнес-цель стоит за интеграцией? Автоматизация, единые данные, улучшение CX?
2️⃣ ЧТО? — Какие конкретно данные/события передаются? В каком формате?
3️⃣ КАК? — Синхронно (жду ответ) или асинхронно (отправил и забыл)? REST, Kafka, файлы?
4️⃣ НАСКОЛЬКО НАДЕЖНО? — Что происходит при сбое? Нужна гарантированная доставка?
💡 Сравним два подхода на реальном примере:
Ситуация: Касса 🏪 должна проверить бонусы в системе Лояльности 👑
🔸 ПАТТЕРН 1: Синхронный (REST API)
Минусы: • Хрупкая связь • Общий простой • Плохая масштабируемость
🔹 ПАТТЕРН 2: Асинхронный (Event-driven через Kafka)
Плюсы: • Отказоустойчивость • Высокая производительность • Гибкость (к событию могут подписаться и другие системы)
🎯 Критерии выбора для аналитика:
⚖️ Скорость vs Надежность — Нужен ли мгновенный ответ?
🔄 Простота vs Гибкость — Будет ли расти количество интегрируемых систем?
📈 Текущие vs Будущие потребности — Каков roadmap продукта?
Правильный вопрос бизнесу:
«Что критичнее: сказать о списании бонусов сразу или отправить push-уведомление через 2 секунды?» ⏱️
Итог: Выбор паттерна интеграции — стратегическое решение. Правильный подход экономит сотни часов разработки и предотвращает будущие головные боли! 💪🚀
#INTEGRATION
Системы как люди 👥 — чтобы работать вместе, им нужен общий язык и правила общения. Роль аналитика — стать архитектором этой коммуникации, а не просто "соединителем проводов".
🎯 Ключевые вопросы при проектировании интеграции:
1️⃣ ЗАЧЕМ? — Какая бизнес-цель стоит за интеграцией? Автоматизация, единые данные, улучшение CX?
2️⃣ ЧТО? — Какие конкретно данные/события передаются? В каком формате?
3️⃣ КАК? — Синхронно (жду ответ) или асинхронно (отправил и забыл)? REST, Kafka, файлы?
4️⃣ НАСКОЛЬКО НАДЕЖНО? — Что происходит при сбое? Нужна гарантированная доставка?
💡 Сравним два подхода на реальном примере:
Ситуация: Касса 🏪 должна проверить бонусы в системе Лояльности 👑
🔸 ПАТТЕРН 1: Синхронный (REST API)
# Касса ЗАВИСАЕТ в ожидании ответа
try:
response = requests.get("loyalty-api/balance/user123", timeout=5)
# Работаем с ответом...
except Timeout:
# ВСЁ! Касса не может продолжить ⚠️
return "Система лояльности недоступна"
Минусы: • Хрупкая связь • Общий простой • Плохая масштабируемость
🔹 ПАТТЕРН 2: Асинхронный (Event-driven через Kafka)
# Касса быстро публикует событие и идет дальше
producer.send("order-events", {
"event": "ORDER_CREATED",
"user_id": "user123",
"amount": 5000
})
# Пользователь сразу получает: "Заказ принят!" ✅
Плюсы: • Отказоустойчивость • Высокая производительность • Гибкость (к событию могут подписаться и другие системы)
🎯 Критерии выбора для аналитика:
⚖️ Скорость vs Надежность — Нужен ли мгновенный ответ?
🔄 Простота vs Гибкость — Будет ли расти количество интегрируемых систем?
📈 Текущие vs Будущие потребности — Каков roadmap продукта?
Правильный вопрос бизнесу:
«Что критичнее: сказать о списании бонусов сразу или отправить push-уведомление через 2 секунды?» ⏱️
Итог: Выбор паттерна интеграции — стратегическое решение. Правильный подход экономит сотни часов разработки и предотвращает будущие головные боли! 💪
#INTEGRATION
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Когда собрались на непонятной встрече, ничего не сделали и надо разбегаться
😁3❤1
🔒 Security для аналитика: проектируем защиту с первого шага
Безопасность — не фича "на потом", а фундамент системы! 🏗 Аналитик закладывает её в требованиях.
🎯 Наша ответственность:
Знаем какие данные чувствительные🔐
Проектируем процессы их обработки 🔄
Пишем требования с security-аспектами 📝
💡 Базовые принципы:
Минимальные привилегии👤
Валидация ВСЕХ входных данных 🚫
Шифрование данных везде 🔏
Логирование действий 📋
💻 Пример: смена пароля в API
❌ НЕБЕЗОПАСНО:
✅ БЕЗОПАСНО:
🔐 Дополнительные требования в спецификацию:
📋 Чеклист для аналитика:
✅ Аутентификация — кто вы?
✅ Авторизация — что вам можно?
✅ Валидация — проверяем ВСЕ входящие данные
✅ Шифрование — HTTPS + шифрование хранения
✅ Логирование — фиксируем важные события
✅ Защита от атак — SQL-инъекции, XSS
🎯 Практические шаги:
Включайте security в user stories:
"Как пользователь, я хочу сменить пароль, ТАК ЧТОБЫ система требовала подтверждения старого и проверяла сложность нового"
Создавайте карты угроз 🗺 для каждого компонента
Задавайте вопросы:
"Как защищены эти данные?"
"Что если злоумышленник получит доступ?"
"Как обнаружим взлом?"
Итог: Security проектируется с первого дня. Ваша задача — задавать правильные вопросы и включать защиту в требования!💪
#SECURITY
Безопасность — не фича "на потом", а фундамент системы! 🏗 Аналитик закладывает её в требованиях.
🎯 Наша ответственность:
Знаем какие данные чувствительные
Проектируем процессы их обработки 🔄
Пишем требования с security-аспектами 📝
💡 Базовые принципы:
Минимальные привилегии
Валидация ВСЕХ входных данных 🚫
Шифрование данных везде 🔏
Логирование действий 📋
💻 Пример: смена пароля в API
❌ НЕБЕЗОПАСНО:
@app.route('/change_password', methods=['POST'])
def change_password_unsafe():
user_id = request.form['user_id'] # Нет аутентификации!
new_password = request.form['password'] # Открытый текст
update_password_in_db(user_id, new_password) # Пароль в БД как есть✅ БЕЗОПАСНО:
@app.route('/change_password', methods=['POST'])
@authenticate_user # 1. Проверка кто это
@rate_limit(per_minute=5) # 2. Защита от перебора
def change_password_secure():
user = get_authenticated_user()
old_pass = request.form['old_password']
new_pass = request.form['new_password']
# 3. Проверяем старый пароль
if not verify_password(user.id, old_pass): return error()
# 4. Проверяем сложность нового
if not is_password_strong(new_pass): return error()
# 5. Хешируем перед сохранением
hash = hash_password(new_pass)
update_password_hash_in_db(user.id, hash)
# 6. Логируем для аудита
log_security_event(user.id, "PASSWORD_CHANGE")
return {"message": "Пароль изменен"}🔐 Дополнительные требования в спецификацию:
def is_password_strong(password):
return (len(password) >= 8 and # Минимум символов
has_uppercase(password) and # Заглавные
has_lowercase(password) and # Строчные
has_digit(password) and # Цифры
has_special_char(password)) # Спецсимволы
📋 Чеклист для аналитика:
✅ Аутентификация — кто вы?
✅ Авторизация — что вам можно?
✅ Валидация — проверяем ВСЕ входящие данные
✅ Шифрование — HTTPS + шифрование хранения
✅ Логирование — фиксируем важные события
✅ Защита от атак — SQL-инъекции, XSS
🎯 Практические шаги:
Включайте security в user stories:
"Как пользователь, я хочу сменить пароль, ТАК ЧТОБЫ система требовала подтверждения старого и проверяла сложность нового"
Создавайте карты угроз 🗺 для каждого компонента
Задавайте вопросы:
"Как защищены эти данные?"
"Что если злоумышленник получит доступ?"
"Как обнаружим взлом?"
Итог: Security проектируется с первого дня. Ваша задача — задавать правильные вопросы и включать защиту в требования!
#SECURITY
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Работая из дома я более продуктивен. Я дома:
😁2💯1
👋 Привет, коллеги! Сегодня поговорим о самом важном инструменте аналитика для диалога с бизнесом — диаграмме прецедентов (Use Case Diagram).
🎯 Проблема: Вы встречаетесь с заказчиком, и он говорит: "Нам нужен личный кабинет с историей заказов, управлением подпиской и бонусами..." Как зафиксировать это понятно и без двусмысленностей?
🛠 Решение: Use Case Diagram — это визуальный словарь, на котором говорит бизнес и техническая команда.
Что она показывает:
👤 Актеры (Actors) — кто взаимодействует с системой (Пользователь, Админ, Внешняя система)
📦 Прецеденты (Use Cases) — что система должна делать (Оформить заказ, Посмотреть историю, Начислить бонусы)
🔗 Связи — кто и какие сценарии выполняет
Пример из жизни — интернет-магазин:
[Покупатель] → (Найти товар)
[Покупатель] → (Оформить заказ)
[Покупатель] → (Отследить доставку)
[Администратор] → (Управлять товарами)
[Платёжная система] → (Подтвердить оплату)
💡 Ключевое преимущество: Диаграмма сразу отвечает на вопросы:
Кто основные пользователи?
Что они хотят делать?
Какие границы у системы?
🔄 Как это работает в реальности:
Сначала — рисуете Use Case на митинге с бизнесом
Потом — детализируете каждый сценарий текстом (потоки событий)
Наконец — передаете разработчикам как основу для тестов
Пример кода для описания сценария (псевдокод):
# Use Case "Оформить заказ"
Сценарий: Успешное оформление
1. Пользователь добавляет товары в корзину
2. Система показывает итоговую сумму
3. Пользователь выбирает доставку и оплату
4. Система резервирует товар
5. Пользователь подтверждает заказ
6. Система создает заказ и отправляет уведомление
Альтернативный поток A: Товара нет в наличии
4.1. Система показывает ошибку "Товар закончился"
4.2. Возврат к шагу 1
🚀 Итог: Use Case Diagram — это мостик между бизнес-требованиями и технической реализацией. Она не показывает "как", а четко фиксирует "что". Начинайте любой проект с нее!
#UML
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
🔍 Привет снова! Мы разобрались, ЧТО должна делать система (Use Case). Теперь вопрос: КАК она это делает?
🎯 Проблема: Разработчики спрашивают: "А что происходит после нажатия кнопки 'Купить'? Какие сервисы вызываются? В каком порядке?" Текстовое описание превращается в многобукв, которое никто не читает.
🛠 Решение: Диаграмма последовательности (Sequence Diagram) — это пошаговая инструкция взаимодействия объектов во времени.
Что она показывает:
⏱️ Время — течет сверху вниз
👥 Объекты/Сервисы — кто участвует
📨 Сообщения — кто кому что передает
🔄 Альтернативные сценарии — если/то
Пример — оформление заказа:
[Пользователь] → [Веб-интерфейс]: Нажать "Купить"
[Веб-интерфейс] → [СервисЗаказов]: Создать заказ()
[СервисЗаказов] → [СервисСклада]: Проверить наличие()
[СервисСклада] → [СервисЗаказов]: true
[СервисЗаказов] → [ПлатежныйШлюз]: Списать деньги()
[ПлатежныйШлюз] → [СервисЗаказов]: Успех
[СервисЗаказов] → [СервисУведомлений]: Отправить email()
💡 Суперсила диаграммы: Она наглядно показывает зависимости и проблемные места в архитектуре. Видно, где появляются лишние вызовы или где нет обработки ошибок.
Пример кода, который рождается из диаграммы:
class OrderService:
def create_order(self, user_id, items):
# Шаг 1: Проверить наличие
inventory_check = self.warehouse.check_availability(items)
if not inventory_check.success:
raise Exception("Товара нет в наличии")
# Шаг 2: Списать деньги
payment_result = self.payment_gateway.charge(user_id, items.total)
if not payment_result.success:
raise Exception("Оплата не прошла")
# Шаг 3: Создать заказ
order = Order.create(user_id, items)
# Шаг 4: Отправить уведомление
self.notification.send_email(user_id, "order_created", order.id)
return order
# Каждый вызов метода — это стрелочка на диаграмме!
🔄 Практический совет: Рисуйте диаграмму вместе с разработчиками на planning-сессиях. Это:
Сокращает недопонимание в 3 раза
Выявляет проблемы архитектуры до coding
Служит документацией для новых членов команды
🚀 Итог: Sequence Diagram превращает абстрактные требования в конкретный план действий для разработчиков. Это самый технический и самый полезный инструмент аналитика после Use Case.
#UML
Please open Telegram to view this post
VIEW IN TELEGRAM
📊 Финальный пост трилогии! Мы знаем, ЧТО делает система (Use Case) и КАК она работает (Sequence). Осталось понять, ИЗ ЧЕГО она состоит!
🎯 Проблема: "Как структурировать данные о пользователе? Что входит в заказ? Как связаны товары и категории?" Без четкой структуры БД будет хаос, а код — спагетти.
🛠 Решение: Диаграмма классов (Class Diagram) — это карта данных вашей системы. Она показывает сущности, их атрибуты и отношения.
Что она показывает:
🏛 Классы/Сущности — основные понятия (User, Order, Product)
📝 Атрибуты — данные сущности (id, name, email)
⚙️ Методы — что можно делать (calculateTotal(), updateStatus())
🔗 Отношения — как сущности связаны (наследование, ассоциация)
Пример — интернет-магазин:
[User]
- id: int
- name: string
- email: string
+ placeOrder(): Order
[Order]
- id: int
- date: datetime
- status: string
+ calculateTotal(): decimal
[Product]
- id: int
- name: string
- price: decimal
- category: Category
[Order] "1" — "*" [OrderItem] — "*" "1" [Product]
# Один заказ содержит много позиций, каждая позиция — один товар
💡 Важный момент: Есть два уровня диаграмм:
Концептуальная — для бизнеса (без методов, только сущности и связи)
Логическая — для разработки (со всеми атрибутами и методами)
Пример преобразования диаграммы в код:
# Реализация классов на Python
from datetime import datetime
from typing import List
class User:
def __init__(self, user_id: int, name: str, email: str):
self.id = user_id # Атрибут из диаграммы
self.name = name
self.email = email
self.orders: List[Order] = [] # Связь 1 ко многим
def place_order(self, products) -> 'Order': # Метод из диаграммы
order = Order(user=self, products=products)
self.orders.append(order)
return order
class Order:
def __init__(self, user: User, products):
self.id = self._generate_id()
self.date = datetime.now() # Атрибут date
self.status = "new"
self.user = user # Связь с User
self.items = [OrderItem(product=p) for p in products]
def calculate_total(self) -> float: # Метод calculateTotal()
return sum(item.product.price for item in self.items)
# Диаграмма классов ≈ структура кода + структура БД
🔄 Как использовать на практике:
Сначала рисуете концептуальную модель с бизнес-аналитиком
Затем детализируете с разработчиками до логической модели
Параллельно обсуждаете с DBA для проектирования БД
📈 Бонус: Из классовой диаграммы можно сразу генерировать:
SQL-скрипты создания таблиц
ORM-модели для Django, Hibernate, etc.
JSON-схемы для API
🚀 Итог: Class Diagram — это фундамент, на котором строится и код, и база данных. Она превращает бизнес-термины в технические артефакты. Аналитик, владеющий этим инструментом, становится архитектором данных!
#UML
Please open Telegram to view this post
VIEW IN TELEGRAM
🎨 UML для аналитика: визуальный язык проектирования 🗣
UML — это не просто картинки, а мощный инструмент коммуникации между аналитиком, разработчиками и бизнесом. 📊
Зачем это нужно? 🤔
• 📝 Визуализируем сложные требования
• 💬 Говорим на одном языке с командой
• 🔍 Находим противоречия в логике
• 🏗 Создаем основу для архитектуры
🎯 4 главные диаграммы в работе:
1. Use Case (Прецеденты) — ЧТО делает система?
Показывает функции системы и взаимодействие с акторами.
2. Sequence (Последовательности) — КАК общаются компоненты?
Показывает временную последовательность вызовов.
3. Class (Классы) — ИЗ ЧЕГО состоит система?
Показывает структуру данных и отношения.
4. Activity (Активности) — КАК идет процесс?
Показывает бизнес-процесс с ветвлениями.
🛠 Практическое применение:
Когда какую диаграмму использовать:
✅ Use Case — на этапе сбора требований
✅ Activity — при описании бизнес-процессов
✅ Sequence — при проектировании интеграций
✅ Class — при проектировании базы данных
Инструменты для работы:
🆓 draw.io, PlantUML — бесплатные и мощные
🎨 Miro, Lucidchart — для командной работы
💼 Enterprise Architect — для сложных проектов
Типичные ошибки:
❌ Перегруженность деталями
❌ Устаревшие диаграммы
❌ Непонятные названия элементов
💡 Реальный пример:
Задача: "Клиент хочет вернуть товар"
Use Case: Показываем, кто может инициировать возврат
Activity: Описываем шаги процесса возврата
Class: Проектируем сущности (возврат, товар, платеж)
Sequence: Детализируем вызовы между системами
🎯 Простой совет:
Начинайте с Use Case для нового функционала. Если процесс сложный — добавьте Activity. Для технических деталей используйте Sequence и Class.
Помните: Хорошая диаграмма понятна всем участникам за 5 минут! ⏱️✅
#UML
UML — это не просто картинки, а мощный инструмент коммуникации между аналитиком, разработчиками и бизнесом. 📊
Зачем это нужно? 🤔
• 📝 Визуализируем сложные требования
• 💬 Говорим на одном языке с командой
• 🔍 Находим противоречия в логике
• 🏗 Создаем основу для архитектуры
🎯 4 главные диаграммы в работе:
1. Use Case (Прецеденты) — ЧТО делает система?
Показывает функции системы и взаимодействие с акторами.
# Пример прецедента "Оформление заказа"
"""
Акторы: Покупатель, Система платежей
Основной поток: добавление товаров → оплата → подтверждение
Альтернативные потоки: отмена, ошибка оплаты
"""
2. Sequence (Последовательности) — КАК общаются компоненты?
Показывает временную последовательность вызовов.
# Цепочка при оплате заказа:
def process_payment():
"""
Пользователь → Frontend: клик "Оплатить"
Frontend → Backend: POST /api/payment
Backend → Database: сохраняем статус
Backend → PaymentGateway: запрос на списание
PaymentGateway → Bank: проверка карты
Bank → PaymentGateway: ответ
PaymentGateway → Backend: webhook
Backend → Frontend: результат
Frontend → Пользователь: отображение
"""
3. Class (Классы) — ИЗ ЧЕГО состоит система?
Показывает структуру данных и отношения.
class Order:
def __init__(self, user: User):
self.user = user # Ассоциация
self.items = [] # Композиция
class OrderItem:
def __init__(self, product: Product, qty: int):
self.product = product
self.quantity = qty
4. Activity (Активности) — КАК идет процесс?
Показывает бизнес-процесс с ветвлениями.
# Процесс возврата товара:
def process_return():
"""
Старт → Получение заявки → Проверка сроков
→ <Решение> → [Одобрено] → Возврат денег → Конец
→ [Отклонено] → Уведомление → Конец
"""
🛠 Практическое применение:
Когда какую диаграмму использовать:
✅ Use Case — на этапе сбора требований
✅ Activity — при описании бизнес-процессов
✅ Sequence — при проектировании интеграций
✅ Class — при проектировании базы данных
Инструменты для работы:
🆓 draw.io, PlantUML — бесплатные и мощные
🎨 Miro, Lucidchart — для командной работы
💼 Enterprise Architect — для сложных проектов
Типичные ошибки:
❌ Перегруженность деталями
❌ Устаревшие диаграммы
❌ Непонятные названия элементов
💡 Реальный пример:
Задача: "Клиент хочет вернуть товар"
Use Case: Показываем, кто может инициировать возврат
Activity: Описываем шаги процесса возврата
Class: Проектируем сущности (возврат, товар, платеж)
Sequence: Детализируем вызовы между системами
🎯 Простой совет:
Начинайте с Use Case для нового функционала. Если процесс сложный — добавьте Activity. Для технических деталей используйте Sequence и Class.
Помните: Хорошая диаграмма понятна всем участникам за 5 минут! ⏱️✅
#UML
❤2
🏗 Архитектура для аналитика: почему это ваша зона ответственности 🤔
Привет, коллеги! 👋 Архитектура ПО — это не только для разработчиков. Это наш с вами инструмент для создания устойчивых и масштабируемых систем. 🏢
📌 Почему аналитик должен разбираться в архитектуре?
• 🎯 Понять технические ограничения — нельзя требовать невозможного
• 💰 Оценить сложность реализации — разные подходы = разные бюджеты
• 🔄 Предвидеть масштабируемость — как система будет расти
• 🛡 Учесть риски — от архитектуры зависит надежность
🎪 Ключевые архитектурные стили:
1. Монолит — "Всё в одном" 🏢
Одна система, где все компоненты тесно связаны.
2. Микросервисы — "Разделяй и властвуй" 🐜
Независимые сервисы с четкими зонами ответственности.
3. Событийно-ориентированная архитектура (EDA) 📨
Системы общаются через события, а не прямые вызовы.
# Подписчики (работают независимо)
# 1. Сервис аналитики: считает регистрации
# 2. Email-сервис: отправляет приветствие
# 3. Рекомендации: создает профиль
📊 Быстрое сравнение:
Монолит🏢
✅ Простота разработки
❌ Сложное масштабирование
❌ Единая точка отказа
Микросервисы🐜
✅ Легкое масштабирование
✅ Отказоустойчивость
❌ Сложность координации
EDA 📨
✅ Гибкость
✅ Слабая связанность
❌ Сложность отладки
🎯 Как вы влияете на архитектуру?
Спросите о нагрузке 🔄
Сколько пользователей? Какой рост?
Уточните требования к доступности⏱️
Нужна ли работа 24/7?
Допустимы ли простои?
Поймите бизнес-процессы📈
Как часто меняются требования?
Нужна ли независимость компонентов?
Учтите интеграции🔗
Сколько внешних систем?
Какой тип взаимодействия?
💡 Практический совет:
Создайте контекстную диаграмму C4 для нового проекта:
Контекст — система и её окружение
Контейнеры — основные технологические блоки
Компоненты — ключевые модули внутри
Код — детали реализации (опционально)
🚨 Частые ошибки:
❌ Требовать микросервисы для MVP — избыточно
❌ Игнорировать legacy-системы — реалии бизнеса
❌ Не учитывать компетенции команды — кто будет поддерживать?
🎯 Золотое правило:
Архитектура должна быть достаточно хорошей для решения текущих задач с возможностью эволюции. Не стремитесь к идеалу — стремитесь к практичности.🚀
#ARCHITECTURE
Привет, коллеги! 👋 Архитектура ПО — это не только для разработчиков. Это наш с вами инструмент для создания устойчивых и масштабируемых систем. 🏢
📌 Почему аналитик должен разбираться в архитектуре?
• 🎯 Понять технические ограничения — нельзя требовать невозможного
• 💰 Оценить сложность реализации — разные подходы = разные бюджеты
• 🔄 Предвидеть масштабируемость — как система будет расти
• 🛡 Учесть риски — от архитектуры зависит надежность
🎪 Ключевые архитектурные стили:
1. Монолит — "Всё в одном" 🏢
Одна система, где все компоненты тесно связаны.
# Пример монолита - интернет-магазин
class MonolithicShop:
def process_order(self, user_id, items):
# Всё в одном месте:
user = self.find_user(user_id) # Работа с пользователем
self.check_stock(items) # Проверка наличия
order = self.create_order(user, items) # Создание заказа
self.process_payment(order) # Оплата
self.send_notification(user) # Уведомление
return order
2. Микросервисы — "Разделяй и властвуй" 🐜
Независимые сервисы с четкими зонами ответственности.
# Сервис заказов
class OrderService:
def create_order(self, user_id, items):
order = Order(user_id, items)
# Отправляем событие, а не вызываем напрямую
message_bus.publish("ORDER_CREATED", order.data)
# Сервис уведомлений (живет отдельно)
class NotificationService:
def on_order_created(self, event):
self.send_email(event.user_email, "Заказ создан!")
3. Событийно-ориентированная архитектура (EDA) 📨
Системы общаются через события, а не прямые вызовы.
# Издатель события
event_bus.publish({
'type': 'USER_REGISTERED',
'user_id': 123,
'email': 'test@mail.com'
})
# Подписчики (работают независимо)
# 1. Сервис аналитики: считает регистрации
# 2. Email-сервис: отправляет приветствие
# 3. Рекомендации: создает профиль
📊 Быстрое сравнение:
Монолит
✅ Простота разработки
❌ Сложное масштабирование
❌ Единая точка отказа
Микросервисы
✅ Легкое масштабирование
✅ Отказоустойчивость
❌ Сложность координации
EDA 📨
✅ Гибкость
✅ Слабая связанность
❌ Сложность отладки
🎯 Как вы влияете на архитектуру?
Спросите о нагрузке 🔄
Сколько пользователей? Какой рост?
Уточните требования к доступности
Нужна ли работа 24/7?
Допустимы ли простои?
Поймите бизнес-процессы
Как часто меняются требования?
Нужна ли независимость компонентов?
Учтите интеграции
Сколько внешних систем?
Какой тип взаимодействия?
💡 Практический совет:
Создайте контекстную диаграмму C4 для нового проекта:
Контекст — система и её окружение
Контейнеры — основные технологические блоки
Компоненты — ключевые модули внутри
Код — детали реализации (опционально)
🚨 Частые ошибки:
❌ Требовать микросервисы для MVP — избыточно
❌ Игнорировать legacy-системы — реалии бизнеса
❌ Не учитывать компетенции команды — кто будет поддерживать?
🎯 Золотое правило:
Архитектура должна быть достаточно хорошей для решения текущих задач с возможностью эволюции. Не стремитесь к идеалу — стремитесь к практичности.
#ARCHITECTURE
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1