← All posts tagged работа

janPona
работа IT По следам #3019805.

Мифический человеко-месяц.

За неделю разработки пять человек смогли с трудом выродить GraphQL сервис, коннектящийся к MongoDB и высунувший наружу парочку глючных мутаций и запросов. Без аутентификации. Без бизнес логики.

Для сравнения. Я в одиночку как-то разрабатывал подобное решение да плюс ещё фронтэнд для него. У меня на это ушло две недели по вечерам после работы. На полностью готовый сервис.

Если экстраполировать подобное на нашу команду, то нам понадобится полгода.

Причина? Когда одному человеку до конца понятны требования, то ему гораздо проще все реализовать самому, чем весело проводить время в постоянных митингах, согласованиях, пачках пуллреквестов, бесконечном резолвинге конфликтов итд.

А всё потому что тимлид ушел в отпуск, один бэкендщик бегает по военкоматам, я тоже почти уже начал бегать по военкоматам, психологам и ещё учить сына уму-разуму. Какая уж тут работа? Разброд и шатание, а не работа.

Завтра тимлид выходит из отпуска, надо наводить порядок...
janPona
работа GOlang Работаю сейчас слесарем-рефакторовщиком.

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

Прёт нечеловечески. Вряд ли бы я на фрилансе нашёл такое. Год назад я проделал подобное с сервисом, написанным на JavaScript (заодно и на TS его переписал), а теперь вот до Go добрался.

Что я скажу, код AWS-лямбды под лучами испепеляющего рефакторинга тает, оставляя только скелет инициализации и одну строчку handler.Handle().

Ну а сам метод Handle, реализующий бизнес-логику, теперь вместо того, чтобы лазить в базу, шариться по s3, разбирать и формировать json-ы, читать и валидировать переменные окружения, инициализировать API-клиенты итд, — просто реализует бизнес, мать её, логику.

Чувствую себя электриком, который вырывает из стен старую советскую проводку — и прокладывает новую, но уже по всем правилам. Аналогия тем ещё хороша, что — да, новая проводка дороже в установке, но в разы надёжнее и безопаснее в эксплуатации.
janPona
работа IT хэппиэнд Наняли охуенного фронтэндщика. Два месяца — полет нормальный. С ним мы развернёмся теперь во всю ширь — и отрефакторим всё.

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

Минутка сексизма. До неё я собеседовал ещё и нескольких мужиков. Жалкое зрелище. На лайвкодинге что-то там лопотали дрожащими губами про "я забыл синтаксис". А она... Нет, ребята, это надо было заснять на видео! "Как НАДО решать задачи".

Минутка вообще сексизма. @Pogo права. На девушек-программисток спрос выше: не загребут, легкость релокейта.
janPona
работа IT дыбр несун Несмотря на войну, возобновляю рубрику «Ужасы говнокода»!

Оказывается, что у нас был ключик от Google API, который стоил нам €30000 в год за счёт активного использования Geocoding API. Послали двоих разработчиков (включая меня) оптимизировать запросы, чтобы снизить расходы. А оказалось, мы этот ключ вообще нигде не используем. Но бабки платим, потому что его кто-то спиздил несколько лет назад, и активно юзает.

Выключили ключ, разрушили чей-то преступный бизнес ;)
janPona
· Edited
работа IT говнокод *it *работа *говнокод

Всё-таки я под занавес сделал ребятам рефакторинг, которого они заслужили.

К фронтэндщикам пост. Короче, все мы знаем, что такое переменные окружения. Ну, это такие штуки, которые родительский процесс передаёт дочернему, когда его запускает. Удобно с их помощью конфигурировать серверно-запускаемое приложение, сообщая ему всякие полезные URLы, например, где у нас сервис поиска, где у нас вообще API и т.д.

И все мы знаем, что такое webpack — это такая утилита, чтобы из кучи ссылающихся друг на друга джаваскриптов сделать, условно, один огромный джаваскрипт — или так называемый бандл.

Что сделал мой предшественник. Он идею переменных окружения извратил в своей основе. Из некоей волатильной, динамической сущности, которой по идее должно быть легко управлять, он сделал махровый хардкод. Заставил Webpack с помощью define плагина жёстко вкомпиливать их прямо в бандл. А что потом? Ну а потом, получается, мы не сможем скомпилировать один бандл и затем конфигурировать его в зависимости от окружения! То есть на dev, stage, qa и production компилировалось четыре разных бандла — каждый со своими переменными (но уже не окружения, а, скорее, охуения). Маразм. И на каждое изменение надо пересобирать фронтэнд, а это сорок минут со всеми ништяками. Ну и докер-образов тоже четверо генерировалось. Жуть.

Я это дерьмо пофиксил. Жалею только, что так поздно — меня просто долго отговаривали. Но в итоге, когда поняли, что в определённый момент это будет стоить нам 40-минутного даунтайма продакшена, дали добро. Точнее, я сам себе дал добро, ибо заебало притворяться, что у нас, типа, «архитектура».

Точнее, у них, уже совсем скоро у них. В мае мы с Птичкой начнем хипповать! А я — опенсорсить, но это уже совсем другая история.

P.S.
Отдельно пришлю фотки CircleCI workflou-диаграммы до и после. Чую, похудеет раза в два.
janPona
работа IT Вообще, я понял, к чему надо стремиться. Не к чистому коду по Мартину, не к идеальной команде. А к возможности хотя бы года два не лажать. Чтобы была такая возможность, можно пройти двумя путями.

1) Или во фриланс, где быстрее забудешь проект, чем выгоришь на нём
2) Или в from scratch долгострой, при этом сразу на фронт и на бек, чтобы успеть выстроить процесс, пока не пришли те, кому в кайф на процессы забивать

Если будет, как минимум, TDD, GraphQL и хотя бы не понарошечный ООП (грубо говоря, Nest.js, а не Express) — уже в разы легче жить. Если же ещё и микрофонтэнд запиздячить — так вообще сказка.

Хочу потом набрать людей, чтобы они пришли на всё готовое и не партачили от незнания.
janPona
работа IT война А между тем наш бельгийский капитан галеры уже сеет панику, призывает выносить наличку с банков. Нагнетает изо всех сил. Шарит в экстренный чатик новости из Guardian. И вообще, ведёт себя, как и подобает хладнокровному европейскому бизнесмену.

Это тот pro-пидар, который меня ссыкливо дискриминировал при приёме на работу, когда узнал, что моя налоговая зарегистрирована в Луганской области (даже не в ЛНР).

Пошли они все на хуй.
janPona
· Edited
работа IT *it *работа

План поиска работы:

1) Подписаться на неонацистские паблики
2) Отслеживать, какие украинские компании травят за русофилию
3) Устанавливать контакты с их HR-ками
4) ?????
5) Профитъ

Но если кроме шуток. Именно так открыл для себя And€₽$en Labs. Да, я несколько неадекватен в этом плане. Не знаю, как работать, но разговаривать с россиянами я люблю. Просто кайфую от питерского, московского и особенно удивительного уральского акцентов.
janPona
работа IT typescript Сегодня провёл своё первое собеседование на английском в качестве интервьюера. Ничего, нормально.

Кандидат оказался дуб дубом. Не смог даже простейшую функцию обернуть в промис.

Ничего не знает.

Это, между прочим, тот самый друг нашего СТО. Я старался натянуть ему оценку, чтобы он меня заменил, но даже при этом я не смог. Ну очень мало он знает.

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

Увольняюсь в мае, оставляю им большой запас для поиска замены
janPona
· Edited
работа *работа Сегодня у нас уволился последний адекватный синьор бекенд девелопер. Сука, опередил меня.

Люди уходят быстрее, чем мы успеваем нанимать.
janPona
работа IT дилемма Наша бельгийская бригантина дала течь и теперь идёт ко дну.

Денег нет и не предвидится. Повышение получил, но меньше, чем просил. Планы по развитию свёрнуты, активизированы планы по выживанию: пилим фичи со скоростью пулемёта, лишь бы выйти на самоокупаемость. Дату начала самоокупаемости назначили на конец 2022. Чуть позже передвинули на начало 2024. Ну, вы поняли.

И вот сейчас я сижу и понимаю, что мне тут пыхтеть формошлёпом ещё минимум 2 года без всяких перспектив.

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

Блять.

Но мне сейчас придётся эту индуску одобрить. Соврать и одобрить. Потому что кто-то же им должен клепать фичи, когда я свалю, а свалю я уже скоро.

Потому что мне дали понять, что бо́льше бабок не будет, а тем временем рынок труда так раскалился, что моя нынешняя зарплата, которая мне год назад казалась чуть ли не пределом мечтаний, оказалось уже ниже нижней планки по рынку.

Вопрос — нахуя мучить жопу, которая уже не хочет срать?
И ещё вопрос — как мне уговорить свою совесть, чтобы соврать работодателю, который мне ничего плохого не сделал?
janPona
работа праздники подарки Только вчера хвалил свою галеру, а сегодня они меня порадовали. Прислали подарок к новому году. Худи корпоративное, хорошее, правда.

А остальное — одно расстройство:
Ребёнку powerbank очень некачественный. Килограмма три фруктов: потемневшие зелёные бананы, зелёное манго, кокос без молока, зелёные мандарины, зелёные киви. Ананас был только неплохой.

И ещё бутылку шампанского очень средненького. Но, может быть, нормальное окажется. Спасибо не "советское".

Птичка негодовала больше из-за фруктов, а я — из-за пауэрбанка. Худи понравилось обоим.
janPona
работа IT дыбр галера А ещё галера, при посредничестве которой я работаю, предложила мне сегодня подработать интервьюером. Так, главное, оказались джентльменами, сразу деньги посулили за это, потому что считается внепроектная нагрузка.

На прошлой галере директор (алия волны 1990-ых годов), когда я "налетав" около 50 часов внепроектных интервью, заикнулся об оплате, открытым текстом сказал: "Если я заплачу тебе, другие тоже захотят. Мне проще бесплатно запрягать тех, кто на это согласен, а таких полно".

Вообще, ещё немного, и я начну свою галеру открыто рекламировать )
janPona
работа IT дыбр У нас сегодня случился биг бадабум. Один мужик пять лет назад написал генератор уникальных ID. Он (генератор, но не мужик) проработал все эти годы, и никто не замечал, что ID не всегда генерируются уникальные. Да чего там, в 1% случаев они нифига не уникальные. За годы набежало около 500 коллизий.

А теперь прикол. Айдишники используются в софте, который из нашей CRM постит объявления на внешние доски объявлений. Чтобы, когда пользователь стороннего сервиса откликается на объявление, его контакты автоматически подтягивались в нашу CRM.

И это прямо больно, потому что этой CRM пользуются несколько разных компаний. Облачная она. И отклики, предназначенные для одних компаний, в 1% случаев прилетают другим компаниям. Процент этот медленно рос пять лет от практически нулевого значения, и никто ничего не замечал.

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

И знаете что? Всё равно я люблю свою работу!

Кстати, под предлогом этого секьюрити фикса я сегодня протащил Dependency Injection в свой любимый микросервис. Вот, наверное, поэтому работу люблю.