Nikt nie nienawidzi oprogramowania bardziej niż programiści

Oryginalny post: Nobody Hates Software More Than Software Developers

Autor: Jeff Atwood

Kilka miesięcy temu kupiliśmy nowy aparat cyfrowy, aby móc robić zdjęcia naszemu "świeżospłodzonemu procesowi". Moja żona, która była odpowiedzialna za ten zakup, sumiennie rozpakowała aparat, włożyła baterie i rozpoczęła pierwsze testy. Jak do większości elektronicznych gadżetów, również do tego aparatu dołączona była płytka CD z oprogramowaniem, więc moja żona bez większego namysłu wrzuciła ją do napędu.

Kątem oka zauważyłem, co się święci i -- teraz spróbuj sobie wyobrazić to w zwolnionym tempie dla większego efektu -- krzyknąłem "NIEEEeeeee", jednocześnie desperacko rzucając się przez pół pokoju, by zapobiec odpaleniu instalatora. Udało się, ale przy okazji niemal załatwiłem naszego kota.

Wydawać by się mogło, że nie ma nic złego w oprogramowaniu dołączanym do aparatu cyfrowego. Ale czy tak jest w rzeczywistości?

  1. Prawdopodobnie jest ono niepotrzebne. Każdy nowoczesny system operacyjny (nawet Windows XP!) jest w stanie wykryć i skopiować zdjęcia z nowego aparatu cyfrowego. Nie trzeba do tego żadnego dodatkowego softu. Jednak mając na celu zwiększenie "wartości" oraz chęć wyróżnienia się na tle konkurencji, jakiś kierownik w firmie produkującej te aparty zdecdował, że dołączanie oprogramowania z wymyślnymi i unikatowymi funkcjonalnościami jest niezłym pomysłem.
  2. Firmy zajmujące się sprzętem rzadko kiedy tworzą dobre oprogramowanie. Producenci aparatów cyfrowych tworzą świetne aparaty cyfrowe, natomiast ich oprogramowanie jest co najwyżej produktem ubocznym, który powstał tylko ze względu na widzimisię ludzi od marketingu.
  3. Oprogramowanie nieznanego pochodzenia zostało prawdopodobnie napisane przez kiepskich programistów. Prawdopodobieństwo, że jakieś nowe oprogramowanie, które zamierzasz właśnie zainstalować, będzie użyteczne, a korzystanie z niego będzie przyjemne i bezstresowe, jest ... hmm, niskie.

Jednym z (wielu) skutków ubocznych obrania kariery programisty jest to, że z czasem zaczynasz nienawidzić oprogramowanie. Naprawdę nienawdzić. Namiętnie nienawidzić. Nawet jeśli weźmiesz najbardziej poirytowanego użytkownika, jakiego kiedykolwiek w życiu spotkałeś i pomnożysz jego złość przez tysiąc, to nie uda Ci się nawet w przybliżeniu poznać stosunku, jaki my programiści mamy do oprogramowania. Nikt nie nienawidzi oprogramowania bardziej niż programiści. Nawet teraz, pisząc o tym, rozpiera mnie szczera złość.

Czyż takie podejście ludzi, których praca polega na pisaniu oprogramowania, nie jest dziwne? Jak to jest, że tak bardzo nienawidzimy coś, co tworzymy dzień w dzień i za co dostajemy pieniądze?

Na te pytania odpowiedział David Parnas w jednym z wywiadów:

Q: Jakie ryzyko w inżynierii oprogramowania jest najczęściej przeoczanym?

A: Niekompetentni programiści. Szacuje się, że w samych Stanach Zjednoczonych zapotrzebowanie na programistów przekracza 200 000. Takie szacunki są strasznie mylące. My nie mamy problemu ilościowego; mamy problem jakościowy. Jeden kiepski programista bez problemu może stworzyć dwa nowe miejsca pracy w ciągu roku. Zatrudnianie kolejnych takich programistów prowadzi tylko do tego, że wydaje nam się, iż potrzebujemy ich jeszcze więcej. Gdybyśmy mieli więcej dobrych programistów oraz łatwy sposób na ich rozpoznawanie, potrzebowalibyśmy ich mniej, a nie coraz więcej.

Skąd wiem, bez cienia wątpliwości, że świat jest pełen niekompetentnych programistów? Ponieważ sam jestem jednym z nich!

Jeśli pracujesz w tej branży, to wiesz, w jaki sposób oprogramowanie powstaje. Jest to proces raczej paskudny. Znaczna liczba programów tworzona jest przez kiepskich programistów, jakimi sami jesteśmy (albo nawet gorszych), więc z definicji większość oprogramowania ssie. Co to znaczy? Odwołajmy się do artykułu Scotta Berkuna Why Software Sucks:

Gdy ludzie mówią "to ssie", mają na myśli co najmniej jedno z poniższych:

  • to nie robi tego, czego potrzebuję,
  • nie wiem, jak użyć tego, by uzyskać to, czego potrzebuję,
  • jest to niepotrzebnie frustrujące i zbyt skomplikowane,
  • psuje się cały czas,
  • to jest tak brzydkie, że mam ochotę zwymiotować, żeby móc popatrzeć na coś ładniejszego,
  • kłóci się to z moim rozumieniem wszechświata,
  • myślę o narzędziu zamiast o pracy, którą mam do wykonania.

Jak sądzisz? Ile z tych wymienionych wyżej stwierdzeń mogłoby pasować do oprogramowania dołączonego do aparatu cyfrowego? Ja zgaduję, że wszystkie. Z tego powodu uważam, że brak jakiegokolwiek programu często byłby najrozsądniejszym wyborem, a jeśli już, to powinien on pochodzić ze sprawdzonych, szanowanych i rzetelnych źródeł.

Osobiście nie przepadam za instalowaniem nowego oprogramowania. Wręcz przeciwnie, obawiam się tego.

Podzielę się z Tobą koszmarem, który systematycznie mnie nawiedza. W tym śnie siedzę sobie przed komputerem, na którym właśnie uruchamia się system operacyjny, który sam napisałem. Następnie uruchamiam przeglądarkę internetową, którą własnoręcznie stworzyłem od podstaw, i przechodzę do witryny, której również jestem autorem. Gdy klikam w pierwszy odnośnik moim oczom ukazuje się niebieski ekran. Po chwili na tym niebieskim ekranie wyskakuje kolejny niebieski ekran. Wszystko to powtarza się, można by rzec rekurencyjnie, doprowadzając do olbrzymiej eksplozji, która niszczy całą dzielnicę miasta.

Ta wersja snu jest tą łagodniejszą - w innej wersji jest tylko ... krzyk. I ciemność.

W skrócie - nienawidzę oprogramowania -- a zwłaszcza tego stworzonego przeze mnie -- ponieważ wiem, jak trudno jest zrobić to dobrze. Może to dziwnie zabrzmieć, ale właśnie takie podejście jest chyba naturalne i zdrowe dla programisty. To swego rodzaju więź, rytuał przejścia, coś, co jest cechą wspólną kompetentnych programistów.

Właściwie to uważam, że można odróżnić kompetentnego programistę od kiepskiego za pomocą jednego pytania podczas rozmowy kwalifikacyjnej:

Jaki najgorszy kod widziałeś ostatnio?

Jeśli ich natychmiastową odpowiedzią nie są te dwa słowa:

Mój własny.

To powinieneś od razu przerwać rozmowę. Sorry kolego. Nie nienawidzisz jeszcze oprogramowania wystarczająco mocno. Może za kilka lat. Jeśli zdołasz wytrwać.

Data publikacji oryginału: 21 lipca, 2009

5 komentarze:

Anonimowy pisze...

Ej no, nie można tłumaczyć "this sucks" jako "to ssie"! Litości!

Immortal pisze...

Ej no, nie można tak krytykować bez podawania lepszego tłumaczenia! ;)

Anonimowy pisze...

Ok, przepraszam. Za słownikiem ling.pl:

suck - być do kitu, być do niczego, być do chrzanu,...

od siebie dodałbym: do bani, do dupy, albo po prostu beznadziejne.

Immortal pisze...

Dzięki. Myśleliśmy nad tym swego czasu -- w następnych postach będziemy tłumaczyć to inaczej.

Anonimowy pisze...

Oczywiście, że można a nawet trzeba tak tłumaczyć, skąd to oburzenie?

Prześlij komentarz

Related Posts with Thumbnails