Причины

  • Нет чёткой цели

  • Нет чётких задач, которые решает проект в процессе работы

  • Сильное погружение в проработку незначительных деталей

  • Отказ от поддержки минимально жизнеспособного продукта (тот самый случай, когда проработка функциональности бежит дальше, чем основной скелет продукта)

  • Выбор неправильных инструментов

  • Когнитивные искажения

План действий

Для этого понадобится карандаш и бумага

1. Цели

Цель определяет итог, но не определяет способы его достижения. Определите список достигаемых проектом целей. Что в будет в итоге? Собственно зачем мы все здесь собрались?

2. Задачи

Действия, направленные на достижения поставленных целей. Определите список решаемых в процессе задач. Что нужно делать, чтоб добраться до цели?

3. Требования

Свойства, которыми обладает конечный результат. Бизнес-требования, технические требования, пользовательские требования. Обязательно проработайте оценку важности требований.

4. Роли

Определяем список задействованных прямо или косвенно ролей: людей, групп, прав, обязанностей, ответственности.

5. Компоненты и компоновка

Список составных частей исследуемого объекта. Возможно это абстрактные модули и схемы сборки и взаимодействия.

6. Минимально жизнеспособный продукт

Не путать с прототипом. Примеры минимально жизнеспособных продуктов: лом, кувалда. Это продукт с минимальным набором функций, но достаточный для решения основных поставленных задач и достижения главных целей.

7. Инструменты

Если для проекта собрана команда, но при этом нужна как минимум ещё одна команда, которая будет обслуживать платформу, то явно что-то идёт не так.

Не берите инструмент только потому, что его реклама везде, но вы с ним ещё не работали. Если есть специалист по этому инструменту, то попросите его собрать тестовый стенд. Оцените затраченное время, сложность сборки стенда и сложность работы с инструментом.

8. Детали реализации

Основные сущности, архитектура, пользовательские интефейсы, документирование кода, документирование продукта.

Неоправданное применение паттеров проектирования (если у тебя в руках молоток, то все предметы вокруг начинают напоминать гвозди). Слепое следование методологиям может привести к непредсказуемым результатам, хоть и предполагает изначальную управляемость и предсказуемость (да, парадокс, смиритесь, вспомните сколько компаний и процессов загублено через agile, scrum и т.п.).

Неоправданное применение абстракций. Примеры из жизни:

  • Сквозные разнородные объекты (сквозная нумерация) в одной общей таблице. Логика работы с конкретным объектом зависит от его типа в поле БД. Таким образом выборка списка людей из общего списка всех объектов (люди, статьи, фильмы) превращается в бесконечную фильтрацию и соединения с таблицами свойств, значений. А так же в жёсткое кодирование на основе "волшебных значений". Пример такой таблицы DAP (Active Directory, LDAP).

  • Иерархия:

    • монетки в кошелёчке, кошелёчек в шкатулочке, шкатулочка в сумочке, сумочка в корзиночке, корзиночка в сундучке, сундучок в контейнере - и каждый из объектов реализован в виде отдельной таблицы в реляционной БД или в древоподобной структуре (как в MondoDB). Как только иерархия меняется, сразу требуется колоссальное количество человеко-часов для переделки ПО и переноса данных. Если система ещё и под постоянной нагрузкой, то...

    • переход по большому количеству вложенных объектов (меню, адреса)

Слишком большая проработка функциональности: для изображений попытка создать полноценный графический редактор, для звука создать секвенсор. Ещё нет минимально жизнеспособного продукта, зато есть навороченный редактор. Круто! Молодцы! Но зачем? Потратили время, деньги, силы.

Комментарии (10)


  1. Shaz
    07.01.2022 04:46

    А какие критерии "рабочести" проекта?


    1. RemiZOffAlex Автор
      07.01.2022 05:04
      +2

      Рабочий проект/продукт должен удовлетворять потребностям, которые описаны в целях. То, что достигается в процессе работы проекта. У цели должны быть:

      • конкретика - конкретные сущности с которыми работаем, на которые влияем, конкретные дела, процессы, воздействия

      • измеримость

      • достижимость

      • ограниченность по времени - в каких пределах будет достигнута цель при предполагаемых результатах


      1. AzIdeaL
        07.01.2022 23:05

        Сразу же оговорюсь, - статья и тема понравилась.

        Здесь, в комм, вижу неприглядную ссылку на smart-целеполагание, из которой вырвано самое ценное, -- r- релевантность)

        Да, картинка - fig.1 - зачотная


    1. propell-ant
      07.01.2022 15:11

      Наличие отрицательного фидбэка. Если есть недовольные, значит проект работает.

      Положительный фидбэк часто исходит от заинтересованных лиц и несет ложное ощущение спокойствия.


      1. AzIdeaL
        07.01.2022 23:12

        Тезисы ваши поняты: недовольным - маркофку; заинтересованным -- капусту)


  1. Nepherhotep
    07.01.2022 07:37
    +1

    Тема не раскрыта - так а что делать-то? :)


    1. toxano
      08.01.2022 19:32

      Бросаю проект если он мой. На дозревание. Сколько не выжимал решения когда тупик. Они быстрее топили проект. После n-времени, свежий взгляд обычно выдирает живое


  1. unsignedchar
    07.01.2022 17:18

    LDAP достаточно рабочий проект.


  1. Batalmv
    08.01.2022 19:32

    В нерабочем проекте надо:

    • Развивать свои скиллы

    • Так как все равно не взлетит, надо чтобы было понятно, что это не из-за тебя

    Мучить себя, пытаясь сделать мертвый проект никакого смысла нет. Получишь неудовлетворение результатом и мину в карму, так как могут назначить виноватым


  1. StupidMouse
    08.01.2022 19:33

    Сквозные разнородные объекты (сквозная нумерация) в одной общей таблице.

    Я встречал упрощённый вариант, а именно сквозную нумерацию всех объектов через единый сиквенс для всех. У такого подхода есть небольшой плюс: неправильное пересечение никогда не возвращает данные. Как средство самоконтроля вполне может использоваться при разработке, не обязательно тянуть не его на продакшн.