don-Rumata
работа IT OMG образование RL Продолжаем #3023866. Прошлую неделю меня пугал коллега-милитарист (по бумагам он мой начальник вроде, всё ещё), в эту — наш общий (и с прошлого поста) начальник. Рассказывали, что сверху спустили указание дать списки для уво^W отрицательного найма и что по мне решается вопрос, потому что "твоя автоматизация на самом деле не нужна", "мы за 15 минут флэшками, если что — раскидаем", "ты там занимаешься чем-то своим, вместо того, чтобы помогать нам". Если чё — билд образа через плейбук из #3023866/8 при наличии всего софта внутри локалки в гигабит, на ssd, на 10-е поколение интела ставится\настраивается 311 минут. Это винда. Линукс — 125 минут, опять же, при запущенном apt-cacher-ng и docker registry в режиме "registry-mirrors". Это один быстрый комп на быстром линке. Есть тачки на винтах 2010-го года и 100мбит. Т.е. когда ты всё умеешь, знаешь, у тебя есть в наличии и в курсе что в каком порядке ставить, всё прокэшено за прошлые тестовые разы.

Попытался рассказать\показать — услышал мантру про "15 минут". Ну посмотрим куда это всё вывезет.

P.S. #2951790, #2951377.
janPona
IT длиннопост typescript Эфиопа вчера уволили уже официально.

Человек был явно не на своём месте. Недо-мидл там, где нужен был синьор. Криворукий исполнитель чужих решений там, где нужно было предлагать свои — и педалить их так, чтобы нам было стыдно.

Делать код-ревью за ним было все равно, что переделывать самому — настолько все там было написано убого и уныло. Не было смысла комментировать, ибо комментарев бы вышло больше, чем исправлений.

И да, на все грабли тайпскрипта он наступил. В том плане, что если надо например, реализовать что-то так, чтобы, к примеру, поля интерфейса или элементы enum невозможно было бы переименовать средствами IDE (ну, знаете волшебную клавишу "F2" aka "rename refactoring"?), то это к эфиопу. Превратить сильную типизацию в слабую — к нему же. Я когда пишу, я не задумываюсь над такими штуками, у меня на автомате аналитика происходит, потому что за годы уже выработалось интуитивное чувство языка. Когда я вижу кусок плохого когда, написанный мной, у меня как будто зуб ноет.

С эфиопским кодом я себя чувствовал как на приеме у стоматолога без анестезии.

Ну ничо. Теперь, говорят для федеральной полиции Аддис-Абебы пишет на сишарпе складской учёт оружия.

Я бы делал такое с платной подпиской на функцию "внеплановые списания". Надо будет предложить, код должен работать на программиста.

Если без шуток, то я хотел бы, чтобы люди писали на расте. Ведь мне кажется, с растовской системой типов меньше шансов налажать, чем с Go, и тем более с TypeScript. И если Go и TypeScript иногда снисходят к говнокодеру и как бы говорят: «лааадно, я отвернусь и сделаю вид, что не замечаю, а ты можешь писать, как на своих любимых PHP/Python/JS», то Rust садистски ухмыляется: «что, не получается? Слы, ебашь типы, блеать!». И делать нечего, гуглишь, мучаешься, но пишешь так, что в рантайме ошибка невозможна в принципе. Если, конечно, найдешь, кто проспонсирует это извращённое хобби.
don-Rumata
работа идиоты IT RL С 12 июля по 23 августа пилил образ для учебных классов. 2 ОС, 180 гигов софта, 140+ наименований (от curl и docker, до Visual Studio и AutoCAD), 190-200+ компов. Начальство в курсе, коллеги в курсе, все всех уведомили, обсуждение текучки — реалтайм в коропративном "обсуждении" rocket.chat. Тестовые билды, тестовые прогоны, промежуточные скрины и выхлопы. Времени взял с запасом, потому что с 2010 бывало всякое. 1-й "не ждали": оказывается, дрова на видео в винде перестали ставиться. Коллега об этом знал, но сказал за неделю до дэдлайна. Перепаковал, накостылил, запаковал. Получилось плохо, но вроде пашет. 2-й "не ждали": сегодня (ага, неделя учёбы уже прошла) выяснилось, что 2020-я линейка Автодеска (12 тяжёлых и геморных прог) протухла и надо накатывать 2023! На мой вопрос (первый вопрос был матом, но главный админ удалил) "а где вы были 8 лет^W^W полтора месяца?" начальник для которого пилился этот образ мазанулся "Инфа не доходила, доходила бы, отрабатывалось соответствующее обстоятельствам." (прямая цитата), а ответственный за лицухи (он только по Автодеску и всё, больше ничем не занят, минимум в нашем управлении) парировал "файлик с ключами и сроками лежит на шаре, я когда-то давно напоминал, чё вы не посмотрели сами" (суть). Про то, что электрики посреди деплоя обесточили одну из аудиторий и не предупредили — даже вспоминать неловко. Всего-то 58 часов на установку, кому какое дело?

У меня отпуск в октябре. Хо-хо-хо, мазафака!
don-Rumata
работа IT OMG образование RL Главный админ пожаловался, что "с премией в приемке кинули в августе". Ну т.е. кто обслуживал техническую часть приёмной кампании (а конвертер "1с->госуслуги" чутка как бы сказать... барахлил... но надо, чтобы работал, а исходников нет, api нет и дальше по списку) работали за еду^W з\п. "Следующая приемка тока по договору гпх. Теперь веры нет". "Денег нет, но вы держитесь" (c). Прикольно наверное кидать людей, которые физически следят за всеми серверами и базами (и "1с бухгалтерия", если вы понимаете о чём я).
janPona
IT Эфиоп задолбал не только меня. Уже даже CTO решил его проводить с почестями. Аллах всемилостив.
janPona
IT Третья серия эфиопской саги. "Эфиоп идёт в PHP". Посадили эфиопа помогать бразильскому синьору писать на ПХП. Ну он и написал.

Ни одной проверки ошибок, все ошибочные ответы от базы данных, от внешних API тупо игнорируются.
Вот запросил его PHP-код что-то на внешнем API, а ем у в ответ 404 — не найдено. Что делает сын пустыни? Тупо игнорит ошибку и продолжает работать с полученым ответом, как если бы он содержал данные. Аллах разрулит, хуле там.

Уж не знаю, как такие трюки у них на ПХП делаются, но, наверное, вполне по силам для опытного разработчика.

Самый цимес — это вернуть на клиент все кишки рантайм-исключения со здоровенным стектрейсом. Пусть юзеры разбираются, чо у нас там не так.

Но главное, что бразильский синьор, исповедуя махровый malandragem, врубает самбу погромче и аппрувит любой PR своего восточного коллеги.
janPona
IT У нас в команде завёлся эфиоп. Сначала он просто говнокодил, отдавал на ревью заведомо нерабочий код и сводил с ума целую толпу код-ревьюеров. Теперь решил девелоп-ветку на прод задеплоить. Красиво жить не запретишь.
janPona
IT индия В общем, индиец Android-разработчик вышел, проработал неделю и уже реализовал огромный кусок функционала. Практически мгновенно разобрался в нашем сложном и плохо документированном API. Очень неплохо стартанул.

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

При том, я бы не сказал, что у него есть какой-то особый акцент. Просто сбивчивый темп речи и хреновая разборчивость.
kitt
humor IT self .
Я репетитор. Мой ученик сегодня прочитал задание и говорит: "Я ничего не понял, но сейчас сделаю".
Ты даже не представляешь, пацан, как тебе такой подход пригодится в будущем на работе!
janPona
работа IT По следам #3019805.

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

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

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

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

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

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

Завтра тимлид выходит из отпуска, надо наводить порядок...
balaklava
IT Вот каким местом frontend имеет отношение к программированию? Хули они это вместе рекламируют. Зло берет от такой наебки. Пойду рисовать. Меня это успокаивает. Карандаши дешевые тож.
janPona
IT И да. Сегодня новый проект решили писать всё-таки на TypeScript, потому что на Go, видите ли, мало разработчиков. Только двое: крутая девушка клауд инженер и я. CTO подумал, что нахуй надо так рисковать: пару прилётов калибра — и компания останется без гоферов.

Ничего. Нам-то что? Мы строители. Скажут кирпич — будем ложить кирпич. Скажут газоблок — будем газоблок. Хуле, прорабу виднее, конечно.

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

А кстати, на TS гораздо меньше ебли с поднятием GraphQL сервера. Берёшь Apollo — да и ёб твою мать. Лоббирую этот вариант.

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

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

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

Сегодня к нам пришёл ещё один бекендщик. Будет нас учить писать нудятину на nestjs, а у нас будет учиться английскому языку, бо нихуя не понятно, что он говорит.

Вот и все сплетни на сегодня.
janPona
IT GOlang Делаю код-ревью в пулл-реквесте новой сотрудницы. Три раза реквестил ченджи — чувствую себя душнилой уже. А что поделать, сердце болит за будущие падения прода...

Ну ничего. Зато быстрее въедет в нашу кодовую базу с её проблематикой. И язык вспомнит, на котором давненько не писала.
don-Rumata
работа идиоты IT RL WorldSkills Народ, а кому-нить из вас начальство приказывало нарушить УК РФ?

Из обсуждения ливнул и на сколько знаю — они таки поставили всё что надо сами. Красавцы!

Днём позже (9-го) коллега-милитарист переобулся в сторону начальства и упрекал меня, что я отказывался не ставить ломаное ПО, а "исполнять служебку в которой был указ выдать админские права, а зачем они нужны — мы не в курсе и вообще, есть служебка, надо выполнять, а не обсуждать."

Импортозамещение? Ну-ну, я посмотрю.

janPona
IT говноархитектура Дожились до того, что при полном неумении программировать люди мнят себя неебическими клауд-аркитектами. Настолько, что для банальной задачи интеграции CRM со сторонним API доски объявлений им уже надо городить стейт-машину с 11 лямбдами, связанными между собой абсолютно невменяемыми контрактами, как курица лапой прописанными в serverless.yml.

Может, сначала будем думать, а потом педалить?

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

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

А потому что люди сильно полагаются на клауд-нейтив решения. AWS Step Functions за них думать должно, считают они. А потом, когда их AWS подвесит за пятку и вытрясет последний бюджет, ох и удивляться будут. А остатки аварийного бюджета пойдут на найм настоящих программистов, которые это говно будут переписывать под он-премис.

Ваши 300 юзеров вам столько прибыли никогда не сгенерируют.
don-Rumata
идиоты IT OMG ixbt.com
«ВКонтакте» под угрозой? Из-за нехватки сетевого оборудования и серверов работа сервисов и услуг VK может прекратиться
Пахнет гос. изменой. Какая нехватка, если у нас закон об импортозамещении, Эльбрусы и Байкалы. ГДЕ ВЫ БЫЛИ 8 ЛЕТ?
janPona
IT тупое Вопросы кандидата на собеседовании.

"Вилкой в глаз?" — это "могу ли я увидеть диапазон зарплатного предложения?".

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

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

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

Минутка вообще сексизма. @Pogo права. На девушек-программисток спрос выше: не загребут, легкость релокейта.
n3lab
Juick ? IT Поравалить куда съебнем программули делать на фоне тревожности? какие ваще интересные страны есть? прагматичное сша или экзотичный таиланд? или ваще съебывать не надо, потому что нас и здесь неплохо кормят?
Strephil
IT На льготную ипотеку по ставке, не превышающей 3%, смогут претендовать сотрудники российских IT-компаний в возрасте от 22 до 40 лет, сообщил глава Минцифры Максут Шадаев. Для получения льгот им нужен доход от 200 тыс. руб. в месяц в городах-миллионниках и от 150 тыс. руб. в регионах.
Мне за сишечку столько не платят :(
Vital
мысли IT «Айтишники на вес сахара». «Остановить с помощью пропаганды».

А рублем не пробовали? У нас в главном управлении вакансий программистов больше 90, Карл! При средней зп на уровне кассира из Пятерочки. Я до сих пор удивляюсь, как нас не пошифровали, какие-нибудь Конти.
janPona
работа IT дыбр несун Несмотря на войну, возобновляю рубрику «Ужасы говнокода»!

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

Выключили ключ, разрушили чей-то преступный бизнес ;)
janPona
IT баян говнокод Философский камень, говорили они.
Камень-то оно, конечно, камень, да вот только не сильно философский. Даже не столько камень, сколько окаменелость.

А что? Бизнес доволен, 2000 рабочих мест целыми днями гудят, пыхтят, изображая бурную деятельность. Кто-то даже, судя по всему, живёт внутри матрицы иллюзий, что он что-то там рефакторит.

Но вы не понимаете, как работали компьютеры 20 лет назад, поэтому не надо критиковать. Пианист играет как может

lleo.me
janPona
IT путь Я знаю одного чувака, фрилансера, так он не парится. Месяц тут жиденького похлебал, месяц там сухонького погрыз — чередует рацион. Мир попсы как бы диктует нас условия: сортов говна много, выбирай любой, но выбирай.

Если я не смогу найти проект, где я мог бы сделать так, чтобы люди перестали (а в идеале и не начали) питаться говном, я уйду из профессии по-самурайски.

А пока что у меня есть Путь, и я в самом его начале. Мне подачки не нужны, мне нужен господин, которому я бы служил, но сражаясь при этом не деревянным мечом. Иное для самурая позор.
janPona
программирование IT слепота Бизнес хочет примерно вот чего.

#3009622

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

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

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

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

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

Вот такие обыдлившиеся вместе со своим быдлокодом кодеры и сидят по 12 лет на одной и той же джава5-помойке, забывая вообще, что такое Программировать. Не для них Кнут и Мартин тонны деревьев извели. Плодить бледных корпоративных слепых ко всему прекрасному кротов и гордиться этим! «Наши кроты самые подземные, самые неповоротливые»

Я знаю, что идеала нет, но я, сука, не многого уже прошу. Я, как нищий на паперти, с протянутой рукой стою и, трясясь и заискивая, вымаливаю просто позволить мне (просто отойти в сторонку и не мешать, а я сам, я умею):

1) строго типизированный код на клиенте и сервере, модели доменных сущностей
2) SOLID или гексагоналку, или хоть чорта лысого, только чтобы не мешанину SQL в АПИ-хендлерах
3) строго типизированные API (OpenAPI или GraphQL) с генерацией клиентских и серверных интерфейсов и клиентского кода а не REST-by-Postman-example
4) не пушить токены в гит, ну и вообще не делать подобной этому детской фигни

Ну вот скажи мне @kran, я сумасшедший, да? Скажи мне, друг дорогой, так никто не пишет, да? Стыдно так писать? Это всё задроты придумали, да? И самое главное скажи, только подумай хорошенько: это НЕ решает проблемы бизнеса, совсем-совсем?
janPona
IT Да такие ж блядь объектно-ориентированные. Репозитории у них сука. Сука. БЛЯДЬ.

А ХУЛИ ВЫ, ПИДОРЫ, ПИХАЕТЕ В ЭТИ СВОИ РЕПОЗИТОРИИ ВСЯКУЮ ХУЙНЮ?! Map<string, any>, блять нахуй?

Всё, блядь, всё. Никакого Хуанито не было. Мигель, блядь его матери, Карвахаль. Miguel Carvajal, я ненавижу тебя, уёбыш. Пусть мне потом прилетит по NDA, похуй. Докажу моральный ущерб в аргентинском суде. Гори в аду, пидорюга.

janPona
Украина IT дыбр психо Когда я не программирую, я срываюсь с катушек. Четыре главных тега, кроме Птички.
Птичка любовь.
Я сегодня не программировал, и мой сын мне уже задвигал за монобанк. Будущий ФОП.
Мы остаёмся на спектакль в первых рядах.
Люблю.
janPona
IT собеседование Нафига PHPшнику свитчиться на Node? Собеседовал бекендщика на Node, который до этого написал нам превосходное тестовое задание, щедро сдобренное паттернами. Но! Он жеж нифига не знает, а лезет на TS программировать. Как он эти паттерны djj,ot писал-то? Создаётся впечатление, что это кто-то сделал за него...

Сидел бы дальше Ларавель ковырял.
janPona
IT рекрутинг Отсобеседовал только фронтэндщика. Нормальный сильный фронтэндщик. Решил самую сложную задачу из моего лайвкодинг-набора за 10 минут без напряга.

Потому что украинец. В Европе совсем зажрались и расслабились, а наши — хохлы и москали — хваткие, умные. На любой технический вопрос следует чёткий ответ — и плюс куча связанных с ним историй из жизни. Люблю такое.

Да жаль, на наши говнища не пойдёт.
janPona
· Edited
работа IT говнокод *it *работа *говнокод

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

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

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

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

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

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

P.S.
Отдельно пришлю фотки CircleCI workflou-диаграммы до и после. Чую, похудеет раза в два.
janPona
IT typescript livecoding В продолжение темы для @lurker #3008375

Это задача для лайвкодинга, решение которой я ожидаю от миддла примерно за полчаса реального времени.

Let’s develop a simple expression evaluator. It would return a result of an arithmetic evaluation of 2 simple operators: “plus” and “minus” given in a form of a simple syntax tree.

For example:

compute({ plus: [10, 7] }) should return 17.

compute({ minus: [10, 7] }) should return 3.

Естественно, решение должно быть строго типизированное.

Понятно, что function compute может принимать не один тип, а юнион типов. Понятно, что оно в рантайме должно проверять, что именно ему передали, потому что как иначе.