Основи розробки ПЗ: добре сформульована мета
Враховуючи сорокарічну історію індустрії розробки програмного забезпечення, жаль що так небагато розробників розуміють базу, психологічний фон своєї роботи.
В цьому можна пересвідчитись не тільки перевіривши живу статистику успішності програмних проектів (половина проектів або відміняється або вилазить за первісні межі), але й просто поспілкувавшись з сусідами по кімнаті, співробітниками, студентами.
Я веду курс з розробки програмного забезпечення і тільки половина моїх студентів на першій, установчій, лекції дає правильну відповідь на питання
З чого Ви почнете проект з розробки ПЗ?
І це навіть в найпростішій моделі проекту: один замовник — один розробник...
Ну добре, мої студенти — не зірки МІТ-у або КалТеху, але половина!?..
Проект з розробки ПЗ — це проект. За визначенням
Вікіпедії та PMI це означає, що:
- у нього є початок
- у нього є кінець і
- він пов’язаний зі створеннямcreation of чогось
То чому ми не використовуємо методи психології, які публічні і давно доступні, як допомогу в цьому процесі досягнення мети?
В психології особистості, досягнення мети — одна з найбільш розроблених частей. Фактично, все наше життя — це процес досягнення цілі, що складається з цілей меншого масштабу.
Між досягненям і недосягненням мети є, м’яко кажучи, помітна різниця. І якщо мене цікавить як виконати мій проект, натуральним є питання
Які необхідні компоненти цілі, що можна досягти?
Та це ж елементарно! «Not a rocket science», пустити гугл шукати «well formed goal» (добре сформульовану мету). На момент написання англійського варіанту цієї статті, гугл видає статтю Вікіпедії"Well formed outcome" третьою.
Основними критеріями добре сформульованої мети є:
- Позитивність. Це означає що будь-який проект, метою якого є, скажімо, «недопуск спаму і вірусів на комп’ютер» є одразу приреченим на невдачу. Ніхто просто не в стані досягти небуття чого-небуть точно так же як і довести негативне твердження. Для перевірки, доведіть що ви не п’єте коньяк вранці.
- Конкретність. Це найважливіша властивість хорошої мети в програмному проекті. Знайте що Ви побачите, почуєте, відчуєте коли досягнете мети (наприклад певна функція ПЗ буде працювати корректно). Будьте настільки конкретними, наскільки Ви можете. І навіть більше. Використовуйте всі сенсорні системи для визначення вашої мети. Неконкретність — перша причина зриву в досягненні цілі.
- Бути можливою і досяжною. Можна вважати, що практично будь-яка (корисна) мета — досяжна. Та на практиці цей критерій насамперед означає, що Ви, той хто прагне досягти цієї мети, вважаєте її можливою та досяжною. Прямо тут і зараз. Цей критерій пов’язаним з наступним:
- Наявність всіх ресурсів. Майте комп’ютре, майте інтернет-з’єднання, майте електрику та волю для виконання проекту, знайте та умійте те, що треба, якісно спілкуйтесь з Замовником, і т.д., і т.п. Майже будь-що можна вважати ресурсом (включаючи перелік цих критеріїв), що Вам доступен або не доступен. З мого досвіду, недостатні ресурси — друга за частотою причина недосягнення мети.
- Добре окреслений часовий проміжок. Ні, пане Замовнику це має бути готово на вчора не являється добре окресленим часовим проміжком.
- Екологічність. Ви, хто працює над досягненням результату, знайте чого він буде коштувати і що за собою потягне. Так, отримати мілліон внаслідок грабунку банку може бути добре сформульованою метою. Але тільки якщо Ви приймаєте ціни та наслідки такої поведінки. Я — ні.
Для мене, програмний проект — це кампанія по перекладу. Розробник перекладає ідеї Замовника на машинну мову. Критерії, окреслені вище — всього навсього інструкції для перекладу нечітких намірів в щось що наша підсвідомість розуміє і звична до виконання.
То чому б реально не зробити перший крок для досягнення мети — добре її визначити?
Англійський варіант Software Development Basics: Well-Formed Outcome
11 коментарів
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.