Привет! Это Fitil – сообщество людей, открытых к знакомствам и общению. Мы стартап, поэтому чаще всего в нашу команду попадают знакомые и знакомые знакомых. Но с нашим текущим разработчиком Денисом случилась очень интересная история – о ней мы и хотим рассказать в этой статье.
– Денис, расскажи немного о своём опыте.
Вкатился в IT в далёком 2004-м, когда захотелось чего-то большего чем программирование микроконтроллеров. Начинал веб-мастером и контент-менеджером, параллельно изучая PHP/JS на пет-проектах. Прошёл путь от программиста до техлида и обратно. Всё по классике: проектировал, разрабатывал, внедрял, переносил, оптимизировал, консультировал.
Последние 4 года, например, работал над маркетплейсом в сфере HR IT – сервисом для поиска работы в IT в Германии. Всё сделано с нуля, включая биллинг, внутренний мессенджер, модерацию пользовательского контента, профилей кандидатов и компаний, а также проверку и сопровождение вакансий. Куча бизнес-логики, больше сотни различных уведомлений, триггерные письма, etc. 4 года работы «в соляру» :)
– Как ты нашёл Fitil?
Вообще я искал сервис знакомств, который будет работать.
Сначала зарегистрировался в Tinder, заполнил все данные, свои пожелания и цели.
В течение года мне попадались очень странные анкеты девушек, то есть вообще не по моим параметрам и интересам. За всё время пользования приложением подробно с моим профилем ознакомились и целенаправленно свайпнули три девушки – это было понятно из чатов. Остальные бездумно «лайкали».
В итоге открытых чатов у меня случилось около 30, из них две встречи, которые не переросли в дальнейшее общение.
Потом пошёл в Pure. В него вложил средства: лайкал, отправлял девушкам локальные подарки и сообщения (в сумме около 100 попыток контакта). Но, как оказалось, у девушек при регистрации/авторизации в приложении моментально всплывает много «предложений», среди которых попадается очень мало адекватных сообщений. Поэтому шанс, что твоё сообщение вообще заметят, был очень низким.
У меня случилось 20 начатых чатов, из которых вышло три встречи. Две встречи были специфичными, а в третью случилась удача — познакомился с интересным мне человеком. В Pure она попала, как и я, от безысходности — Мамба и остальные приложения нам не подходили.
Потом я наткнулся на статью про сервисы знакомств, там был упомянут Fitil. Меня заинтересовала концепция оффлайн-знакомств, потому что в испытанных мной приложениях до реальных встреч доходило очень редко. Решил скачать приложение, пройти тест и посмотреть UX (небольшая профдеформация). Анализировал, как всё устроено, какие есть баги и прочее. Всплыло несколько багов, подумал, что стоит сообщить об этом команде, потому что видно, что проектом занимаются.
– Как ты понял, что проектом занимаются?
В отзывах на AppStore увидел упоминание о переезде на новый сервер – обычно это значит, что или упёрлись в потолок производительности старого, или с надёжностью были какие-то проблемы. Там же, в отзывах, по жалобам пользователей можно проследить, какие проблемы возникали и как быстро они решались – они решались, хоть и не очень быстро. В любом случае, такое поведение характерно для активно развивающегося стартапа с типичными проблемами роста.
– Например? Какие баги увидел?
При попытке оплатить мероприятие вывалилась 404 ошибка со страницей-заглушкой от reg.ru. И, судя по отзывам, такое было у многих пользователей. Как потом выяснилось, это были последствия переезда на новый сервер. Подобные проблемы должны решаться максимально быстро, в течение одного часа, всё-таки оплата – это критический функционал. А тут двое суток проект в простое – для меня это дикость, так быть не должно.
После регистрации записался на мероприятие и получил в чате поддержки сообщение о возможности приглашать других пользователей на это же событие после покупки билета. Решил там же поделиться проблемой и предложить свою помощь.
Потом со мной связалась Наталия, основательница проекта. После 30 минут диалога мы поняли, что это судьба и нужно начинать совместную работу.
– Почему у тебя вообще появилось желание помочь?
Во-первых, привлекла концепция проекта, необычное решение с психологическим тестом и отсутствие попыток навязать платные опции/подписку – этим грешат практически все сервисы в сфере знакомств и нетворкинга.
Во-вторых, мне нравится работать над маркетплейсами – там много бизнес-логики и нетривиальных задач, требующих нестандартных решений. Ну и всегда приятно помогать проекту с хорошим потенциалом, видеть, как он растёт и развивается – в этом весь дух стартапа :)
– И каким было твоё знакомство с кодом Fitil?
Во время аудита я сразу понял, откуда растут ноги у багов – качество кода оставляло желать лучшего. Если взять условные «10 смертных грехов программиста», то в некоторых частях проекта был страйк: 10 из 10. Справедливости ради должен отметить, что в целом проект работал и бизнес мог функционировать, а это очень важно на начальном этапе развития. Так как Fitil – это стартап, а главная задача большинства стартапов – запуститься любой ценой, качество кода соответствовало уровню развития проекта.
Как правило, так всё и делается: сперва проверяют бизнес-идею с помощью наскоро написанного кода, а затем, когда приходит обратная связь от пользователей, идею корректируют под реалии рынка.
Иногда получается так, что приходится делать разворот на 90 градусов и вносить существенные изменения в логику работы, к чему код может быть совершенно не готов. В итоге проект переписывают с нуля под новые требования и с учётом ожидаемого вектора развития. В нашем случае нужно было сначала решить проблемы в уже имеющемся коде, а затем постепенно готовить новую версию приложения, которая будет существовать параллельно со старой. Это примерно как перестроить общежитие в апарт-отель, не выселяя жильцов и сохраняя жизнеспособность всех инженерных коммуникаций. Задача сложная и трудоёмкая, но выполнимая. Тут требуются навыки археологии кода, так как документации нет, разные части сделаны в разное время с разными подходами; архитектуры нет, местами противоречивая логика и много копипасты.
Я привык работать с более объёмными системами, с более точно и глубоко выстроенной архитектурой, поэтому лично для меня это был определённый челлендж погружения назад в легаси. Пришлось вспомнить все навыки рефакторинга и анализа кода. Всё это помогло принять проект от предыдущего разработчика максимально экологично и безболезненно для самого проекта. Могу рассказать про глубокий рефакторинг, сложности, которые возникают, и как решать подобные объёмные задачи, если читателям будет интересно.
– Были ли ещё сложности?
Да, довольно предсказуемая сложность или специфика стартапа – ты можешь быть единственным техническим специалистом в проекте. Так и случилось.
В такой команде мало быть просто хорошим программистом, нужно ещё быть аналитиком, сисадмином, иметь хотя бы базовые знания в информационной безопасности, уметь выстраивать новые бизнес-процессы и оптимизировать существующие. И при этом обладать софт-скиллами для адекватной коммуникации с другими членами команды, не подкованными в технических терминах. Помимо этого пригодятся знания в маркетинге, построении UX, SEO и других смежных областях. В небольших командах широкий кругозор и умение искать информацию дают больше пользы чем глубокие узкоспециализированные знания – на начальном этапе важно закрыть максимум задач из разных областей, чтобы сбалансировать развитие и помочь проекту выйти на окупаемость. Как только это произошло, можно уже думать о более детальной проработке каждого аспекта. Тут и команду можно расширять, и бизнес-процессы оптимизировать, и улучшать кодовую базу.
– Чем занят в проекте сейчас? Какие планы?
Сейчас внедряем расширенный поиск и новые правила совместимости партнёров, планируем сделать это до конца года. В ближайшее время планируем отказаться от нативного приложения и уйти полностью в веб, сохранив удобство использования с помощью PWA. Есть пара идей, как сделать приложение максимально автономным, чтобы оно работало в оффлайне, даже в туристических походах без связи. Также предстоит много рефакторинга на бэкенде – для начала избавиться от plain SQL и привести в порядок бизнес-логику. Помимо этого нужно приводить БД в порядок, нормализовать и очистить таблицы от дубликатов. Да и оптимизация производительности уже маячит на горизонте – сообщество активно растёт, а вместе с ним и нагрузка на серверы.
Буду рад ответить на вопросы читателей, рассказать подробнее, как оно работает изнутри и что с этим всем делать, когда ты «один в поле воин».