Budujemy prom kosmiczny

Oryginalny post: We're Building the Space Shuttle

Autor: Jeff Atwood

Dzisiejsza dawka YAGNI (ang. You Ain't Gonna Need It - nie będzie ci to potrzebne) pochodzi z ostatniego wywiadu z Andersem Hejlsbergiem:

Gdy poprosisz począktujących programistów, by napisali kontrolkę kalendarza, myślą oni sobie często: "Ha, napiszemy najlepszą na świecie kontrolkę kalendarza! Będzie polimorficzna względem rodzaju kalendarza. Jej wygląd będzie można dostosować, zaimplementujemy konwersję z różnych formatów danych, zrobimy jeszcze to i tamto." Samą aplikację mają dostarczyć w przeciągu dwóch miesięcy. Najpierw całą tę skomplikowaną logikę pakują do kontrolki i na jej podstawie w ciągu dwóch dni budują gównianą aplikację. Myślą sobie: "W następnej wersji aplikacji dołożymy jeszcze mnóstwo ficzerów.".

Gdy jednak zaczynają zastanawiać się, w jaki sposób faktycznie zrealizują założenia swojego abstrakcyjnego projektu, okazuje się, że projekt ten jest całkowicie błędny. Zapędzili się w kozi róg i muszą wszystko wywalić. Taki scenariusz widziałem już wielokrotnie. Osobiście mocno wierzę w minimalizm. Jeśli nie zamierzasz rozwiązywać ogólnego problemu, nie próbuj tworzyć frameworka w celu rozwiązania jednego, konkretnego zadania, ponieważ nie masz pojęcia, jak ten framework miałby wyglądać.

Spotkałem wielu programistów, którzy łudzą się, że budują prom kosmiczny, a tak naprawdę tworzą jedynie kolejną, gównianą aplikacyjkę biznesową.

Niezawodnym sposobem na uczynienie tej Twojej gównianej aplikacyjki biznesowej jeszcze bardziej gównianą jest tworzenie jej w taki sposob, jakbyś budował co najmniej prom kosmiczny. Wiem, co mówię, ponieważ spędziłem zdecydowanie za dużo czasu na refaktoringu tych spektakularnie beznadziejnych projektów do postaci czegoś, co choć trochę przypominałoby łatwą w zarządzaniu aplikację biznesową.

12 komentarze:

Vertex pisze...

Autor ma w 100% rację. Szkoda że dopiero teraz sobie to uświadomiłem...

yamado pisze...

Pamiętam wykład prof. Ferdynanda Wagnera (obecnie zajmuje się w Stanach tworzeniem narzędzi do programowania) w którym porównał informatyków do mechaników. Mechanik w procesie konstruowania używa tzw normali - czyli znormalizowanych elementów np. śrub, dopasowując cały projekt do obowiązujących norm. Informatyk, jak dostaje zadanie to, tworzy "własną śrubę" o fi 2,33 bo taka mu jest akurat potrzebna.

Immortal pisze...

yamado: Hehe, dobra analogia :]

sprae pisze...

Myślę, że prom kosmiczny to za mało powiedziane. On ma pewną specyfikację, ograniczenia i cel. Patrząc ogólnie, to tylko bardziej skomplikowana ciężarówka kosmiczna.
Jeśli zaś chodzi o wyżej wymienionych programistów to oni raczej pragną budować prom kosmiczny i łódż podwodną w jednym.
Yamado: Jakoś nie mogę się zgodzić. Wynika to z tego, że śruby kojażą mi się z Design Patterns.

apl pisze...

Zastanawia mnie, skąd potrzeba zastępowania eufemizmów występujących w oryginalnym tekście wulgarnymi odpowiednikami. „Crappy” tłumaczy się na język polski jako „badziewny” — słowo to zostało nie bez przyczyny użyte zamiast mocniejszego „shitty”.

Nie oddaje to sposobu, w jaki Hejlsberg i Atwood sformułowali swoje myśli, za to sprawia, że ich wypowiedzi brzmią wulgarnie, podczas gdy w oryginale po prostu użyli oni luźnego, aczkolwiek nie przekraczającego pewnej granicy słownictwa.

Immortal pisze...

apl: nie zgodzę się, że crappy jest eufemizmem; według mnie można to przetłumaczyć dosadnie - tak jak to zrobiłem. A zdecydowałem się na takie właśnie tłumaczenie z tego względu, że wydaje mi się, że ten post Atwooda jest mocno nacechowany emocjonalnie. Ale to oczywiście jest moja interpretacja - można podyskutować ;)

Immortal pisze...

Jeszcze odnośnie komentarza apl: ling.pl tłumaczy crappy jako: gówniany, do dupy, wszawy, wstrętny, obrzydliwy, kiepski ... :>

apl pisze...

„ling.pl tłumaczy crappy jako: gówniany, do dupy, wszawy, wstrętny, obrzydliwy, kiepski”

Ling.pl nie tłumaczy tego słowa w kontekście. Zadaj sobie pytanie, czy użyłbyś stwierdzenia „gówniana aplikacja” w wywiadzie prasowym (nawiązuję tutaj do wywiadu, który cytuje Atwood). Później spytaj sam siebie, jak często w publikacjach różnego rodzaju widujesz tego typu słownictwo.

Według mnie te, *ekhm*, „subtelności” wokół słowa „Crap” dobrze oddają definicje przygotowane przez użytkowników urbandictionary.com: „what one says when one is afraid to say shit”, „the closest word in the dictionary to being a cuss word without actually crossing that line”.

Immortal pisze...

apl: Masz sporo racji w tym, co mówisz, natomiast nie wiem, czy czytałeś już ten wpis: Meta to morderstwo - właśnie taka meta-dyskusja zaczyna się tutaj ;> Jestem (jesteśmy) wdzięczni za Twoje uwagi - kto wie, być może kiedyś wprowadzimy tutaj funkcjonalności wiki-podobne i chętni będą mogli wprowadzać/proponować poprawki do tłumaczeń. Pozdrawiam!

apl pisze...

Touché :), niestety na tę chwilę nie widzę dla takiej meta-dyskusji lepszego miejsca. Może na początek dałoby się udostępnić jakiś formularz do zgłaszania opinii na temat tłumaczeń, adres kontaktowy, cokolwiek?

Immortal pisze...

Podłączyłem tak na szybko forum do zgłaszania sugestii - zobaczymy, czy zda egzamin. Apl: możesz tam zgłosić tę sugestię zmiany tłumaczenia słowa "crappy" - pomyślimy nad tym ;)

apl pisze...

To jeszcze lepsze rozwiązanie. Przenoszę się tam i obiecuję więcej nie poruszać tematów Meta w komentarzach pod postami.

Prześlij komentarz

Related Posts with Thumbnails