StringConcat - разработка без боли и сожалений
Open in Telegram
Полезный блог от разработчиков для разработчиков. Наш сайт: howto.stringconcat.ru
Show more3 720
Subscribers
-124 hours
No data7 days
+430 days
Data loading in progress...
Similar Channels
No data
Any problems? Please refresh the page or contact our support manager.
Tags Cloud
Incoming and Outgoing Mentions
---
---
---
---
---
---
Attracting Subscribers
June '26
June '26
+13
in 0 channels
May '26
+33
in 0 channels
Get PRO
April '26
+35
in 0 channels
Get PRO
March '26
+91
in 0 channels
Get PRO
February '26
+130
in 0 channels
Get PRO
January '26
+168
in 0 channels
Get PRO
December '25
+62
in 0 channels
Get PRO
November '25
+55
in 0 channels
Get PRO
October '25
+165
in 0 channels
Get PRO
September '25
+88
in 1 channels
Get PRO
August '25
+227
in 0 channels
Get PRO
July '25
+275
in 0 channels
Get PRO
June '25
+209
in 0 channels
Get PRO
May '25
+158
in 1 channels
Get PRO
April '25
+45
in 1 channels
Get PRO
March '25
+42
in 0 channels
Get PRO
February '25
+29
in 0 channels
Get PRO
January '25
+34
in 0 channels
Get PRO
December '24
+68
in 0 channels
Get PRO
November '24
+47
in 0 channels
Get PRO
October '24
+70
in 0 channels
Get PRO
September '24
+97
in 0 channels
Get PRO
August '24
+150
in 1 channels
Get PRO
July '24
+100
in 1 channels
Get PRO
June '24
+35
in 0 channels
Get PRO
May '24
+27
in 0 channels
Get PRO
April '24
+30
in 0 channels
Get PRO
March '24
+47
in 0 channels
Get PRO
February '24
+42
in 0 channels
Get PRO
January '24
+60
in 1 channels
Get PRO
December '23
+56
in 0 channels
Get PRO
November '23
+64
in 1 channels
Get PRO
October '23
+107
in 0 channels
Get PRO
September '23
+245
in 0 channels
Get PRO
August '23
+94
in 0 channels
Get PRO
July '23
+63
in 0 channels
Get PRO
June '23
+142
in 0 channels
Get PRO
May '23
+319
in 0 channels
Get PRO
April '23
+281
in 0 channels
Get PRO
March '23
+55
in 0 channels
Get PRO
February '23
+35
in 0 channels
Get PRO
January '23
+68
in 0 channels
Get PRO
December '22
+27
in 0 channels
Get PRO
November '22
+18
in 0 channels
Get PRO
October '22
+42
in 0 channels
Get PRO
September '22
+24
in 0 channels
Get PRO
August '22
+40
in 0 channels
Get PRO
July '22
+41
in 0 channels
Get PRO
June '22
+34
in 0 channels
Get PRO
May '22
+53
in 0 channels
Get PRO
April '22
+13
in 0 channels
Get PRO
March '22
+13
in 0 channels
Get PRO
February '22
+26
in 0 channels
Get PRO
January '22
+17
in 0 channels
Get PRO
December '21
+28
in 0 channels
Get PRO
November '21
+20
in 0 channels
Get PRO
October '21
+191
in 0 channels
Get PRO
September '21
+41
in 0 channels
Get PRO
August '21
+58
in 0 channels
Get PRO
July '21
+130
in 0 channels
Get PRO
June '21
+39
in 0 channels
Get PRO
May '21
+236
in 0 channels
| Date | Subscriber Growth | Mentions | Channels | |
| 15 June | 0 | |||
| 14 June | 0 | |||
| 13 June | 0 | |||
| 12 June | +1 | |||
| 11 June | +1 | |||
| 10 June | 0 | |||
| 09 June | 0 | |||
| 08 June | +3 | |||
| 07 June | +2 | |||
| 06 June | 0 | |||
| 05 June | +1 | |||
| 04 June | +2 | |||
| 03 June | 0 | |||
| 02 June | +2 | |||
| 01 June | +1 |
Channel Posts
Тут, оказывается, вышел OWASP Top 10 2025.
Из интересного (на мой взгляд):
Software Supply Chain Failures — теперь на 3-м месте. Если старый A06:2021 в основном смотрел на зависимости (поставил старую или уязвимую библиотеку — получил дыру уровня Log4Shell), то теперь речь идет уже обо всей цепочке поставки ПО: репозитории, CI/CD, IDE, механизмы обновлений. Атакуют не только сам пакет, но и весь путь его доставки. Например, через компрометацию мейнтейнера, взлом вендора с последующей поставкой зараженных зависимостей и библиотек и т.д. То есть неприятный сюрприз может приехать от вполне легитимного поставщика. Если раньше такие истории считались скорее экзотикой, то теперь они добрались до 3-го места (особенно с учетом возможностей ИИ).
Mishandling of Exceptional Conditions — новый пункт. Суть в том, что приложение некорректно реагирует на сбои: неожиданный ввод, обрыв сети, нехватку памяти, ошибки БД и прочие нештатные ситуации. В результате проблему либо не замечают, либо никак на нее не реагируют, а иногда пользователю вообще отдают полный стектрейс. Здесь, кстати, есть неявная связь с вайбкодингом: ИИ очень любит упрощать подобные моменты. Про корректную обработку ошибок я даже рассказывал на Подлодке. Приятно все-таки иногда угадывать тренды — примерно как с девальвацией навыков кодинга в последние годы.
Как минимум рекомендую ознакомиться.
| 2 | Время страшилок: деплоймент из закрытой комнаты.
Когда меня уволили из Thoughtworks два года назад, я чуть не попал в местный банк BOU (название изменено). О его корпоративной культуре ходили легенды, которые ужасали даже китайцев.
Недавно я познакомился с человеком, который как Thoughtwork'er проработал там целых три месяца.
Три месяца. По местным меркам это уже ветеран и носитель сакральных знаний.
Сейчас расскажу об особенностях разработки. Заваривайте чаёк.
Деплоймент из закрытой комнаты
Хотите задеплоить фикс на прод? Включить VPN, выполнить команду или в крайнем случае нажать кнопку Deploy Prod на дашборде CI/CD? Нет!
Деплоймент происходит только из специальной комнаты, которую можно открыть только изнутри. Да, именно так.
Во время деплоймента у вас за спиной будет стоять ещё один человек. А за его спиной будет висеть камера.
И да, это значит, что в этой команде постоянно кто-то должен находиться в комнате даже тогда, когда никакого деплоймента нет. Даже сейчас. У меня нет идей зачем.
Подготовка к деплойменту
Всем вендорам банк платит по факту деплоймента в прод, а не по отработанным часам, поэтому мой товарищ был кровно заинтересован в том, чтобы его проект всё-таки увидел прод.
Но чтобы попасть в закрытую комнату, нужно получить sign-off на деплоймент.
Занимается этим деплоймент-менеджер.
Мой друг начал регулярно задалбывать этого менеджера вопросами о том, получил ли он все необходимые подписи.
Через непродолжительные два месяца менеджер радостно сообщил, что разрешение наконец получено, и достал из стола внушительную папку документов.
На каждом листе стояли подписи разных вышестоящих начальников.
Были ли там распечатки кода — история умалчивает.
Но после истории с комнатой я бы уже ничему не удивлялся. | 1 082 |
| 3 | Энтерпрайз-код 11/10
Небольшой пятничный кек. Коллеги поделились кулстори. Есть некая система, которая ходит к этим самым коллегам по HTTP и периодически присылает кривые жсоны. Например:
{
"id": 123123,
"name": ,
"attr": false
}
То кавычки забудут, то ещё чего.
Как такое возможно, спросите вы? А всё потому, что этот жсон формируется огромным 30-этажным SQL-запросом из coalesce и конкатенаций. Что-то типа:
-- job security 99lvl, LLM себя из розетки выключит увидев такое
SELECT concat('{','"id":',t.id,',','"name":"',coalesce(coalesce(u.name,(select name from users where id=t.user_id and rownum=1)),' '),'",','"attr":',case when row_number() over (partition by t.user_id order by t.created_at) = 1 then lower(cast(t.attr as varchar(10))) else lower(cast(t.attr as varchar(10))) end,',','"settings":{','"lang":"',coalesce(u.lang,(select lang from user_prefs where user_id=t.user_id and rownum=1),'ru'),'",','"theme":',case when u.theme is null then 'null' when u.theme=1 then '"light"' when u.theme=2 then '"dark"' else concat('"',u.theme,'"') end,',','"notifications":',coalesce(cast(u.notif as varchar),(select cast(prefs as varchar) from user_prefs where user_id=t.user_id and rownum=1),'false'),'},','"roles":',(select concat('[',string_agg(concat('"',r.role_name,'"'),','),']') from user_roles r where r.user_id=u.id group by r.user_id),',','"history":{','"prev_name":"',lag(u.name) over (partition by t.user_id order by t.created_at desc),'",','"next_name":"',lead(u.name) over (partition by t.user_id order by t.created_at desc),'"},','"recursive_check":',case when t.id=(select max(id) from requests where user_id=t.user_id) then concat('"FINALLY_',t.id,'"') else concat('"NOT_FINALLY_',(select concat('SUB_',t2.id) from requests t2 where t2.user_id=t.user_id and rownum=1),'"') end,case when exists(select 1 from dual where t.id>0) then ',' else '' end,'}','}') as json_response FROM requests t left join users u on t.user_id=u.id where t.status='active' and row_number() over (order by t.created_at)>0 order by t.created_at desc
Я даже не знаю, как это комментировать и сколько SQL-инъекций с прочими уязвимостями сидит в такой конструкции. Зато теперь понятно, почему на просьбу добавить новое поле они реагируют так нервно.
В общем, отдать JSON прямо из базы можно через какой-нибудь json_agg, но не напрямую же (наверное, это будет недостаточно энтерпрайзно, да и админа БД просто так, что ли, нанимали?) | 1 619 |
| 4 | Случилась очередная офигительная история у Meta (Компания Meta, владеющая Facebook, Instagram и WhatsApp, запрещена в РФ и признана экстремистской) с их AI. Если коротко, злоумышленники разговорили ИИ-ассистента, уговорили его сменить email на свой и сбросить пароль (социнженерия, только для нейросетки). Бот без проблем отправил код подтверждения на новый адрес. Даже двухфакторка не спасла. Говорят, спёрли кучу аккаунтов (сколько именно — молчат). Пример эксплуатации по ссылке.
Дайте непонятно как работающей штуковине полный доступ, повесьте на неё критически важные процессы. И что может пойти не так? | 2 184 |
| 5 | Не так давно писали про выкрутасы вендоров, а теперь случилось страшное: у них закончились деньги. По стону в кулуарах наблюдаем следующее — оказывается, у заказчиков и клиентов деньги тоже понемногу заканчиваются или хотя бы приходится их считать. Кто-то переходит на четырёхдневку, кто-то сокращает разрабов. В общем, приятного мало. Самая мякотка — у некоторых проблемы начались из-за технического долга. Если раньше, когда мы с Серёжей заикались о техдолге, нам снисходительно говорили: «ой да мы тут просто баблом зальём/людей наймем/etc, ты не сечёшь», — то теперь ВНЕЗАПНО это бабло кончилось, а проценты платить всё равно нужно. Наверное, надо просто побольше татуированных ажаиль-коучей нанять ИИшки внедрить, тогда точно придём к успеху. В общем, запасаемся попкорном и надеемся, что нас пронесёт.
А что у вас происходит? | 1 971 |
| 6 | Я случайно открыл новый (или давно забытый) способ писать промпты.
Летел я из Джакарты домой в Сингапур. Как обычно:
- на Netflix ничего не скачано
- Wi-Fi в самолёте стоит как крыло от него самого
В общем, надо чем-то себя занять.
Решил пописать код. Тем более была вполне интересная задача: написать небольшой rule engine для банка. Но есть нюанс:
- интернета нет
- локальных LLM нет
- писать всё руками, как наши деды в 2022-м, тоже не хотелось
И тут мне пришла идея: а что если поиграть с LLM в TDD ping-pong? То есть я руками пишу самое важное — спецификацию в виде тестов.
А модель потом сама генерирует реализацию под этот контракт.
Получалось примерно так:
@Test
fun `when term deposit created allow only deposit`() {
val awaitFundingTd =
accountRuleSet {
withdrawal {
default { denyAny() }
}
deposit {
allowAny() { balances("funded") }
}
}
awaitFundingTd
.makeDecision(Withdrawal, "ATM Withdrawal")
.shouldBeDenied()
}
Сразу захотелось сделать красивый DSL для правил. Потому что если делать DSL — то обязательно универсальный, расширяемый, чтобы потом переиспользовать для всех продуктов (да-да, конечно). Иначе зачем вообще начинать 😄
В итоге за полтора часа полёта я написал 7 тестов, 0 строк реализации и абсолютно ничего не компилировалось. То есть классический успешный TDD session. А уже дома вместо огромного промпта на 3 экрана с объяснениями что я вообще хочу я просто сказал Cursor "Сделай так, чтобы тесты проходили"
И получилось… идеально. С первого раза все тесты зазеленели, классы получились маленькими, интерфейсы аккуратные и никакой магической лапши. И тут до меня дошла довольно простая мысль: спецификацию можно задать не словами, используя расплывчатые формулировки вида "гибко, красиво и удобно", а сразу запердолить контракт в виде тестов.
Выходит, что LLM намного проще быть хорошим инженером, когда ты перестаёшь разговаривать с ней как продакт и начинаешь как разработчик | 2 593 |
| 7 | В 100500-й раз наступаем на одни и те же грабли. Может, вам не придется
Вероятно, кому-то из вас все нижесказанное покажется капитанством, но в моей практике история повторяется раз за разом.
Есть фронтенд-приложение, которое в собранном виде — просто js/html-статика, отдаваемая nginx’ом напрямую в браузер пользователя (SPA). И тут возникает главный вопрос: а как прописывать URL до API бекенда?
Какие вообще есть варианты?
Первый (и самый часто встречающийся) — захардкодить URL при сборке фронта. Главный минус: при переносе на другой домен или развороте на новом стенде фронт придется пересобирать под новый адрес. Админы в восторге, конечно. А потом начинается: «ооой, а отключите нам пожалуйста CORS, у нас ничего не работает». Ну вообще-то CORS как раз для того и придумали, чтобы ничего не работало, когда не надо.
Второй вариант — как-то передавать URL через настройки. Но как? В статику особо ничего не передашь: это же скомпиленный в жс тупескрипт без собственного поведения на сервере.
Как обычно выкручиваются: веб-приложение ходит по относительному адресу без хоста. То есть берет текущий домен и к нему уже приделывает все остальное.
А на стороне nginx настраивается proxy_pass, который проксирует запросы с определенным префиксом (например, /api/v1) дальше на бекенд.
В итоге:
— не нужно отключать CORS;
— фронт всегда ходит на тот же хост и порт;
— URL автоматически валиден на любом стенде и домене;
— фронт не нужно пересобирать под каждый environment.
У самого nginx тоже нет нормального механизма передачи параметров внутрь конфига (я тоже удивился, когда узнал, может сейчас уже что-то прикрутили), но и тут обычно выкручиваются через subst/envsubst.
Может, у вас есть и другие варианты, но этот подход уже тысячу раз обкатан. Есть нюансики, конечно, но в целом работает. | 1 906 |
| 8 | Продолжаем бодаться с электронным болваном.
Коллега недавно писал про «спираль энтропии». Как это выгдядит на практике: делаю прототип на Spring. Есть обычный класс LLMProvider, который отвечает за доступ к LLM. Вместо того чтобы подключить его через IoC-контейнер, ИИ просто создает экземпляр прямо в контроллере. Или вместо того, чтобы повторяющиеся куски промпта вынести в отдельный файл, мы получаем копипасту. И таких мелочей набегает целое ведро: нечитабельные тесты, кривое управление зависимостями, утечки ресурсов, да и просто какой-то мусор. Здесь хотя бы спасает то, что я понимаю, как должно быть устроено.
А вот другой пример, когда я сам не до конца понимаю, что делаю. Нужно было развернуть небольшой набор приложений в кубере. Сначала всё выглядело нормально, потом система постепенно обросла костылями. Что-то не заработало — ИИ в попытках починить начал накидывать всё более странные решения, причем на первый взгляд даже рабочие. Но после пересоздания подов всё снова разваливалось.
Проблема в том, что в кубере я разбираюсь поверхностно и не смог вовремя понять, что именно ломается и почему.
И это был совсем небольшой кейс, без какого-то сверхэнтерпрайза. Назовем этот эффект «я не знаю, чего я не знаю». Мы не говорим, что это все не работает (напротив, если понимать что ты делаешь, то еще как). Но если у тебя нет собственной экспертизы, ты можешь долго смотреть на деградацию системы и принимать её за прогресс. А некоторые команды даже ищут людей, чтобы детектить ИИ-слоп и не пущать его в код | 1 963 |
| 9 | Печальное постапокалиптическое будущее: разработчиков будут нанимать потому, что они обходятся дешевле, чем ИИ.
Думать о таком, конечно, не хочется, но такой сценарий кажется уже не слишком фантастичным.
Пишут, что Uber уже исчерпал годовой бюджет на ИИ, а, на минуточку, май ещё не начался.
Вице-президент Nvidia по прикладному глубокому обучению Брайан Катанзаро признал: «У моей команды затраты на вычисления намного превышают расходы на сотрудников».
В общем, экономия денег на ИИ-токенах скоро станет новым трендом среди разработчиков.
а вы уже готовы оценивать задачи не в человеко-днях, а в тысячах токенов? 🙂 | 2 895 |
| 10 | Намедни общались с архитекторами банка (те самые, у которых щеки по 2 кубометра — от постоянного раздувания, а просыпаются строго с фразой «доброе утро, коллеги»).
Делали небольшой модуль: на входе — информация о счёте (номер и т.д.), на выходе — шуршание купюр. Заметил, что в параметрах запроса на проведение платежа вместе с идентификатором счета передаётся тип счёта, хотя по некоторым типам операция запрещена. Уже выглядит стрёмно: тип можно перепутать при передаче, подменить намеренно, плюс логика фрагментируется. Это тоже самое, если бы в аэропорту в посадочном талоне указывали номер рейса, а дальше сам пассажир вписывал куда летит этот рейс, хотя направление и так известно. Если данные расходятся — кому верить?
Говорю: «Так мы ж обосраться можем». Ответ: «А вы тестируйте лучше» (при том что потребителей этого сервиса может быть много, что из них лучше тестировать?). Прям из разряда: «пишите код без багов».
Мораль: прежде чем делать программный интерфейс и не получить ведро геморроя — подумайте, что вы можете НЕ передавать. | 0 |
| 11 | В Cursor тихой сапой меняют правила игры. Старый режим Privacy (без отправки кода на сервер) пометили как Legacy. Похоже, передача кода в облако скоро станет обязательной для всех новых функций (вроде фоновых агентов). Теперь можно только запретить обучение моделей на вашем коде, но сам факт его хранения на серверах становится обязательным.
Все детали по сбору данных и отказу от обучения собраны в их доке.
Интересно, а когда вообще Legacy-режим исчезнет совсем? | 0 |
| 12 | Не так давно я писал про борьбу с 100500 микросервисами. Продолжаем бороться: приступили к настройке и допилке. Естественно, нифига не работает, а документации толком нет (не будем же к каждому писать доку). А у каждого, между прочим, свои настройки.
Отладка и поиск причин падений — отдельный прикол. Даже если есть traceId и все логи аккуратно стекаются в какой-нибудь ELK — не спешите радоваться. На 20-м повторении одного и того же запроса через 10-й шлюз вы уже теряете нить происходящего. Справляться помогают только опыт поедания микросервисной субстанции, понимание паттернов говнокода и навыки реверс-инжиниринга (а так же ведро сожженых мозгов).
К концу второго месяца работы команды из нескольких человек + задолбанные представители заказчика — всё же позволили приблизиться к рабочему состоянию (но это неточно).
Дополнительное веселье — сбор нужных данных от соседей. Одно лежит в одном сервисе, другое — в другом, а что-то продублировано. Какие данные актуальнее? Сколько клиентов к сервисам нужно поднять, чтобы получить три сраных поля?
Зато всё масштабируемое, гибкое и модульное — аж ппц. Продолжаем наблюдения. | 0 |
| 13 | Claude Opus 4,6 Extended, самая сильная модель в Мире. Ну что, уже приготовились к сокращению? | 0 |
| 14 | Сказ о том, как мы обосрались
Не так давно мы писали, что запустили пилот — совместную работу над проектом, построенным по принципам чистой архитектуры и DDD. Причем проект не хелло ворлд, а вполне себе. Цель — походить по граблям и посмотреть, как они обходятся.
И… мы обосрались. По крайней мере поначалу. После пары месяцев группа развалилась. «Некогда, на работе завал» и тд. Но это было немного ожидаемо, так как пилот и все такое.
Далее немного подумали и пересобрались заново, уже с частично новой группой. Вот какие выводы можно сделать:
Изначально цена была символической, но дешевизна позволяет ничего не делать. Вам не жалко потерять Х денег, поэтому не получилось — ну и ладно, не так страшно.
Не все участники рассчитали нагрузку. Получилось довольно интенсивно. В итоге для нового набора давали небольшое тестовое задание, чтобы почувствовать вкус. Некоторые желающие отвалились сразу.
Больше поддержки: если что-то не получается — созваниваемся индивидуально. Но в разумных пределах. Постарались брать ребят с более-менее одинаковым уровнем.
Чередование нагрузки: на одной неделе подумать, на другой — покодить спинным мозгом.
Круговая порука: если кто-то бакланит, то группа за отведенный период узнает меньше.
Никаких «я сейчас меняю работу» — это огромная нагрузка на человека, и в итоге страдает вся команда.
В целом получилось неплохо, покодили с ИИ, а ребята унесли новые интересные мысли на работу. Хотя, конечно, есть чего докручивать, мы не все успели, да и на нас самих нагрузка довольно большая. Может быть даже проведем такой эксперимент еще раз
Но нас самом деле история не про нас, а про тебя, уважаемый читатель. А точнее про то, как мертвому внутри взрослому человеку учиться новому, не бросая и не выгорая. Вот четыре правила, которые мы вынесли.
1. Учись в свой час пик, а не по остаточному принципу. Уставший мозг не способен на сложное поэтому переноси обучение на утро или на то время, когда ты еще не утратил свежесть. Даже 30 минут в ресурсе дадут больше, чем два часа в режиме «дотупить и умереть».
2. Сделай так, чтобы бросать было невыгодно. Если ты учишься «просто так» — ты бросишь при первом завале на работе. Договорись с другом о штрафах, купи курс сразу на три месяца. Любая боль потери работает (хотя конечно и не на 100%)
3. Оценивай нагрузку с запасом, ибо твой энтузиазм врет. Перед стартом поживи неделю в новом режиме. Засеки часы и умножь на полтора, а потом оцени насколько это реалистично
4. Чередуй тяжелое и легкое. Одна неделя — врубить голову и разобраться в духоте,а следующая — покодить «спинным мозгом». Мозгу нужны передышки, а постоянное напряжение может испепелить его
Если придерживаться такого подхода длительное время, не перегружая и не насилуя себя, то спустя какое-то время вам не будет равных | 0 |
| 15 | Что будет если прямо сейчас на мой проект придут 20 прилежных джунов?
Напоминаю, что это тест лакмусовой бумажки на готовность к ИИ агентам.
Дак вот, они не смогут сильно навредить ибо проект устроен так, чтобы его было сложно сломать.
1. Структура проекта может выдержать удар
У нас hexagonal architecture и зависимости защищены тестами и правилами сборки. А именно
⁃ Нельзя просто так взять и воткнуть @Entity в доменный агрегат (о ужас).
⁃ Нельзя из контроллера напрямую дернуть репозиторий.
⁃ Нельзя незаметно протащить архитектурную грязь — сборка или тесты это остановят.
2. Доменка не живет в голове “самого опытного”
У нас описана доменная модель и зоны ответственности компонентов. То есть разработчику не нужно на каждый чих изобретать новую сущность, новый сервис и новый способ сделать побыстрее. Большая часть решений уже принята заранее, а шаринг знаний работает чуть сложнее, чем «посмотри MR Васяна, чтобы лучше понимать предметку»
3. В проекте есть образцы хороших решений
Почти никто не пишет все с нуля. Обычно разработчики берут существующий пример и адаптируют его под новый кейс. Поэтому качество проекта очень сильно зависит от того, что именно в нем принято копировать. Если хорошие решения — будет масштабироваться хорошее.
Если плохие — будет масштабироваться плохое. Это вообще критически важная часть для ИИ
4. Требования в автоматике
⁃ Хотим Google Coding Style — это проверяет линтер.
⁃ Хотим обязательное покрытие тестами — это проверяется автоматически.
⁃ Хотим убедиться, что тесты не декоративные — используем mutation testing.
То есть качество не держится на фразах вроде «ну мы вообще стараемся писать аккуратно», а встроено в пайпланы
Поэтому я довольно спокоен за свое будущее в мире разработки с AI. Если проект можно защитить от 20 джунов, то его можно защитить и от AI. Так что вопрос уже не в том, придет ли агентская разработка (можно сказать она уже отчасти здесь), а в том, сможем ли мы защитить его от цифровых джунов. И в этом кстати заключается отличие от модного нынче вайбкодинга.
Резюмируя: если вы готовы, то ваша производительность улетит в небеса. В противном случае в небеса полетит количество технического долга.
В следующем посте расскажу, как, на мой взгляд, из-за этого изменится работа разработчиков. | 0 |
| 16 | Уже сейчас компании вроде Spotify и другие бигтехи двигаются в сторону разработки , где основную работу делает ИИ-агент (попутно собирая совещания на тему «как бы нам еще разок не обосраться из-за багов от ии ИИ»).
И отличие от существующего формата, когда мы сидим и ковыряемся в курсоре — это полная автономность. То есть ИИ сам берет задачу из Jira, пишет код, гоняет тесты и открывает MR, деплоит на продакшен (и срется потом с коллегами в MRах).
Есть мнение что, через некоторое время агентская разработка станет такой же нормой, как GitLab, CI и pull request’ы. Хотя конечно даже CI(!) еще не до всех дошел, так что останутся островки "безысходности и ручного лампового труда"….
Но есть маленькая проблемка. Если внедрить подобный подход, что называется с ноги, то 90% компаний просто утонут в тоннах говнокода.
Оставшиеся 10% получат кратный рост производительности с приемлемой просадкой по качеству.Главный вопрос: вы окажетесь в этих 10% или в 90%?
Вопрос в том к какой группе будут относится наши проекты?
Давайте проведем мысленный эксперимент. Представьте, что вам завтра выдают не одного AI-агента, а сразу 20 очень старательных джунов. Таких вот умниц: не тупых, не ленивых, мотивированных, исполнительных. Но все-таки джунов.
Вопрос к вас: что будет с вашим проектом?
- Код станет лучше?
- Скорость вырастет?
- Или через месяц все превратится в болото, где никто уже не понимает, что с чем связано?
Поделитесь результатами эксперимента в комментариях! | 0 |
Available now! Telegram Research 2025 — the year's key insights 
