Капітан Очевидний на порятунок!
Я буду капітаном Очевидним тут і скажу, що треба знайти якусь середину.
Ви хочете будувати майбутнє і уникати замикання на технологічному виборі чи поганому дизайні. Але ви не хочете витрачати 3 місяці на розробку чогось, що має бути простим, або додавання додаткових балів для швидкого та брудного додатку, який матиме 2-річний термін експлуатації та навряд чи матиме подальші проекти.
Важко знайти відзнаку, тому що ви не завжди можете передбачити успіх свого продукту, і якщо вам потрібно буде продовжити його пізніше.
Побудувати зараз, якщо ...
- проект буде відірваний
- проект має короткий термін життя
- проект не повинен мати розширень
- проект не має значення впливу на ризик (переважно з точки зору іміджу)
Загалом, внутрішні проекти або щось, побудоване для замовника, слід зараз розробити. Не забудьте встановити прямі вимоги та ставитись до них за потребою, щоб знати, що потрібно, а що ні. Не хочеться витрачати занадто багато часу на те, що "приємно мати". Але також не кодуйте, як свиня.
Залиште Загальну проблему на потім, якщо це може знадобитися і варто докласти зусиль:
Будуйте для майбутнього, якщо ...
- проект буде публічним
- проект є компонентом, який слід використовувати повторно
- проект є кроком для інших проектів
- проект матиме подальші проекти або сервісні випуски з удосконаленнями
Якщо ви будуєте для чогось загальнодоступного, або це буде повторно використане в інших проектах, то у вас є набагато більша ймовірність того, що поганий дизайн знову не буде переслідувати вас, тому вам слід приділити цьому більше уваги. Але це не завжди гарантується.
Керівні принципи
Я б сказав, що дотримуйтесь наступних принципів якнайкраще, і ви повинні поставити себе в позицію проектувати ефективні, пристосовані продукти:
- знайте, що YAGNI ,
- KISS ,
- щоразу, коли вам здається, що чухаєте свербіж і думаєте про додавання, запишіть його. Погляньте на вимоги проекту та запитайте себе, чи доповнення є пріоритетними чи ні. Запитайте, чи додають вони первинну цінність бізнесу чи ні.
Я знаю, що особисто я схильний до переосмислення та перенапруження. Це дійсно допомагає записати ідеї і дуже часто переосмислюється, якщо мені потрібні додаткові функції. Часто відповідь - ні, або "згодом було б круто". Ці останні ідеї небезпечні, адже вони залишаються в моїй голові, і мені потрібно змусити себе не планувати їх.
Найкращий спосіб кодування без перенапруження і не блокуючи себе на потім - зосередитись на хорошому мінімальному дизайні. Перерва речі вниз красиво як компоненти , які потім можна продовжити, але не думаючи вже про те , як вони можуть бути розширені пізніше. Ви не можете передбачити майбутнє.
Просто будуйте прості речі.
Ділемати
Суперінжиніринг
Це тенденція, яку програмісти зазвичай дотримуються, коли йдеться про такий проект?
В біса так. Це відома дилема, і вона лише показує, що ви дбаєте про товар. Якщо ви цього не зробите, це хвилює більше. Існує розбіжність щодо того, чи менше, це завжди справді більше, а якщо гірше - завжди справді краще . Ви можете бути хлопцем з MIT або Нью-Джерсі . Тут немає простої відповіді.
Прототипування / Quick-n-Dirty / Менше - це більше
Це типова тенденція просто якнайшвидше розмішувати дієвий приклад?
Це поширена практика, але це не так, як переважна більшість проектів підходить. Тим не менш, прототипування є гарною тенденцією, на мою думку, але одна зі середньою стороною. Може бути спокусливим просувати швидкі та брудні прототипи до фактичної продукції або використовувати їх як основу для фактичної продукції під тиском управління або часовими обмеженнями. Ось тоді прототипування може повернути вас на переслідування.
Існують очевидні переваги прототипування , але також є великий потенціал для неправильного використання та зловживань (багато - точна зворотна перелічена раніше перевага як результат).
Коли використовувати прототипізацію?
Є підказки щодо найкращих типів проектів для використання прототипу :
[...] прототипування найбільш вигідно в системах, які матимуть багато взаємодій з користувачами.
[...] прототипування дуже ефективно в аналізі та проектуванні он-лайн систем, особливо для обробки транзакцій, де використання діалогових діалогових вікон значно більше свідчить. Чим більша взаємодія між комп’ютером та користувачем, тим більша вигода [...]
"Одне з найбільш продуктивних застосувань швидкого прототипування на сьогоднішній день - це інструмент для інтерактивного проектування вимог користувачів та розробки інтерфейсу між людиною та комп'ютером".
З іншого боку:
Системи з малою взаємодією з користувачами, такі як пакетна обробка або системи, які в основному роблять розрахунки, мало користі від прототипування. Іноді кодування, необхідне для виконання системних функцій, може бути занадто інтенсивним, а потенційні вигоди, які може забезпечити прототипування, занадто малі.
А якщо навколо вас зелене монстр, просто переконайтеся, що прототип буде в межах бюджету ...