S0ER
Архитектура | Программирование | Профессиональное развитие Соер.Клуб - https://t.me/soer_live По всем вопросам писать на @soerdev
Ko'proq ko'rsatish📈 Telegram kanali S0ER analitikasi
S0ER (@softwareengineervlog) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 10 466 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 11 635-o'rinni va Rossiya mintaqasida 61 728-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 10 466 obunachiga ega bo‘ldi.
22 Iyul, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -56 ga, so‘nggi 24 soatda esa 1 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 44.89% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 20.80% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 4 700 marta ko‘riladi; birinchi sutkada odatda 2 178 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 35 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent rbp, архитектура, callme, mov, указатель kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Архитектура | Программирование | Профессиональное развитие
Соер.Клуб - https://t.me/soer_live
По всем вопросам писать на @soerdev”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 23 Iyul, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
$soerdev add spec "Новая фича"
$soerdev refine spec
$soerdev plan
$soerdev run
Это реализация цикла Human ON the loop. Логика такая: добавляем драфт спеки, обсуждаем детали, фиксируем план, запускаем цикл до выполнения критериев останова. В работу не вмешиваюсь, но вижу в чате и телеграм боте что происходит.
И знаете что? Это реально удобно! Теоретически что-то подобное можно настроить и в CLI-агентах, но все равно придется допиливать харнес для отправки сообщений в телеграм, делать свой аналог гейтов, делать скилы и промпты. А так все зашито в оркестратор soerdev.ИИ должен был помочь людям выполнять их работу лучше, а вместо этого приводит к усталости и выгоранию.Очень хорошо прочувствовал эту проблему на себе. Работаю с ИИ каждый день: формирую пул заданий, загоняю в оркестратор (это моя агентная система), через несколько часов проверяю сделанное, собираю список правок, снова запускаю агентную систему - и так по кругу. Проблема в том, что циклов исправления очень много. Причем это не моя личная проблема, появился даже новый термин - "ботситтинг" - это когда человек "нянчится" с LLM, чтобы получить результат. По статистике, на такие проверки и исправления у сотрудников уходит в среднем 6.4 часа в неделю, то есть почти целый рабочий день. Ситуация усугубляется тем, что сначала кажется, будто человек делает меньшую часть работы - просто правит результат ИИ, а потом ждет. Но на самом деле цикл довольно плотный, а сам момент "принятия решения" сильно выматывает психологически (делать рутинный код на порядок проще, чем быстро анализировать, находить проблемы, указывать, что нужно переделать). Если посмотреть на историю коммитов, кажется, что проект растет, но если смотреть на качество - значительная часть кода - это сплошные исправления. Причем я не могу назвать это "рефакторингом". Рефакторинг - это улучшение структуры без изменения функциональности. В моем случае каждое исправление - это изменение поведения, которое ИИ изначально реализовал неправильно. В итоге стал замечать, что устаю от принятия решений. Даже правильнее сказать от "скорости" принятия решений. Выматывает, что нельзя ни в чем быть уверенным, нужно все проверять и перепроверять, либо рискушь скатиться в "ботшитинг". Такое состояние называется "AI brain fry" - это когда нужно принимать бесконечные микро-решения истощают когнитивные ресурсы. В результате падает КПД и возникает разрыв между тем, что я обсуждаю, и тем, что в итоге получаю. Пишут, что ИИ не только не сокращает объем задач, но и делает работу еще более интенсивной и сложной для человека. Можно возразить, что с людьми примерно так же - они ошибаются, переделывают и дорабатывают код. Но есть важнейший нюанс: люди делают это совсем в другом ритме. Машина же никогда не устает ошибаться. В итоге статистика удручающая: 48% разработчиков сообщают о ментальной усталости от работы с ИИ, 44% периодически чувствуют себя измотанными, а 19% уже вышли на уровень постоянного выгорания. При этом компании, уволившие сотрудников в надежде заменить их ИИ, вынуждены нанимать их обратно, так как модели не закрывают весь цикл разработки. Получается, я работаю не с кодом. Я работаю с системой, которая генерирует мне работу. И этой работы становится только больше. А вы говорите "ИИ скоро всех заменит". Сильно сомневаюсь.
Говорить, что ИИ заменит человека, так же как говорить, что калькулятор заменит математикаСуть метафоры понятна, но ирония в том, что сама метафора подтверждает мысль, что придется конкурировать с ИИ на уровне кода, но не архитектуры. 1. Математик не конкурирует с калькулятором, просто потому что математик - это скорее архитектор, а не кодер. Он работает с теоремами, абстракциями, доказательствами, а не считает, что-то на калькуляторе. 2. Была такая профессия "вычислитель", вот у этих ребят как раз возникли проблемы с появлением вычислительной техники, им пришлось конкурировать со способностью быстро и точно считать, и по итогу победили машины. Любые метафоры неточны, важно понимать, что конкуренция возникает когда возникают общие функции, у хороших инженеров много функций, которые не пересекаются с ИИ, а вот у чисто кодеров пересечений много.
На мой взгляд видео уже устарело. Могу согласиться, что большинство моделей не могут в хорошую архитектуру. Но стоит попробовать новейшие модели - GLM-5.2 или топовые Клода, как понимаешь, что архитектуру он делает лучше, чем большинство разработчиков.Это очень опасное заблуждение, которое возникает из-за того, что на уровне кода (одного приложения) ИИ может выдавать результат, который работатет (проходит тесты). Архитектура системы - это другой разговор. Первое: архитектура оценивается не в моменте, а на дистанции. Хорошая архитектура позволяет сопровождать и развивать систему в течение длительного времени. Проблема в том, что даже самые сильные ИИ-модели принимают решения, которые накапливают техдолг - неверные границы доменов, жесткое зацепление, слабая связность, дублирования и т.д. На дистанции 2–3 месяцев (без человеческих корректировок) внесение изменений в проект порождает эффект домино и кучу побочек. ИИ не "видит", какие части системы меняются синхронно, какие требуют унификации в виде общих интерфейсов и абстракций, часто LLM создаёт распределённый монолит, вместо микросервисов и т.д. Второй момент — есть разница между архитектурой приложения (архитектура на уровне кода) и системной архитектурой. По приложению довольно много типовых схем, которые ИИ может воспроизвести и под контролем человека даже более-менее сопровождать. Системная архитектура - это всегда компромисс между стоимостью, рисками и конкретными ограничениями: бюджетом инфраструктуры, легаси, требованиями регуляторов, реальной командой, которая будет это развивать. ИИ выдаёт архитектуру которая не учитывает нюансов, эта архитектура некая средняя температура по полате, которая получиалась из кучи схем, используемых в обучении, В результате решения не соответствуют конкретной ситуации и не решают проблем системы.
`
Стал ли код лучше? И да, и нет. Первый вариант по-прежнему остается самым читаемым, понятным и простым. Но на перспективу иметь разделение обязанностей и четкие границы между слоями - это очевидный плюс.
Получается три разных варианта, все рабочие. Но какой из них подойдет в конкретной ситуации - это решение, которое должен принять разработчик. Реальное программирование - это всегда компромисс между надёжностью, универсальностью и простотой.
Важно помнить, что как программисты, мы всегда можем объяснить, какие проблемы есть в коде, какие опасности они создают. Но насколько эти "проблемы" реальны - сказать сложно. И никто не знает, какой выбор нужно сделать. Знаю только, что через год-два открою этот код и не вспомню, почему выбрал именно так. И, скорее всего, нужно будет объяснять проблемы и переписывать... Опять.Как пользователь платформы, я хочу начать урок, чтобы продолжить обучение и потратить накопленные токены.Наивная реализация на TypeScript + NestJS могла бы выглядеть как-то так:
async startLesson(userId: string, lessonId: string) {
const user = await this.userRepository.findById(userId)
const lesson = await this.lessonRepository.findById(lessonId)
const subscription = await this.subscriptionRepository.findActiveByUser(userId)
if (!subscription || subscription.expiresAt < new Date()) {
throw new Error("No active subscription")
}
if (user.tokens < lesson.tokensCost) {
throw new Error("Not enough tokens")
}
await this.userRepository.update(userId, { tokens: user.tokens - lesson.tokensCost })
await this.progressRepository.create({ userId, lessonId, status: "started", startedAt: new Date() })
await this.analyticsService.track("lesson_started", { userId, lessonId })
}
Код рабочий и простой. Но насколько он хорош? Остановитесь на секунду и назовите 2-3 потенциальные проблемы этого кода. Я нашел сразу пять:
- Проверка подписки здесь, хотя должна быть в отдельном слое доступа.
- Списание токенов не атомарное - между проверкой и обновлением токены может списать другой запрос.
- Нет транзакции - если сервер упал между update и create, токены списались, а прогресс не создался.
- Аналитика блокирует основной поток.
- Нет уникального индекса на прогресс.
Учитывая эти моменты, можно сделать более надёжную реализацию:
async startLesson(userId: string, lessonId: string) {
return this.unitOfWork.execute(async (uow) => {
const user = await uow.users.findById(userId)
const lesson = await uow.lessons.findById(lessonId)
if (!user || !lesson) {
throw new Error("User or lesson not found")
}
const accessResult = await this.accessService.checkAccess(user, lesson)
if (!accessResult.allowed) {
throw new Error(accessResult.reason)
}
const updateResult = await uow.users.updateOne(
{ _id: userId, tokens: { $gte: lesson.tokensCost } },
{ $inc: { tokens: -lesson.tokensCost } }
)
if (updateResult.modifiedCount === 0) {
throw new Error("Not enough tokens")
}
return await uow.progress.create({
userId,
lessonId,
status: "started",
startedAt: new Date()
})
})
}
Код стал сложнее и надёжнее: транзакция, атомарность, разделение ответственности.
Но суть в том, что для небольшого проекта с десятком активных пользователей эта сложность чаще всего не нужна. Вероятность race condition стремится к нулю. Если транзакция зависнет - техподдержка поправит токены за пять минут, а вы потратили кучу времени на Unit of Work.
Поэтому из перечисленных проблем, наверное, единственное, что достаточно универсально - это разделение обязанностей. Всё остальное - преждевременная оптимизация.
Итоговый вариант кода с разделением обязанностей выглядел бы так:
`typescript
async startLesson(userId: string, lessonId: string) {
const user = await this.userRepository.findById(userId)
const lesson = await this.lessonRepository.findById(lessonId)
if (!user || !lesson) {
throw new Error("User or lesson not found")
}
const accessResult = await this.accessService.checkAccess(user, lesson)
if (!accessResult.allowed) {
throw new Error(accessResult.reason)
}
if (user.tokens < lesson.tokensCost) {
throw new Error("Not enough tokens")
}
await this.userRepository.update(userId, { tokens: user.tokens - lesson.tokensCost })вы говорите о важности умения проектировать ПО, умения писать архитектурные доки, умения подбора стека-технологий и т.п., а в чем проблема так же отдавать эту работу на плечи LLM и относится к итоговому коду и архитектуре, которая генерирует LLM - как к чему-то низкоуровневому?Проблем несколько: 🔴Недостаточно материала для обучения. Для кода — куча информации для датасета, для архитектуры — мало. Поэтому ИИ выдает довольно сомнительные по качеству решения. Он легко может логику засунуть в инфраструктурный слой, не провести границы между разными модулями, упустить важные требования. 🔴Проблемы с контекстным окном и вниманием. LLM теряет и искажает существенные моменты по мере заполнения контекстного окна, причем современные LLM, которые имеют окно 1 млн токенов, по субъективным ощущениям вместо улучшения качества проработки решений, наоборот, ухудшают их. 🔴Неравномерность результата — проект собирается из частей. Иногда LLM делает довольно хорошо какую-то часть, а потом сваливается в галлюцинации для другой части. В целом стратегия «разделяй и властвуй» в LLM пока плохо реализуема. В будущем, скорее всего, LLM сможет создавать и качественную архитектуру проекта, но пока до этого далеко.
Привет, можешь дать рекомендации по литературе, где можно получит/улучшить такие навыкиХороших книг не знаю, сейчас все изучают просто по наборам тем, так как быстро все изменяется. У меня есть бесплатные карты знаний, где подобрал темы для изучения (они пополняются и развиваются), там есть краткая справка, ну и дальше можно просто искать ролики на эти темы и собирать информацию. • Основы ИИ • Инженерия контекста Если собирать самому не хочется, то могу предложить свои платные коллекции знаний: • на следующей неделе стартует интенсив Архитектура ИИ-агентов • Дополнительно есть записи видео по архитектуре Монолитная архитектура и Сервисная архитектура (это к вопросу как строить проекты, чтобы их мог поддерживать ИИ)
