Как стать 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.
Так что советую с умом подходить к поиску вакансий и рассматривать абсолютно все варианты на рынке. Кто знает, где может прятаться именно тот тимлид, который поставит на ноги юного и неумелого джуна. Ведь только у понимающего и отзывчивого тимлида можно многому научиться за небольшой промежуток времени.
К тому же нужны базовые навыки: умение самостоятельно писать код, использовать 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 gallery. Полистайте галерею (стрелочка на скрине) и откройте одну из карточек. У вас не получится это сделать, пока анимация полностью не остановится. Как привыкший к нативу, я могу два-три раза кликнуть впустую, пока, наконец, не "прожмется". Ощущения не очень, и если первый минус можно победить (наверное), посидев с профилировщиком, то что делать с анимациями - я не знаю.
Эти минусы я замечал в чужих приложениях, не в своих поделках
Хе хе, вот техлид из гугла https://www.youtube.com/watch?v=L3iqmyoogfA советует никогда не пользоваться этим говнищем ))
стоит отметить, что видео староватое, и в комментах пишут что что-то уже пофиксили
И это при том, что это собственно разработка Google? :-)
Именно. Dart мертв. Напомню, что создавали его как замена JS и обещали нативную поддержку VM в хроме. А потом хоба
We have decided not to integrate the Dart VM into Chromehttps://news.dartlang.org/2015/03/dart-for-entire-web.html
имею опыт в нативке что на дроиде что на iOS по 5 лет, сделал 2 прилы в прод на flutter, полностью поддерживаю, лютое говнище, сойдет чтобы делать какие-нибудь прототипы
Комментарий недоступен
бывший
Дайте ссылку хоть на один полезный курс, сейчас так много всего, что глаза разбегаются
Иногда кажется, что легче найти единорога, чем полезные курсы
Тоже бы хотел найти полезных курсов по Dart и flutter. Кто-то рекомендовал по-моему тут education.surf.ru но могу ошибаться и они такие же зашкварные как гикбрейнс или скиллбокс. Я планирую изучать по ютуб каналам.
surf хорошее агентство, на счет качества курсов не в курсе, но бэкграунд у них для этого сильный
еще metanit в помощь
Ребят, посоветуйте пожалуйста, с чего начать, если совсем всё зЕлено) Хочу сменить сферу, тянет в разработчики, но за плечами только создание сайтов. (Кстати, признаться, даже писать комментарий по этой теме для меня страшновато, ещё засмеют, типа куда ты девочка, окстись))) но сердцу не прикажешь) заранее спасибо всем неравнодушным)
Нормально, не парься. Первыми программистами были женщины.
.
Посмотри в сторону "Frontend разработчик". Необходимо получить сильный уклон в JavaScript. Если просто курсы JavaScript найдёшь бери. Далее выбираешь фреймворк ReactJS вакансий в этом направлении очень много. Или VueJS, вакансий поменьше, но сам фреймворк по проще.
.
С собой надо захватить неистовое желание выучиться дисциплине.
И если работаешь на другой работе, 1-1,5 года. Если прям 8 часов в день на обучение, можно 4-6 месяцев.
После этого можно выходить на рынок труда.
Не ожидай больших зарплат первый год. В первый год основная задача не заработать, а получить опыт. Поэтому придётся провалиться по ЗП. Но если голова варит, тебя возьмут.
И да, не слушай тех, кто говорит что вас таких много. Это всё ведро с крабами. Всегда есть много той работы, которую мидлы и сеньоры не хотят делать, всегда есть работа для стажёров и джунов.
Спасибо тебе, добрый человек! 1-1,5 с неистовым желанием выучиться дисциплине - не страшно) ушла искать курсы)
Амига, составьте пожалуйста список приложений, которые могут показать что флаттер достоен внимания.
Лучшие реализации. С анимациями.
Добрый день!
Спасибо за идею, сделаем статью на эту тему
А есть флатер для тех кто никогда не разрабатывал приложения, ноукод какой-нибудь.
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
У Flutter есть своя ниша, но я бы не сказал, что он для начинающих.
Делать нативно под одну платформу гораздо проще.
При этом платят нативным разработчикам лучше и позиций больше.
Для стартапов Flutter может быть интересен, но определённого типа. Тех, кто хочет развиваться на свои и не ищет инвестиций.
Интересно чем он лучше чем React Native?
Здравствуйте!
Если коротко, то:
- надежностью;
- скоростью разработки;
- интерфейс быстрее;
- безопасностью, сложно взломать.
Интересны кейсы. Даже простые
Комментарий удален модератором