будни

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

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

У Чайки десяток больших информационных систем: ядро — Медицинская Информационная Система, в которой врачи ведут медицинские карты пациентов, лабораторная система для обмена данными с лабораториями типа Invitro, продвинутый модуль BI для анализа финансовых показателей и тд. А ещё у них есть амбиция продавать свои технические решения на международном рынке.

Большую часть этих систем Чайка программирует инхаус командой из 15 программистов, тестировщиков и 3 продакт-менеджеров. Nodejs, php, typescript, postgres — современный стартап, но в отличие от обычного стартапа, если наши системы упадут, то 600 врачей не смогут эффективно лечить людей.

Нас с Федей позвали, потому что исторически в Чайке не было компетенции управления разработкой и команда перестала справляться с объемом хотелок бизнеса. Классическая история: со временем вырос и техдолг и скоуп.

В мае мы подключили несколько своих программистов и сейчас готовимся к запуску первого совместного продукта — AstraShare. Это модуль, который позволяет делиться частями медицинской карты пациента со внешними врачами в электронном виде; например, когда нужно отправить клиента на операцию или для получения второго мнения. В отличие от остальных систем Чайки, модуль построен на основе международного стандарта FHIR.

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

Самый кайф — в сути того, что мы говорили, заперевшись в переговорке на полтора часа вместо запланированного часа. Как рубились по фактам, ругались и даже кричали, не понимая друг-друга (ок, кричал я один), а в результате — разобрались и договорились, как работать дальше вместе. Обожаю личные встречи, никакой зум не заменит ❤️

Кстати, мы ищем технического директора в Чайку, вот вакансия. Рекомендую.

Через несколько недель у нас большой запуск — технический перезапуск платформы онлайн-образования курсов подготовки к ЕГЭ Вебиум. Мы работаем над ним почти год и это большой и сложный проект, которым хочется хвастаться и делиться опытом.

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

Нам с Федей часто заказывают разработку медиа: в сентябре перезапускаем одно известное российское общественно-политическое издание и на днях начинаем работу над медиа для крупнейшего ритейлера.

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

- это и обычный сайт, в нем важно понимать, что подавляющее большинство просмотров будет с телефонов, а не с компьютеров, где обычно проверяют свой сайт сами редакторы:)
- и мобильные приложения — всё ещё удобнее иметь на рабочем столе иконку, это повышает открытия и прочитывания в десятки раз, ядровая аудитория;
- и разные системы доставки контента типа Instant Articles в Фейсбуке, Instant View в телеграме, Яндекс Дзен, Google News и другие — в них обычно нужно отдавать специальные RSS потоки;
- соцсети — чтобы не заливать посты в каждую соцсеть отдельно, а иметь единый центр управления полетами.

Сегодня я хочу поделиться советом про админку. Помню, мы произвели небольшой фурор в медиа-сообществе, когда в 2015 году рассказали про Монитор — внутреннюю админку Медузы. За годы он вырос в сложный и богатый инструмент, которым пользуется только одна редакция. К счастью, в 2022 можно получить 90% удобства и функциональности крутой медиа админки за 10% усилий.

Секрет в развитии headless CMS — это движки админок сайтов разной степени готовности. Помните про разделение на админку и пользовательскую часть? Речь ниже только о движке админки.

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

Яркий представитель первого класса, когда тебе дают сразу готовый продукт — это Contentful. Стартап стоимостью 3 миллиарда долларов, через админку которого управляют своими сайтами Disney, Atlassian, SAS и многие другие. Не удивляйтесь, крупные сайты компаний сравнимы с медиа.

На другом конце спектра — Sanity. Это серверное API и набор React-компонент, из которых можно собрать очень мощную медиа-админку буквально за несколько дней без участия бэкенд-разработчиков. Мы успешно использовали его уже в нескольких проектах для клиентов, горячо рекомендую.

С любым внешним инструментом нужно подумать о том, что будет, если он вдруг отключится (привет, санкции), сломается или закроется. Вероятности таких рисков и способы страхования от них — очень индивидуальные. Не возьмусь рассказать о них коротко здесь, но поделюсь таблицей сравнения разных CMS-ок, которую мы составляли примерно год назад для одного из клиентов.

Если хотите сделать новое медиа быстро и качественно или перезапустить существующее — обращайтесь ко мне, мы с Федей берем новых клиентов.

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

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

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

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

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

Раз уж про мессенджеры и работу: на прошлой неделе главный рабочий мессенджер Slack объявил о повышении цен: c 8 долларов в месяц за сотрудника до 8,75$.

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

Почти вся наша рабочая коммуникация — асинхронная, в Basecamp. Стоит Basecamp 99$ в месяц вне зависимости от числа проектов и сотрудников.

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

Я переводил несколько команд в Basecamp и хоть это и не просто, результат того стоит.

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

Картинка из 2015 для разрыва шаблона.

Мы с Федей собрали команду мечты.

Фронтендер, который руководил проектами, пока мы не наняли двух отличных менеджеров — ✅. Бэкендер, бывший техдир — ✅. Фулстек-разработчик, бывший CPO в стартапе — ✅. Архитектор, который вытаскивает требования из бизнеса лучше психоаналитика — ✅.

Главное — все ребята пытаются решить проблемы бизнеса наших клиентов с помощью кода (в идеале — без кода), а не просто программируют.

Обычно, в аутсорсе таких сотрудников нет, а в любой продуктовой компании они были бы «офигеть чувак тащит». За некоторыми из ребят мы охотились больше года.

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

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

Вообще, ситуация с разработкой после начала войны изменилась.

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

Я слышал о сокращениях в хороших аутсорс-студиях и в крупных компаниях с большим IT — это внушает опасения.

У нас, слава богу, поток входящих клиентов больше, чем хватает ресурсов, но я всё равно на стреме — вдруг будет накладка и не сможем платить зарплаты? Успокаиваю себя тем, что в крайнем случае так и напишу здесь, мол так и так, можем взять проект в ближайший месяц и наверняка найдется желающий 🙈

С командой из 13 человек, сейчас мы ведем четыре активных проекта.

1. Заканчиваем полный технологический перезапуск Вебиума — лучшей онлайн школы подготовки к ЕГЭ. В отличие от других школ, её выбирают сами подростки. Задача образовательного движка: чтобы школьникам было удобнее учиться, а наставники и преподы успевали больше, но ошибались и уставали — меньше. Это большой и старый Ruby-монолит, который мы бесшовно перезапускаем на новом стеке. Мы уже перезапустили сайт с продажей курсов, в сентябре запуск новой образовательной системы. Проект длится почти год, перезапуск живого сервиса — это очень сложная задача, в сентябре отчитаюсь подробнее.

2. Запускаем новое медиа с нуля за 3 месяца. Надеюсь, что когда-нибудь смогу назвать его имя и похвастаться. Это уже второе медиа, которое мы запускаем с Федей технически в последние полгода, так что буквально «набита рука» :)

3. Ведем разработку нескольких модулей «Чайки». Чайка — это сеть клиник доказательной медицины. А ещё это IT-стартап, который делает свою собственную Медицинскую Информационную Систему, в которой хранится вся информация о пациентах. Каждый день в ней работают более 600 сотрудников клиник. Здравоохранение — огромная индустрия, в которой непочатый край работы для IT и разработки. Нам крупно повезло с заказчиком — мы встроились в продуктовую команду Чайки и с их помощью разбираемся в медицинской тематике. Часть систем будут Open-source, так что о них вы услышите ещё не раз.

4. Ещё у нас есть «консалтинговый проект», где мы помогаем компании создать внутреннюю команду мобильной разработки и забрать развитие мобильного приложения от аутсорса. Это классные ребята из Канады, которые сделали самый популярный сервис подготовки к сдачи теории на водительские права в США — Driving-Tests. Сервис настолько популярный, что у них в отзывах жалуются на работу местных государственных отделов DMV, где проводятся экзамены (что, конечно, не часть их бизнеса). На этой же технической платформе работают ещё несколько сервисов — для подготовки к экзамену на звание медсестры и на сдачу bar exam, чтобы стать юристом. Собрали для них маленькую и классную команду — ребята сейчас перенимают код. Расскажу потом подробнее, красивая история и четко раскладывает, из чего состоит современная разработка мобильных приложений.

Уф, давно не делился новостями бизнеса, так что такой вот отчетный пост; надеюсь, не слишком занудно получилось!

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

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

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

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

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

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

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

Вернулся старый клиент, просит прислать ещё раз оффер, который мы готовили для него 9 месяцев назад.

Файл по ссылке в google docs почему-то удален, не открывается.

Копии нигде нет. У нас тогда ещё не было наших замечательных менеджеров Ксюши и Даши, которые делают так, что ничего не теряется.

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

У меня зум настроен так, что все встречи по-умолчанию записываются в облако — очень удобно при написании фоллоу-апов.

Ну и для каждого клиента я создаю отдельную «вечноживую» ссылку с его именем, которую закрепляю в общем чате — так легче заходить на встречи и можно просто посмотреть все встречи именно с ним. Горячо рекомендую!

Мы с Федей хотим сделать полезный инструмент для программистов. Пока брейнштормили идеи — вспомнили stale-бота, который материт и закрывает старые пул-реквесты. Это полезно, потому что не скапливается незавершенная работа, появляется чувство, что за проектом ухаживают (и это правда!).

Особая красота в том, что вся настройка — это 16 строчек, можете прямо сейчас прикрутить к своим гитхаб-репозиториям (для гитлаба есть вот такой аналог).

Есть ещё хорошие идеи, что вам, как программисту, поможет в работе? Пишите в чате @ctodailychat, мы с коллегами и Федей выберем лучшие идеи, воплотим их в жизнь и выложим код в опенсорс.

Если говорить про бизнес в целом — то всё слава Богу, только вот регулярно отказываю потенциальным клиентам, потому что не хватает рук и голов :(

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

Мы ищем фронтендеров (у нас Vue 3) и бэкендеров (питон) — как мидлов, которые хотят прокачаться, так и опытных специалистов.

Предлагаем интересные задачи, ответственности и свободы сколько возьмете, классных коллег и среду для роста. Пишите Феде!

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

Мы в компании «Федя и Самат» проводим эксперимент.

Пробуем 4-дневную рабочую неделю.

Мотивация простая: всё равно больше 4 дней нормально думать, именно думать, не просто клавиши нажимать — не получается. Раз так — что время зря терять? Лучше с толком отдохнуть.

Предложил Федя, провели в пятницу общую встречу про это. Отзывы команды:
— «мы и так раньше не следили за рабочим временем и коммуникация почти вся асинхронная, какая разница»;
— «я так всегда и работал»;
остальные отреагировали настороженно, но это в зуме.

У нас через пару недель оффлайн слёт — обсудим там первые впечатления подробнее.

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

Эксперимент продлится 2-3 месяца. Федя обещает регулярно отчитываться публично у себя в канале, а я, наверное, буду как обычно время от времени байки травить и отчитаюсь в конце.

Краткий список литературы (я сомневаюсь в её валидности): свежая статья от Harvard Business Review, английская википедия, красивый лендос и аж целое НКО.