Евгений Кот — фронтенд тимлид в компании Wrike. До этого чем только не занимался, был C++ и C#. В Dell начал заниматься фронтендом, так и завертелось. Также Евгений — Dart GDE (Google Developer Expert).
Вы работаете в компании, которая использует Dart для разработки своего продукта. Что было до него? В какой момент пришло понимание, что нужно переходить именно на Dart?
Когда я только пришёл в Wrike ( это было четыре года назад) нас было гораздо меньше, а фронтенд за это время вырос аж в семь раз! Тогда мы писали всё на JavaScript. Также у нас был ExtJS третьей версии, включая части других фреймворков. Продукту всё-таки уже десять лет. Эти технологии не так плохи сами по себе, но вдесятером поддерживать такой проект становилось всё сложнее. В тот момент стало понятно, что компания и команда будут расти вместе с продуктом. Нам была нужна типизация — чем строже, тем лучше. В те времена выбор был небольшой: Flow и TypeScript только начинали развиваться, но не давали должной уверенности. Стали искать альтернативы и наткнулись на Dart. Тогда, конечно, инструменты были “сырее” и сам язык был немного другой. Но мы не побоялись и поставили на «тёмную лошадку». О том, почему мы перешли на Dart, можно почитать в нашей статье.
Dart: как и где он используется?
Ну-с, немного ликбеза. Dart — язык, созданный Google уже больше шести лет назад. Он имеет строгую типизацию, SDK и свою экосистему и может исполняться на различных платформах. Сами разработчики позиционируют его как «язык, оптимизированный для клиентской разработки«. Таким образом, он лучше всего подходит для разработки именно клиентских приложений — Web и Mobile. На бекенде его тоже можно использовать, но там конкуренция инструментов гораздо выше.
Чтобы понять бенефиты Dart, надо просто попробовать написать большое приложение, например, на JavaScript — недостатки слабой системы типов рано или поздно всплывут. Тут конечно можно со мной поспорить, и я с радостью это сделаю, пишите в соцсети :-) Мы используем его для создания web-части нашего продукта. Также у нас есть несколько критических сервисов, написанных на Dart, и мы присматриваемся к мобильным возможностям языка.
Многие нам говорят — «так на нём никто не пишет, только Wrike, что же его использовать». Это совсем не так. В русскоговорящем сообществе мы, пожалуй, самые большие его потребители — это правда. Даже коллеги из Google признают, что у нас самое большое после них web-приложение. Но компаний много: например, Workiva. Сам Google перешёл на Dart в AdWords — это их основной сервис для зарабатывания денег. Малейшая бага — и всё, миллионов нет.
В русскоязычном сегменте появляются вакансии и компании, которым интересен данный язык программирования. Кстати, на конференции DartUP, которая пройдет в Петербурге уже 1 декабря, будут выступать разработчики из других «евангелистов» языка.
Вы организовали сообщество русскоязычных Dart-разработчиков, которое официально было признано Google. C чего все начиналось? Как вы поддерживаете и развиваете сообщество?
Ну как это обычно бывает — используешь сам, а потом понимаешь, что только с коллегами обсуждать скучно и нужна «свежая кровь». Началось всё с небольшого митапа три года назад — тогда Dart в России вообще никто не использовал. С тех пор это переросло в небольшое, но уютное комьюнити. Основным каналом общения остаётся чат в телеграмме, но также есть Slack. Периодически мы организуем митапы побольше, все видео доступны на YouTube канале:
Мне кажется сообщество — это как костер: оно само себя поддерживает, если есть топливо. Мы отвечаем на вопросы в чате, организуем митапы, делимся своим опытом. Понятно, что с каждым инфоповодом в канал приходят новые люди, основной вопрос: «Ну что там, можно Dart для продакшена использовать?». Ответ — «да» обычно не устраивает, так что бывают и холивары.
В чем основные преимущества Dart? Можно ли его использовать для создания мобильных приложений?
Это система типов + SDK + поддержка различных платформ. Я могу написать один блок кода и переиспользовать его везде. Сейчас никого этим не удивишь. JavaScript есть в каждом “утюге” и языки с типизацией уже не в новинку (TS, Kotlin и так далее). Но преимущество состоит как раз в сочетании всех этих факторов. В Dart 2.0 разработчики выкрутили типизацию на максимум. На Dart писать просто приятно. В целом, все разговоры X лучше Y всегда должны начинаться с вопроса: «Для каких именно задач это можно применять?». И тут уже можно что-то обсуждать.
Что касается мобильных приложений, теперь есть Flutter! Он позволяет писать код сразу под Android и iOS — эти приложения будут быстрыми и красивыми. Звучит как рекламный слоган, но это действительно так. Архитектура Flutter отличается от всех остальных мультиплатформенных фреймворков (ReactNative, Xamarin и прочих), поэтому это что-то совершенно иное.
Расскажите немного про Dart 2.0. Какие нововведения в нем произошли по сравнению с предыдущей версией языка?
Когда язык только проектировался, он должен был “убить” JavaScript, но “под капотом” он был достаточно слабо типизирован. И это, на мой взгляд, определило его провал в те годы. Ведь зачем нужен ещё один JS, который, по своей сути, не очень от него отличается? Во второй версии Dart стал гораздо серьезнее во многих вопросах. Это открыло дорогу многим оптимизациям (например, более агрессивному TreeShaking). Также была проделана большая работа по инструментам: появилось много пакетов, новый сборщик и так далее. Теперь это более production ready язык, чем был когда-либо.
Как родилась идея организовать конференцию DartUp, которая совсем скоро пройдёт в Спб? Что вы от нее ожидаете?
Конференция является идейным продолжением митапов, которые мы организовывали каждый год. Мы дозрели до масштабного мероприятия — будет целый день докладов с крутыми спикерами, большинство из которых приедут из других городов и разных компаний.
Конференция DartUp полностью бесплатна, нужно только зарегистрироваться. И как и год назад, мы наварили специального Dart-пива.
Мы ожидаем от конференции только позитивных эмоций! Приятно видеть, что сообщество растет и взрослеет. А ещё ожидаем в гости всех и тем более тех, кто о Dart ничего не слышал — будет весело!