Никита Нечаев, full-stack разработчик, специалист в области транспортного обслуживания и ноукодер на Glide и Adalo.
В этой статье Никита Нечаев расскажет, как проходил обучение в Cyberband Academy, зачем full-stack разработчику понадобился ноукод, и поделится интересной историей о своем проекте.
О себе
Привет, я Никита!По образованию разработчик, более 15 лет опыта в разработке и руководстве IT проектамм. Начинал как full-stack разработчик, профиль .NET. Работал в достаточно крупных интеграторах, — в структурах бывшего Связьинвеста, Ростелекома, делал системы финансовой отчетности и смежные задачи. Успел поработать в стартапах в качестве руководителя разработки и исполнительного директора. В 2016 году я перешел из ветки развития IT в транспортный сектор в структуру подрядных организаций ГКУ ЦОДД Москвы, начал заниматься вопросом обслуживания транспортной системы Москвы. Продолжаю этим заниматься в регионах тоже, сейчас занимаемся проектами по внедрению интеллектуальных транспортных систем. Еще, есть ряд проектов связанных с руководством и координированием создания информационных систем в части судейства спортивных соревнований. А в 2018 году мы с другом создали стартап по видеоаналитике, где я один из генеральных директоров и руководил техническим блоком. IT не забросил, продолжаю поддерживать старые системы которые когда-то разработал. Это очень структурная область знаний, — пока по полочкам не разложишь, не разберешься, что сильно помогает в других областях.
Как узнал про no-code
Про ноукод узнал из разного рода рассылок, когда no-code разработка стала трендом, — это произошло в 2020 - 2021 годах. Ноукод превратился из разрозненных инструментов в восходящий тренд. Конструкторы набрали мощи и функциональности и стали заменять полноценную разработку на фоне перегретых зарплат кодеров. Быстрая сборка и проверка маркетинговых гипотез стала набирать популярность, я везде стал слышать: «нуокод, ноукод». Теория 5 - 6 прикосновений к клиентам сработала, — прогревался-прогревался, и в начале года звезды сошлись, был максимально открыт к развитию, и меня догнала рассылка Cyberband’а, почитал, изучил программы и почувствовал, что мне это интересно.Какие цели ставил и какие сомнения были
Все вокруг пищали, что это тренд. Мне было интересно понять о чем это вообще, что no-code под собой скрывает. Я full-stack разработчик, а тут какой-то no-code, и утверждается, что он по некоторым параметрам круче кода. Я понял, что есть какая-то область знаний в IT, где я некомпетентен, и надо бы это исправить.История про быстрый тест маркетинговых гипотез была для меня самой актуальной, это было одной из болей в предыдущих проектах и важно до сих пор. Для меня это была возможность закрыть гештальт, овладев инструментарием, который позволяет быстро такие штуки делать.
Когда я созрел, этап принятие решения был очень коротким. Сомнений практически не оставалось, только решал нужно идти в мобильную разработку или веб. По итогу я выбрал подписку. Повлияло то, что я знаю как плохо работают истории с приобретенными образовательными курсами. Ты в него заходишь, а потом времени не хватает. А тут бесконечная подписка, — если я зайду, и будет фактор почему я не смогу закончить курс, то будет возможность продолжить. Изначально я зашел одновременно на два курса, и до третьего модуля я просматривал и выполнял и web, и mobile. Потом помешала ситуация, надо было разбирать возникшие проблемы в своих проектах. Я выбрал пока остаться только на мобилках, так как у меня был опыт создания веба, а в мобиле вообще ничего не создавал, и ни чуточки не жалею об этом.
Об обучении в Cyberband Academy
Понравилось мне практически все. Прикольный формат — минимум теории, максимум практики. Понравилось, что обучение на реальных кейсах, ты что-то узнаешь и тут же руками собираешь и понимаешь зачем это было надо, — это очень классный формат, очень современный. Набор кейсов обучающих разной направленности — круто. Заранее подготовленные базы данных с фотографиями, с набитыми данными, проделанная рутинная работа, которая на самом деле отвлекала бы от сути процесса обучения — просто супер.Вот Glide меня очень удивил. Когда я увидел инструмент, который просто на основании заполненной Google Таблицы может генерить готовое мобильное приложение, которое можно запустить — это прямо вообще мне башню снесло, я такого раньше не видел нигде. Я очень долго мечтал об инструменте, который бы мне из набора каких-то исходных файлов, тз в каком-то формате что-то такое генерил, а тут вот ребята из глайда это сделали.
Технических сложностей во время обучения у меня не было, потому что у меня был очень хороший бэграунд, способность искать, диагностировать, находить ошибки. Основная сложность была в концентрации, так как механика обучения такая, что ты смотришь на видео, что делает лектор 5 секунд, нажимаешь на стоп, переходишь в своё окно, повторяешь действие, и если что-то не так, то повторяешь все снова — это на самом деле не очень простая нагрузка на мозг. В реальности здесь приходилось делать достаточно серьезный реверс инжениринг, то есть возврат обратно к процессу разработки, чтобы понять: а что же мы сейчас делали вообще, что это такое мы собирали, как и зачем я вот это с этим соединил. Справиться с этой сложностью очень помогали ошибки, — запускаю, а оно не работает, и я лезу разбираться. Такая система позволяет реально учиться на своих и чужих ошибках, а не просто повторять действия, чтобы в конце у тебя все заработало. Сдал домашку и пошел, а что и зачем собирал, половину уже не особо понял, так как просто следил за движениями волшебных рук лектора, — не самый эффективный подход. Это из того, что было сложно, а касательно того, что мне не понравилось — такого прям не было.
Спорт вокруг
Еще во время обучения взял проект: знал как решить проблему одного своего знакомого и решил предложить помощь. «Спорт вокруг» — это мобильное приложение, которое отображает новости о спортивных мероприятиях, на которые подписался пользователь. Приложение забирает всю информацию по API с родительского сайта и туда же отправляет информацию о мероприятиях пользователя. Изначально было требование от заказчика, что приложение должно было быть выложено в сторы, поэтому я сразу выбрал Adalo в качестве стека. В принципе приложение само по себе, по внешнему виду, по набору экранов, функциональности — мега простое, есть общая лента новостей, избранное, на что подписался пользователь, и можно провалиться в одно мероприятие, посмотреть по нему более подробную информацию. Все сложности скрыты внутри, то есть работа по API с внешним источником. Не смотря на то, что этот механизм в Adalo предусмотрен, там миллиард нюансов.Как простой пример, с чем я столкнулся, это так называемый lazy load — ленивая загрузка, то есть когда на странице источника генерируется большое количество контента, например, в ленте 4000 событий, а мне их надо в приложении показать. Подобие механизма lazy load в Adalo есть, но работает это так, что приложение висит, — просто 10 секунд ничего не можешь сделать, потом отрисовываются первые 3 события, ты пытаешься пролистнуть вниз, потом зависаешь на еще 10 секунд и уже после этого он начинает пролистывать нормально. То есть lazy load работает крайне криво, неуправляем абсолютно, да и не user friendly. Нам пришлось решать проблему переработкой UX/UI — перестали отдавать всю ленту, теперь отдаём по 50 событий, и по нажатию на кнопку принимаем и отображаем ещё 50, все постепенно подгружается.
С кнопкой «Подписаться на мероприятия» тоже намучились, потому что, казалось бы, простейшие действия — я нажимаю подписаться, отправляю команду на сервер, что пользователь подписан, сервер мне возвращает обратно ленту, в котором установлен флажок, что на этом мероприятии он подписан, и я должен перерисовать ленту, но поскольку перерисовка всей ленты занимает очень много времени, в Adalo это работало так: я нажимаю кнопку подписаться, оно на секунду меняет свой внешний вид на то, что я подписан, а потом Adalo говорит: «не чувак, погоди, мне с сервера ещё ничего не пришло», меняет все обратно, и только спустя 15 секунд, когда все прогрузилось и адресовалось, я снова вижу, что подписан. Пользователи бы нас за такое порвали. Пришлось здесь тоже что-то изобретать.
Отдельная история про публикацию в сторы. Я прям прочувствовал вот в этом проекте почему в Apple Store у нас такие классные, детализированные, круто работающие приложения, а под Android всякая глючная фигня и куча всего нерабочего. Google нас пропустил спустя день после того, как мы выложили просто первую версию. С Apple Store я воевал полгода, я не шучу. По всем пунктам, начиная от «расскажите нам, что у вас тут за такие оплаты и подписки, почему это проходит не через нас» до того, что интерфейс прорисован не по канонам Apple, «вот вам уважаемые разработчики гайдбук, где указано как надо делать правильные интерфейсы» и там радиус закругления кнопочек и все-все остальное. Переделали, нас пропустили дальше — на родительском сайте было 2 способа авторизации: по email и через Вконтакте, мы сделали их и в приложении. Кстати говоря, это своего рода мое ноу-хау, так как в рунете не нашлось информации по интеграции Adalo и Вконтакте, пришлось изобретать. Но Apple сказал: «о, у вас 45 авторизейшен, а ну-ка добавьте авторизацию по Apple ID». Я им пишу: «уважаемые, я не могу добавить, у меня на сайте, к которому я обращаюсь за аккаунтами, нет такого способа». Ответили отказом, сказали, что там, где есть авторизация через третий сервис, должен быть я быть эпл айди, и «вот вам гайдбук, почитайте почему Apple ID такой классный и почему стоит его везде добавить». Мы вынуждены были убрать из приложения авторизацию через Вконтакте. Потом они докопались до аккаунта, который вел на родительский сайт, — нажимаешь «создать аккаунт» и приложение открывает браузер, на котором открывается страница сайта с регистрацией, само приложение ничего не делается с аккаунтами, даже не хранить в себе данные. Нам же сказали, что «если у вас есть кнопка “создать аккаунт”, значит должна быть кнопка “удалить аккаунт”». А я не создаю аккаунты вообще, просто ссылку добавил, но кнопка «удалить» должна быть и никак иначе.
И вот, спустя полгода, когда нам пришло подтверждение, что приложение выложено в Apple Store, у нас в зуме была истерика и овации, мы все скачали на свои айфоны приложение, не могли поверить своим глазам. Вот такая история получилась.
Совет тем, кто хочет начать свой путь в no-code, но пока не может решиться
Могу посоветовать решиться, потому что вы в любом случае откроете для себя новый мир. Даже разработчики со стажем, такие как я, заходя в no-code, открывают для себя новый мир современных инструментов и автоматизации — это очень круто. То есть, как минимум, вы узнаете как можно быстро автоматизировать то, что раньше делали руками мучительно или заказывали за большие деньги, как максимум, прокачаетесь как IT-специалисты в этой области, возможно, откроете для себя новые направления деятельности. А еще, no-code — это отличный способ реализовать свои идеи. У людей очень много идей, «хочу такой сервис, но не знаю как», а здесь появляется инструкция как это сделать и получается бомба. Очень круто, что у людей появилась возможность реализовывать, не прибегая к каким-то сложным вещам, общению с командами разработки и так далее. Захотел — сделал, вот поэтому мой совет попробовать no-code в любом случае.А тем, кто уже учится, хотел бы подсказать как справиться с упомянутой сложностью и сделать обучение по-настоящему эффективным. По максимуму старайтесь разбираться самостоятельно. Возвращайтесь на два шага назад, пересматривайте видео, гуглите, перепроверяйте, что все правильно. Это позволит погрузиться в то, что ты только что сделал. И если уже совсем все плохо, то тогда пишите трекеру. Это история не про то, чтобы я себя разгрузил как трекер, а про то, что люди, которые заходят в айтишную, инженерную историю, даже пусть это ноукод, а не фулстек разработка, должны приучить себя диагностировать и искать ошибки, только тогда их на этом поприще ждёт успех, без этого ничего не смогут сделать вообще. Вот такая вот инженерная диагностика, реверс инжениринг, поиск и локализация ошибок — обязательные элементы. Оттачивать самостоятельность очень важно.