Инструменты разные нужны, инструменты разные важны

Preview:

Citation preview

Инструменты разные нужны, инструменты разные важны…

Роман Дворнов Avito

CodeFest, март 2015

Работаю в Avito

Делаю SPA

Автор basis.js

Я…

И вообще, за любую движуху, кроме голодовки ;)

Мы – делаем продукт

4

Идеальное приложение

5

Все несколько сложнее…

Инструменты

Привычные инструменты

• среда разработки – редаторы, IDE + плагины

• консольные – командная строка

• браузерные – in-app и плагины

7

Инструментов много разных• Автоматизация (task runner'ы) – grunt, gulp, …

• Оптимизаторы – csso, uglifyjs, svgo, …

• Cтиль кода – jscs, csscomb, …

• Линтеры – jshint, jslint, csslint, …

• …8

Доклады по теме• Автоматизация фронтенда – сегодня и завтра

Роберт Харитонов, rhr.me/pres/automation/

• Front-end Tooling Workflows Addy Osmani, tinyurl.com/front-end-tooling-workflows

• Суперсилы Chrome DevToolsРоман Сальников, tinyurl.com/powerofdevtools

9

В более широком смысле, инструменты – всё, что помогает

нам достигать наших целей

10

Тоже инструменты

• фреймворки, библиотеки

• подходы, алгоритмы

• методологии

• …

11

Выбор

У каждого своя история• Поддерживаемые браузеры (среда исполнения)

• Подходящие технологии, подходы, фреймворки

• Особенности процесса разработки

• Критерии качества, уровень тестирования

• ...

13

Как же выбрать?

14

Типичные ошибки при выборе

• Синтаксис или API

• Тренд, популярность, размер комьюнити

• Чье-то авторитетное мнение

• …

15

16

Грустная история 1

17

популярный, но не эффективный фреймворк

→ работает медленно, много багов

→ перекладываем задачи на бекенд

→ теряем независимость и усложняем решение

= невозможность интересных сценариев

Грустная история 2

18

отсутствие готовых отточенных решений

→ много повторяющегося кода

→ более компактные языки

→ пре-процессоры

= обязательная сборка (медленный workflow)

Грустная история 3 Грустная история 4 Грустная история 5 Грустная история 6

19

Нужно выбирать не по отдельности, а всё вместе

20

Задачи стека инструментов...

• экономить время

• позволять делать сложные интерфейсы

• улучшать качество

• вдохновлять

21

Но не всегда есть все необходимое…

22

Сделай сам

Основная задача – решить проблему, а не создать новую

24

Основные принципы1. Автоматизация во всем

2. Не делаем то, что можно не делать

3. Ускорение технических процессов

4. Отсутствие ожидания (real time)

5. Наглядность

6. Быстрая навигация

7. Анализируем все, что анализируется25

1. Автоматизация во всем Избавляемся от рутины – используем скрипты, сборщики, task runner'ы, кодогенерацию, ...

26

2. Не делаем то, что можно не делать Отсутствие сборки при разработке, подсказки, короткое описание задач, придумывание имен…

27

3. Ускорение тех. процессов Предобработка, cache, параллельные вычисления,

инкрементальные обновления...

28

DEMO

29

Что это было?Выполнение рутиной работыПроцесс автоматический

Не делаем, то что можно не делатьАнализ определяет, что нужно для сборки

Ускорение тех. процессов Все работает без сборки, используем кеш

30

Подробнее в докладе

SPA инструменты www.youtube.com/watch?v=IUtbbN9aevU

31

4. Отсутствие ожидания Любое действие или изменение должно приводить

к моментальному видимому результату

32

5. Наглядность Отладочная информация, схемы,

специальные представления и интерфейсы…

33

6. Быстрая навигация Контекстная информация, отсутствие поиска, быстрый переход к описанию, файлу и т.д.

34

DEMO

35

Что это было?Отсутствие ожиданияВносимые изменения видны сразу

НаглядностьСхематичное представление, специальные интерфейсы

Быстрая навигацияМгновенный переход к нужному описанию

36

Это вдохновляет!

37

Вот почему• Быстро и качественно делаете сложные штуки

• Понимаете как работает, хотя еще не видели код

• Результат виден без ожиданий

• Ничего не тормозит превращение вашей идеив конечный результат

38

7. Анализируем все, что можно Чем его больше анализа и тем лучше …

39

DEMO

40

Подход

Нельзя так просто взять и запилить «хороший» инструмент для «плохого» решения

Используя «правильные» подходы, можно улучшить даже

уже существующие вещи

43

Yatra Моя попытка сделать удобный test runner

для client side

44

github.com/basisjs/yatra

DEMO

45

Те же принципыНе делаем, то что можно не делатьНе нужно модифицировать код

Отсутствие ожиданияТесты перезапускаются по мере изменения кода

Быстрая навигацияПереход к коду теста, debugger на нужной строке

46

Wallaby.js Использует похожие принципы, но нацелен

на интеграцию в редакторы и IDE

47

wallabyjs.com

Эпилог

Инструменты – всё, что позволяет достигать целей

49

Если нет готового –не бойтесь создавать своё

50

– У нас нет на это времени…

– Инструменты – это инвестиция в собственную эффективность

Любой процесс можно улучшить, используя правильные подходы

52

Вместо боли разработка может приносить

удовольствие

53

Задумайтесь об этом

54

Спасибо!

55

Роман Дворнов @rdvornov rdvornov@gmail.com

basis.js basisjs.com

github.com/basisjs

Recommended