WeConnect — фриланс, ставший работой

We-Connect

Я неспроста забросил вести свой программерский блог о работе над проектами, так как последние пару лет был довольно плотно занят.

Началось всё с регистрации на бирже фриланса UpWork. Среди всех подобных площадок на тот момент UpWork была, пожалуй, наиболее популярной. Довольно жёсткая модерация аккаунтов отсеивала изрядную часть неадекватных заказчиков и исполнителей. Заказы из разряда «сделай мне крутой аналог TikTok-а за 100 долларов или за процент от будущей прибыли», конечно, встречались, но таких «гениальных» стартаперов было мало. Многочисленных программистов из Индии сдерживала высокая стоимость так называемых коннектов, необходимых для отклика на заказы. Программисты их стран СНГ, напротив, ценились на площадке достаточно высоко.

Через какое-то время по наводке брата на меня вышел заказчик, и на долгое время необходимость поиска новых заказов отпала.

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

Приложение состояло из трех частей: собственно, сами боты, фронтенд (клиентская, видимая часть приложения) на фреймворке Angular и бэкенд (серверная часть с основной бизнес-логикой) на фреймворке Laravel. Поскольку с php фреймворком Laravel у меня уже был серьёзный опыт работы, именно этой частью приложения я преимущественно и занимался. Впрочем, спустя некоторое время начались проблемы с фронтенд разработчиками, поэтому мне пришлось взять на себя и часть Angular разработки.

Большую часть времени мы занимались внедрением новой функциональности, попутно исправляя возникающие у пользователей проблемы. Затем, когда клиентов стало много, пришлось заняться производительностью, оптимизируя запросы к базе данных, избавляясь от вложенных циклов и убирая из приложения ставшие неактуальными куски кода. Под конец работа перешла в режим поддержки, ну а в мае 2022 года биржа фриланса UpWork заблокировала аккаунты всех жителей России и Белоруссии, на чём моя карьера на этой платформе бесславно закончилась… Какое-то время я ещё помогал заказчику по взаимной договорённости, но летом эпоха WeConnect-а для меня окончательно завершилась.

Что ж, эта работа серьёзно прокачала мои навыки, особенно в Laravel и по части оптимизации запросов к базе данных (далее — БД). Мне уже не первый раз приходится переделывать запросы к БД за предыдущими программистами, почему-то именно с ними, то ли вследствие небрежности, то ли из-за незнания, у людей возникают наибольшие трудности. Делать запросы в цикле очень, ну прямо очень плохая идея… В некоторых частях приложения из-за переполнения оперативной памяти данные из БД пришлось извлекать не целиком, а порциями. Часто требовалось объединять в запросе данные из разных таблиц, чтобы сократить количество запросов к БД, а также использовать другие хитрости.

Поработал я и с интеграцией с внешними сервисами: платёжной системой Stripe, платформой для работы с клиентами Intercom, проверял работу вэбхуков в Zapier.

Однако самые большие трудности у меня вызывал фронтенд на Angular-е, ибо долгое время им занимались разные разработчики из жаркой Индии, и разобраться в их лапша-коде часто было примерно так же легко, как отыскать иголку в стоге сена… Да и в принципе, из фронтенд фреймворков мне больше всех нравится Vue, остальные я знаю значительно хуже.

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

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