будни

Жутко разозлился сегодня на гостя во время интервью для подкаста. Я спросил о деньгах, и от того, что и как ответил гость, меня просто вынесло. В самом начале 2-часового интервью. Конечно, гостю я это прямо не высказал (это всё-таки не психотерапия, да?!) и весь первый час терял время.

Формально я задавал вопросы, гость типа отвечал, слова говорились, но гость не раскрывался, истории не рассказывал.

Через час я зафантазировал, а как бы он вёл себя у Дудя, типа «гость хреновый, даже Дудь бы не справился» и вдруг представил лицо Дудя, с каким интересом и принятием он смотрит на своих гостей (ну, обычно).

Тут у меня что-то кликнуло, я понял, что дело не в плохости гостя, а в том, что я не принимаю его. Более технически — что-то из того, что он сказал, так сильно срезонировало во мне, мне стало так больно, что я защитился от этого, от него, отгородился.

И произошло чудо. Я слова не сказал (думаю, я изменился в лице), как гость ожил — у него изменилось лицо, он начал говорить с интересом, рассказывать истории. Интервью заработало!

Про чувства может показаться очень абстрактной, даже эзотерической материей, но «работает или не работает интервью» — штука объективная, четко видная.

Выводов у меня куча, но оставлю их при себе, хочу просто поделиться историей. Уж очень она меня впечатлила.

Помните, телеграм объявлял конкурс на лучший Instant View Templates для тысячи сайтов? Они всё никак не предоставят результаты и не запушат эти шаблоны в продакшен.

Пока что, единственный способ показать свои страницы в Instant View — запостить их по хитрой ссылке t.me/iv?url=...&rhash=.... Именно так мы и хотим сделать для запуска красивой «Вечерней Медузы » в телеграме. На конкурс прислали почти 150 шаблонов, казалось бы — бери и пользуйся хоть сейчас. Проблема в том, что rhash шаблона знает только его создатель.

Уважаемые авторы, подавшие свои шаблоны на конкурс — скиньте мне свой исходный код, пожалуйста. Приславший лучший шаблон до завтрашнего вечера (18:00 по Москве) получит неизменную бутылку рижского бальзама и мега-набор стикеров (физических, не телеграмных).

Проверить свой шаблон можно на тестовом материале: https://meduza.io/brief/2017/07/17/testovaya-vechernyaya-meduza-so-vsemi-vozmozhnymi-vyrazitelnymi-sredstvami

Говорил только что с потенциальным клиентом. Супер горячий стартап, сид-инвестиции от Sequoia Capital и тд и тп. Это тот самый выход на западный рынок, о котором мы давно с Федей мечтаем. К огромному сожалению, судя по всему, откажу — не хватает рабочих рук и голов. Скидывать старых клиентов, потому что появились более заманчивые — губительно для репутации. Так что этот пост — крик души о хороших программистах.

Знакомые эйчары создали фейковый профиль «обычного программиста». За неделю он получил 400 откликов. Хороший программист может получить около 100 откликов на своё резюме в день. Программисты после онлайн-курсов получают офферы на 2.5 тысячи долларов в месяц. Этот мир положительно сошел с ума.

Мы, при этом, почти никогда не берем на работу программистов, которые не могут показать свой «боевой» исходный код или не готовы выполнить тестовое задание. Может показаться, что это пир во время чумы, но Федя твердо стоит на своём и я ему доверяю.

Причина простая: мы не придумали, как проверить на собеседовании, что программист умеет а) думать о бизнес-ценности задачи б) писать поддерживаемый код в) выполнять обещания. Вот и приходится отсекать 95% кандидатов на входе. Из оставшихся 5%, редкие могут успешно выполнить тестовое задание. Но каждый, кто прошел тестовое — бриллиант. Вот из таких бриллиантов мы и собираем команду, которая работает без менеджеров. Собираем медленно, но верно.

Если вы прогаете на питоне и хотите попробовать свои силы — вот Федино тестовое. Ответы и небольшой текст о себе пишите Феде на почту [email protected]. Если вы человек с опытом и можете показать свой код — пишите тоже, пожалуйста. От нас: супер проекты, достойная оплата и хорошие рабочие условия — свободный график, асинхронная коммуникация и прочая работа здорового человека.

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

Продаю классный VPN для бизнеса за 300 тысяч рублей в год.

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

Работает VPN на Windows, Mac, Linux, телефонах и планшетах Android и iOS, программа устанавливается по ссылке, справится каждый.

У вас будет панель управления, в которой вы сможете сами создать/удалить ключи доступа и раздать их друзьями и коллегам. Подсмотреть, кто что смотрит в интернете — не получится, нет такой технической возможности. Администратору виден только объем переданной информации, тревожные коллеги могут спать спокойно.

Ограничение на объем переданных данных — 20 терабайт в месяц. Чтобы использовать весь этот объем, нужно 12 людям непрерывно весь месяц смотреть ютуб в высоком разрешении или 180 людям — по 2 часа каждый день. В общем, это — много, практически неограниченно.

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

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

Похвастаюсь, что мы с Федей наконец-то наняли ассистента и поделюсь одной стыдной тайной.

У Феди все задачи для ассистента «нормальные» — делегирует документооборот в «школе сильных программистов» и т. д.

А мне, кроме выполнения «стандартных» поручений, нужна ещё такая помощь, которую мы с Федей в шутку называем «бэбиситтинг» («няньчиться» по-английски).

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

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

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

Так вот, знайте, если у вас похожая трудность — вы не одни; это может и не нормально, но мы с этим живем и ОК. Такой вот каминг-аут 🙈

Rawg.io ищет третьего фронтенд-разработчика. Ключевые слова: React, микрокоманды, Remote.

Мы делаем лучший сайт про видеоигры; у нас есть IMDb-часть со страницами игр и социальная часть, где можно собирать коллекции, писать обзоры и подписываться на похожих игроков. В ближайших планах дать возможность редактировать страницы игр обычным игрокам прямо на сайте (сейчас используется внутренняя админка) и прокачать SEO.

Под капотом это респонсив SPA React приложение с SSR. JS потребляет красивое REST API, которое готовится бэкендерами на Python (Django DRF) специально для сайта.

Мы работаем по модели Basecamp: в начале 2-4 недельного «цикла» микро-команда — фронт + бэк и дизайнер получают хорошо сформулированную бизнес-задачу с примерными макетами, а дальше мы минимально дергаем команду разработки, чтобы не отвлекать и не мешать. Коммуникация происходит в Basecamp и немного в Slack, все Remote.

Codebase свежий (первый коммит два года назад) и написан хорошими разработчиками, жесткого легаси или костылей там, пока, нет. Github, ci, рабочее окружение разворачивается одной npm-командой. Подключен линтер, в проекте настроен webpack, начали писать тесты, используется связка Redux + Recompose. Верстка: stylus, flexbox, css grids, bem. Дизайнеры и даже продакт раньше верстали, так что понимают ценность переиспользования компонент и естественные ограничения веба.

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

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

Пишите на [email protected] или @samatg в личку.

Как не уронить свой сервис под нагрузкой, на примере Signal.

Люди массово переходят из вацапа в Signal. Серверы Signal не выдержали и совсем лежали почти 14 часов, а испытывали серьезные трудности больше суток. Не лучшее время, чтобы падать :( Официальный твиттер сигнала при этом хранил молчание, будто это не модный стартап, а какая-то древняя корпорация. Жаль. Надеюсь, позже они опубликуют подробный разбор, что случилось.

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

В одном проекте именно так мы и сделали. Всё было хорошо, пока серверу не стало плохо на пару минут. Если обычно на сервер приходили 100 запросов в минуту (полтора запроса в секунду), то за три минуты скопились 300 запросов и теперь, стоило серверу очухаться, как ему насыпали все 300 запросов в одну секунду. То есть для сервера это выглядело как рост нагрузки в 200 раз и он опять ложился под нагрузкой. Очень неприятная ситуация. Мы сами себя задидосили, своими же собственными мобильными приложениями. 🙈

Есть две компоненты решения этой проблемы:

🛑 Первая: сервер должен уметь ответить «довольно!», и клиенты должны перестать повторять запрос, если получили такой ответ. Интересно, что именно этой функции в Android-клиенте Signal не было и они добавили её во время аварии.

⏱ Вторая, более сложная и интересная, но тоже классическая: exponential backoff (экспоненциальная задержка). Идея очень простая: если сервер не ответил в первый раз — ждем 1 секунду и повторяем запрос. Во второй раз — ждем 2 секунды, в третий — 4, в четвертый — 8. То есть с каждой неуспешной попыткой, даем серверу больше времени прийти в себя. У Signal эта функция реализована, но во время аварии они добавили jitter — небольшую случайную задержку, чтобы клиенты не набегали на серверу толпой, через одинаковые интервалы времени после его падения, а нагрузка была более плавной. Обычно, в этом же коде реализуют ещё паттерн circuit breaker, когда после определённого числа ошибок «выбивает пробки» и запросы прекращаются совсем.

Используйте оба приема и будьте здоровы!

💭 Есть твит и телеграм-пост в популярном канале, в которых утверждается, что причина падения сигнала — в само-дидосе (мол, анекдот). Это маловероятно. Во первых, exponential Backoff в сигнал внедрили больше 2 лет назад и он здорово распределяет нагрузку; во вторых, изменения коснулись только Android клиента. Не верьте советским газетам, читайте первоисточники.

Новости бизнеса: договорились cделать аудит крупного клиента. Индустрия, о которой я давно мечтаю, и задача интересная — будет о чем рассказать детям потом. Ну и вам похвастаться.

Это корпорация, так что всё согласуется-пересогласуется. На последнем этапе, договор заметил генеральный директор и чуть не завернул буквально формулировкой «что это за Федя и Самат и зачем они нам нужны?!». Пришлось объяснять. Контрагент предлагает переименоваться в ООО «Техэкспертиза». Говорит, так будет меньше проблем.

Завести второе юрлицо, специально для работы с корпоратами? 🤔

P.S. В чате советуют «МосГлавТехЭкспертиза»! 🎩

Какое имя самое солидное?

Техэкспертиза25%
ГлавТехЭкспертиза12%
МосГлавТехЭкспертиза12%
РосГлавТехЭкспертиза51%
4 064 ответов

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

Предлагают прислать свою интерпретацию законов, если мы считаем, что это ошибка.

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

А ещё я сегодня узнал, что в Mattermost есть целый отдел соответствия экспортным ограничениям. Вот, видимо, 3 месяца анализировали законы и пришли к новым выводам.

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

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

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

Вопросы, на которые я стараюсь ответить в тексте:
- для чего вы ищете человека
- с кем он будет работать
- кто будет пользоваться результатом его труда
- сколько вы хотите платить за работу
- есть ли какие-то особенные условия, о которых стоит знать?

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

Вот пример вакансии до и после редактуры.