SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
Сбалансированное окружение для
вашей продуктивности
Алексей Зеленюк, Application Architect
eleks.com
Big blue heading
О чем доклад
● Почему в JS все так сложно?
● Как выглядит современное JS окружение
● Мой первый JS Энтерпрайз
● Все это правда надо?
● Мои менее продвинутые проекты
● Начинаем новый проект
● Что с этим делать?
● Что приводит к сложности?
● Бройлерплейты против велосипедов
● Рельсово-Сиэлайная магия
● Гибридный подход
● Lean Environment
● К чему нужно стремиться?
● С чего нужно начать?
● Что можно отложить?
● Чего бояться?
● Полезные мелочи
● О команде
Сбалансированное окружение
для вашей продуктивности,
Алексей Зеленюк
Современное JS
окружение
1. Package Management
2. Bundling
3. Transpiling
4. Minification
5. Sourcemaps
6. Mocked API
7. Dev Webserver
8. Component Libraries
9. Build automation
10.Production deploy
11.Code Style validation
12.Unit/E2E tests
В придачу
1. Continuous Integration
2. Build automation
3. Production deployment
4. Code-review инструменты и конвенции
5. Tests coverage
6. SDLC специфика, и прочий Agile
Мой первый JS
Энтерпрайз
Python (древней версии)
Ruby gems для компаса и
еще какой-то фигни
Bash скрипты (много)
Backbone забытой версии,
модифицированный
Юнит тесты
E2E тесты
Время сборки ~ 10 минут
Деплой – ~ 1 час
Как-то так…
Когда попадаешь в
менее продвинутый
проект
Когда начинаешь
проект с нуля
Что в итоге?
● Программа обросла библиотеками
● Билд обрастает скриптами
● Проект новыми требованиями
● И новыми костылями
● Много тяжелых тестов
● Сложность растет
● Рефакторить нет времени
● Лепим сверху, сзади и по бокам
● Производительность упала
● А давайте перепишем с нуля?
Начать с чистого листа нетрудно.
Трудно изменить почерк.
П. Коэльо
Избыточная сложность.
Что к ней приводит?
1. Лень/нет времени разбираться
2. Лень/нет времени следить за прогрессом
3. Хайп, погоня за новым
4. Новые требования не вкладываются в архитектуру
5. Неправильные решения и лишние абстракции
6. Пренебрегание рефакторингом
Бройлерплейты
• Экономит время (вначале)
• Фокусируемся на задаче
• Поддерживается
• Full-featured
• Стандартный стек
• Много лишнего
• Меньше понимания
• Трудно расширить
Велосипеды
• Выбираем только нужное
• Больше понимания
• Меньше лишней сложности
• Проще изменить
• Долгий старт
• Нужно поддерживать
• Свое не всегда лучшее
Теплый рельсовый CLI
• Стандартный подход
• Меньше рутины
• Ускоряет вход в проект
• Ускоряет разработку
• Само-документируемость
• Много лишнего кода
• Жесткие рамки
• Постоянная доработка
шаблонов
Гибридный подход
1. Изучить лучшие решения
2. Выбрать наиболее подходящее
3. Пересобрать с оглядкой на него, с нуля
4. Создать шаблоны для CLI
5. Мотивировать коллег (и себя) их использовать
Lean Environment
Less-is-Better
К чему нужно стремиться?
1. Быстрый фидбек
2. Авто-конвенции
3. Масштабируемость
4. [TO BE CONTINUED]
С чего начать?
1. Осмысление требований и 3-party интеграций
2. Понимание потоков данных и интерфейсов
3. Быстрый прототип на бойлерплейте и фидбек
4. EditorConfig и линтеры
5. Юнит-тесты
6. WIP Demo (localtunnel, Surge, etc)
7. Спецификация (Swagger, etc.)
8. Переосмысление и переписывание
Что можно отложить?
1. Твердый выбор фреймворка и утилит
2. Выбор и настройка БД
3. Глубокую декомпозицию
4. Внедрение абстракций
5. DRY принцип
6. Все что можно отложить
YAGNIYou Ain’t Gonna Need It!
Fake it until you make it!
1. [TO BE CONTINUED]
О Команде
1. [TO BE CONTINUED]

Contenu connexe

Tendances

А. Калугин. О параллельном тестировании нескольких проектов. SQADays'10
А. Калугин. О параллельном тестировании нескольких проектов. SQADays'10А. Калугин. О параллельном тестировании нескольких проектов. SQADays'10
А. Калугин. О параллельном тестировании нескольких проектов. SQADays'10Alexander Kalouguine
 
Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Ontico
 
Тестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и какТестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и какSQALab
 
Оценка проектов тестирования
Оценка проектов тестированияОценка проектов тестирования
Оценка проектов тестированияRina Uzhevko
 
Гибкое тестирование
Гибкое тестированиеГибкое тестирование
Гибкое тестированиеRina Uzhevko
 
бородин об эмпирической разработке
бородин   об эмпирической разработкебородин   об эмпирической разработке
бородин об эмпирической разработкеMagneta AI
 
Всему своё время Highload Junior 2016
Всему своё время   Highload Junior  2016Всему своё время   Highload Junior  2016
Всему своё время Highload Junior 2016Roman Ivliev
 
7 Способы проведения ретроспектив для анализа и улучшения процесса
7 Способы проведения ретроспектив для анализа и улучшения процесса7 Способы проведения ретроспектив для анализа и улучшения процесса
7 Способы проведения ретроспектив для анализа и улучшения процессаMagneta AI
 
Continuous integration для java script проектов
Continuous integration для java script проектовContinuous integration для java script проектов
Continuous integration для java script проектовAndrey Kucherenko
 
О фреймворках Backend conf 2016
О фреймворках Backend conf 2016О фреймворках Backend conf 2016
О фреймворках Backend conf 2016Roman Ivliev
 
DevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почемуDevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почемуAndrey Rebrov
 
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17OdessaFrontend
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.ScrumTrek
 
Как проекты приходят к DevOps?
Как проекты приходят к DevOps?Как проекты приходят к DevOps?
Как проекты приходят к DevOps?SQALab
 
Visual Studio Team Services /TFS helps doing devops
Visual Studio Team Services /TFS helps doing devops Visual Studio Team Services /TFS helps doing devops
Visual Studio Team Services /TFS helps doing devops Konstantin Neradovsky
 
Тестирование в условиях Lean: как приручить MVP?
Тестирование в условиях Lean: как приручить MVP?Тестирование в условиях Lean: как приручить MVP?
Тестирование в условиях Lean: как приручить MVP?SQALab
 
Agile мёртв (!|?) / Александр Сидоров (Яндекс)
Agile мёртв (!|?) / Александр Сидоров (Яндекс)Agile мёртв (!|?) / Александр Сидоров (Яндекс)
Agile мёртв (!|?) / Александр Сидоров (Яндекс)Ontico
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ruRoman Ivliev
 
Темная сторона метрик
Темная сторона метрикТемная сторона метрик
Темная сторона метрикRoman Ivliev
 

Tendances (19)

А. Калугин. О параллельном тестировании нескольких проектов. SQADays'10
А. Калугин. О параллельном тестировании нескольких проектов. SQADays'10А. Калугин. О параллельном тестировании нескольких проектов. SQADays'10
А. Калугин. О параллельном тестировании нескольких проектов. SQADays'10
 
Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)
 
Тестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и какТестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и как
 
Оценка проектов тестирования
Оценка проектов тестированияОценка проектов тестирования
Оценка проектов тестирования
 
Гибкое тестирование
Гибкое тестированиеГибкое тестирование
Гибкое тестирование
 
бородин об эмпирической разработке
бородин   об эмпирической разработкебородин   об эмпирической разработке
бородин об эмпирической разработке
 
Всему своё время Highload Junior 2016
Всему своё время   Highload Junior  2016Всему своё время   Highload Junior  2016
Всему своё время Highload Junior 2016
 
7 Способы проведения ретроспектив для анализа и улучшения процесса
7 Способы проведения ретроспектив для анализа и улучшения процесса7 Способы проведения ретроспектив для анализа и улучшения процесса
7 Способы проведения ретроспектив для анализа и улучшения процесса
 
Continuous integration для java script проектов
Continuous integration для java script проектовContinuous integration для java script проектов
Continuous integration для java script проектов
 
О фреймворках Backend conf 2016
О фреймворках Backend conf 2016О фреймворках Backend conf 2016
О фреймворках Backend conf 2016
 
DevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почемуDevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почему
 
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.
 
Как проекты приходят к DevOps?
Как проекты приходят к DevOps?Как проекты приходят к DevOps?
Как проекты приходят к DevOps?
 
Visual Studio Team Services /TFS helps doing devops
Visual Studio Team Services /TFS helps doing devops Visual Studio Team Services /TFS helps doing devops
Visual Studio Team Services /TFS helps doing devops
 
Тестирование в условиях Lean: как приручить MVP?
Тестирование в условиях Lean: как приручить MVP?Тестирование в условиях Lean: как приручить MVP?
Тестирование в условиях Lean: как приручить MVP?
 
Agile мёртв (!|?) / Александр Сидоров (Яндекс)
Agile мёртв (!|?) / Александр Сидоров (Яндекс)Agile мёртв (!|?) / Александр Сидоров (Яндекс)
Agile мёртв (!|?) / Александр Сидоров (Яндекс)
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ru
 
Темная сторона метрик
Темная сторона метрикТемная сторона метрик
Темная сторона метрик
 

En vedette

JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...GeeksLab Odessa
 
JS Lab2017_Lightning Talks_React Perfomance
JS Lab2017_Lightning Talks_React Perfomance JS Lab2017_Lightning Talks_React Perfomance
JS Lab2017_Lightning Talks_React Perfomance GeeksLab Odessa
 
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js GeeksLab Odessa
 
JS Lab2017_Lightning Talks_Рекрутинг.js
JS Lab2017_Lightning Talks_Рекрутинг.js JS Lab2017_Lightning Talks_Рекрутинг.js
JS Lab2017_Lightning Talks_Рекрутинг.js GeeksLab Odessa
 
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
Frontendlab: Cравнить Несравнимое  - Юлия ПучнинаFrontendlab: Cравнить Несравнимое  - Юлия Пучнина
Frontendlab: Cравнить Несравнимое - Юлия ПучнинаGeeksLab Odessa
 
JS Lab2017_Lightning Talks_PostCSS - there is a plugin for that
JS Lab2017_Lightning Talks_PostCSS - there is a plugin for thatJS Lab2017_Lightning Talks_PostCSS - there is a plugin for that
JS Lab2017_Lightning Talks_PostCSS - there is a plugin for thatGeeksLab Odessa
 
JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, с...
JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, с...JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, с...
JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, с...GeeksLab Odessa
 
JS Lab2017_Виталий Лебедев_Практические сложности при разработке на node.js
JS Lab2017_Виталий Лебедев_Практические сложности при разработке на node.js JS Lab2017_Виталий Лебедев_Практические сложности при разработке на node.js
JS Lab2017_Виталий Лебедев_Практические сложности при разработке на node.js GeeksLab Odessa
 
JS Lab2017_Юлия Пучнина_PhaserJS и что он умеет
JS Lab2017_Юлия Пучнина_PhaserJS и что он умеетJS Lab2017_Юлия Пучнина_PhaserJS и что он умеет
JS Lab2017_Юлия Пучнина_PhaserJS и что он умеетGeeksLab Odessa
 
JS Lab2017_Роман Якобчук_Почему так важно быть программистом в фронтенде
JS Lab2017_Роман Якобчук_Почему так важно быть программистом в фронтенде JS Lab2017_Роман Якобчук_Почему так важно быть программистом в фронтенде
JS Lab2017_Роман Якобчук_Почему так важно быть программистом в фронтенде GeeksLab Odessa
 
JS Lab2017_Алексей Заславский_React Fiber
JS Lab2017_Алексей Заславский_React Fiber JS Lab2017_Алексей Заславский_React Fiber
JS Lab2017_Алексей Заславский_React Fiber GeeksLab Odessa
 
JS Lab2017_Сергей Селецкий_System.js и jspm
JS Lab2017_Сергей Селецкий_System.js и jspmJS Lab2017_Сергей Селецкий_System.js и jspm
JS Lab2017_Сергей Селецкий_System.js и jspmGeeksLab Odessa
 
WebCamp 2016: Python.Максим Климишин.Типизированный Python
WebCamp 2016: Python.Максим Климишин.Типизированный PythonWebCamp 2016: Python.Максим Климишин.Типизированный Python
WebCamp 2016: Python.Максим Климишин.Типизированный PythonWebCamp
 
AI&BigData Lab 2016. Сергей Шельпук: Методология Data Science проектов
AI&BigData Lab 2016. Сергей Шельпук: Методология Data Science проектовAI&BigData Lab 2016. Сергей Шельпук: Методология Data Science проектов
AI&BigData Lab 2016. Сергей Шельпук: Методология Data Science проектовGeeksLab Odessa
 
JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова
JS Lab2017_Redux: время двигаться дальше?_Екатерина ЛизогубоваJS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова
JS Lab2017_Redux: время двигаться дальше?_Екатерина ЛизогубоваGeeksLab Odessa
 

En vedette (15)

JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
 
JS Lab2017_Lightning Talks_React Perfomance
JS Lab2017_Lightning Talks_React Perfomance JS Lab2017_Lightning Talks_React Perfomance
JS Lab2017_Lightning Talks_React Perfomance
 
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
 
JS Lab2017_Lightning Talks_Рекрутинг.js
JS Lab2017_Lightning Talks_Рекрутинг.js JS Lab2017_Lightning Talks_Рекрутинг.js
JS Lab2017_Lightning Talks_Рекрутинг.js
 
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
Frontendlab: Cравнить Несравнимое  - Юлия ПучнинаFrontendlab: Cравнить Несравнимое  - Юлия Пучнина
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
 
JS Lab2017_Lightning Talks_PostCSS - there is a plugin for that
JS Lab2017_Lightning Talks_PostCSS - there is a plugin for thatJS Lab2017_Lightning Talks_PostCSS - there is a plugin for that
JS Lab2017_Lightning Talks_PostCSS - there is a plugin for that
 
JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, с...
JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, с...JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, с...
JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, с...
 
JS Lab2017_Виталий Лебедев_Практические сложности при разработке на node.js
JS Lab2017_Виталий Лебедев_Практические сложности при разработке на node.js JS Lab2017_Виталий Лебедев_Практические сложности при разработке на node.js
JS Lab2017_Виталий Лебедев_Практические сложности при разработке на node.js
 
JS Lab2017_Юлия Пучнина_PhaserJS и что он умеет
JS Lab2017_Юлия Пучнина_PhaserJS и что он умеетJS Lab2017_Юлия Пучнина_PhaserJS и что он умеет
JS Lab2017_Юлия Пучнина_PhaserJS и что он умеет
 
JS Lab2017_Роман Якобчук_Почему так важно быть программистом в фронтенде
JS Lab2017_Роман Якобчук_Почему так важно быть программистом в фронтенде JS Lab2017_Роман Якобчук_Почему так важно быть программистом в фронтенде
JS Lab2017_Роман Якобчук_Почему так важно быть программистом в фронтенде
 
JS Lab2017_Алексей Заславский_React Fiber
JS Lab2017_Алексей Заславский_React Fiber JS Lab2017_Алексей Заславский_React Fiber
JS Lab2017_Алексей Заславский_React Fiber
 
JS Lab2017_Сергей Селецкий_System.js и jspm
JS Lab2017_Сергей Селецкий_System.js и jspmJS Lab2017_Сергей Селецкий_System.js и jspm
JS Lab2017_Сергей Селецкий_System.js и jspm
 
WebCamp 2016: Python.Максим Климишин.Типизированный Python
WebCamp 2016: Python.Максим Климишин.Типизированный PythonWebCamp 2016: Python.Максим Климишин.Типизированный Python
WebCamp 2016: Python.Максим Климишин.Типизированный Python
 
AI&BigData Lab 2016. Сергей Шельпук: Методология Data Science проектов
AI&BigData Lab 2016. Сергей Шельпук: Методология Data Science проектовAI&BigData Lab 2016. Сергей Шельпук: Методология Data Science проектов
AI&BigData Lab 2016. Сергей Шельпук: Методология Data Science проектов
 
JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова
JS Lab2017_Redux: время двигаться дальше?_Екатерина ЛизогубоваJS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова
JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова
 

Similaire à JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности

Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныRoman Dvornov
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
Test Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsTest Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsAnton Vidishchev
 
Прикручивание колёс на ходу. Внедрение UX процессов в уже работающий продукт
Прикручивание колёс на ходу. Внедрение UX процессов в уже работающий продуктПрикручивание колёс на ходу. Внедрение UX процессов в уже работающий продукт
Прикручивание колёс на ходу. Внедрение UX процессов в уже работающий продуктПрофсоUX
 
Agile Process Wizard или как собрать Agile методологию под конкретный проект
Agile Process Wizard или как собрать Agile методологию под конкретный проектAgile Process Wizard или как собрать Agile методологию под конкретный проект
Agile Process Wizard или как собрать Agile методологию под конкретный проектReturn on Intelligence
 
Раздвоение тестирующей личности или эффективная организация параллельного тес...
Раздвоение тестирующей личности или эффективная организация параллельного тес...Раздвоение тестирующей личности или эффективная организация параллельного тес...
Раздвоение тестирующей личности или эффективная организация параллельного тес...SQALab
 
Константин Назаров – Распараллеливание сборки Parallels Desktop для Mac
Константин Назаров – Распараллеливание сборки Parallels Desktop для MacКонстантин Назаров – Распараллеливание сборки Parallels Desktop для Mac
Константин Назаров – Распараллеливание сборки Parallels Desktop для Mac404fest
 
Форум Технологий Mail.Ru 2011: Юрий Ветров — Как создаются интерфейсы в Mail.Ru
Форум Технологий Mail.Ru 2011: Юрий Ветров — Как создаются интерфейсы в Mail.RuФорум Технологий Mail.Ru 2011: Юрий Ветров — Как создаются интерфейсы в Mail.Ru
Форум Технологий Mail.Ru 2011: Юрий Ветров — Как создаются интерфейсы в Mail.RuYury Vetrov
 
UWDC'12, Александр Макаров, О командной разработке и фреймворках
UWDC'12, Александр Макаров, О командной разработке и фреймворкахUWDC'12, Александр Макаров, О командной разработке и фреймворках
UWDC'12, Александр Макаров, О командной разработке и фреймворкахAlexander Makarov
 
Микросервисы: первая кровь
Микросервисы: первая кровьМикросервисы: первая кровь
Микросервисы: первая кровьМаксим Сячин
 
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработкиКак перейти от проектного мышления к продуктовому. Опыт из заказной разработки
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработкиAlexander Byndyu
 
Эффективные ретроспективы
Эффективные ретроспективыЭффективные ретроспективы
Эффективные ретроспективыBoris Volfson
 
CodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest
 
Test driven development in net
Test driven development in netTest driven development in net
Test driven development in netAlex Tumanoff
 
Юрий Ветров "Как планируется работа команды проектирования и дизайна интерфей...
Юрий Ветров "Как планируется работа команды проектирования и дизайна интерфей...Юрий Ветров "Как планируется работа команды проектирования и дизайна интерфей...
Юрий Ветров "Как планируется работа команды проектирования и дизайна интерфей...Yandex
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла0leGG
 
Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк YiiDevconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк YiiAlexander Makarov
 

Similaire à JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности (20)

Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важны
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
Test Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsTest Driven Development in .NET Applications
Test Driven Development in .NET Applications
 
Прикручивание колёс на ходу. Внедрение UX процессов в уже работающий продукт
Прикручивание колёс на ходу. Внедрение UX процессов в уже работающий продуктПрикручивание колёс на ходу. Внедрение UX процессов в уже работающий продукт
Прикручивание колёс на ходу. Внедрение UX процессов в уже работающий продукт
 
Agile Process Wizard или как собрать Agile методологию под конкретный проект
Agile Process Wizard или как собрать Agile методологию под конкретный проектAgile Process Wizard или как собрать Agile методологию под конкретный проект
Agile Process Wizard или как собрать Agile методологию под конкретный проект
 
Раздвоение тестирующей личности или эффективная организация параллельного тес...
Раздвоение тестирующей личности или эффективная организация параллельного тес...Раздвоение тестирующей личности или эффективная организация параллельного тес...
Раздвоение тестирующей личности или эффективная организация параллельного тес...
 
Константин Назаров – Распараллеливание сборки Parallels Desktop для Mac
Константин Назаров – Распараллеливание сборки Parallels Desktop для MacКонстантин Назаров – Распараллеливание сборки Parallels Desktop для Mac
Константин Назаров – Распараллеливание сборки Parallels Desktop для Mac
 
Форум Технологий Mail.Ru 2011: Юрий Ветров — Как создаются интерфейсы в Mail.Ru
Форум Технологий Mail.Ru 2011: Юрий Ветров — Как создаются интерфейсы в Mail.RuФорум Технологий Mail.Ru 2011: Юрий Ветров — Как создаются интерфейсы в Mail.Ru
Форум Технологий Mail.Ru 2011: Юрий Ветров — Как создаются интерфейсы в Mail.Ru
 
UWDC'12, Александр Макаров, О командной разработке и фреймворках
UWDC'12, Александр Макаров, О командной разработке и фреймворкахUWDC'12, Александр Макаров, О командной разработке и фреймворках
UWDC'12, Александр Макаров, О командной разработке и фреймворках
 
Как разраба
Как разрабаКак разраба
Как разраба
 
Микросервисы: первая кровь
Микросервисы: первая кровьМикросервисы: первая кровь
Микросервисы: первая кровь
 
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработкиКак перейти от проектного мышления к продуктовому. Опыт из заказной разработки
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
 
Эффективные ретроспективы
Эффективные ретроспективыЭффективные ретроспективы
Эффективные ретроспективы
 
CodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается Yii
 
Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
Как работать с legacy проектом, которому больше10 лет? |Денис ВоскобойникКак работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
 
Test driven development in net
Test driven development in netTest driven development in net
Test driven development in net
 
7 retro
7 retro7 retro
7 retro
 
Юрий Ветров "Как планируется работа команды проектирования и дизайна интерфей...
Юрий Ветров "Как планируется работа команды проектирования и дизайна интерфей...Юрий Ветров "Как планируется работа команды проектирования и дизайна интерфей...
Юрий Ветров "Как планируется работа команды проектирования и дизайна интерфей...
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла
 
Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк YiiDevconf 2011 - PHP - Как разрабатывается фреймворк Yii
Devconf 2011 - PHP - Как разрабатывается фреймворк Yii
 

Plus de GeeksLab Odessa

DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...GeeksLab Odessa
 
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...GeeksLab Odessa
 
DataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский ВикторDataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский ВикторGeeksLab Odessa
 
DataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображениеDataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображениеGeeksLab Odessa
 
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...GeeksLab Odessa
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладGeeksLab Odessa
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладGeeksLab Odessa
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладGeeksLab Odessa
 
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...GeeksLab Odessa
 
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...GeeksLab Odessa
 
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко GeeksLab Odessa
 
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...GeeksLab Odessa
 
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...GeeksLab Odessa
 
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...GeeksLab Odessa
 
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...GeeksLab Odessa
 
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...GeeksLab Odessa
 
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...GeeksLab Odessa
 
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот GeeksLab Odessa
 
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...GeeksLab Odessa
 

Plus de GeeksLab Odessa (19)

DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
 
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
 
DataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский ВикторDataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский Виктор
 
DataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображениеDataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображение
 
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
 
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
 
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
 
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
 
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
 
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
 
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
 
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
 
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
 
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
 
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
 

JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности

  • 1. Сбалансированное окружение для вашей продуктивности Алексей Зеленюк, Application Architect eleks.com Big blue heading
  • 2. О чем доклад ● Почему в JS все так сложно? ● Как выглядит современное JS окружение ● Мой первый JS Энтерпрайз ● Все это правда надо? ● Мои менее продвинутые проекты ● Начинаем новый проект ● Что с этим делать? ● Что приводит к сложности? ● Бройлерплейты против велосипедов ● Рельсово-Сиэлайная магия ● Гибридный подход ● Lean Environment ● К чему нужно стремиться? ● С чего нужно начать? ● Что можно отложить? ● Чего бояться? ● Полезные мелочи ● О команде Сбалансированное окружение для вашей продуктивности, Алексей Зеленюк
  • 3. Современное JS окружение 1. Package Management 2. Bundling 3. Transpiling 4. Minification 5. Sourcemaps 6. Mocked API 7. Dev Webserver 8. Component Libraries 9. Build automation 10.Production deploy 11.Code Style validation 12.Unit/E2E tests
  • 4. В придачу 1. Continuous Integration 2. Build automation 3. Production deployment 4. Code-review инструменты и конвенции 5. Tests coverage 6. SDLC специфика, и прочий Agile
  • 5. Мой первый JS Энтерпрайз Python (древней версии) Ruby gems для компаса и еще какой-то фигни Bash скрипты (много) Backbone забытой версии, модифицированный Юнит тесты E2E тесты Время сборки ~ 10 минут Деплой – ~ 1 час
  • 7. Когда попадаешь в менее продвинутый проект
  • 9. Что в итоге? ● Программа обросла библиотеками ● Билд обрастает скриптами ● Проект новыми требованиями ● И новыми костылями ● Много тяжелых тестов ● Сложность растет ● Рефакторить нет времени ● Лепим сверху, сзади и по бокам ● Производительность упала ● А давайте перепишем с нуля?
  • 10. Начать с чистого листа нетрудно. Трудно изменить почерк. П. Коэльо
  • 11. Избыточная сложность. Что к ней приводит? 1. Лень/нет времени разбираться 2. Лень/нет времени следить за прогрессом 3. Хайп, погоня за новым 4. Новые требования не вкладываются в архитектуру 5. Неправильные решения и лишние абстракции 6. Пренебрегание рефакторингом
  • 12. Бройлерплейты • Экономит время (вначале) • Фокусируемся на задаче • Поддерживается • Full-featured • Стандартный стек • Много лишнего • Меньше понимания • Трудно расширить
  • 13. Велосипеды • Выбираем только нужное • Больше понимания • Меньше лишней сложности • Проще изменить • Долгий старт • Нужно поддерживать • Свое не всегда лучшее
  • 14. Теплый рельсовый CLI • Стандартный подход • Меньше рутины • Ускоряет вход в проект • Ускоряет разработку • Само-документируемость • Много лишнего кода • Жесткие рамки • Постоянная доработка шаблонов
  • 15. Гибридный подход 1. Изучить лучшие решения 2. Выбрать наиболее подходящее 3. Пересобрать с оглядкой на него, с нуля 4. Создать шаблоны для CLI 5. Мотивировать коллег (и себя) их использовать
  • 17. К чему нужно стремиться? 1. Быстрый фидбек 2. Авто-конвенции 3. Масштабируемость 4. [TO BE CONTINUED]
  • 18. С чего начать? 1. Осмысление требований и 3-party интеграций 2. Понимание потоков данных и интерфейсов 3. Быстрый прототип на бойлерплейте и фидбек 4. EditorConfig и линтеры 5. Юнит-тесты 6. WIP Demo (localtunnel, Surge, etc) 7. Спецификация (Swagger, etc.) 8. Переосмысление и переписывание
  • 19. Что можно отложить? 1. Твердый выбор фреймворка и утилит 2. Выбор и настройка БД 3. Глубокую декомпозицию 4. Внедрение абстракций 5. DRY принцип 6. Все что можно отложить YAGNIYou Ain’t Gonna Need It!
  • 20. Fake it until you make it! 1. [TO BE CONTINUED]
  • 21. О Команде 1. [TO BE CONTINUED]