Czy pisanie kodu ma znaczenie?

Oryginalny post: Does Writing Code Matter?

Autor: Jeff Atwood

10 porad jak z programisty zmienić się w przedsiębiorcę autorstwa Iana Landsmana to pożyteczna lektura. Nawet jeśli nie masz zamiaru zostać przedsiębiorcą.

Jednym z największych problemów, który widzę, jest to, że programiści zamykają się w swoim kodzie. Spędzają niezliczone godziny, starając się doprowadzić jakąś funkcję do perfekcji bądź tworząc funkcjonalności, które demonstrują wykorzystanie najnowszych technologii. Musisz pisać kod, żeby nie wypaść z branży. Musi on być wysokiej jakości, pozbawiony błędów i bezpieczny. Jednakże nawet najlepszy kod na świecie nie jest nic wart, jeśli nikt nie wie o istnieniu Twojego produktu. Kod nie ma znaczenia, jeśli Urząd Skarbowy przyczepi się do Ciebie, ponieważ nie płacisz podatków. Kod nie ma znaczenia, jeśli ktoś pozwie Cię do sądu, ponieważ nie chciało Ci się zatrudnić prawnika, który zająłby się opracowaniem umowy licencyjnej.

Programiści kochają kod. Ale my jesteśmy stronniczy. I piszemy o wiele mniej kodu, niż mogłoby nam się wydawać. Spędzamy dużo więcej czasu, starając się zrozumieć czyjś kod, niż pisząc własny.

Tak czy owak, jak Ian zauważył, znaczenie samego kodu jest niewielkie w porównaniu z tymi wszystkimi pobocznymi, wydawać by się mogło, sprawami, które wiążą się z wprowadzeniem produktu na rynek. Niech podniosą rękę ci, którzy przynajmniej raz włożyli całe serce i duszę w aplikację, która nigdy tak naprawdę nie ujrzała światła dziennego. Moja ręka jest w górze. A to tylko wierzchołek góry lodowej; są setki powodów, z których Twój kod może nie mieć nawet najmniejszego wpływu na bieg świata. Jeśli nikt nie wie o Twoim kodzie, jeśli nikt nie jest w stanie go zrozumieć, jeśli z jakiejkolwiek przyczyny Twój kod w ogóle nie zostanie opublikowany... to czy udało Ci się tak naprawdę cokolwiek osiągnąć?.

Może najlepszym sposobem na osiągnięcie sukcesu jako programista, jest zrezygnowanie z małowartościowych czynności i całkowite zaprzestanie pisania kodu. Wyjaśnia to Steve Yegge:

Czy masz jakichś osobistych guru programowania? Ja mam! Co jednak dziwne, właściwie to nie widziałem zbyt wiele kodu napisanego przez nich. Większość tych sławnych, szanowanych przeze mnie programistów wywarła na mnie wpływ poprzez zwykłe pisanie, prozę, z co najwyżej niewielką domieszką kodu.

Naturalnie jest też wielu programistów, których podziwiam za to, że stworzyli aplikacje czy narzędzia, których używam na co dzień. Ale gdybym chciał stworzyć listę takich godnych podziwu programistów (w szczególności mam tutaj na myśli osoby, których nie znam osobiście), to okazuje się, że większość z nich dałaby się zaklasyfikować do jednej z poniższych kategorii:

  1. Ludzie, którzy napisali użyteczny język programowania, system operacyjny bądź szczególnie ważny framework.
  2. Osoby, które napisały jakąś naprawdę świetną książkę na temat programowania.

Gdy powstaje jakiś framework, którego popularność idzie w parze z przyjemnością z korzystania z niego, i dla którego można łatwo zidentyfikować jedną, konkretną osobę uznawaną za autora, to często zaczynamy ją podziwiać i w przeciwieństwie do "zwyczajnych" programistów, ta osoba staje się sławna.

Nawet jeśli ten autor jest gównianym programistą.

Tak naprawdę to nie możemy tego wiedzieć, ponieważ jak często zaglądamy do kodu źródłowego używanych przez nas frameworków? Jak dużo czasu spędzamy na analizowaniu kodu kompilatorów, interpreterów czy też wirtualnych maszyn dla naszych ulubionych języków programowania? I gdy taki system osiągnie już spory rozmiar oraz pewną dojrzałość, jaka część tego kodu została napisana przez pierwotnego autora?

Czy ja naprawdę mówię programistom, żeby przestali pisać kod? Niezupełnie. Chodzi mi raczej o to, że w pisaniu kodu to oni są już wystarczająco dobrzy. Przecież to właśnie dlatego teraz pracują w tej branży. Pisanie kolejnych tysięcey wierszy kodu sprawia, że doskonalisz tę umiejętność, którą prawdopodobnie masz już opanowaną na wysokim poziomie. Ja proponuję, by spędzać mniej czasu na kodowaniu, a więcej na zdobywaniu biegłości także w innych aspektach życia -- takich, które mogą stanowić znakomite uzupełnienie obranej przez nas ścieżki kariery programisty. Rozwiń swoje umiejętności pisarskie. Poćwicz wygłaszanie przemówień. Doskonal swoje umiejętności interpersonalne. Udzielaj się w społecznościach. Spróbuj więcej czasu spędzać na rozmowach z ludźmi zamiast z kompilatorem. Właśnie w taki sposób wyróżnisz się na tle swoich kolegów. A ostatecznie to właśnie w ten sposób staniesz się lepszym programistą.

Oczywiście nie jest to gra o sumie zerowej. Te sprawy można połączyć. Idealnie by było, gdybyś po napisaniu kodu mógł opowiedzieć o nim w taki sposób, ktory zainspiruje i oświeci innych ludzi. Z drugiej jednak strony, nie mamy niestety nieskończonej ilości czasu. Jeśli musisz wybierać między pisaniem kodu a pisaniem na temat kodu, nie zapominaj, która strona równania jest ważniejsza -- i wyważ to odpowiednio.

Jak motywować programistów

Oryginalny post: How to Motivate Programmers

Autor: Jeff Atwood

Jeśli chodzi o motywowanie programistów, istnieje pewien nieodłączny paradoks. Myślę, że poniższy komiks Geek Hero zilustruje to doskonale:

Cześć Randall. Doktor mi powiedział, że będziesz mnie słyszał mimo, iż wyglądasz jak warzywo. Przyszedłem Ci tylko powiedzieć, że możesz wziąć tyle wolnego, ile potrzebujesz, aby wyzdrowieć, ponieważ Ross bardzo dobrze radzi sobie w biurze. Znalazł nawet wąskie gardło w Twoim kodzie i powiedział, że teraz wszystko powinno działać 2 razy szybciej.
To niemożliwe!!!! Do biura!! Natychmiast!

To fenomen, który zauważyłem nawet u siebie. Nic bardziej nie motywuje, niż inny programista mówiący Ci, że trzeba przepisać Twój kod, ponieważ jest do dupy. Dave Thomas opowiadał o tym przez lata w swojej klasycznej prezentacji Developing Expertise, której podporą jest następujący cytat:

Co ciekawe, mój przyjaciel (który jest menedżerem kontroli jakości w szpitalu) częstokroć miewał podobne określenia w odniesieniu do lekarzy: Grzeczne prośby, przymus, itp. są zazwyczaj bezużyteczne i często krzywdzące. Nacisk ze strony współpracowników oraz współzawodnictwo są kluczem.

Nie wymagaj zbyt wiele od owiec,
Nie próbuj kontrolować koni wyścigowych.

Tak wiem -- użycie sformułowania "owca" jest nieco uwłaczające, ale ogólna zasada brzmi: używaj takich technik motywacji, które są odpowiednie do poziomu programistów, z którymi pracujesz. Jeśli masz programistów neofitów, karm ich maksymami, wytycznymi i suchymi zasadami. Gdy zaś masz do czynienia z doświadczonymi programistami, zasady są mniej użyteczne. Zamiast tego zachęcaj ich do wyścigu: spraw, by angażowali się w małe, przyjacielskie pojedynki, dzięki którym będą mogli zademonstrować swoją wyższość nad innymi programistami.

Jak stać się bogatym programując

Oryginalny post: How to Get Rich Programming

Autor: Jeff Atwood

Na początku myślałem, że niesamowicie uzależniający Tower Defense, to tylko multiplayerowa modyfikacja Warcrafta III. To tryb gry polegający na współpracy, gdzie Ty i reszta graczy dostajecie prosty labirynt. Grupa potworków ukazuje się przy wejściu i wlecze się ku wyjściu. Twoim celem jest unicestwienie potworków, zanim dotrą do wyjścia, poprzez konstruowanie wież atakujących wzdłuż granic labiryntu. W miarę jak zabijasz potworki, zdobywasz pieniądze, które wydajesz na zakup mocniejszych wież i udoskonalanie już posiadanych. Potworki wzrastają w siłę z każdą falą, ale jeśli jesteś sprytny, przeżyjesz wszystkie fale i dotrwasz do końca.

Nie potrafię dokładnie wytłumaczyć, co czyni Tower Defense tak uzależniającym, ale jest, i to bardzo. Może to ten tryb rozgrywki polegający na współpracy, razem z motywem "jeszcze tylko jedno" ustawienie wieżyczek wraz z jeszcze większym zarobkiem, by móc zbudować jeszcze mocniejsze wieżyczki. Pamiętaj, ten tryb rozgrywki nie jest stworzony przez Blizzard, ale przez modderów gier multiplayerowych, którzy używali narzędzi dostarczonych przez Warcrafta III. Ta gra jest całkowicie wyjątkowa -- nigdy wcześniej nie grałem w nic podobnego. Po około sześciu miesiącach całkowicie przestałem grać w tradycyjne, multiplayerowe tryby rozgrywek w Warcraft III na rzecz modyfikacji użytkowników typu Tower Defense. Jako ukłon w stronę społeczności Blizzard załączył swoje tower defense jako ukrytą misję w dodatku Frozen Throne.

Podejrzewam iż nieuchronnym było, że ten nowy, uzależniający tryb rozgrywki, Tower Defense, wyjdzie poza audiencję graczy posiadających komputery nadające się do grania do prostszych implementacji Flashowych, w które każdy mógłby pograć.

Prosta, puzzlo-podobna rozrywka, jaką jest Tower Defense, dobrze przenosi się na szeroką publiczność ogólnie pojętych graczy. Najbardziej popularną wersją do tej pory jest Dektop Tower Defense.

Ostrzeżenie: przed kliknięciem w ten link pozwól mi powtórzyć: tower defense jest uzależniające! Nie oskarżaj mnie, jeśli stracisz godzinę lub więcej produktywności. Ale jeśli Ty, tak jak i ja, musisz przejść wszystkie 50 poziomów (albo 100 w trybie challenge), skieruję Cię do kolekcji strategii Desktop Tower Defense. I jedna rada: ulepsz kilka ze swoich wież do maksimum; nie rozdawaj wszystkich ulepszeń na wszystkie wieżyczki.

Byłbyś zaskoczony tym, ile pieniędzy można zarobić, tworząc grę we flashu i udostępniając ją za darmo w Internecie. Typ gry typu Tower Defense jest biznesową możliwością przedsiębiorczego programisty. Zgodnie z ostatnim wywiadem Paul Preese, autor Dektop Tower Defense, zarabia około $8000 miesięcznie.

Poniżej wymieniam kilka możliwości stworzenia udanej gry sieciowej:

  1. Znaleźć inwestora, który jest na tyle szalony, aby podarować Ci miliony dolarów.
  2. Wrzucić swoją grę do jakiejś sieci dystrybucyjnej i mieć nadzieję, że znajdą się tacy klienci, którzy zgodzą się zapłacić za ściąganie.
  3. Zrobić mini-flashową grę, dać ją ludziom za darmo i patrzeć, jak zyski z reklam wzrastają, kiedy strona osiąga 20 milionów odsłon w miesiącu.

Ostatnia z nich jest tą opcją, którą wybrał Paul Preese razem ze swoim fenomenalnym Desktop Tower Defense mimo, iż nie ma on doświadczenia zawodowego w kierunku tworzenia gier. Programista Visual Basic zarabia teraz wysoką czterocyfrową sumę, ze swoją niesamowicie wciągającą, małą gierką.

Głównym źródłem dochodu DTD jest AdSense, ale wraz ze wzrostem popularności reklamodawcy dotarli do Preese'a bezpośrednio, oferując mu: "umowy partnerskie, sponsoring, własne wersje dla innych firm, itp. Ostatnie dwie są dopiero planowane, ale pomyślałem sobie, że o nich wspomnę."

Głównym wydatkiem Preese'a jest utrzymanie serwera. "Opłaty hostingowe są zaniedbywalne", mówi, "przy $130 miesięcznie. Ale powoli zbliżam się do limitu transferu 1200GB." To oraz "ciągłe zapotrzebowanie na Red Bulle późną nocą" stanowią większość budżetu Desktop Tower Defense.

Tak więc, odejmując jego czas poświęcony na programowanie oraz symboliczne opłaty hostingowe, Paul Preese zgarnia prawie $100000 "pensji" rocznie za Desktop Tower Defense. I zrobił to sam na własną rękę: napisał grę, umieścił ją na publicznym serwerze, podłączył AdSense, a następnie wrzucił ją do kilku serwisów społecznościowych z zakładkami. Żadnego sprzedawania swojej duszy wydawcy, żadnych pośredników, tylko czysty zysk kontrolowany wyłącznie przez niego.

Najbardziej ekscytujące jest to, jak Internet stworzył ekonomiczne możliwości dla programistów pracujących na własną rękę. Może nie zostaniesz bogaczem, ale $100000 rocznie to całkiem imponująca pensja w Stanach Zjednoczonych. Roller Coaster Tycoon był ostatnią, tradycyjnie wydaną grą, napisaną przez jednego człowieka. Zgodnie z dokumentami zaprezentowanymi przez wydawcę autor, Chris Sawyer, zgarnął $30 milionów za wszystkie wersje gry wydane do 1999 roku. Żeby nabrać perspektywy, wydawca zgarnął $180 milionów. To jest właśnie "sprzedanie duszy".

Oczywiste jest, że $4 miliony rocznie to do licha więcej niż $100000 rocznie. Ale szanse na to, że ja bądź Ty dostajemy ofertę od wydawcy -- albo piszemy grę w języku assemblera -- są znikome. Natomiast sukces Paula jest czymś, co każdy programista przy odpowiedniej motywacji i odrobinie szczęścia jest w stanie powtórzyć.

Windows 7: najlepszy service pack dla Visty

Oryginalny post: Windows 7: The Best Vista Service Pack Ever

Autor: Jeff Atwood

Mimo że nie byłem jakoś specjalnie niezadowolony z systemu Windows Vista, to trzeba przyznać, że jest on trochę niedopracowany:

To właśnie dlatego zrzut ekranu przedstawiający kalkulator w Windows 7 jest dla mnie tak ekscytujący, chociaż wydawać by się mogło, że jest on trywialny. Świadczy to o tym, że Microsoft w końcu zaczyna przywiązywać wagę do tych elementów systemu operacyjnego, które są widoczne dla użytkownika. Jestem fanem Visty pomimo wielu sporów nerdów na jej temat. Chociaż bez problemu jestem w stanie zgodzić się z tym, że Vista nie została dopieszczona tak jak powinna. Powiedzmy, że generalnie doświadczenia użytkownika z tym systemem są niezbyt ... inspirujace. Sprawiło to, że wielu ludzi wzruszało ramionami, mówiąc "to nie ma sensu", i zostawało przy starym, zardzewiałym Windowsie XP.

Vistę można porównać do czwórkowego studenta, który pojawia się u Ciebie przesiąknięty smrodem i ubrany w wytarte szmaty z lokalnego secondhandu. Być może coś w nim jest, ale dotarcie do tego głębokiego, wartościowego wnętrza może być nie lada wyzwaniem.

Z tego względu rozwój Windows 7 obserwowałem z ostrożnym optymizmem. Jest to dla mnie ważne nie tylo dlatego, że jestem fanboyem systemów operacyjnych -- chciałbym, żeby świat w końcu pozbył się Windowsa XP. Świat w ktorym ludzie na co dzień używają 9-letniego systemu operacyjnego nie jest jest zdrowym ekosystemem. Oczywiście nikt nikogo nie zmusza do używania Windowsa, ale biorąc pod uwagę inercję większości ludzi w zakresie ich zdolności podejmowania decyzji związanych z komputerami, wydaje się, że brak zadowalającego uaktualnienia Windowsa jest niebezpieczny.

W końcu gdy Windows 7 osiągnął status RTM (ang. released to manufacturing; gotowy do produkcji), miałem okazję go zainstalować i przyjrzeć mu się osobiście.

Po 5 minutach stało się dla mnie oczywiste, że Windows 7 jest najlepszym service packiem dla Visty, jaki kiedykolwiek się pojawił!

Sam rdzeń systemu nie uległ jakimś większym zmianom, natomiast przyjemność użytkowania jest taka, jaką Vista powinna mieć od samego początku. Microsoft wziął tego czwórkowego studenta, wymył, nałożył makijaż, a nawet podwyższył odrobinę jego oceny.

Wydaje się, że Windows 7 przynosi tylko drobne, kosmetyczne zmiany, ale tak nie jest. Spróbuj popracować na "Siódemce" chociaż przez kilka minut, a doświadczysz systemu operacyjnego, który jest szybki, elegancki oraz wypełniony po przegi małymi, użytecznymi i przemyślanymi funkcjonalnościami, których brakowało w Viście. Vista jest niedopracowana i niezdarna -- Windows 7 natomiast został maksymalnie dopieszczony. Nie chcę Cię zanudzać wszystkimi szczegółami, zwłaszcza, że w wielu miejscach w Sieci Windows 7 zbiera pochlebne opinie. Nie ma sensu, żebym jeszcze ja do tego dołączał. Wystarczy powiedzieć, że Windows 7 jest w końcu godnym następcą Windowsa XP, więc z mojego punktu widzenia -- misja została zakończona sukcesem. Szkoda tylko, że z trzyletnim poślizgiem, ale kto by tam liczył.

(Zwróć uwagę, że post ten nie jest bynajmniej próbą wzniecenia kolejnej, bezsensownej dyskusji na temat wyższości jednego systemu operacyjnego nad drugim. Bardziej interesują mnie fajne rzeczy, które możesz zrobić używając danego systemu operacyjnego. Sorry, ale śrubokręty mnie jakoś nie przekonują.)

Zazwyczaj gdy chcę zaktualizować swój system, instaluję wszystko od początku, ale ostatnio byłem raczej zajęty i nie planowałem tworzenia nowej konfiguracji sprzętowej. Jeśli używasz już Visty, aktualizacja do Windows 7 powinna Ci pójść gładko. Wszystkie poważniejsze zmiany pojawiły się już w Viście, więc jeśli z nią dałeś sobie radę, to bezpośrednia aktualizacja do Windows 7 jest stosunkowo bezbolesna -- a przynajmniej była dla mnie na dwóch komputerach, na których do tej pory ją przeprowadzałem.

Myślę że Windows 7 sprawdza się idealnie jako de facto service pack dla Visty. Nie powinno to chyba dziwić, zwłaszcza gdy spojrzymy na numery wersji.

C:\Users\Jeff>ver

Microsoft Windows [Version 6.0.6002]
C:\Users\Jeff>ver

Microsoft Windows [Version 6.1.7600]

Proszę, oto 0.1.1598 zmiany w okienkowym ekosystemie. A teraz -- czy możemy w końcu skończyć z Windowsem XP?

Meta to morderstwo

Oryginalny post: Meta Is Murder

Autor: Jeff Atwood

Czy znasz pojęcie "meta"? Przenika ono wiele pojęć w programowaniu, od metadanych po tag <meta>. Ale ponieważ jesteśmy na blogu, wykorzystajmy blog do wyjaśnienia, co oznacza meta. Jeśli czytasz mój blog od dłuższego czasu, zapewne słyszałeś, jak wygłaszam tyrady na temat blogowania o blogowaniu, czyli meta-blogowaniu. Tak jak powiedziałem w Trzynastu Banałach Blogowania:

Uważam meta-blogowanie -- blogowanie o blogowaniu -- za niesamowicie nudne. Powiedziałem tak w ostatnim wywiadzie na stronie, która jest całkowicie poświęcona blogowaniu (stąd tytuł, Daily Blog Tips). Nie starałem się ani nikogo obrażać ani szokować; byłem po prostu szczery. Strony, które nie zawierają niczego więcej poza wskazówkami odnośnie tego, jak efektywniej blogować, nudzą mnie do łez.

Jeśli przyjąć założenie, że większość Twoich czytelników nie prowadzi bloga, to jest wysoce prawdopodobne, iż nie będą oni w żaden sposób zainteresowani, rozbawieni czy poinformowani, przeglądając nieustanny strumień wpisów o sztuce blogowania. Nawet jeśli są one pełne ekstra blogowych dobroci.

Meta-blogowanie jest jak masturbacja. Każdy to robi i nie ma w tym nic złego. Ale pisarze, którzy regularnie eksplorują inne tematy, będą zdrowsi, szczęśliwsi, a w końcu bardziej interesujący - niezależnie od publiczności.

Potrójny meta-alarm! Powyższy post to byłem ja blogujący o blogowaniu o blogowaniu. Widzisz? Bolesne. Mówiłem Ci.

Ogólnie rzecz biorąc, nie jestem fanem meta. Jest to kuszące w sposób subtelny, ale jednocześnie bardzo niebezpieczny. O wiele łatwiej jest rozmyślać i pisać o procesie, powiedzmy.. blogowania, niż wymyślać, badać i pisać o interesującym nowym temacie na swoim blogu. Meta-praca staje się odruchem, nawykiem, aż w końcu zastępcą prawdziwej, produktywnej pracy. To jest coś, na co każdy powinien uważać, niezależnie od ścieżki życia czy kariery, jaką obrał. W związku z tym wpadłem na krótkie, energiczne i chwytliwe wyrażenie, by pomóc ludziom w przypominaniu sobie czy też ich współpracownikom, jak toksyczne może to być - meta to morderstwo.

Tak, dobrze to przeczytałeś. Morderstwo. Tak uważam. Jeśli wystarczająca ilość produktywnej pracy zostanie pochłonięta przez meta-pracę, wtedy zginą ludzie. Albo przynajmniej społeczność.

W naszym ostatnim podkaście Joel Spolsky dał doskonały przykład tego, jak meta-dyskusja potrafi zabić społeczność:

Powiedzmy, że zostałeś podkasterem i z tego powodu stajesz się coraz bardziej zainteresowany sprzętem do podkastingu. Zamierzasz kupić jakieś miskery, chciałbyś wiedzieć, jakiego rodzaju słuchawek użyć, jakich mikrofonów, kiedy powinieneś zrobić kowersję A/D itp.

Tak więc znajdujesz jakąś super stronę o sprzęcie do podkastingu. Wchodzisz tam i pierwszy temat rozmowy, jaki widzisz, jest o tym, kto ma zostać wybrany na przewodniczącego strony o podkastingu. Natomiast druga rozmowa jest o tym, czy wybory, które odbyły się w zeszłym roku, były zgodne z ogólnie przyjętymi zasadami, czy też może były trochę podejrzane. Jedyne co widzisz, to całe mnóstwo ludzi kłócących się o to. Chwilę później znajdujesz dyskusję o tym, czy wszyscy ludzie z Południowej Ameryki, którzy dołączyli do społeczności oraz którzy nie mówią za dobrze po angielsku, powinni mieć pełne prawa, czy może powinni mieć prawa tylko-do-odczytu przez pierwsze sześć miesięcy.

To wszystko co możesz tam znaleźć, a Ty chcesz porozmawiać o mikserach i mikrofonach. Właśnie dlatego wszedłeś na tę stronę!

Ale oni są znudzeni ciągłymi rozmowami o mikserach i mikrofonach -- oni przerabiali już niekończące się rozmowy na temat miskerów i mikrofonów. Każdy z nich posiada już perfekcyjny sprzęt. No może poza jednym drobiazgiem, czy powinno się używać tych Monster Cables, o które wszyscy wciąż się spierają.

Tak więc jedyne o czym oni rozmawiają na tej tak zwanej stronie o "sprzęcie do podkastingu", jest właśnie ta strona o sprzęcie do podkastingu.

Meta-dyskusja, jeśli jej nie będziesz kontrolował, udusi pokaźną część normalnego, naturalnego wzrostu zdrowej społeczności. Jak chwasty szalejące w ogrodzie.

Niebezpieczeństwo ze strony meta jest znane od lat. W zeszłym roku mieliśmy Josha Millarda, moderatora z MetaFilter, jako gościa w naszym podkaście. Opisał on, jak szybko MetaFilter uświadomiło sobie, że niekotrolowana meta-dyskusja może zniszczyć społeczność:

Millard: Matt stworzył MetaTalk jakieś 8 miesięcy po tym, jak wystartował z MetaFilter, gdzieś na początku 2000 roku, ponieważ ludzie zaczęli rozmawiać o MetaFilter na głównej stronie. Jest to często spotykane i całkiem naturalne. Ludzie pisali, "hej, o co tu chodzi", "hej, patrz na ten wpis", "hej, ten koleś to palant". Tak więc stworzył MetaTalk i przekierował wszystkie meta-komentarze do tej części serwisu. Można było skasować posta i powiedzieć, "hej, zabierz się z tym tam". Jeśli ludzie chcieli odbyć dłuższą kłótnię, która zaburzyłaby oryginalny wątek, mogli zrobić to właśnie tam.

Wielu ludzi cytuje MetaTalk jako powód, dla którego MetaFilter działa. Jeśli zapytasz kogokolwiek z serwisu, odpowie Ci, że MetaTalk jest kluczowy dla sukcesu serwisu, ponieważ jest czymś w rodzaju zaworu bezpieczeństwa. Strony dyskusji na Wikipedii pełnią podobną rolę. Za pierwszym razem, gdy je zobaczyłem, poczułem się tak samo jak Ty -- dla zwykłego użytkownika nie jest łatwe zrozumienie tego, co się tam dzieje. Ale stali bywalcy, którzy chcą dać coś od siebie dla dobra serwisu i jego społeczności, użytkownicy, którzy pragną, by ktoś ich w danym serwisie dostrzegł, mają to bezpieczne miejsce, w którym możesz pozwolić im robić, co chcą, bez szkody dla głównej funkcjonalności serwisu. W ten sposób unikasz bałaganu na głównej stronie.

Na MetaTalk przesiaduje wielu stałych bywalców. Okazuje się, że istnieje spora korelacja między użytkownikami, którzy stanowią rdzeń społeczności MetaFilter, a tymi, którzy angażują się w dyskusje na temat samego serwisu - jego funkcjonalności, polityki itp.

Atwood: Racja. Doskonale to rozumiem. To jest jeden z problemów projektowania oprogramowania społecznościowego -- nie rozumiesz tego naprawdę, dopóki tego nie przeżyjesz. Przez dłuższy czas nie mogłem zrozumieć ludzi, dlaczego nie przestrzegają oni zasady, że nie dyskutujemy o sprawach meta w danym serwisie. Całkowicie to teraz rozumiem.

Ostatecznie poradziliśmy sobie z naszym problemem meta na StackOverflow. Ok, zostałem zmuszony do zrobienia tego, co powinienem był zrobić parę miesięcy temu, mimo że wzbraniałem się przed tym rękami i nogami.

Tak czy owak zmierzam do tego, że meta jest nie tylko problemem oprogramowania społecznościowego. Meta jest problemem społecznościowym, koniec kropka. Takie rozumowanie można przeprowadzić w każdej dziedzinie Twojego życia.

Programiści znani są ze swojej samoświadomości i odpowiednia ilość meta jest zdrowa. Zalicza się to do ostrzenia piły -- bycia świadomym tego, co się robi i jak można to ulepszyć. Zadziwiające jest to, jak szybko może się to przekształcić w podporę, coś jak metadon na doprowadzanie roboty do końca (Getting Things Donetm).

Tak więc owszem, używaj meta, jeśli ma to sens. Ale bądź świadom, ile czasu spędzasz nad meta. Zastanów się również nad takim pytaniem: co jest motorem postępu na świecie? Poprzez siedzenie i debatowanie nad tym, jak rzeczy są robione, ad nauseam? Czy poprzez, no wiesz.. robienie tych rzeczy?

Alokuj swój czas odpowiednio.

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

Related Posts with Thumbnails