{"id":14276,"url":"\/distributions\/14276\/click?bit=1&hash=721b78297d313f451e61a17537482715c74771bae8c8ce438ed30c5ac3bb4196","title":"\u0418\u043d\u0432\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0432\u0430\u0440 \u0438\u043b\u0438 \u0443\u0441\u043b\u0443\u0433\u0443 \u0431\u0435\u0437 \u0431\u0438\u0440\u0436\u0438","buttonText":"","imageUuid":""}

“Ты никогда не узнаешь, как правильно, пока не попробуешь”

В интервью инженер-программист и разработчик мобильных приложений для iOS&Android Геннадий Дмитрик рассказал, как обстоят дела в российском FinTech и каким образом применение современных технологий улучшают качество жизни.

Геннадий Дмитрик
инженер-программист, разработчик мобильных приложений для iOS&Android. В банке ВТБ начинал работу над разделом самозанятости в приложении для физических лиц, обеспечивал поддержку accessibility. Разработал более 20 собственных мобильных приложений, среди которых — международный стартап в сфере HealthTech под названием FeATness и приложение для любителей рыбной ловли.

Расскажите, почему вы выбрали IT?

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

Здесь самое сложное — это подключить его к компьютеру так, чтобы все работало. Просто подсоединить проводки не получится. Нужно вот это устройство, с нуля собственноручно собранное, подружить с программой, для этого используют драйверы. Эта связка всегда была интересной для меня. Как искусство, понимаете? Что-то для души. А еще мне очень нравится решать какие-то повседневные задачи с помощью технологий, делать нашу жизнь проще, лучше, избавляться от рутинных процессов. И мои навыки очень мне в этом помогают. Мои разработки как раз рождаются из тех проблем, с которыми я сталкиваюсь в жизни.

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

Как вы пришли в профессию? Насколько рынок в то время нуждался в программистах?

Первые подработки появились вместе с первым компьютером — еще в 12-13 лет. Помогал и родственникам, и знакомым. Мог собрать сайт, автоматизировать бизнес-процессы, сделать базу данных, починить технику. В колледже, в 2003-2007 годах, уже создавал свои программы. У нас был предмет «численные методы», там мы решали сложные задачи — на одну уходило около полутора часов. Нужно было сделать несколько шагов, примерно 20-30. Сложно сохранять концентрацию по полтора часа, поэтому легко ошибиться. Бывает, допустишь ошибку еще на первом шаге, и все перечеркивается — ответ неверный, полтора часа прошли впустую. Поэтому я решил написать программу: вводишь условия задачи, одна секунда — и вот прописано решение по шагам, точно так, как нужно показать преподавателю. Я взял эту программу с собой на контрольную, поделился с остальными. Она была на флоппи диске 3.5 — это такая квадратная дискета, она работала очень медленно и громко. Гул стоял жуткий. В итоге вся группа сдала хорошо, преподаватель удивилась, как такое вообще возможно. Позже я рассказал ей, что написал приложение для решения задачи. И как-то это ее вдохновило, мотивировало. В итоге она тоже пошла учиться на программиста, с нашей же группой, но уже в институт. То есть настолько этот пример ее заинтересовал, что она захотела узнать больше. Сразу после колледжа я пошел в институт. На тот момент я уже открыл ИП, занимался системами безопасности. Поэтому и практику проходил сам у себя и диплом писал тоже. Было сложно. Приходилось работать 24 на 7, без выходных.

Зато этот опыт помог мне прокачать софт-скиллы. Я понял, что недостаточно овладеть техническими навыками — прикрутить шуруп или настроить камеру наблюдения. Важно уметь вести переговоры, отстаивать свою позицию, торговаться — мне это давалось сложно, первое время я очень легко соглашался на скидки. Я бы мог продолжать вести бизнес, но хотелось работать в более комфортных условиях: без необходимости отвечать на звонки в воскресенье утром и в любую непогоду ехать на встречу к заказчикам. Я работал в разных компаниях, даже в DNS какое-то время компьютеры продавал — долго не продержался, уволился. А затем решил углубиться в разработку мобильных приложений. Это было интересно, и спрос со стороны бизнеса тоже был.На тот момент, да и сейчас, точка входа в мобильную разработку именно под Apple выше, чем под Android. Потому что необходимо было иметь MacBook и iPhone, а это дорого. Под Android можно писать приложение хоть на обычном компьютере, а они стоят дешевле, чем Apple-устройства. Поэтому казалось, что конкуренция в Apple-разработке будет ниже. iPhone у меня уже был: и экосистема, и интерфейс, и функционал мне сразу понравились. Поэтому я начал учить новый язык программирования. Купил книжку на 1200 страниц, месяц изучал ее, а после взялся за свое первое приложение и поиск работы. Тогда я жил в Краснодаре, местных вакансий было мало, а удаленка пока еще не была распространена так, как сейчас. Если одна вакансия появлялась на край — уже хорошо, я первый бежал откликаться.Сталкивался с недобросовестными ИПшниками. Они давали тестовое задание, обещали вернуться с обратной связью и пропадали. Это вообще распространенная практика, чтобы бесплатно поживиться чужим кодом: дать разным людям разные задачки, а в итоге склепать рабочий проект. Вот поэтому я больше тестовые задания не делаю. Да крупные компании и не требуют. Смысл? Если можно попросить друзей сделать его за тебя. Гораздо важнее интервью: с HR и технические. Некоторые компании еще проводят дополнительную встречу по проектированию IT-систем — System Design. Найти первую работу было настолько сложно, что я даже предлагал свои услуги бесплатно. Ходил по компаниям, но они отказывали: не хотели учить, хотя я и сам на тот момент уже многое знал. От безысходности устроился в магазин рыболовных принадлежностей, и тут со мной связалась небольшая продуктовая компания, пригласила на собеседование. Я пришел к ним в краснодарский офис. Показал им свои разработки. Знаете, как Apple делают выкладку телефонов, чтобы покупатель мог потрогать, посмотреть. Это цепляет. И я тоже так сделал. На тот момент у меня был заказной проект — интернет-радио с симпатичным дизайном. Я это все показал, телефон дал поклацать. Им понравилось. Сказали, что до меня еще один паренек был, неплохой. Но у него почему-то Android, а не iPhone. Я подумал, вот это фейл — только из-за этого человек не получил работу. В результате взяли меня, и я проработал в этой компании почти 5 лет.

Получали ли вы когда-нибудь награды за свои разработки?

Первые серьезные проекты я начал делать еще в колледже. Тогда же и получил первую награду. Это был конкурс инновационных разработок, я представил проект по автоматизированному обучению и тестированию. Он позволял загружать материалы по любому предмету, изучать их в оффлайн-режиме, проверять свои знания с помощью тестов. Получилось что-то похожее на Skillbox, только это было в начале нулевых. Недавно мое приложение для контроля веса FeATness заняло призовое место в международном конкурсе мобильных приложений. Это довольно приятно, но для меня важнее оценка пользователей. На этой неделе мое приложение Moonlight поднялось на 2-е место в топе раздела «Погода» российского AppStore. Я не брал рекламу, ничего не делал для продвижения, просто людям понравились идея и реализация. У этого приложения открытый исходный код, он размещен в моем репозитории на GitHub, то есть любой может его посмотреть и как-то использовать. Я специально делюсь некоторыми из своих проектов, чтобы помочь разработчикам. По этой же причине я часто отвечаю на вопросы коллег и делюсь полезной информацией в сообществах.

Приложение Moonlight простое. Оно помогает отследить фазы Луны. Недавно я писал научную статью о взаимосвязи между лунными фазами и финансовым рынком, поэтому создавал приложение для себя — решил, что и мне полезно, и людям смогу помочь. Фазы Луны также важны для огородников, яхтсменов.

Я взял официальное изображение Луны в режиме 8K у NASA, а оно как раз подготовлено, чтобы наложить в виде текстуры на сферу. Выглядело очень красиво. Потом через пару дней прикрутил режим дополненной реальности. Подумал, что было бы классно заглянуть на обратную сторону Луны. Известно, что она только одной стороной к нам повернута. Поэтому для многих, в том числе для детей, может быть познавательно.

Интересно, что спустя полгода после выхода моего приложения выпустили iOS 17 — и в обновление добавили многое из функционала моего приложения. Это обычная практика, Apple проводит анализ приложений и, если на это есть массовый спрос, реализует в комплекте поставки операционных систем.

По вашему мнению, какие главные скиллы должны быть у IT-специалиста?

Главное — это интерес к своему делу. Сейчас многие идут в IT только ради денег. Но если высокий доход — это единственная мотивация, то выгоришь за неделю. Очень важно иметь критическое мышление, подвергать все сомнению, уметь выйти за рамки готовых решений. Чтобы тренировать эти навыки, я часто задумываюсь: как бы я реализовал ту или иную задумку сам с нуля? То есть изобретаю велосипед. И я имею в виду не только разработку, но и нашу повседневную жизнь: собрать стол или построить дом. Это такой философский подход, он помогает мне достичь того же результата, но, возможно, более оптимальным способом. А иногда — сделать даже лучше, привнести новшество. Обычно мы все используем библиотеки с исходным кодом. Например, меню кто-то написал лет десять назад, а мы до сих пор берем его во все приложения. Даже в самые крутые. И пользователь об этом не знает. А я как-то написал интернет-магазин сам, полностью от и до. Просто в блокноте. Без использования чужих наработок.Я хотел лучше разобраться в процессе. Это было долго, сложно очень. Но это позволило мне не ограничивать полет своей мысли в архитектурном плане: как бы это могло работать? Как провести пользователя по шагам? Выбор товара, подсчет суммы, корзина. Я все сделал так, как считал нужным. Максимально гибко, без стереотипов. Это позволяет мыслить без рамок, навязанных обществом — очень важный навык для программиста. Программист должен обладать глобальным взглядом. Нужно уметь не просто написать программу, а еще и видеть, как эта система будет работать или могла бы работать дополнительно, где можно переиспользовать компонент, какие проблемы могут возникнуть в процессе и так далее.Важно разбираться в разных сферах. Ведь чтобы создать приложение, например, для рыбалки, придется хотя бы базово разобраться в этом процессе. Нужно уметь разобраться в любой незнакомой сфере, но также желательно знать хоть что-то по как можно большему количеству направлений. Нужно уметь вести переговоры и отстаивать свою позицию. Этот навык помогал мне и в бизнесе, и в командной работе в крупных компаниях. Софт-скиллы очень важны. Чаще даже важнее, чем хард-скиллы. Каким бы суперпрофессионалом человек ни был, если он токсичный, может нагрубить или как-то неадекватно себя повести, от него откажутся. Даже если это очень хороший специалист. Такого принципа придерживаются во многих крупных компаниях, в том числе и в тех, где работал я.

Важно помнить о мелочах. Когда я был новичком, считал, что это не важно. Главное, чтобы приложение работало. На одном из собеседований, я тогда еще был зеленым джуном, меня попросили в качестве примера скинуть исходный код. Это было мое первое код-ревью — процесс, когда опытные коллеги анализируют твой рабочий код, дают комментарии. А иногда разносят в пух и прах. И тогда меня раскритиковали. Я посчитал, что замечания несущественные: где-то комментарии не убрал, где-то наименования файла не так сделал. Приложение ведь работает. На тот момент оно уже было в сторе, его скачивали люди со всего мира, пользовались им. И только набравшись опыта, я понял, почему нужно сразу делать все правильно, уделять внимание мелочам, а не просто делать функционал. Дело в том, что поддерживать код всегда сложнее, чем его написать. Особенно когда над одним проектом работают сотни разработчиков. Чтобы было легко находить ошибки, всегда используются общепринятые стили, правила написания кода, процессы. Это максимально облегчает и ускоряет командную разработку.

Вы делали мобильные приложения для ВТБ, подскажите, в чем особенность работы в финтехе?

Финтех в России очень развит, на западе все более консервативно устроено — даже чеки до сих пор выписывают. А в России банковские приложения на хорошем уровне, они успешно работают и внедряют дополнительные сервисы: такси, доставка еды, кино и многое другое.Компании, которые менее развиты, копируют успешные решения конкурентов — да, при этом внедряют свои фишечки, улучшают функционал, но копируют. А крупным компаниям, лидерам рынка, к каким относится и ВТБ, копировать уже не у кого. Нельзя подсмотреть, никто не скажет: «Делай так, это правильно». Чтобы удержать аудиторию, сохранить ее лояльность и привлечь новых клиентов, приходится изобретать что-то новое. И это главная особенность работы в финтехе. Наступает момент, когда становишься новатором — и неизбежно набиваешь шишки, потому что не всегда ясно, куда именно двигаться. Бывает, что тратишь ресурсы на разработку и внедрение новых решений, а они оказываются ошибочными, приводят в никуда. Например, когда банковские приложения удалили из магазинов — и Google Play, и App Store — ВТБ придумал, как решить проблему с помощью доступных средств — мессенджера — и запустил свой онлайн-банк в Telegram. Получилось удобно, а Роскомнадзор забраковал — сказали, что небезопасно. И это главная боль больших корпораций и финтеха в частности: ты никогда не узнаешь, как правильно, пока не попробуешь.

Вы занимаетесь разработкой мобильных приложений, в чем специфика именно этой сферы программирования? Какие важные детали надо замечать и что лучше не делать?

Начну с того, что есть несколько направлений разработки. Есть системные разработчики, которые пишут на языках C++ или работают с базами 1С. Лично для меня это скучно. Есть backend-разработчики. Они делают всю невидимую для пользователя работу: настраивают процессы взаимодействия наших приложений с хранилищами данных, с запросами, с выборками. А разработка мобильных приложений, как и веб-разработка, относится к frontend-разработке. Мы создаем видимую часть приложения: выбираем функционал, дизайн, добавляем разные фишки типа виброотклика — то есть соприкасаемся с глазами и руками наших пользователей, активно на них влияем, в отличие от важной, но невидимой для пользователя работы backend-программиста. Одно из главных преимуществ разработки мобильных приложений — это возможность быстро и без команды реализовать свою идею. Как frontend-разработчик я быстро могу сделать интерфейс. При этом я должен разбираться и в дизайне, и в backend немножко. Я сразу и тестировщик, и продакт, и менеджер. Когда работаешь над своим проектом, важно уметь все. Только тогда получится быстро воплотить задумку в жизнь.

Например, за обедом появилась идея сделать Moonlight, приложение с фазами луны, и уже через два часа оно было готово. Это самый быстрый мой проект. Но это не всегда так легко. Например приложение для рыбаков я разрабатываю уже около шести лет. Сложно, дорого, долго. И бесполезно в плане коммерческого успеха, под который приложение не было заточено. Еще одно преимущество frontend-разработки — возможность быстро получить своего пользователя. Уже существуют магазины приложений, они помогают нам попасть к конечному потребителю. Весь процесс заточен и отлажен.

Расскажите подробнее о ваших собственных мобильных разработках

У меня более 20 различных разработок. Мое первое приложение — конвертер величин из метрической в имперскую систему. Простейшее приложение в два экрана, работает оффлайн, рекламы нет. Я просто хотел получить опыт. На удивление приложение залетело. Прошло уже восемь лет, а люди со всей планеты до сих пор им пользуются. У нас всего три страны, которые остались на имперской системе: США, Мьянма и Либерия. Видимо, очень большой спрос из-за США. Я его поддерживаю, обновляю периодически, как требует Apple. В этом году разработал приложение для контроля срока годности лекарственных препаратов. Пользователь фотографирует лекарства из домашней аптечки, вносит сроки годности, количество, названия. В приложении есть таблица с сортировкой по схеме светофора — какое лекарство уже просрочено, у какого подходит срок годности, а какими ещё можно пользоваться. Как только срок годности подходит к завершению, приходит пуш-уведомление. Поэтому когда приходишь в аптеку, сразу знаешь, что нужно докупить. Все по списку — ничего не забудешь. Обычно мы редко следим за состоянием домашней аптечки, а это важно: может срочно понадобиться, например, жаропонижающее, а его нет. Этот момент очень легко упустить.

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

Есть приложение для рыбаков — HXH4 — аббревиатура от фразы «ни хвоста, ни чешуи». Это напутствие рыболовам. Я сам увлекаюсь рыбалкой с детства. Это довольно популярное хобби. Всегда беру с собой удочку, даже когда еду в командировку. Вдруг будет возможность порыбачить. Рыбалка помогает мне отдохнуть, когда я сильно устаю на работе. Многие используют ее для разгрузки. Когда я создавал это приложение, я только учился писать их, пытался реализовывать свои идеи, закрывать свои потребности. Хотелось объединить увлеченных рыбалкой людей — приложение позволяет это сделать очень легко. Конечно, есть и сайты на эту тематику, и группы в соцсетях. Но я хотел внедрить фишечки, которые могут быть только в мобильном приложении: удобная навигация, режим оффлайн, чтобы приложение работало там, где не ловит сеть. В приложении красивая анимация, она разная утром, днем и вечером. Есть функция «Я на рыбалке». Изначально мы её использовали, чтобы найти тех, кто находится рядом. Чтобы рыбаки могли списаться, пообщаться, подойти, если вы в рамках одного озера находитесь. Узнать, клюет ли, на что клюет.

Есть карта, где любой пользователь может поставить точку, отметить платную или бесплатную рыбалку, какие-то комментарии оставить. Если это платная рыбалка, то указать примерную цену и телефоны, хорошее или нехорошее место. И то же самое по магазинам — часто бывает, что чего-то не хватает, оборвалось, потерялось. Наш функционал позволяет быстро найти живой открытый магазин поблизости. Если совсем много времени и рыбачишь в пассивном режиме на белую рыбу, то можно почитать журналы, узнать про виды рыб, полистать нашу группу во «ВКонтакте». Можно увидеть скидки из магазинов. Есть законодательная база. А если скучно и хочется посмеяться, есть раздел «юмор». Там можно поделиться и историей из жизни, и анекдотом.

Какие инновации вы использовали при создании этого приложения?

Я построил систему на основе машинного обучения и искусственного интеллекта, чтобы предсказывать качество рыбалки. Шесть лет мы спрашивали наших пользователей, как прошла их рыбалка, как ловилась рыба, было ли ее больше или меньше, чем обычно. Вроде бы шуточный механизм, но он очень зашел людям. Даже больше, чем все остальное. Мы собрали ответы наших пользователей, проанализировали их, обогатили важными данными типа сезонности, фаз луны — известно, что они влияют на качество рыбалки. И теперь этот алгоритм работает в режиме оффлайн прямо на смартфоне, предсказание делается в виде смайликов на сегодня и завтра. Судя по отзывам наших пользователей, оно довольно точное.

Как самостоятельно продвигать мобильное приложение, поделитесь лайфхаками?

Когда я начинал заниматься разработкой мобильных приложений, конкуренции почти не было, некоторые категории магазинов были полупустыми. Поэтому было легче попасть в подборки, получить пользователей. С тех пор магазины стали более развитыми, попасть в топ сложнее. Когда я продвигал приложение о рыбалке, я использовал разные методы. Договаривался о рекламе в группах во «ВКонтакте». Устроил конкурс в нашей группе, призы были ценные, но желающих было просто море. Мы разыграли суперпризы и десятки утешительных призов. Люди остались довольны и долгое время спрашивали: «Не проводится ли сейчас какой розыгрыш?». Но в плане развития приложения это дало только кратковременный эффект. Пришло много халявщиков, которые готовы участвовать абы где, лишь бы выиграть. Можно сказать, что это был провал — стоило действовать по-другому.

У меня приложение только под iOS, а нужно было сделать еще и для Android. Чтобы охватить большую аудиторию, а не фильтровать пополам всех пользователей. Нужно было все-таки прикрутить системы App Store Optimization (ASO) — это комплекс программного обеспечения, которое помогает оптимизировать результаты в поисковой выдаче: подтягивает твои ключевые слова; делает автоматические запросы, как мы ищем в строке поиска в магазине приложений твое приложение и приложения конкурентов; показывает, в каких рейтингах находится приложение; дает советы о том, как можно улучшить приложение и поднять его рейтинг.

Важно правильно подобрать ключевые слова, потому что есть ограничения на длину символов: писать кратко, разделять запятыми без пробелов. В русской локализации нужно продумывать окончания. Автоматически они не считываются. В английском языке можно коренное слово поставить. Далее нужно подготовить хорошее описание, работать с отзывами. И в iOS есть быстрый сбор новых отзывов пользователей, можно быстро на них отвечать. Это повышает ранг приложения в поисковой выдаче. Алгоритмы очень сложные, но это так работает. Не отвечаешь пользователям — это хуже для тебя, ответишь — повыше будет положение в рейтинге.

В Android немного по-другому, там другие моменты играют ключевую роль.

Что вы думаете об ИИ, используете ли вы его в своих разработках?

На самом деле мы все ежедневно сталкиваемся с искусственным интеллектом, используем его и даже не подозреваем об этом. В своих статьях в СМИ я постоянно акцентирую на этом внимание. Например, вы открываете почтовую программу. А нейросети уже отфильтровали за вас письма, похожие на спам, и отправили их в специальный каталог. То же самое происходит с рекламными предложениями. Есть разные методы анализа: и по ключевым словам, и по жалобам. Или вы открываете фотографии в телефоне. А они уже сгруппированы по лицам, а в iOS даже по домашним животным. Или вы делаете фотографию в темное время суток, а iPhone создает множество дополнительных слоев, где-то дорабатывает изображение, выправляет экспозицию. Это тоже работа нейросети. В основном их строят отдельные специалисты, специально обученные работе с искусственным интеллектом. Но есть разные готовые сервисы, проекты с открытым кодом. Их легко подключить к своим мобильным приложениям. Я стараюсь самостоятельно создавать ИИ-модели для своих приложений. Например, в HXH4 — приложении для рыболовов, о котором рассказывал выше — система предсказания качества рыбалки построена именно на искусственном интеллекте. Есть идеи и планы реализовать распознавание еды в фитнес-трекере, но это на будущее. Еще создавал шуточные приложения, типа «распознай кота». Наш коллега по цеху обучил модель распознавания отличать своего кота от чужих. У него была маленькая дверца для своего кота, чужаков она не пускала — система поливала их водой. Конечно, искусственный интеллект в разы расширяет потенциал применения мобильных приложений.

0
3 комментария
Projecto

Отличная статья и очень интересная история гостя)
Интересно как ставятся и контролируются задачи в команде Дмитрия

Ответить
Развернуть ветку
Gennady Dmitrik

Спасибо за Ваш комментарий и проявленный интерес! Меня зовут Геннадий и я готов ответить на Ваш вопрос :)
Большинство компаний используют гибкие методологии, например SCRUM. Постановка задач проходит несколько этапов еще до того как будет готова для разработки (бизнес и системный анализ, 100% готовность дизайна). Каждая задача как правило получает приблизительные оценки, это полезно для построения долгосрочных планов. Но если по объективным причинам выявляются внутренние проблемы и сложности, происходит переоценка задачи и сроков на ее доработку. Контроль, а точнее самоконтроль должен быть у каждого разработчика. Ведь если любишь это дело, горишь им, то это видно со стороны и внешний контроль здесь ни к чему.

Ответить
Развернуть ветку
Projecto

Здорово)
А корпоративный таск-трекер используете? Западные системы быстрым шагом уже пересекли границу российского рынка. Были бы рады, если протестируете нашу систему для фидбека. Может быть, она подойдет для вашей команды :)

Ответить
Развернуть ветку
0 комментариев
Раскрывать всегда