1 of 14

Инженерные подходы

Олег из Альфа-Банка

@luchanso

Процесс непрерывного совершенствования

2 of 14

Рыба и удочка

  • Простота проектирования (Simple design)
  • Автоматическая сборка webpack, babel, gulp
  • Eslint / Строгая типизаця
  • Тесты - юниты/интеграционные/e2e
  • Legacy
  • Автоматизация скриптами - CI/CD
  • JSDoc и документация / README
  • Mocks - project can development without network
  • Есть несколько сред test/integration/production
  • Storybook
  • Build time
  • Performance
  • Project management/workflow
  • UI kit
  • Split code on external lib
  • Business analytics
  • System health monitoring
  • System failure resistance
  • ...

3 of 14

Процесс непрерывного совершенствования

  • А как проблема решена у других?
  • Книги
    • Чистый код, совершенный код
    • Agile
    • 改善, кайдзэн, kaizen
    • Теория ограничения систем
  • Научный подход к задачам
    • Инженеры
    • Учёные

С чего всё начиналось?

Хаос из проблем и задач

unsplash.com/@manucosen

4 of 14

Процесс в разработке

5 of 14

Процесс в разработке

6 of 14

  1. Найти ограничение
  2. Решить, каким образом максимально использовать ограничение
  3. Подчинить все остальное принятому решению
  4. Развить (расширить) ограничение
  5. Вернуться к первому шагу

С чего начать?

unsplash.com/@glenncarstenspeters

7 of 14

Процесс в разработке

8 of 14

Пример из жизни

Непонятно что делать и в каком порядке, путаница, слишком много левых задач, что - то упускается из виду, не получается сфокусироваться. Срыв сроков.

unsplash.com/@markusspiske

9 of 14

1. Front-end

  1. Что можно с этим поделать?
    • Начать вести чек лист на каждую задачу
    • Читать Slack только раз в час
    • Записывать моменты, которые отвлекают
    • Не делать более двух задач параллельно
    • Отслеживать все задачи в таск трекере
    • Единая точка входа для задач - все просьбы через заинтересованное лицо
  2. Как подчинить все остальное принятому решению?
    • Не брать больше задач, чем может выполнить разработчик
  3. Развить ограничение
    • Нанять ещё одного фронта
    • Расширить компетенции в команде
    • Попросить Scrum мастера в команду
    • Пройти Agile курсы

10 of 14

Отдельное слово про чек листы

  1. Постоянно улучшается
  2. Может меняться на ходу
  3. Проверяйте не только себя
  4. Действия в чек листе выполняются последовательно
  5. Одно действие - один пункт чек листа
    1. [Bad] Сделать задачу
    2. [Caution] Сверстать страницу
    3. [Good] Сверстать контролы
  6. Может быть иерархическим
    • Сверстать страницу
      1. Сверстать форму
        1. Сверстать кнопки
  7. Не нужно упарываться
    • [Bad] Задать кнопке border: 2px solid red;

11 of 14

Почему не достаточно просто кодить

И почему тесты не всегда нужны?

Думаете тут нужно упарываться тестами?

Что если понадобиться

изменить процесс?

Уехал в отпуск

12 of 14

Выводы

  1. Подходить к делу как инженер
  2. Непрерывное совершенствование,�ограничение может быть за пределами front-end'а
    1. DevOps?
    2. Design?
    3. Backend?
    4. Tests?
    5. Agile?
    6. Что там у вас есть ещё? Давай сюда!
  1. Очень важно общаться и обсуждать
  1. Читайте больше книг, Ваш Капитан Очевидность

13 of 14

Если не хватило

То можно почитать:

  • Теория ограничения систем (E. Goldratt)
  • Critical chain project management (E. Goldratt)
  • Гемба кайдзен - путь к снижению затрат и повышению качества (М. Имаи)
  • Agile-менеджмент: Лидерство и управление командами (А. Юрген)
  • Extreme Programming Explained (K. Beck)

14 of 14

Спасибо за внимание, вопросы?

Ссылка на презентацию: bit.ly/2JBF1n6