Тьюринг-полные круды

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

Беспомощность

Обычно у разработчиков не возникает проблем с решением задач. Поисковики, стековерфлоу, куча мануалов, в принципе все типовые задачи уже давным-давно решены, а нетиповые — так их делают опытные люди. За всю карьеру полностью прочувствовать свою беспомощность и неспособность справиться с задачей меня угораздило только один раз (ну и еще было много других мелких случаев, когда просто задача давалась тяжело, но удавалось как-то разрулить). Дело было в 2009-2010 году — работал я значит в корпорации, подпиливал свой маленький (тогда) продукт, в ус не дул.

О работе над продуктом

Почти всю свою карьеру я так или иначе занят в продуктовой разработке. Помимо продуктов я делал собственно демо-проекты и разнообразные прототипы других продуктов. На старой работе у нас был такой термин “продуктизация”. Это когда бралось решение, сделанное кастомного под определенного заказчика, творчески переосмыслялось и впихивалось в продукт. Идея была в том, что эта кастомная функциональность могла бы пригодиться кому-нибудь в будущем. Одной из моих задач, как технического руководителя одного из продуктов, было отбиваться от запросов на такие всякие разные продуктизации.

Производительность веб-сервисов

До сих пор люди иногда спорят о скорости программ, написанных на том или ином языке или платформе. Хотя тренд значительно пошел на убыль и редко где услышишь “Java тормозит” или “1 000 000 конкуррентных подключений на node.js” но время от времени все равно этот вопрос подымается. Так вот. У меня в продакшене уже несколько лет крутится куча сервисов, часть на JVM, часть на Rails, часть на Python, часть на PHP, парочка на node.

О стеклянном потолке 3. Оффлайновый бизнес

Предыдущие части: первая, вторая. Многие люди ненадолго погрузившись в сладкие обещания, которые нам вещают со страниц книг, буллитов презентаций, сцен залов всевозможные бизнес-тренеры, рано или поздно задумываются о своем деле. В качестве такого “своего” дела часто выбирается какое-то оффлайновое предприятие — магазинчик китайского барахла, фургончик с фастфудом, СТО или похожие активности. Будущие бизнесмены мечтают о том, как они вложат десяток тысяч баксов, поставят все процессы на поток, а сами укатят на #сказочноебали лежать на пляже и любоваться закатами.

Вранье на собесах

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

Почему нужно нанимать джунов

Я горячий сторонник найма джунов. Нанимал кучу джунов когда работал в большой корпорации, а потом нанимал уже к себе в компанию и платил им из своего кармана. Сейчас не нанимаю, потому что работаю практически сам, да и карманы опустели 😄 Убежден, что любая контора, которая зарабатывает хоть какое-то бабло просто обязана нанимать джунов, и вот почему. Улучшение и формализация процессов. Когда у вас на борту не самые опытные бойцы, такие вещи как CI/CD, статические анализаторы кода, тесты, код ревью и автодеплой становятся просто обязательными.

Идеальный джун

За свою карьеру я нанял большое количество нулячих джунов (без предыдущего опыта). Человек 20 точно будет, не меньше, а то и все 30. Соответственно просмотрел я далеко за сотню разных людей. Довольно давно я сформировал как говорят на западе highly opinionated профиль кандидата согласно которому я автоматически дискриминирую и отсекаю целую толпу народа. Кто же это? Обязательно студент/ка 3-5 очного курса профильного технического факультета. Разнообразные АСУ, ВТ, АУТС, кибернетики, автоматики, безопасность и прочие компьютерные науки.

Зарплата джуна

Сколько денег платить джуну? Сколько денег просить джуну? Я был (и являюсь, лол) сооснователем небольшой аутсорс шлюпки на 10 гребцов (в пике, сейчас уже почти никого не осталось). Большинство из них были джунами, которых я брал вообще без опыта работы. Сколько же платить таким ребятам? Джун — в первую очередь затраты для компании. Наиболее ценный ресурс, который они отъедают — это время более квалифицированных специалистов. Первые несколько месяцев любой джун работает в минус, потому что задачи которые раньше делались быстро и качественно теперь делаются медленно и не очень (требуют правок) или не делаются вообще.

Вакансии в поверпоинте

Время вот времени получаю от рекрутёров предложения в виде ссылки на документ с вакансией. Часто это гугл-док на страничку — удобно для рекрутёра и для нанимателя, они могут одновременно редактировать вакансию и не нужно перекидываться друг в друга правками в мессенджерах и почте — сам так делал. Неудобно для кандидата — открывать ссылку, читать чё-то там, что за дичь? Абсолютно все(!) требования к любым вакансиям легко умещаются в абзац-другой неформатированного текста и могут быть озвучены еще в первом сообщении от рекрутёра, но это же слишком просто для такой тонкой вещи как найм околотехнарей и мозг начинает работать в стремлении раскатать потенциальных кандидатов оригинальностью подачи.

Переключение раскладки клавиатуры 2

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

Переключение раскладки клавиатуры 1

Нам ужасно не повезло — в наших странах используются кириллические шрифты, в то время как в огромной части остального мира — латинница. Приходится держать две раскладки, но мне (и многим другим) не повезло еще больше — половина всего, что я выстукиваю кириллицей — на украинском, поэтому добавляется еще и третья раскладка. Дефолтный вариант с ctrl+shift который нам предлагает Шиндовс, неустойчив к ошибкам. За многие года я так и не научился запоминать, сколько раз мне нужно нажать комбинацию, чтобы переключить раскладку — нужно постоянно смотреть на иконку в трее, это сбивает фокус и снижает скорость печати, особенно если в речь нужно вставлять всякие технические термины на английском.

Фуллстек. Фронтенд для бекендеров 6

Предыдущие серии: 1, 2, 3, 4, 5 Итак, нам нужно было сделать админку. Для этого мною был прособеседован и нанят Rails джун, и мы приступили. Для Rails есть много разных админок, но все они проигрывают по красоте AdminLTE, поэтому, после пары дней исследований было решено велосипедить свое решение, без хитрых генераторов, а для стилей взять вышеупомянутый AdminLTE. Буквально через неделю у нас уже была вполне работающее приложение с базовыми функциями. К таблицам были прикручены сортировки и стили, пагинация, формочки и так далее.

О работе с мудаками 1

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

VR для нищих

Ходили сегодня в VR-“салон” (не знаю как это правильно назвать). Короче такое место в трц, там сделаны такие “клетки” из дерева 2х2 метра, висят окулусы/htc на подвеске сверху, чтобы провода не путались (на вайфай не хватило денег или не рентабельно), дают в руки контроллеры и вперед. Перед этим я был в VR год назад в квест комнате. Там был сидячий вариант (садишься в кресло и не двигаешься, только вертишь головой и руками), зато с трекингом рук, но даже этот простой квест (чё-то там в космосе, надо короче ядерный реактор спасать от взрыва), оказал на меня неизгладимое впечатление.

О сломанных авто/интеграционных тестах

Люблю тесты. Особенно интеграционные или авто (те которые в браузере кликают). Запустил — и сидишь смотришь как у тебя все красиво и все работает. Одна проблема. Такие тесты всегда сломаны. Всегда, просто всегда. Конечно, поначалу, пока сценариев мало, то все красивое и зелененькое. Но как только продукт становится чуть более сложным чем сайт-визитка с формой контакта, то моментально наступает коллапс. Длительность прохождения сценариев увеличивается экспоненциально, количество мест отказа в распределенной системе и комбинаций сбоев разных подсистем так же растет, в итоге мы имеем по факту тесты которые могут сказать только “не работает вообще ничего” (логин отвалился) или требуют квалифицированного QA для анализа того, что же действительно упало.