SlideShare a Scribd company logo
Инструменты разные нужны,
инструменты разные важны…
Роман Дворнов
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

More Related Content

PDF
Изоморфный JavaScript — будущее уже здесь
CodeFest
 
PDF
Knockoutjs на примере 2ГИС-Онлайн
2ГИС Технологии
 
PDF
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
DevDay
 
PDF
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
2ГИС Технологии
 
PDF
Суперсилы Chrome developer tools
2ГИС Технологии
 
PDF
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Ontico
 
PDF
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Ontico
 
PPTX
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
Ontico
 
Изоморфный JavaScript — будущее уже здесь
CodeFest
 
Knockoutjs на примере 2ГИС-Онлайн
2ГИС Технологии
 
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
DevDay
 
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
2ГИС Технологии
 
Суперсилы Chrome developer tools
2ГИС Технологии
 
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Ontico
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Ontico
 
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
Ontico
 

What's hot (20)

PDF
SPA инструменты
Roman Dvornov
 
PDF
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
2ГИС Технологии
 
PDF
Опыт разработки эффективного SPA
Eugene Abrosimov
 
PPTX
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Ontico
 
PDF
Инструменты разные нужны, инструменты разные важны
Roman Dvornov
 
PDF
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
JSib
 
PDF
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
DevDay
 
PDF
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
Ontico
 
PDF
Modules and assembling of JavaScript (in russian)
Mikhail Davydov
 
PDF
Внутреннее устройство и оптимизация бандла webpack
Alexey Ivanov
 
PDF
МРТ для данных, Frontend Conf 2016
Anastasia Goryacheva
 
PDF
Vue.js - реактивный фронтенд фреймворк для людей
Konstantin Komelin
 
PDF
Конструктор / Денис Паясь (Яндекс)
Ontico
 
PDF
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Yandex
 
PDF
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
JSib
 
PDF
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
Alexey Ivanov
 
PDF
Быстро о быстром
Roman Dvornov
 
PDF
И снова разработка под iOS. Павел Тайкало
Stanfy
 
PDF
Автоматизация UI тестирования под Windows и Windows Phone
CodeFest
 
PDF
ДАМП 2015 Екатеринбург
Alexey Ivanov
 
SPA инструменты
Roman Dvornov
 
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
2ГИС Технологии
 
Опыт разработки эффективного SPA
Eugene Abrosimov
 
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)
Ontico
 
Инструменты разные нужны, инструменты разные важны
Roman Dvornov
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
JSib
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
DevDay
 
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
Ontico
 
Modules and assembling of JavaScript (in russian)
Mikhail Davydov
 
Внутреннее устройство и оптимизация бандла webpack
Alexey Ivanov
 
МРТ для данных, Frontend Conf 2016
Anastasia Goryacheva
 
Vue.js - реактивный фронтенд фреймворк для людей
Konstantin Komelin
 
Конструктор / Денис Паясь (Яндекс)
Ontico
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Yandex
 
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
JSib
 
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
Alexey Ivanov
 
Быстро о быстром
Roman Dvornov
 
И снова разработка под iOS. Павел Тайкало
Stanfy
 
Автоматизация UI тестирования под Windows и Windows Phone
CodeFest
 
ДАМП 2015 Екатеринбург
Alexey Ivanov
 
Ad

Viewers also liked (13)

PDF
Аналитика приложений конкурентов
Anatoly Sharifulin
 
PDF
Онлайн-взаимодействие: вовлечение, исследование и обучение сотрудников
Diana Dymolazova
 
PDF
Виктор Яковлев, "Yandex": "О дивный новый-старый мир контекстной рекламы"
iProspect Russia
 
PPTX
Олеся Кащеева, Ostrovok.ru
Diana Dymolazova
 
PDF
«Как перейти от веб-аналитики к аналитике мобильных приложений» Д. Школьник...
it-people
 
PDF
Yandex market shops overview
Анна Кретова
 
PDF
AVITO. Решардинг Redis без даунтайма. DevConf 2012
Roman Pavlushko
 
PDF
Oleg Dorozhok, Head of Mobile Marketing, Yandex
White Nights Conference
 
PDF
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
Roman Pavlushko
 
PDF
Yandex market Q&A CN
Yandex
 
PDF
pgconf.ru 2015 avito postgresql
Михаил Тюрин
 
PPTX
Avito usage of_data_in_media_campaigns_olga_ky
iabrussiaprez
 
PDF
Сергей Чернов — Yandex Data Factory — ICBDA 2015
rusbase
 
Аналитика приложений конкурентов
Anatoly Sharifulin
 
Онлайн-взаимодействие: вовлечение, исследование и обучение сотрудников
Diana Dymolazova
 
Виктор Яковлев, "Yandex": "О дивный новый-старый мир контекстной рекламы"
iProspect Russia
 
Олеся Кащеева, Ostrovok.ru
Diana Dymolazova
 
«Как перейти от веб-аналитики к аналитике мобильных приложений» Д. Школьник...
it-people
 
Yandex market shops overview
Анна Кретова
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
Roman Pavlushko
 
Oleg Dorozhok, Head of Mobile Marketing, Yandex
White Nights Conference
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
Roman Pavlushko
 
Yandex market Q&A CN
Yandex
 
pgconf.ru 2015 avito postgresql
Михаил Тюрин
 
Avito usage of_data_in_media_campaigns_olga_ky
iabrussiaprez
 
Сергей Чернов — Yandex Data Factory — ICBDA 2015
rusbase
 
Ad

Similar to Инструменты разные нужны, инструменты разные важны (20)

PPTX
ACC - конструируем тест-план методом Google
SQALab
 
PDF
Проходим тест Джоэла
0leGG
 
PDF
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest
 
PPT
Проблемы и пути их решения при командной разработке проектов
Агентство AlterEGO
 
PPT
презентация.1
Ivan Mashkantsev
 
PDF
Team workflow
Даниил Зайцев
 
PDF
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU
 
PDF
TК°Conf. Организация разработки Frontend. Виталий Слободин.
TKConf
 
PPTX
Развитие интерфейса через гайдлайны
tfmailru
 
PDF
Юрий Василевский "Автоматизация в XCode"
Yandex
 
PDF
Юрий Василевский «Автоматизация в XCode»
Yandex
 
PDF
Автоматизация это модно
Andrey Rebrov
 
PPTX
Agile: разработка + тестирование
Alexander Byndyu
 
PDF
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
HappyDev
 
PDF
Фронтенд для миллионов (Орёл)
Anastasia Goryacheva
 
PPTX
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Ontico
 
PDF
Проектирование с учетом пользовательских требований
CEE-SEC(R)
 
PDF
Software testing in practice
nikolay_vasiliev
 
PPTX
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
sportgid
 
PPTX
низкоуровневое программирование сегодня новые стандарты с++, программирован...
COMAQA.BY
 
ACC - конструируем тест-план методом Google
SQALab
 
Проходим тест Джоэла
0leGG
 
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest
 
Проблемы и пути их решения при командной разработке проектов
Агентство AlterEGO
 
презентация.1
Ivan Mashkantsev
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU
 
TК°Conf. Организация разработки Frontend. Виталий Слободин.
TKConf
 
Развитие интерфейса через гайдлайны
tfmailru
 
Юрий Василевский "Автоматизация в XCode"
Yandex
 
Юрий Василевский «Автоматизация в XCode»
Yandex
 
Автоматизация это модно
Andrey Rebrov
 
Agile: разработка + тестирование
Alexander Byndyu
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
HappyDev
 
Фронтенд для миллионов (Орёл)
Anastasia Goryacheva
 
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Ontico
 
Проектирование с учетом пользовательских требований
CEE-SEC(R)
 
Software testing in practice
nikolay_vasiliev
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
sportgid
 
низкоуровневое программирование сегодня новые стандарты с++, программирован...
COMAQA.BY
 

More from CodeFest (20)

PDF
Alexander Graebe
CodeFest
 
PDF
Никита Прокопов
CodeFest
 
PPTX
Денис Баталов
CodeFest
 
PDF
Елена Гальцина
CodeFest
 
PDF
Александр Калашников
CodeFest
 
PDF
Ирина Иванова
CodeFest
 
PDF
Marko Berković
CodeFest
 
PDF
Денис Кортунов
CodeFest
 
PDF
Александр Зимин
CodeFest
 
PDF
Сергей Крапивенский
CodeFest
 
PDF
Сергей Игнатов
CodeFest
 
PDF
Николай Крапивный
CodeFest
 
PDF
Alexander Graebe
CodeFest
 
PDF
Вадим Смирнов
CodeFest
 
PDF
Константин Осипов
CodeFest
 
PDF
Raffaele Rialdi
CodeFest
 
PDF
Максим Пугачев
CodeFest
 
PDF
Rene Groeschke
CodeFest
 
PDF
Иван Бондаренко
CodeFest
 
PDF
Mete Atamel
CodeFest
 
Alexander Graebe
CodeFest
 
Никита Прокопов
CodeFest
 
Денис Баталов
CodeFest
 
Елена Гальцина
CodeFest
 
Александр Калашников
CodeFest
 
Ирина Иванова
CodeFest
 
Marko Berković
CodeFest
 
Денис Кортунов
CodeFest
 
Александр Зимин
CodeFest
 
Сергей Крапивенский
CodeFest
 
Сергей Игнатов
CodeFest
 
Николай Крапивный
CodeFest
 
Alexander Graebe
CodeFest
 
Вадим Смирнов
CodeFest
 
Константин Осипов
CodeFest
 
Raffaele Rialdi
CodeFest
 
Максим Пугачев
CodeFest
 
Rene Groeschke
CodeFest
 
Иван Бондаренко
CodeFest
 
Mete Atamel
CodeFest
 

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