Однак у багатьох областях типовим замовником є:
- Цікавить щоденні оперативні проблеми - тактика короткого дальності ... не стратегія;
- Займається лише негайним рішенням;
- Взагалі одновимірні, не абстрактні мислителі;
- В першу чергу зацікавлений у тому, щоб "виконати роботу", на відміну від довготривалого, якісного рішення.
І якщо відверто кажучи, вони зазвичай мають вагомі підстави думати так. Перш за все, вони ведуть бізнес, який повинен приносити прибуток сьогодні та завтра, а не в якомусь далекому майбутньому. По-друге, вони не є технічними експертами - вони не знають, що можливо, а що ні, і які наслідки мають певний вибір архітектури / дизайну / реалізації. Це ми знаємо.
Тож відповідь - навряд чи дивна - спілкування .
Вам потрібно багато спілкуватися, навчати один одного, змушувати один одного розуміти точку зору іншої сторони хоча б до базового рівня. Вам потрібно пояснити їм коротко- та довгострокові наслідки можливих альтернатив. І вам потрібно використовувати мову, яку вони розуміють .
- Якщо ви скажете «це був би хак, що робить код менш читабельним і розширюваним» , вони кажуть «так, що б там не було» .
- Якщо ви говорите , «це буде короткий термін виправити, що дозволить зробити більш довгостроковий розвиток і обслуговування більш дорогим, а також збільшити ризик внесення помилок» , вони кажуть «ха, давайте розглянемо» .
- І якщо ви скажете, що "це рішення коштуватиме вам зараз 100 доларів, але вводиться 500 доларів технічного боргу, який ви зобов'язані погасити з відсотками рано чи пізно; ОТО таке інше рішення коштує вам 400 доларів зараз і не залишає технічної заборгованості; виберіть той, який ви хочу " , вони кажуть " зараз ми говоримо! " .
Інакше вони можуть навчити нас щось або два про перспективу бізнесу. Бізнес хоче корисних і досить хороших - навряд чи ідеальних - рішень. І вони, мабуть, краще за всіх знають, що «досконалий - ворог добра». Тому вам потрібно пам’ятати, що наша робота полягає в тому, щоб вирішити проблеми наших клієнтів, а не виробляти технічно досконале програмне забезпечення. Іноді ці двоє сходяться до одного, але частіше ні. Багато хто може вважати це сумним, але це реальність бізнесу. Для мене, якщо мені вдалося вирішити проблему свого клієнта, і я бачу, що це помітно полегшило їхнє життя, я такий же щасливий, як і вони. ОТО, якщо мені вдалося втілити ідеальний дизайн, який я мав на увазі, але компанія на наступному тижні збанкрутує, навряд чи комусь це виграє?
Розумний власник бізнесу зрозуміє - якщо ви пояснюєте їх своєю мовою - чому важливо підтримувати програмне забезпечення в чистоті, писати одиничні тести, рефактор і т. Д. Навіть незважаючи на те, що вони, як здається, безпосередньо не сприяють нічого в короткий термін, вони є важливими для тривалого обслуговування. А розумні клієнти дбають про довгострокову ремонтопридатність свого бізнесу, тому вони, безумовно, готові інвестувати в нього, коли бачать цінність, яку отримує їх інвестиція. Однак і їхні ресурси, і ваш час обмежені, тому вам потрібно розставити пріоритети та зосередитись на найважливіших речах. Але це важливо лише в тому випадку, якщо воно важливе для вас обох .
Можливо, ви захочете переробити модуль А, тому що код там просто жахливий, і у вас є приголомшлива ідея, як переробляти код, щоб бути стислим, елегантним та чистим, використовуючи шаблон дизайну, про який ви щойно прочитали. Однак якщо цей модуль не торкався роками, і він працює надійно, вам, швидше за все, краще зосередитись на модулі B, який буде продовжено на наступному тижні за допомогою дуже важливої нової функції, і він містить багато помилок вже.