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

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

Как стать 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 
1515
24 комментария

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

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

6

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

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

3

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

1

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

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

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