hajoff (hajoff) wrote,
hajoff
hajoff

Categories:
  • Music:
Уже давно хотел написать продолжение поста про работу и конкретно про мой проект, пришло время)

Этот пост будет вряд ли кому интересен, пишу скорее для себя)
Если кратко - работаю в большом проекте в сфере кибер безопасности, над которым одновременно работают где-то 80 человек из разных стран, в основном из Израиля, Испании и Беларуссии. Всё идёт хорошо, работа классная, но код основной части проекта - полный ужас) На прошлой неделе начали работать над новой версией и я перевёлся в другую команду на другую часть проекта и там всё очень хорошо, но в разы сложнее.



В общем я писал раньше про то, как устроился и где работаю, но наша компания занимается аутсорсом, те грубо говоря сдаёт в аренду своих сотрудников другим компаниям. В целом звучит не очень, но это лучшая возможность для новичка попасть на большой международный проект. Так вот меня поставили работать над проектом другой израильской международной компании, занимающейся кибер безопасностью. Продукт, над которым мы работаем, это большая и сложная система управления и мониторинга различных устройств. Те этот продукт покупают компании, предоставляющие доступ к мобильной связи/интернету/телевидению, и они в свою очередь продают его своим клиентам, обычным пользователям, как дополнительную услугу, а вернее множество различных услуг. От защиты домашнего роутера до тотального родительского контроля. С родительским контролем интересно - там можно блокировать устройства, например, по времени или геолокации, или например блокировать все сообщения в чатах по определённым словам, но это лишь малая часть всего.

Сам продукт можно поделить на три части - большая система настройки всего у сотрудников компании, система контроля у клиентов, те, например, родителей и ещё одна чать если клиент не частный человек, а крупная компания (для безопасности и контроля устройств сотрудников). Но это грубо говоря, в деталях там больше. Над всем проектом сейчас работает где-то около 80 человек, включая разработчиков, тестировщиков, менеджеров и тд. Внутри все поделены на команды по +-10 человек. Команды состоят из израильтян, испанцев и белорусов, в каждой команде все перемешаны, те нет деления по странам, все работают вместе.

Первые месяцы я работал над самой большой частью проекта, которую делают дольше всего и больше всего людей, эта часть создана на VUE если говорить о фронтенде и на Python на бэкенде. Основная часть разработчиков - бэкэндеры, тестировщиков тоже много, а вот фронтендеров не много.

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

Большой частью разработки руководят испанцы и они делали основную часть фронтент кода. И тут начинаются проблемы)
У нас в компании только и разговоров какие испанцы хорошие люди и какие плохие разработчики) В коде всё ужасно, хорошего там нет вообще ничего, собраны все плохие практики, даже банального единого стиля форматирования кода нет, более того там нет стиля вообще и некоторые части даже просто прочитать сложно, тк всё намешано в одну огромную неотформатированную кашу, где каждый разработчик вносит кусок своего ухудшения каждый день. Все паттерны нарушены, куча повторяющегося кода, там просто непонимание javascipt, не говоря уже о чём-то другом. Это огромная неповоротливая, неэффективная махина, которая могла бы быть в разы легче и быстрее.

Я начал свою работу с рефакторинга. Вся логика стора, основного хранилища данных на фронте, хранилась в одном файле в 4000 строк. Четыре тысячи строк. Это очень много. Кроме этого там были модули, созданные в основном в последнее время некоторыми более-менее продвинутыми разработчиками, но которые там проработали скорее всего несколько месяцев. Но и они хранились частично в папке модульс, частично в корне в файлах, частично в разных папках. В общем это был полный ужас. Беларусский участник команды сказал, что когда он пол года назад пришёл на проект, то хотел заняться рефакторингом, но решил, что это слишком рискованно. С тех пор файл только увеличился, к лучшему не изменилось ничего. Мой израильский предшественник сказал, что этот файл - ужас всей жизни) И ещё один мой предшественник, которого я заменил, пол года ругался с испанцами, пол года мечтал это всё привести в порядок, судя по рассказам других. Но гит хранит всех авторов и их секреты, так что можно без проблем понять, что именно он был автором последних 500 строк глупости...

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

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

Этого было мало и дальше я взялся рефакторить сам стор. Не его структуру, а его наполнение. Избавиться от антипаттернов, создать нормальный понятный поток данных, оптимизировать повторяющийся код, вынести замоканные данные, т.к всё ещё попадались файлы в 500-1000 строк. Сроки были короткие, занимался я этим с перерывами неполные две недели, но по большому счёту сделал всё. И тут мой главный антагонист и автор этого ужаса сказал, что это критические изменения и в будущем у него есть другие планы на это и что он не уверен, что стоит это делать. Частично я могу с ним согласиться, некоторые вещи можно было бы оставить пока что, но в любом случае он главнее, ему виднее, у меня нет 20 лет опыта) Так что тимлид принял решение отложить эти изменения до следующей версии, тк мы были на пороге сдачи в продакшен новой версии и вносить такие критические изменения - рисковано, времени на риски нет. Это логично, так что мои изменения отложили. Дальше был период правки багов, тк все задания были выполнены, версия заканчивалась, нужно было избавиться от багов, а их было дофигища. Это был очень классный период, которым я просто наслаждался) Среди багов я чувствовал себя как рыба в воде и правил их десятками)) Найти место , причину и исправить - великое удовольствие,это как решить задачку, иногда запутанную, иногда простую. Так я заслужил звание крутого специалиста и породил кучу шуток про то, что я исправил баги на две версии вперёд) На финальных планёрках нас хвалили за резкое улучшение статистики по багам и по количеству дублируемого кода и я понимал, чья именно это заслуга)

Месяц назад мы закончили прошлую версию, это был большой праздник, с кучей поздравлений, подарками, дополнительными выходными. Дальше было долгое планирование, формирование новых команд, распределение обязанностей, оценка времени работы и тд.
Я смотрел на другие части нашего большого проекта и видел, что там есть один кусок, написанный не на vue, а на react и мне очень хотелось туда попасть. Ну во-первых я предпочитаю реакт, а во-вторых структура кода там выглядела замечательно, красиво, превосходно. Я поспрашивал, поинтересовался что и как у моего тимлида, внутри нашей израильской компании, и он буквально на следующий день организовал мне собеседование с тимлидом мобильной разработки, делающим эту часть на реакте. Это та часть проекта, которую видят клиенты компании-покупателя нашего продукта, те родители. Делают они одновременно веб и мобильную версию на react и react-native. В команде до этого были только одни белорусы  с тимлидом израильтянином и сейчас я знаю, что все они - синьёры с 5 летним стажем. Очень сильные программисты, на фоне которых я чувствую себя начинающим(хаха, ведь я и так начинающий).

Собеседование прошло достаточно средненько для меня, не сказать, что я был хорош, но в целом вроде более-менее справился. Проблема была в том, что от них уходил один синьёр и они искали ему замену. Так что я подумал, что мне не светит переход к ним в команду и успокоился, я же не синьёр.

Тем не менее меня взяли и я уже начал работать, пока только на веб версии. Фактически работа началась только несколько дней назад, но тоже не без организационных проблем. Продакт менеджеры испанцы и организовано всё так себе.. я начал делать один компонент и за 3 дня я 3 раза его переделывал, тк постоянно всё менялось. У нас начался спринт, разработчики уже должны работать, время идёт, а у нас на руках нет конкретных и понятных заданий. До этого момента не было дизайнера! 80 человека работает, а дизайнера нет! И весь дизайн делался продакт менеджерами, всё выглядело достаточно стрёмно. Сейчас дизайнер есть и переделывать нужно всё, вопрос почему нельзя было это сделать сразу.. но это ещё тема на будущее для поста)

Несколько дней назад начальство вызвало меня на беседу. В начале я думал, что они хотят продать меня другой компании, тк буквально за несколько дней до этого меня просили устроить лекцию и код-ревью бэкендерам, которые взялись делать сайт на vue и у них была вакансия фронтенд синьёра(а продажа сотрудников более крупным компаниям - нормальная практика, в которой выигрывают все 3 стороны). Я думал, что откажусь, но попрошу повышение зп. Но на короткой встрече начальство сказало, что видят как я стараюсь и решили мне поднять зарплату. Так что с конца февраля ещё не прошло 5 месяцев, но я достаточно неплохо продвинулся, получил отличный опыт, попал на проект, в которых хотел попасть, на технологиях, с которыми хотел работать, в очень сильную и достаточно жёсткую команду, где есть большой потенциал для роста)

Subscribe

  • День ВДВ во Владивостоке (ФОТО)

    Странно, сколько я работаю, ни разу купающихся массово в фонтанах ВДВшников не снимал. Вот, исправляюсь. 1. 2. 3. 4. 5. 6.…

  • (no subject)

    Давно я не писал) Июнь во Владивостоке в этом году достаточно тёплый и солнечный и даже туманов не очень много. Но вот эти два дня туман ходит по…

  • (no subject)

    В этом году во Владивостоке задалась снежная весна. И вот этой ночью очередной снегопад 1. 2. Вышел из дома в два ночи, откопал машину от уже…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 12 comments

  • День ВДВ во Владивостоке (ФОТО)

    Странно, сколько я работаю, ни разу купающихся массово в фонтанах ВДВшников не снимал. Вот, исправляюсь. 1. 2. 3. 4. 5. 6.…

  • (no subject)

    Давно я не писал) Июнь во Владивостоке в этом году достаточно тёплый и солнечный и даже туманов не очень много. Но вот эти два дня туман ходит по…

  • (no subject)

    В этом году во Владивостоке задалась снежная весна. И вот этой ночью очередной снегопад 1. 2. Вышел из дома в два ночи, откопал машину от уже…