Как сложность убивает проекты

Содержание

Слайд 2

О чем

Почему нужно бороться со сложностью
Откуда берется
Кто и как может с ней

О чем Почему нужно бороться со сложностью Откуда берется Кто и как
бороться

Сложность – это усилия, потраченные коллективом на создание определенного количества материала

Слайд 3

Управление сложностью каждый день

Команда должна понимать и дописывать код (хотя бы в

Управление сложностью каждый день Команда должна понимать и дописывать код (хотя бы
текущем проекте)
Сложность, остается в проекте надолго
Сложность «заразна»
Чтобы код понимал аналитик, PO, тестировщик

Слайд 4

«Протекание» и смешение уровней абстракции
Неправильное именование
Слабая связанность, сильная связность
Отсутствие unit-тестов
Не применяются SOLID,

«Протекание» и смешение уровней абстракции Неправильное именование Слабая связанность, сильная связность Отсутствие
YAGNI …

Откуда появляется сложность

Слайд 5

Сложность предметной области

Что мешает развитию системы, в которой в общем-то все неплохо

Сложность,

Сложность предметной области Что мешает развитию системы, в которой в общем-то все
внесенная разработчиком
Сложность, внесенная умелым разработчиком

Сложный язык, Framework, сложные задачи
Сложно поднимать окружение

Слайд 6

Желание решить задачу выше своих компетенций
Недостаточное понимание задачи
Чаще встречается у молодых разработчиков

Оверинжиниринг

Желание решить задачу выше своих компетенций Недостаточное понимание задачи Чаще встречается у молодых разработчиков Оверинжиниринг

Слайд 7

Желание использовать модный фрэймворк/подход
Желание развить компетенции
Чаще свойственно разработчикам среднего уровня

Желание написать «классно»

Желание использовать модный фрэймворк/подход Желание развить компетенции Чаще свойственно разработчикам среднего уровня Желание написать «классно»

Слайд 8

Гибкий и качественный код
Продуманные точки расширения
Сложные алгоритмы

Гений

Гибкий и качественный код Продуманные точки расширения Сложные алгоритмы Гений

Слайд 9

CodeReview для всех
Отдельный пункт CodeReview – «проверить понятность»,
Управление творческой энергией

CodeReview для всех Отдельный пункт CodeReview – «проверить понятность», Управление творческой энергией разработчика
разработчика

Слайд 10

Практики из SCRUM
Не давать задачу «целиком»
Force collective code ownership
Коммуникации

Практики из SCRUM Не давать задачу «целиком» Force collective code ownership Коммуникации

Слайд 11

DI/IoC
AOP
DDD и Enterprise-паттерны
Асинхронность/многопоточность
Обобщенные классы и алгоритмы
Использование готовых компонентов
Функциональный стиль

Как повысить качество и

DI/IoC AOP DDD и Enterprise-паттерны Асинхронность/многопоточность Обобщенные классы и алгоритмы Использование готовых
сложность кода

Слайд 12

IL Code
Нативный код

.NET Sources

Nuget lib sources

Common Code

Module common code

Business logic

Работа на глубине

Common

IL Code Нативный код .NET Sources Nuget lib sources Common Code Module
business logic

Слайд 13

Enterprise

Locator

Layer

Service

Repository

Broker

ActiveRecord

Tier

Bus

Interceptor

ServiceWrapper

Adapter

Microservices

Enterprise Locator Layer Service Repository Broker ActiveRecord Tier Bus Interceptor ServiceWrapper Adapter Microservices

Слайд 14

Уровень классов

Уровень классов

Слайд 15

Уровень методов

Уровень методов

Слайд 16

Что делать?

Написать как обычно

«А не рано ли принимается решение»

Что делать? Написать как обычно «А не рано ли принимается решение»

Слайд 18

Ограничение набора инструментов

Знать возможности используемого фрэймворка
Предпочитать встроенные инструменты
Бюрократия при добавлении новых библиотек

Ограничение набора инструментов Знать возможности используемого фрэймворка Предпочитать встроенные инструменты Бюрократия при
– это не всегда плохо

Слайд 19

Непреодолимая сложность

Требования к производительности
Сложность предметной области
Компромиссы и ограничения фрэймворка, библиотек и бизнес-требований

Непреодолимая сложность Требования к производительности Сложность предметной области Компромиссы и ограничения фрэймворка, библиотек и бизнес-требований

Слайд 20

#1 Просто код

#1 Просто код

Слайд 21

#1 Контекст

#1 Контекст

Слайд 22

#1 Документация и комментарии

#1 Документация и комментарии

Слайд 23

#2 Просто код

#2 Просто код

Слайд 24

#2 Комментарии

#2 Комментарии

Слайд 25

Документация, комментарии

Описание сложного алгоритма (возможно со ссылками)
«Почему так»
Контекст

Документация, комментарии Описание сложного алгоритма (возможно со ссылками) «Почему так» Контекст

Слайд 26

Валидация графа

Алгоритм
Поиск «треугольников»
Упрощение графа с использованием шагов:
Убрать «петли»
Сократить пути, относящиеся к одной

Валидация графа Алгоритм Поиск «треугольников» Упрощение графа с использованием шагов: Убрать «петли»
параллельности
Убрать «тупики»
Упростить пути, сходящиеся в одной параллельности
…. еще сколько-то шагов

Слайд 28

Изоляция/Инкапсуляция

Сложность не отражается на публичных интерфейсах
От сложности ничего не зависит
Сложность сконцентрирована в

Изоляция/Инкапсуляция Сложность не отражается на публичных интерфейсах От сложности ничего не зависит
одном месте
Имя файла: Как-сложность-убивает-проекты.pptx
Количество просмотров: 32
Количество скачиваний: 0