Ответ
В моей практике понимание не только своей части, но и общего контекста задачи — ключевой фактор качества и скорости работы. Например, при разработке нового REST API для модуля заказов, я не просто реализую эндпоинты по ТЗ. Я изучаю, как эти данные будут использоваться на фронтенде, какие отчеты на их основе строит аналитика, и как они влияют на смежные процессы, например, на складской учет.
Это позволяет:
- Предотвращать ошибки интеграции: Зная, что фронтенд кэширует ответы определенным образом, я могу сразу добавить корректные HTTP-заголовки (
Cache-Control). - Оптимизировать производительность: Понимая, что отчеты агрегируют данные за месяц, я могу предложить создать материализованное представление в БД, разгрузив основную таблицу.
- Упрощать коммуникацию: Когда возникает проблема, я могу быстрее локализовать её источник, зная полный цикл данных.
Конечно, глубина погружения должна быть адекватна задаче. Я не стану детально изучать кодопротектор, если просто интегрируюсь с его API, но обязательно пойму схему его ответов и возможные коды ошибок.
Ответ 18+ 🔞
А, ну это, блядь, классика! Вот смотри, как бывает: сидишь ты, пишешь свой REST API для заказов, по ТЗ, всё чётко. Эндпоинт на создание, эндпоинт на чтение — красота. Но если ты нихуя не понимаешь, зачем это всё и куда дальше поплывёт, то потом начинается пиздец, ёпта.
Ты же не просто железный ящик, который JSON'ы туда-сюда швыряет. Ты должен мозгом понимать, что с твоими данными будут делать. Вот, например, фронтендеры придут и начнут их кешировать. А ты, дурак, про заголовки Cache-Control нихуя не подумал, потому что в ТЗ про это не было. И что? А потом они тебе в талон придут с криками: «Почему у нас данные не обновляются, сука?!». А потому что ты, как манда с ушами, не посмотрел на общую картину.
Или ещё лучше — аналитика. Они из твоих заказов отчёты строят, за месяц, за год. А ты сделал всё «по учебнику», без индексов, с кучей джойнов. База начинает хрипеть, как старый дед, когда ему в гору идти. А мог бы сразу, зная про эти отчёты, предложить какую-нибудь умную штуку — там, материализованное представление сделать. Сэкономил бы всем кучу нервов и серверных ресурсов, которые, между прочим, тоже деньги стоят, ядрёна вошь.
Короче, суть в чём: когда ты в курсе всего контекста, ты не просто код пишешь. Ты как хирург, который знает не только, где резать, но и как организм в целом работает. Проблемы интеграции отсекаешь на корню, производительность не страдает, и общаться с коллегами из других отделов — одно удовольствие. Ты говоришь с ними на одном языке, а не как мартышлюшка, которая только своё дерево видит.
Конечно, это не значит, что надо лезть во все дыры. Если ты просто подключаешься к внешнему API какого-нибудь платёжного гейта, тебе не надо разбираться, на каком языке у них ядро написано. Но вот схему их ответов, все возможные коды ошибок (особенно эти, ебушки-воробушки, вроде PAYMENT_DECLINED_BY_FRAUD_FILTER) — это понимать надо. Чтобы когда у клиента платеж не проходит, ты не бегал с дикими глазами, а сразу знал, куда копать.
В общем, доверия ебать ноль к тому, кто работает строго по пунктам ТЗ, не поднимая глаз. Работа-то командная, в конце концов.