VAGANOV_VADIM Telegram 128
😬 Как я впервые прод положил

Время баек! На работе попросили рассказать о своём первом "косяке", делюсь этой историей и с вами.

Я backend-разработчик и моя история необычна тем, что впервые прод я положил во "фронтовой" части проекта...

На одном из мест работы, где я был ещё не самым опытным разработчиком, накопились fullstack-задачи — надо было в том числе дорабатывать фронт (TypeScript/React). Опыта фронта я тогда совсем не имел, но как ответственный разработчик вызвался научиться и покодить на пользу команде. Нужно было сделать не очень сложную доработку: в одном из интерфейсов при определённых условиях отрисовывать немного другие поля и позволить пользователю их изменять. Я тогда ещё не понимал, что в таком случае не стоит тащить всю логику на фронт, поэтому наколбасил каких-то if'ов и вроде бы всё заработало. Тестировал свой опус я, конечно же, руками, а так как процессы у нас в тот момент были не очень-то поставлены, то на крик тимлида "будете что-то в релиз доливать?!" я ответил "я этот ваш фронтенд превозмог, надо вливать!". Ах да, проводить ревью было некому, потому что владелец экспертизы по фронту ушел в отпуск, поэтому коллеги сказали "seems good" и влили мой код в master.

Прокатили релиз на ПРОД, какое-то время всё было спокойно: в логах чисто, ошибок нет, мониторинг чист, но... через несколько минут пошли звонки и письма от пользователей: "Тут какой-то пипец! Почему мы можем редактировать все поля?" Оказалось, что пользователи после релиза получили доступ к редактированию формы, которая by-design должна быть доступна только на чтение.
Форма, редактирование... Чёрт, я был единственным, кто дорабатывал фронт! Я начал быстро пробегать глазами по изменениям, которые внёс. Всё же должно работать, я же всё проверил!.. Коллега, разбирающийся во фронте, к моменту релиза уже вышел из отпуска и проблему мы начали разбирать вместе. "А это что такое?"— смотря на место в коде, на которое указывает палец коллеги, вижу название файла, который я вообще не должен был трогать, внутри него в каком-то хитром if в конце приписано
if (blablabla || oopsIJustTestedSomethingAndForgotToDeleteThis)

Во время выполнения задачи я просто начинал писать какую-то логику, которая срабатывала при определённом значении одного из полей, а в итоге удалил часть условия и оставил там только само значение поля — в JS просто наличие поля в логическом выражении распозналось как true и позволило безусловно редактировать форму, ведь это поле всегда приходит с сервера. Космический стыд! Тем временем тимлид, хоть и знатно испугавшись, хладнокровно откатил релиз. Мне повезло, что никто не успел наворотить страшных дел, ведь система работала с серьёзными данными.

Признавайтесь, сколько раз у вас ёкнуло сердце от несовершенства описанных мной процессов? Мне кажется, можно было испытать эффект "не ходи туда, за дверью убийца!", только по-айтишному. Баг я в итоге поправил, а тот случай навсегда изменил мой подход к разработке.

С тех пор я понял что JavaScript лучший язык программирования важность процессов и инженерных практик: код-ревью, тестирование и различные автоматические проверки, которые прочерчивают для нас путь к успеху, не позволяя совершать похожих ошибок. Сейчас я не представляю себе жизнь без этого, более того — внедрение хороших процессов в работу команд стали для меня одним из самых удовлетворяющих занятий в разработке :)

#разработка #лонгрид
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍5😁2



tgoop.com/vaganov_vadim/128
Create:
Last Update:

😬 Как я впервые прод положил

Время баек! На работе попросили рассказать о своём первом "косяке", делюсь этой историей и с вами.

Я backend-разработчик и моя история необычна тем, что впервые прод я положил во "фронтовой" части проекта...

На одном из мест работы, где я был ещё не самым опытным разработчиком, накопились fullstack-задачи — надо было в том числе дорабатывать фронт (TypeScript/React). Опыта фронта я тогда совсем не имел, но как ответственный разработчик вызвался научиться и покодить на пользу команде. Нужно было сделать не очень сложную доработку: в одном из интерфейсов при определённых условиях отрисовывать немного другие поля и позволить пользователю их изменять. Я тогда ещё не понимал, что в таком случае не стоит тащить всю логику на фронт, поэтому наколбасил каких-то if'ов и вроде бы всё заработало. Тестировал свой опус я, конечно же, руками, а так как процессы у нас в тот момент были не очень-то поставлены, то на крик тимлида "будете что-то в релиз доливать?!" я ответил "я этот ваш фронтенд превозмог, надо вливать!". Ах да, проводить ревью было некому, потому что владелец экспертизы по фронту ушел в отпуск, поэтому коллеги сказали "seems good" и влили мой код в master.

Прокатили релиз на ПРОД, какое-то время всё было спокойно: в логах чисто, ошибок нет, мониторинг чист, но... через несколько минут пошли звонки и письма от пользователей: "Тут какой-то пипец! Почему мы можем редактировать все поля?" Оказалось, что пользователи после релиза получили доступ к редактированию формы, которая by-design должна быть доступна только на чтение.
Форма, редактирование... Чёрт, я был единственным, кто дорабатывал фронт! Я начал быстро пробегать глазами по изменениям, которые внёс. Всё же должно работать, я же всё проверил!.. Коллега, разбирающийся во фронте, к моменту релиза уже вышел из отпуска и проблему мы начали разбирать вместе. "А это что такое?"— смотря на место в коде, на которое указывает палец коллеги, вижу название файла, который я вообще не должен был трогать, внутри него в каком-то хитром if в конце приписано

if (blablabla || oopsIJustTestedSomethingAndForgotToDeleteThis)

Во время выполнения задачи я просто начинал писать какую-то логику, которая срабатывала при определённом значении одного из полей, а в итоге удалил часть условия и оставил там только само значение поля — в JS просто наличие поля в логическом выражении распозналось как true и позволило безусловно редактировать форму, ведь это поле всегда приходит с сервера. Космический стыд! Тем временем тимлид, хоть и знатно испугавшись, хладнокровно откатил релиз. Мне повезло, что никто не успел наворотить страшных дел, ведь система работала с серьёзными данными.

Признавайтесь, сколько раз у вас ёкнуло сердце от несовершенства описанных мной процессов? Мне кажется, можно было испытать эффект "не ходи туда, за дверью убийца!", только по-айтишному. Баг я в итоге поправил, а тот случай навсегда изменил мой подход к разработке.

С тех пор я понял что JavaScript лучший язык программирования важность процессов и инженерных практик: код-ревью, тестирование и различные автоматические проверки, которые прочерчивают для нас путь к успеху, не позволяя совершать похожих ошибок. Сейчас я не представляю себе жизнь без этого, более того — внедрение хороших процессов в работу команд стали для меня одним из самых удовлетворяющих занятий в разработке :)

#разработка #лонгрид

BY Вадим Ваганов | Инженерный апгрейд


Share with your friend now:
tgoop.com/vaganov_vadim/128

View MORE
Open in Telegram


Telegram News

Date: |

bank east asia october 20 kowloon Click “Save” ; To edit your name or bio, click the Menu icon and select “Manage Channel.” It’s yet another bloodbath on Satoshi Street. As of press time, Bitcoin (BTC) and the broader cryptocurrency market have corrected another 10 percent amid a massive sell-off. Ethereum (EHT) is down a staggering 15 percent moving close to $1,000, down more than 42 percent on the weekly chart. Telegram message that reads: "Bear Market Screaming Therapy Group. You are only allowed to send screaming voice notes. Everything else = BAN. Text pics, videos, stickers, gif = BAN. Anything other than screaming = BAN. You think you are smart = BAN.
from us


Telegram Вадим Ваганов | Инженерный апгрейд
FROM American