Jednak w wielu domenach typowym klientem jest:
- Zainteresowany codziennymi problemami operacyjnymi - taktyka krótkiego zasięgu ... nie strategia;
- Dotyczy tylko natychmiastowego rozwiązania;
- Generalnie jednowymiarowi, nieabstrakcyjni myśliciele;
- Zainteresowany przede wszystkim „wykonaniem zadania”, a nie opracowaniem trwałego rozwiązania wysokiej jakości.
I szczerze mówiąc, zwykle mają dobre powody, aby tak myśleć. Przede wszystkim prowadzą oni biznes, który powinien generować przychody dziś i jutro, a nie w odległej przyszłości. Po drugie, nie są ekspertami technicznymi - nie wiedzą, co jest możliwe, a co nie, i jakie są konsekwencje konkretnych wyborów architektonicznych / projektowych / wdrożeniowych. To, co my wiemy.
Tak więc odpowiedzią jest - nie dziwi - komunikacja .
Musisz dużo komunikować się, edukować się nawzajem, aby nawzajem rozumieć punkt widzenia drugiej strony przynajmniej na poziomie podstawowym. Musisz wyjaśnić im krótko- i długoterminowe konsekwencje możliwych alternatyw. I musisz używać języka, który rozumieją .
- Jeśli powiesz „to byłby włamanie, które powoduje, że kod jest mniej czytelny i rozszerzalny” , mówią „tak, cokolwiek” .
- Jeśli powiesz „byłoby to krótkoterminowe rozwiązanie, które spowodowałoby, że długoterminowy rozwój i utrzymanie byłyby bardziej kosztowne i zwiększyłyby ryzyko wprowadzenia błędów” , mówią „ha, zastanówmy się” .
- A jeśli powiesz: „to rozwiązanie kosztuje teraz 100 USD, ale wprowadza 500 USD długu technicznego, który wcześniej czy później spłacisz wraz z odsetkami; OTOH to drugie rozwiązanie kosztuje teraz 400 USD i nie pozostawia długu technicznego; wybierz ten, który chcieć ” , mówią „ teraz rozmawiamy! ” .
OTOH mogą nauczyć nas kilku rzeczy na temat perspektywy biznesowej. Biznes chce użytecznych i wystarczająco dobrych - mało idealnych - rozwiązań. I wiedzą chyba lepiej niż ktokolwiek inny, że „doskonały jest wrogiem dobra”. Należy więc pamiętać, że naszym zadaniem jest dostarczanie rozwiązań problemów naszych klientów, a nie tworzenie oprogramowania doskonałego pod względem technicznym. Czasami te dwa zbiegają się w to samo, ale częściej nie. Dla wielu może to być smutne, ale jest to rzeczywistość biznesowa. Dla mnie, jeśli udało mi się rozwiązać problem mojego klienta i widzę, że dzięki temu jego życie było wyraźnie łatwiejsze, jestem równie szczęśliwy jak oni. OTOH, jeśli uda mi się wdrożyć idealny projekt, o którym myślę, ale w następnym tygodniu firma zbankrutuje, czyż nie jest to żadna wygrana, prawda?
Rozsądny właściciel firmy zrozumie - jeśli wyjaśnisz je własnym językiem - dlaczego ważne jest utrzymywanie oprogramowania w czystości, pisanie testów jednostkowych, refaktoryzacja itp. Mimo że wydaje się, że nie wnoszą one bezpośredniego wkładu w krótkim okresie, są niezbędne do długoterminowej konserwacji. Rozsądnym klientom zależy na długoterminowym utrzymaniu ich działalności, więc z pewnością chętnie w nie zainwestują, gdy zobaczą wartość, jaką generują ich inwestycje. Jednak zarówno ich zasoby, jak i czas są ograniczone, więc musisz ustalić priorytety i skoncentrować się na najważniejszych rzeczach. Ale jest to ważne tylko wtedy, gdy jest ważne dla was obojga .
Możesz zrefaktoryzować moduł A, ponieważ kod tam jest po prostu okropny, i masz niesamowity pomysł, jak refaktoryzować kod, aby był zwięzły, elegancki i czysty, używając wzorca projektowego, o którym właśnie przeczytałeś. Jeśli jednak ten moduł nie był dotykany przez lata i działa niezawodnie, prawdopodobnie lepiej skupić się na module B, który zostanie rozszerzony w przyszłym tygodniu o bardzo ważną nową funkcję i zawiera mnóstwo błędów już.