Как стать Flutter-разработчиком, или Почему кроссплатформа сейчас — это лучший выбор

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

Hola, Amigos!

На связи Александр Чаплыгин, Flutter Dev в компании по заказной разработке Amiga. За последний год делал проекты для частного медицинского центра, системы маркировок и нескольких стартапов. По свежим следам хочу рассказать о том, как попасть в мобильные разработчики, поделюсь личным опытом взлетов и факапов, приложу чек-лист по устранению ошибок новичка.

Flutter – почему он?

Начну с того, что такое Flutter и почему я остановил выбор именно на этом стеке. А если вы читаете эту статью, то для вас эта тема близка.

Итак, Flutter — это фреймворк, с бесплатным и открытым набором данных. А главное преимущество — с помощью Flutter можно разрабатывать мобильные приложения на разных платформах. Основные компоненты Flutter включают язык программирования Dart, движок Flutter и библиотеку Foundation.

Выбрал я Flutter из-за его основного плюса — кроссплатформенности. Один код на все устройства, прелесть же. И теперь с последними обновлениями Flutter — это не только про mobile, но и про MacOS, Web, Linux и Windows. В общем, я попал в яблочко.

Как я уже писал, Flutter написан на Dart — это язык программирования Google. Он оптимизируемый и заточен для создания пользовательского интерфейса. Синтаксис Dart мощный и чистый. Он создает такие условия, в которых можно создавать кастомный дизайн приложения, при этом сохранять четкую архитектуру. Если вы уже знаете Java, C# и им подобные, вы легко изучите Dart, значит сможете быстро вникнуть и работать на Flutter.

Почему Flutter может покорить сердце Mobile-разработчика:

  • Функция Hot Reload — позволяет мгновенно обновлять UI после внесения изменений в верстку.
  • Hot Restart — быстрый перезапуск приложения. Полезно, когда произошли глобальные изменения в коде.
  • Поддержка различных библиотек от pub.dev.
  • Собственный графический движок.
  • Flutter не обращается к нативу. Вместо этого Dart запускает собственный контейнер на устройстве, который отображает весь контент Flutter. За счет этого Flutter быстрее других кроссплатформенных фреймворков.

Но конечно, есть и свои сложности, вот некоторые из них:

  • Большое количество платформ, на которых выпускается Flutter. Следовательно, нужно иметь представление об устройстве этих платформ, понимать языки, на которых они написаны.
  • Строгая типизированность Dart не позволит не объявлять тип переменной, как в JavaScript. Оно и к лучшему.
  • Flutter может показаться простым, но, чтобы правильно и чисто писать код, нужно знать всю его «внутрянку».

С чего начинать Flutter-разработчику?

Итак, ты выбрал Flutter. И что дальше? Где искать работу? Как расти? Начну издалека и расскажу про свой опыт. Мой путь в Mobile начался 2 года назад. Искал работу в IT, так как хотел разрабатывать и писать продукт. Искал я работу на HH.ru, за несколько месяцев без опыта меня взяли на проект.

Изучал все доступные курсы и спрашивал всё подряд. Иногда даже стыдно было, но тимлид спокойно мне все объясняла и помогала. И спустя 2 недели макет первого экрана был осилен, с полным пониманием того, что происходит в IDE.

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

Новичку во Flutter я рекомендую смотреть YouTube, искать доступные курсы и браться реализовывать первые приложения. Очень помогли курсы от Angela Yu. Все подробно объясняет, но нужно базовое понимание английского языка. Также есть русскоязычный канал на YouTube LazyLoad Dart & Flutter, в котором автор рассказывает о Dart и Flutter с самого нуля. И конечно же не стоит забывать о канале Google Developers и их рубрике «“Flutter Widget of the Week», где за 2-3 минуты очень подробно и «без шелухи» рассказывают о применении того или иного виджета, который пригодится. Из литературы могу посоветовать Роберта Мартина и его книги «Чистая архитектура», «Чистый код», «Идеальный программист».

К тому же нужны базовые навыки: умение самостоятельно писать код, использовать Clean Architecture и BLoC/Cubit, познакомиться с нативными каналами — Kotlin и Swift. Как только сможете делать более-менее серьезные приложения, идите на фриланс-биржу или к работодателю, смотря какие потребности. Постепенно вы усовершенствуете скиллы, будете получать удовольствие от разработки на Flutter и в качестве приятного бонуса увеличите доход.

Путь от простых экранов до сложных проектов: как работать в команде Flutter-разработчиков и не только

Существует классная методика обучения — Peer-to-peer. Ты учишься за счет того, что задаешь много вопросов и узнаешь новое у своего соседа. А потом ты сам можешь стать тем самым «соседом», у которого будут спрашивать. Таким образом, весь коллектив повышает свой скилл.

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

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

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

Кадр из сериала «Игра престолов»

С помощью Peer-to-peer ты повышаешь свои софт- и хард-скиллы. Проверено.

Факапы

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

Мой чек-лист по борьбе с факапами:

  • Старайтесь комментить только важные части кода, за что отвечает функция или блок кода. В идеале, чтобы твой код не нуждался в комментариях вообще.
  • Никогда не бойся ошибиться, страхи только увеличивают шанс облажаться. Нужно бороться с синдромом самозванца, он присутствует у многих людей.
  • Если накосячил, нужно это признавать. И анализировать ошибку. После анализа ты будешь понимать, как не допустить ее в следующий раз.
  • Побороть лень (личный способ): попробуй взять в работу маленькую задачу, которая уж точно легко и быстро решается. Как только ее решишь, у тебя может появиться азарт и желание решать другие, более сложные задачи, тем самым ты поборешь лень.

Советы в работе:

  • Не делайте виджеты функциями, делайте классами.
  • Используйте стейт-менеджмент.
  • Используйте константные значения везде, где это возможно. Ведь константы известны до компиляции программы, а следовательно, небольшое, но все-таки увеличение производительности будет.
  • Тщательно выбирайте библиотеки, которые собираетесь использовать. Лучше не подключать неподдерживаемые библиотеки, особенно те, которые не перешли на Null-safety.
  • Если переменная может быть Null, не используйте «!» — лучше написать «??» и подставлять дефолтное значение, тогда экран вашего телефона точно не станет красным 😁

Итог

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

Метод Peer-to-peer — спасение для джунов и не только. Надеюсь, эта статья показала вам, что ошибаться — это нормально, без этого никак. Дерзайте!

P.S.

А еще мы в Amiga ведем телеграм-канал Flutter.Много. Там мы пишем о новостях Flutter-разработки и личном опыте. Заходите!

Александр Чаплыгин
Flutter-dev, Amiga 
0
25 комментариев
Написать комментарий...
Сраный Ковбой

Сам не мобильщик, так, поигрался с парой пет проектов, и заметил несколько минусов у флаттера:
- фризы. Флагман у вас или нет - во время скролла пропуск кадров нет-нет, да случится
- анимации. Для наглядности возьмем референсный flutter gallery. Полистайте галерею (стрелочка на скрине) и откройте одну из карточек. У вас не получится это сделать, пока анимация полностью не остановится. Как привыкший к нативу, я могу два-три раза кликнуть впустую, пока, наконец, не "прожмется". Ощущения не очень, и если первый минус можно победить (наверное), посидев с профилировщиком, то что делать с анимациями - я не знаю.

Эти минусы я замечал в чужих приложениях, не в своих поделках

Ответить
Развернуть ветку
Old Car Raffle
Почему Flutter может покорить сердце Mobile-разработчика

Хе хе, вот техлид из гугла https://www.youtube.com/watch?v=L3iqmyoogfA советует никогда не пользоваться этим говнищем ))

Ответить
Развернуть ветку
Арнольд Сергеевич

стоит отметить, что видео староватое, и в комментах пишут что что-то уже пофиксили

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

И это при том, что это собственно разработка Google? :-)

Ответить
Развернуть ветку
Old Car Raffle
И это при том, что это собственно разработка Google?

Именно. Dart мертв. Напомню, что создавали его как замена JS и обещали нативную поддержку VM в хроме. А потом хоба

We have decided not to integrate the Dart VM into Chrome

https://news.dartlang.org/2015/03/dart-for-entire-web.html

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

имею опыт в нативке что на дроиде что на iOS по 5 лет, сделал 2 прилы в прод на flutter, полностью поддерживаю, лютое говнище, сойдет чтобы делать какие-нибудь прототипы

Ответить
Развернуть ветку
Аккаунт заморожен

Комментарий недоступен

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

бывший

Ответить
Развернуть ветку
Ольга Князева

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

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

Иногда кажется, что легче найти единорога, чем полезные курсы

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

Тоже бы хотел найти полезных курсов по Dart и flutter. Кто-то рекомендовал по-моему тут education.surf.ru но могу ошибаться и они такие же зашкварные как гикбрейнс или скиллбокс. Я планирую изучать по ютуб каналам.

Ответить
Развернуть ветку
Иван Винокуров

surf хорошее агентство, на счет качества курсов не в курсе, но бэкграунд у них для этого сильный

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

еще metanit в помощь

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

Ребят, посоветуйте пожалуйста, с чего начать, если совсем всё зЕлено) Хочу сменить сферу, тянет в разработчики, но за плечами только создание сайтов. (Кстати, признаться, даже писать комментарий по этой теме для меня страшновато, ещё засмеют, типа куда ты девочка, окстись))) но сердцу не прикажешь) заранее спасибо всем неравнодушным)

Ответить
Развернуть ветку
Артём

Нормально, не парься. Первыми программистами были женщины.
.
Посмотри в сторону "Frontend разработчик". Необходимо получить сильный уклон в JavaScript. Если просто курсы JavaScript найдёшь бери. Далее выбираешь фреймворк ReactJS вакансий в этом направлении очень много. Или VueJS, вакансий поменьше, но сам фреймворк по проще.
.
С собой надо захватить неистовое желание выучиться дисциплине.
И если работаешь на другой работе, 1-1,5 года. Если прям 8 часов в день на обучение, можно 4-6 месяцев.
После этого можно выходить на рынок труда.
Не ожидай больших зарплат первый год. В первый год основная задача не заработать, а получить опыт. Поэтому придётся провалиться по ЗП. Но если голова варит, тебя возьмут.

И да, не слушай тех, кто говорит что вас таких много. Это всё ведро с крабами. Всегда есть много той работы, которую мидлы и сеньоры не хотят делать, всегда есть работа для стажёров и джунов.

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

Спасибо тебе, добрый человек! 1-1,5 с неистовым желанием выучиться дисциплине - не страшно) ушла искать курсы)

Ответить
Развернуть ветку
Женя Гагарин

Амига, составьте пожалуйста список приложений, которые могут показать что флаттер достоен внимания.
Лучшие реализации. С анимациями.

Ответить
Развернуть ветку
Amiga
Автор

Добрый день!
Спасибо за идею, сделаем статью на эту тему

Ответить
Развернуть ветку
Христос Воскресович

А есть флатер для тех кто никогда не разрабатывал приложения, ноукод какой-нибудь.

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

FlutterFlow.io

Ответить
Развернуть ветку
Технократия

А интерес к кросс-платформе набирает рост за последнее время. Мы про это писали в конце сентября:

https://vc.ru/dev/505995-issledovali-rynok-kross-platform-posle-krizisa-interes-k-flutter-i-react-native-rastet-a-vakansiy-na-rynke-vse-bolshe

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

У Flutter есть своя ниша, но я бы не сказал, что он для начинающих.

Делать нативно под одну платформу гораздо проще.

При этом платят нативным разработчикам лучше и позиций больше.

Для стартапов Flutter может быть интересен, но определённого типа. Тех, кто хочет развиваться на свои и не ищет инвестиций.

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

Интересно чем он лучше чем React Native?

Ответить
Развернуть ветку
Amiga
Автор

Здравствуйте!

Если коротко, то:
- надежностью;
- скоростью разработки;
- интерфейс быстрее;
- безопасностью, сложно взломать.

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

Интересны кейсы. Даже простые

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

Комментарий удален модератором

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