js lab2017_Алексей Зеленюк_Сбалансированное окружение для...

Post on 06-Apr-2017

51 Views

Category:

Technology

9 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Сбалансированное окружение для вашей продуктивностиАлексей Зеленюк, 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]

top related