57
Инструменты разные нужны, инструменты разные важныРоман Дворнов Avito CodeFest, март 2015

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

  • Upload
    basisjs

  • View
    690

  • Download
    3

Embed Size (px)

Citation preview

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

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

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

CodeFest, март 2015

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

Работаю в Avito

Делаю SPA

Автор basis.js

Я…

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

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

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

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

4

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

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

5

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

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

Инструменты

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

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

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

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

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

7

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

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

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

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

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

• …8

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

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

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

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

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

9

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

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

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

10

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

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

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

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

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

• …

11

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

Выбор

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

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

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

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

• Критерии качества

• ...

13

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

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

14

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

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

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

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

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

• …

15

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

16

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

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

17

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

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

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

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

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

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

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

18

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

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

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

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

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

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

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

19

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

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

20

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

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

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

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

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

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

21

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

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

22

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

Сделай сам

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

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

24

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

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

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

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

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

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

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

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

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

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

26

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

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

27

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

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

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

28

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

DEMO

29

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

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

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

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

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

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

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

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

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

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

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

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

31

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

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

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

32

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

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

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

33

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

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

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

34

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

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

35

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

DEMO

36

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

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

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

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

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

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

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

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

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

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

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

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

38

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

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

39

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

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

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

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

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

40

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

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

41

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

DEMO

42

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

Подход

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

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

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

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

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

45

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

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

для client side

46

github.com/basisjs/yatra

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

DEMO

47

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

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

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

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

48

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

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

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

49

wallabyjs.com

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

Эпилог

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

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

51

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

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

52

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

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

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

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

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

54

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

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

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

55

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

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

56

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

Спасибо!

57

Роман Дворнов @rdvornov [email protected]

basis.js basisjs.com

github.com/basisjs