Код-ревью не нужно Довольно провокационное заявление, не правда ли? Однако, давайте разберемся. Наверняка, олды помнят те времена, когда код-ревью еще не было принято повсеместно. Например, в нашей команде (где я на тот момент работал) оно появилось году эдак в 2011-2012. А предыдущие 3-4 года моего трудового стажа мы были, видимо, больше уверены в себе и катили в прод "как по кайфу". Тестирование, конечно, было, но вот как именно код написан никого сильно не интересовало. Потом с некоторым скрипом и сопротивлением заезжали в геррит (с которого потом с еще большим скрипом съезжали на общие рельсы монорепы). Зачем вообще нужно было код-ревью? 1. Второй взгляд позволял на ранней стадии заметить в коде ошибки и не пропустить их в прод. 2. Код-ревью помогало блюсти архитектуру кода и избегать анти-паттернов и просто шляпного кода. 3. Это помогало сохранять код более поддерживаемым, чтобы когда ты в следующий раз в него полезешь - изменения были легче. 4. Через обратную связь от опытных коллег мы развивали свои скиллы написания кода и расли профессионально. 5. Была некоторая иллюзия защищенности от проблем - ревьювер нес ответственность за качество кода наравне с автором. Помогало ли это? Конечно, да. Актуально ли это сейчас? Уже не настолько. С развитием агентской разработки эффективность написания кода выросла настолько, что код-ревью уже сейчас стало бутылочным горлышком. И мы уже очень близки к тому, что ревьювить весь код, написанный с агентами (а уже, скорее, просто "агентами", без "с") становится просто нереально. Да и те 5 пунктов уже не столь актуальны: 1. Хорошо обученная иишка с нужным количеством рулов, линтеров и тестов делает меньше ошибок, чем человек. 2. Архитектура кода задается не человеком, а рулами, и, будучи единажды хорошо выстроена, поддерживается в каждом изменении иишкой. 3. В следующий раз в код полезешь уже не ты, а ЛЛМ, и если там будет что-то не так - она сама быстро все отрефачит. 4. Скилл кодинга, увы, становится уже не так важен - руками код мы уже почти не пишем. 5. Ну вот это, честно говоря, никогда в полной мере не работало =) И к чему мы приходим? Нынче более эффективный путь - - это обложиться рулами, линтерами и тестами, - развить агентских end-to-end решателей, - внедрить Spec Driven Development, - отстроить AI SDLC с хорошим flow и гейтами контроля качества - и (та-дам) отказаться от ревью кода в пользу ревью спек и дизайна (не графического, конечно, а в смысле солюшен-дизайна). Ну посудите сами. Если вы уверены, что сам change (на уровне спецификации поведения) соотвествует задаче, покрытие тестами достаточное, архитектура кода зафиксирована, все чеки зеленые - то не все ли вам равно, как оно имплементировано в коде? Особенно, если в sdlc еще есть авторелизы с автооткатом в случае автообнаружения проблем, и цена ошибки и blast-radius минимизированы. Дойдем ли мы до того, что оунер сервиса сможет позволить себе даже не знать, на каком языке написан его сервис? Звучит радикально, но, как будто - да. А в следующем посте я вернусь с еще более провокационным заявлением.