Программирование ориентированное на решения задач

velkin velkin

Введение


Тетрис учит нас, что ошибки в этой жизни накапливаются, а успехи исчезают. И что длинная палка — это хорошо.


От процессов к решению задач


Ранее у меня была статья Разработка через документирование (documentation-driven development). Основной упор в ней делался на процессы разработки.

Процесс (роль).
1) Разработка через моделирование (бизнес аналитик)
2) Разработка через требования (системный аналитик)
3) Разработка через проектирование (архитектор)
4) Разработка через кодирование (кодировщик)
5) Разработка через тестирование (тестировщик)
6) Разработка через отладку (отладчик)
7) Разработка через документирование (документовед)
8) Разработка через развёртывание (мейнтейнер)
9) Разработка через сопровождение (поддержка)


Процессы RUP


Обратите внимание на процессы и итерации. Процессы занимают строки, а не столбцы, то есть являются главными. Это позволяет делить задачи между людьми по ролям. А сами задачи размазаны по итерациям и являются вторичной основой.

https://upload.wikimedia.org/wikipedia/ru/d/da/RUP_process.png

Тем не менее практикуя документирование с помощью Zim
1. Систематизация личной базы знаний по программированию в Zim
2. Синхронизация личной базы знаний по программированию в Zim
я заметил, что разделять
1. задачу и
2. решения задачи
на документы по разным процессам и ролям невыгодно с точки зрения удобства работы над этой задачей. Гораздо удобнее, когда
1. одна задача находится в одном документе,
2. другая задача в другом,
3. каждое решение конкретной задачи в отдельном документе.

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

Диаграмма Ганта


Рассмотрим другие виды диаграмм. Диаграмма Ганта основана на задачах, что лучше сочетается с предметными и систематическими каталогами созданным мной для личной базы знаний в Zim. Вторичная основа призвана рассчитывать время потраченное на задачу.

http://files.rsdn.org/99832/Gantt_diagram2.png

Канбан-доска


Канбан-доска тоже ориентирована на задачи. Но вторичная основа ориентирована на состояние задачи, а не на время, как в диаграмме Ганта.

http://files.rsdn.org/99832/Simple-kanban-board-.jpg

Документирование задач и решений задач в Zim


А дальше открываем личную базу знаний по программированию в Zim и создаём страницы задач и решений задач. Для примера возьму задачу "создание пустой папки" без объяснения всех параметров.

Каталог Zim

Программирование
 Библиотеки
 Задачи
  С
   Задача - Создать пустую папку
 Книги
 Понятия
 Программы
  M
   Программа - Mkdir
    Решения
     Решение - Создать пустую папку (Mkdir)
 Проекты
 Статьи
 Уроки
 Устройства

Страница "Задачи" (систематический каталог)


Программирование:Задачи
Задачи

Файлы

Задача - Создать пустую папку [id: создать-пустую-папку]
Задача - Создать пустой файл

...

http://files.rsdn.org/99832/zim_task_01.png

Страница "Задача — Создать пустую папку"


Программирование:Задачи:С:Задача — Создать пустую папку
Задача - Создать пустую папку

Задачи#создать-пустую-папку

Решения

Решение - Создать пустую папку (Mkdir)

http://files.rsdn.org/99832/zim_task_02.png

Страница "Решение — Создать пустую папку (Mkdir)"


Программирование:Программы:M:Программа — Mkdir:Решения:Решение — Создать пустую папку (Mkdir)
Решение - Создать пустую папку (Mkdir)

Задача - Создать пустую папку

1. Набрать в командной строке.
mkdir -p <путь папки>
Для примера.
mkdir -p d:\test

http://files.rsdn.org/99832/zim_task_03.png

Ссылки перехода


В теме Систематизация личной базы знаний по программированию в Zim я объяснял, что основная фишка личной базы знаний это переход по ссылкам.
1. от общего к частному.
2. от частного к общему.

На снимках экрана я выделил ссылки и возможный блок из нескольких ссылок красными прямоугольниками.
Страница "Задачи" (систематический каталог)
Задача - Создать пустую папку [id: создать-пустую-папку]
              ^
              |
              v
Страница "Задача - Создать пустую папку"
Задачи#создать-пустую-папку
Решение - Создать пустую папку (Mkdir)
              ^
              |
              v
Страница "Решение - Создать пустую папку (Mkdir)"
Решение - Создать пустую папку (Mkdir)

Строка [id: создать-пустую-папку] это якорь на странице в любом месте вне зависимости от других элементов. Его видно на снимке экрана в виде специального символа.

Создаётся он с помощью.
1. Набора знаков ##.
2. Ввода после этого идентификатора, для примера создать-пустую-папку.
3. И нажатия клавиши ввода.
##создать-пустую-папку

Итоги

Пока что это первый прототип для испытаний. В будущем я смогу выяснить работает он или нет по мере накопления задач в том числе с помощью обратной разработки. Его основное предназначение предотвратить потерю достижений, которые выражаются в решённых задачах. Потому что самый быстрый способ решить задачу это не решать её заново, а воспользоваться готовым решением, в том числе своим старым.