Emo Coder

@emocoder Нравится 0

Сроки горят, разработчик плачет.
https://twitter.com/emoXcoder
Гео и язык канала
Россия, Русский
Категория
Технологии


Написать автору
Гео канала
Россия
Язык канала
Русский
Категория
Технологии
Добавлен в индекс
18.06.2018 12:32
реклама
TGStat Bot
Бот для получения статистики каналов не выходя из Telegram
Telegram Analytics
Подписывайся, чтобы быть в курсе новостей TGStat.
TGAlertsBot
Мониторинг упоминаний ключевых слов в каналах и чатах.
27
подписчиков
~0
охват 1 публикации
~5
дневной охват
N/A
постов в день
N/A
ERR %
0
индекс цитирования
Последние публикации
Удалённые
С упоминаниями
Репосты
Emo Coder 23 Oct, 13:17
Разные сервисы в пайплайне (или как это назвать?) от постановки задачи до деплоя оперируют разными понятиями, и это невероятно бесит. Например, задача создаётся в Jira, код коммитится в GitLab, тесты гоняются в Jenkins. В итоге у нас есть как минимум три разных сущности: задача, код, результат тестов.

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

Код
Как минимум, у нас есть три сущности: ветка в гите, мерж-реквест в Гитлабе и пайплайн со ссылкамии на Дженкинс. Нахрена мне всё это? Навигация в том же самом Гитлабе вообще сделана через жопу, потому что переходишь ты от пайплайна к ветке, а в мержреквест уже нельзя. Да и как инструмент код-ревью он тоже местами так себе: "This diff is collapsed. Click to expand it." Нормально вообще? Пришёл код смотреть, а тебе ещё и развернуть всё надо.

Тесты
Тесты запускаются на Дженкинсе. Для каждого запуска есть отдельная джоба, все джобы хранятся в одном пуле без разделения по юзерам и уж тем более по тикетам. А если что-то упало в процессе сборки, то знаете, почему будет провален запуск тестов в Дженкинсе? Потому что не удалось опубликовать отчёт по тестам! И иди потом ищи в логах, что и где упало.

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

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

Кажется, что решения от одного вендора вроде Atlassian должны избавлять от такого количества сущностей. Но есть проблемка: вы видели хоть одну команду или компанию, где вся эта инфраструктура была построена на стеке одного производителя? Вот и я не видел. Всегда встречаются купленные сервисы вместе с опенсорсными поделками, которые специально обученная служба поддержки пытается подружить между собой. Почему так? Хуй его знает, экономят, наверное.

Как я это вижу
Я не хочу ничего решать, я хочу оперировать только одной сущностью.
Я хочу нажать кнопочку «В разработку» в трекере задач, а дальше магия:
1. Положить в стеш все текущие изменения
2. Создать ветку под задачу и залить в неё последний мастер (а если работаешь над задачей больше одного дня, то ещё и подливать туда мастер по утрам)
3. Заново налить БД, если в прошлой задаче были миграции (а лучше просто заново налить БД)
4. Поднять всю инфраструктуру для проекта и залогинить меня
5. Вообще топ это заодно ещё создать новые ручки API, вытянув инфу из нужных полей задачи, или запилить контейнер для нового (микро)сервиса
Читать полностью
Emo Coder 26 Sep, 12:09
У американских и канадских компаний есть три причины не звать на интервью разработчиков.
Emo Coder 24 Sep, 14:40
Вы никогда не задумывались о том, что в работе программиста занимает (почти) больше всего времени?
Например, у вас есть самая обычная задача, никакого рокетсаенса и алгоритмов из умных книг. Вот вы написали нужный ендпоинт / вьюху в приложении / ещё какую-нибудь фигню.

Дальше начинается самое интересное:
1. Пофиксить мерж-конфликты.
2. PUSH DENIED, потому что ты забыл поставить двоеточие после номера тикета.
3. Перезапустить тесты.
4. Обнаружить, что тебя опять разлогинило в дженкинсе (в гитлабе кнопку перезапуска ещё не приделали).
5. В очередной раз сбросить доменный пароль, потому что кто ж его помнит-то.
6. В дженкинсе используется ЕЩЁ ОДИН пароль.
7. Поправить опечатку после код-ревью.
8. Повторить ещё раз.
Читать полностью
Emo Coder 2 Sep, 11:58
У нас есть обёртка над docker-compose, название которой заканчивается на e, у этой обёртки есть команда bash. Каждый раз, когда я пытаюсь зайти в какой-то контейнер, а блядская клавиатура-бабочка на макбуке срабатывает лишний раз, у меня получается что-то типа docker-compose ebash, и я думаю, что ещё не все технологии проёбаны, можно работать дальше.
Emo Coder 28 Aug, 16:04
Бесит, когда одно и то же называют разными именами в разных местах.

response.status? Или, может response.status_code? А response.http_status не хочешь?
Emo Coder 15 Aug, 11:45
Вот все угорают над рекрутерамии, что те путают Java и JavaScript. Но, например, у Линкедина такой офигенный матчер навыков, который написан такими офигенными программистами, что сам путает Java и JavaScript.

Я у себя в навыках указал JavaScript, теперь на каждую вакансию с требованием знать Java показывают галочку напротив Джавы, типа нужный скилл есть, иди резюме отправляй ¯\_(ツ)_/¯
Emo Coder 12 Aug, 17:54
Emo Coder 30 Jul, 11:33
Ах, это прекрасное чувство, когда ты находишь заёбистый баг, который тебе мешает закрыть тикет. Ковыряешься с ним целый день, описываешь шаги воспроизведения, пинаешь коллег. Кто-то из них тебе рассказывает, что на улучшение этого куска проекта уже есть тикет, а ты радостный бежишь описывать всё это говно туда. Ура, спихнул баг на коллег! Ты радуешься даже больше, чем от закрытия своей задачи, потому что этот баг фиксить долго и нудно.

Через неделю та самая соседняя задача прилетает тебе ¯\_(ツ)_/¯
Читать полностью
Emo Coder 16 Jul, 15:23
Репост из: oleg_log
Хуже принужденных a/b-тестов могут быть только нерабочие a/b-тесты.

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

Аргх. ну вот зачем трогали.
Emo Coder 16 Jul, 15:23
«Ухудшающий эксперимент»
Emo Coder 17 Jun, 19:07
Плачу, вместе с тем пишу документацию в reStructuredText. Там можно пометить текст как (под)заголовок с помощью «подчёркивания»:

Headline
########

Причём, что очень важно, количество подчёркивающих символов должно совпадать с количеством символов в строке выше. Например, вот на такой код парсер выдаст ошибку:

Headline
#####

Title underline too short.

То есть, если у меня супер-длинный в штан^W^W заголовок, то я должен запилить длиннющую строку с решётками или другими символами заголовка:

Replicated Data Consistency Explained Through Baseball
######################################################

Ну как так-то, а? Хотя ладно, есть и плюсы, например, эта хрень вроде не так уж плохо смотрится даже без рендера, сразу понятно, где тут заголовки.
Читать полностью
Emo Coder 14 Jun, 16:39
— Надо приделать вот такие вот штуки, там всего одна новая моделька.
— ОК, админку под них делать? Как создавать будете?
— Да забей, руками через базу сделаем.
— А документацию надо?
— Да забей, пока в публичный доступ не выкатываем.

Через два месяца:
— Слушай, нам админка нужна.
— okay.jpg
— И не забудь про документацию!
— Ну бля :(
Emo Coder 13 Jun, 12:03
Наконец-то понял главное правило код-ревью, если пишешь на языке с динамической типизацией, на Питоне, например, или ещё каком Луа. Странно, что этого не произошло раньше, но лучше сейчас, чем никогда.

Во время ревью обращай внимание на изменения сигнатур функций. Недавно у нас чуть всё не взорвалось, потому что одна там функция стала возвращать кортеж (как это по-русски?) из двух списков вместо одного списка. Конечно, код, который это использует, не поменялся. Тесты были зелёными, потому что эта часть проекта замокана с ног до головы, и это довольно сложно покрыть на 100%.
Читать полностью
Emo Coder 3 Jun, 12:30
Emo Coder 29 May, 16:03
Десятки лет развития инструментов и отрасли нужны были для того, чтобы показывать левые подсказки в редакторе кода. Правда, #PyCharm?
Emo Coder 16 May, 18:13
Emo Coder 16 May, 15:02
Деплой нового кода у нас обычно проходит легко и без вмешательства разработчиков, но для особо заёбистых задач есть специальный тег «не катить в пятницу». Очевидно, что он запрещает катить в пятницу. Кроме того, он запрещает катить задачу, если исполнителя нет на рабочем месте, чтобы успеть быстро потушить пожар, если всё внезапно распидорасит.

#процессыёпта
Emo Coder 19 Apr, 13:18
Гвидо Ван Россум: Мы не будем делать оптимизацию хвостовой рекурсии в Питоне, потому что хотим, чтобы стектрейсы были понятными.

Тоже Гвидо:
Emo Coder 12 Apr, 19:27
Делаешь ручку (да, вы всё правильно поняли) апи, тестируешь на локалхосте, на стейджинге, всё ОК. Ручка-то простейшая — взять данные из таблицы и отдать в джсоне. Отдаёшь на ревью, там тоже всё в порядке. Тестирование тоже на ура проходит.

После деплоя, через N дней, когда нашёлся единственный человек с нужным правом, прилетает ошибка: «SELECT command denied to username»
Emo Coder 9 Apr, 13:35
Магия Эпл: из макбука торчит донгл, к нему подключен лайтнинг. Включаю туда кейс от эирподсов, он не заряжается. Отключаю и подключаю снова, кейс начинает заряжаться ¯\_(ツ)_/¯