Blog

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

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

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

    Кажется, чтобы сэкономить на разработчиках нужно брать в команду джунов. Кажется — но нет.

    – Качество работы не дотягивает.
    – Скорость работы не прогнозируемая — джун застревает в любом месте.
    – Требуют квалифицированного наставника. А его время дорого, ведь наставник — хороший разработчик.
    – За ними приходится исправлять код старшим разработчикам.
    – Хотят “айтишную” ЗП и немедленно. Ведь на продаже курса обещали сотни тысяч!
    – Воспринимают нашу компанию как ступеньку и быстро уходят.

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

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

    Зачем и когда можно брать джуна в команду, расскажу в следующем посте.

  • QWERTY — чтобы ты медленно печатал

    QWERTY — чтобы ты медленно печатал

    QWERTY — чтобы ты медленно печатал.

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

    Что смещает SHIFT? Он приподнимал литеру — металлическую лапку с буквой — и она била по бумаге заглавной версией символа.
    Что блокируют клавиши Lock? Caps Lock на печатной машинке фиксировал механизм в режиме заглавных букв — лапки всегда били верхней частью.
    Enter — символ из стрелки вниз, а затем влево — обозначает перевод бумаги на новую строку. Отсюда и странная форма этой кнопки на большинстве клавиатур. Такой кнопки не было — был рычаг возврата каретки: движение вниз и влево, чтобы перевести бумагу на новую строку.
    Backspace — возвращал каретку на символ назад. Delete придумали позже — на печатной машинке ничего не удалить. Поэтому её отправили в дополнительный блок клавиш.

    Каждое нажатие на клавишу с буквой выдвигало механическую “лапку”, на конце которой находилась буква. Лапка била по чернильной ленте, оставляя отпечаток буквы на бумаге, а затем возвращалась на место. Если вы освоили печать на машинке и начали набирать текст достаточно быстро, то некоторые лапки не успевали вернуться на место и цеплялись за лапку, вылетающую из соседней позиции. Так производители печатных машинок догадались разместить часто встречающиеся сочетания букв подальше друг от друга, чтобы механические лапки не застревали.

    Как можно догадаться, “пробег” пальцев при наборе текста был искусственно увеличен. Позже придумали альтернативные раскладки, где всё было логично и удобно. Самая популярная из них — раскладка Дворака. В любой операционной системе можно переключить клавиатуру на Dvorak, но купленная серийная клавиатура всё равно будет с qwerty-гравировкой.
    За десятилетия все привыкли к QWERTY — и смена раскладки для производителей оказалась слишком рискованной. А мы потеряли скорость набора и обучаем следующие поколения на “плохой” раскладке.

    А как быстро и точно вы набираете текст? Проверить можно на сайте https://monkeytype.com/
    Присылайте ваши результаты в комментарии!

  • Пройти Тест Джоэля

    Пройти Тест Джоэля

    В 2000 году Джоэль Сполски — сооснователь StackOverflow и Trello, написал список из 12 вопросов, известные как Тест Джоэля. Часто ссылаюсь на этот тест, поэтому прокомментирую эти вопросы.

    1. Используете систему контроля версий?
    Кажется, что git — уже обязательная вещь. Но до сих пор встречаются проекты без системы контроля версий.
    Для тех, кто уже использует, вопрос всё ещё актуален, но теперь звучит так: Вы действительно используете систему контроля версий? У вас есть стратегия ветвления, процедура слияния веток, понятные правила для работы с репозиторием?

    2. Сборка проекта происходит в один шаг?
    Проект должен собираться в 1 команду и она должна быть написана в readme. Если для запуска проекта требуется поставить несколько сервисов, иметь нужную версию компилятора и запущенную базу данных — стоит прописать все эти зависимости в docker-compose и запускать одной командой. После прихода виртуализации оправданий для многошаговой сборки и зависимости от среды больше нет.

    3. У вас настроен CI/CD?
    В оригинале Джоэль говорит про daily build — оперативная сборка софта каждый день. Сейчас в большинстве команд нет нужды синхронизировать код раз в день, можно делать это автоматически каждый раз, когда код попадает в репозиторий.
    Настройте автоматическую сборку и выкатку приложения на тестовый сервер.

    4. У вас же есть база багов? Правда?
    Громоздкая Джира не единственный вариант. Эксель тоже подойдёт! Если у вас есть общий зафиксированный список проблем, вы можете с ними работать и планировать их устранение.

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

    6. У вас есть план работ со сроками?
    План, который знают все и который связан с реальностью. Roadmap, этапы или просто дата, в которую надо запуститься.
    Работа ведёт себя как газ — занимает всё выделенное время. Ставьте сроки.

    7. У вас есть спецификация?
    Банально, но без ТЗ результат ХЗ. Сейчас не нужно писать исчерпывающее финальное тех задание — требования поменяются по ходу разработки. Достаточно написать концепцию, сделать прототипы, записать user story и опубликовать. Задачи тоже нужно записать и поставить в трекер.

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

    9. У разработчиков лучшая техника и инструменты?
    Быстрый комп, 2ой монитор, современный софт, быстрые серверы — стоят копейки относительно времени программиста. Планка памяти стоит как час работы разработчика. Ускоряйте их всеми доступными способами, это очень дёшево.

    10. У вас есть тестировщики?
    Если баги ищут только разработчики — значит, баги находят пользователи.
    Менеджеры и программисты проверяют, что код работает. Тестировщики проверяют, ищут где он не работает. У вас должен быть хотя бы 1 тестировщик в команде на нескольких разработчиков.

    11. Пишут ли кандидаты код на собеседовании?
    Это единственный пункт, с которым я сейчас не полностью согласен в его изначальной формулировке. Изучить код и мышление кандидата на собеседовании получится, а вот показать реальные навыки в стрессовой ситуации собеседования — вряд ли. Мой рецепт — выводить подходящих кандидатов на тестовую неделю и смотреть совместимость без давления в реальной обстановке.

    12. Вы делаете usability тесты на добровольцах?
    Соберите группу для тестирования. Первые 5 случайных пользователей укажут вам на 95% проблем. Находите этих пользователей и проводите тестирование до большого релиза. Это дёшево и просто. В оригинале предлагается поймать добровольца в коридоре компании, но сейчас эра удалёнки — найдите их онлайн.

    Если вы фаундер или руководитель и у вас есть ответы “Нет” — их точно стоит обсудить с командой.

  • Internet Relay Chat

    Internet Relay Chat

    В эпоху web 1.0 не было социальных сетей. Сайты смотрели и читали, а основным местом для коммуникации были онлайн-чаты.

    Чаты в IRC очень напоминали сегодняшние чаты в Телеграме.
    Справа список пользователей. Текстовые сообщения от разных пользователей бегут на экране.

    Любители ходили в чаты через сайты, а профессионалы сидели через IRC-клиенты — специальные программы. Зная адрес сервера, можно было подключиться и попасть в любой канал по интересам. Чаты были источником всего. И были “закрытые” серверы и чаты по приглашениям. Специальные боты хранили любые файлы, запросить которые можно было в переписке. Пишешь боту в личку !list — он присылал список файлов, а !get — начинал закачку.

    В нулевых из чатов я качал всё то, чего было не достать в обычном вебе. Софт, музыка, видео.
    Чтобы скачать альбом в mp3, нужно было провести на телефонной линии на скорости 33.6 kbps целую ночь. Что не помешало мне послушать первый альбом Linkin Park или новый альбом Metallica за месяц до его выхода в магазины.

    Шли годы, основным каналом общения стал ICQ и форумы, а про чаты большинство людей позабыло. Одно время чат был синонимом дурного вкуса — завсегдатаи чатов были сродни любителям общаться по смс в телеэфире.

    Но вот прошли годы и в 2025 году Телеграм удивительным образом напоминает тот самый IRC из 2000 года. Мы пишем в чаты и задаём цветовые предпочтения в клиенте. Добавились только стикеры — как в MSN, и эмодзи — как в ICQ.
    Мы снова вернулись к основам?

  • Клуб для директоров диджитал-агентств

    Клуб для директоров диджитал-агентств

    Отраслевой клуб Галера — лучшее, что со мной случилось за последние пару лет в профессиональном плане.

    Если так уж случилось, что у вас агентство и (вероятно) есть психологические расстройства из прошлого поста. То лучше всего объединиться с такими же пациентами и вместе проживать этот опыт.

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

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

    Запишитесь на экскурсию в клуб и присоединяйтесь к сообществу!

  • Если у вас агентство, то

    Если у вас агентство, то

    Если у вас агентство, то на сессии у психотерапевта стоит обратить внимание на один из двух факторов.

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

    2. Холодный родитель. Если один из родителей был холодным, вы могли привыкнуть добиваться любви через успехи и работу на износ. Расшибаетесь в лепёшку, чтобы вас заметили и похвалили? Но любовь за успехи не выдают.

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

    Но если это ваш случай — с вас пять тыщ.

  • Задача про византийских генералов

    Задача про византийских генералов

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

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

    Это и есть задача, которую решает блокчейн: как договориться, если нельзя доверять каждому сообщению?
    Отсюда происходит триллема блокчейна — сложно совместить все три желаемые свойства: децентрализацию (все армии равны, нет главного), масштабируемость (чем больше армий, тем сложнее договориться) и безопасность (решения нельзя подделать).

    В реальном мире решается через компромисс:
    – Безопасно и децентрализовано — но медленно (Bitcoin, ранний Ethereum до L2).
    – Быстро и безопасно — но большая централизация (Solana).
    – Быстро и масштабируемо — но легче атаковать систему ложными сообщениями (корпоративные блокчейны, BSC).

    Новое поколение блокчейнов (Cosmos, Avalanche, Polkadot, TON) пытаются обойти триллему за счет разных технологических ухищрений и разделения задачи на части. Победителя пока нет — и, возможно, не будет: разные задачи требуют разных компромиссов.

  • Печеньки в браузере — зачем они и почему нас о них предупреждают?

    Печеньки в браузере — зачем они и почему нас о них предупреждают?

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

    Куки пришли в браузеры в конце 90-х ради создания привычной нам корзины в интернет-магазинах. Сайт выдавал номер корзины пользователю. А после загрузки следующей страницы читал куки и находил корзину пользователя.

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

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

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

    Законотворцы узнали про это безобразие и начали выпускать законы 🤦‍♂️. Теперь мы смотрим на предупреждения, которые обязаны вешать владельцы сайтов, что они используют куки. Даже свои собственные — белые и пушистые — для запоминания вашей корзины. Но даже если предупреждения нет — куки вы, скорее всего, всё равно получите 👿.

    Проблема должна решаться технологически на стороне браузера.
    Safari, Firefox, Brave и Edge уже частично блокируют куки сторонних сайтов. Chrome блокирует их пока только в режиме инкогнито, ведь больше всего от этой технологии зарабатывает разработчик Chrome — Google 🙈.

    Когда браузеры договорятся — предупреждения о кукисах уйдут в историю. А пока — терпим.

  • Горшочек с мёдом

    Горшочек с мёдом

    Honeypot — в переводе с английского “горшочек с мёдом”. Красивое и безобидное название, которое в веб-разработке обозначает хитрую ловушку. Ловим роботов! Ловим в естественной среде обитания — на нашем сайте, на самую обычную форму регистрации, комментария или обратной связи.
    Обычный пользователь видит свою обычную форму:
    Имя: ____________
    Email: ___________
    Ваш комментарий: ____________________

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

    Попался!
    Мы его игнорируем: заполненная форма уничтожается, письма не отсылаются, аккаунт не регистрируется. Спам не прошёл!

  • К недавним воспоминаниям про ZX Spectrum добавились свежие новости и неизвестные факты

    К недавним воспоминаниям про ZX Spectrum добавились свежие новости и неизвестные факты

    К недавним воспоминаниям про ZX Spectrum добавились свежие новости и неизвестные факты.

    В 1980-х игры и программы можно было получить по радио! Буквально записать FM-эфир на аудиокассету. Такие передачи выходили на BBC и других национальных радиостанциях по всей Европе.

    Поскольку версии языка BASIC отличались на ZX, Commodore, Atari и других платформах, был создан универсальный стандарт BASICODE. В этом формате шло вещание. Для воспроизведения таких записей нужно было вначале загрузить BASICODE, а затем записанную программу.

    В мае 2024 года игру для ZX Spectrum вновь передали в эфире Словенского радио.

    А в октябре 2024 вышел документальный фильм про историю ZX Spectrum “Чудо с резиновыми кнопками”, деньги на съемки которого собрали на Кикстартере.

    Интересные ссылки:
    – BASICODE на Wikipedia
    – Новость об эфире с игрой
    – Фильм The Rubber-Keyed Wonder (англ.)
    – Фильм Чудо с резиновыми кнопками (перевод на русский язык)