Sprawny Inżynier?
W sierpniu na konferencji Agile 2008 Robert C. Martin (aka Uncle Bob) zaproponował dodanie do Manifestu Agile jeszcze jednego elementu:
Studenci medycyny słyszą od pierwszego roku, że ich błąd może kosztować kogoś życie. Co więcej za błędy mogą znaleźć się w więzieniu. Podobnie z prawnikami - za błędy mogą odpowiadać przed sądem i płacić za nie własnym majątkiem. A czy ktoś słyszał o programiście skazanym za:
Proponuję 3 lata więzienia.
Innym razem przepisywałem system przetwarzający SMSy. W oryginalnym kodzie roiło się od takich linii:
Rok w celi.
Znowu: klasa 1500 linii kodu. Maszyna stanowa (ponad 20 stanów) zrealizowana za pomocą jednego switch.
3 miesiące.
(Oj, nie! To mój kod akurat był...)
Właśnie - dlaczego na uczelniach uczą nas raytraycingu, drzew patricia, czy algorytmów mrówkowych a nikt nie robi ćwiczeń z projektowania kodu. Dlaczego nikt nie powiedział, że kod lepiej się pisze i jest się go pewniejszym (i jeszcze na dodatek jest utrzymywalny!) jak zacznie się od testów? (ktoś w ogóle słyszał słowo test na uczelni?) Czemu napalonym na kodowanie 20-latkom nie mówią, że nie jest fajny konkurs na najmniej czytelny kod w C/Perlu?
Agile Software Engineering - Sprawna Inżynieria Oprogramowania, czy Inżynieria Sprawnego Oprogramowania?
Craftsmanship over CrapNasza dziedzina (przynajmniej światek javowy, który oglądam na co dzień) pogrążona jest w odmętach totalnego braku profesjonalizmu. Mamy masę nowoczesnych technologii (bibliotek, frameworków), masę mądrych ludzi dookoła, setki publikacji, jesteśmy bodajże najnowocześniejszą z wszystkich grup zawodowych, a przy tym jesteśmy całkowicie nieprofesjonalni.
Studenci medycyny słyszą od pierwszego roku, że ich błąd może kosztować kogoś życie. Co więcej za błędy mogą znaleźć się w więzieniu. Podobnie z prawnikami - za błędy mogą odpowiadać przed sądem i płacić za nie własnym majątkiem. A czy ktoś słyszał o programiście skazanym za:
try {Audytowałem kiedyś aplikację e-bankingową. Paręnaście tysięcy klas. Prawie wszystkie dziedziczyły po
....
} catch (SQLException e) {
// maaaan! this can neeeever happen!
}
org.apache.struts.action.ActionProponuję 3 lata więzienia.
Innym razem przepisywałem system przetwarzający SMSy. W oryginalnym kodzie roiło się od takich linii:
Thread.sleep(375); Potem autor tłumaczył, że sprawdził, że jak te wątki czekają odpowiednią liczbę ms to aplikacja działa...Rok w celi.
Znowu: klasa 1500 linii kodu. Maszyna stanowa (ponad 20 stanów) zrealizowana za pomocą jednego switch.
3 miesiące.
(Oj, nie! To mój kod akurat był...)
Właśnie - dlaczego na uczelniach uczą nas raytraycingu, drzew patricia, czy algorytmów mrówkowych a nikt nie robi ćwiczeń z projektowania kodu. Dlaczego nikt nie powiedział, że kod lepiej się pisze i jest się go pewniejszym (i jeszcze na dodatek jest utrzymywalny!) jak zacznie się od testów? (ktoś w ogóle słyszał słowo test na uczelni?) Czemu napalonym na kodowanie 20-latkom nie mówią, że nie jest fajny konkurs na najmniej czytelny kod w C/Perlu?
Agile Software Engineering - Sprawna Inżynieria Oprogramowania, czy Inżynieria Sprawnego Oprogramowania?
sprawny (za SJP PWN)
1. «dobrze wyćwiczony fizycznie, zręczny w ruchach, w wykonywaniu czegoś; też: będący objawem, dowodem czyjejś zręczności»
2. «świadczący o dobrym opanowaniu przez kogoś jakiejś umiejętności»
3. «właściwie urządzony, zorganizowany»
4. «o urządzeniu: dobrze działający, funkcjonujący»
Czy odnosi się to do mnie i do mojego kodu?
Jeżeli inżynieria, to najpierw rzemiosło! Tak więc proponuję zacząć od terminowania. Najpierw zostań czeladnikiem, na sztukę nadejdzie czas (może...) Wolałbym być operowany przez sprawnego chirurga, niż chirurga artystę :)
Taki jest plan na ten blog - krzewienie wiedzy (również własnej) w zakresie inżynierii oprogramowania. Nie chcę nigdy wstydzić się swojego kodu.
Jeżeli inżynieria, to najpierw rzemiosło! Tak więc proponuję zacząć od terminowania. Najpierw zostań czeladnikiem, na sztukę nadejdzie czas (może...) Wolałbym być operowany przez sprawnego chirurga, niż chirurga artystę :)
Taki jest plan na ten blog - krzewienie wiedzy (również własnej) w zakresie inżynierii oprogramowania. Nie chcę nigdy wstydzić się swojego kodu.
Komentarze (5):
O ile się nie mylę, to dodatkowy punkt manifestu brzmiał "Craftsmanship over execution", czyli jak ja to rozumiem "Kunszt/sztuka stawiana ponad tylko działającą aplikacją". Poza tym oczywiście zgoda - programiści to jedna z najmniej profesjonalnych grup zawodowych. Bo przecież jak działa i faktura jest, to wszyscy są szczęśliwi, a potem przejdziemy do kolejnej firmy i kontynuujemy błyskotliwą karierę. Pozdrawiam,
Jacek
Bardzo mi się podoba Twoje podejście do zawodu. Sam staram się wyrobić w sobie podobne nawyki i zachowania o których piszesz, a zainspirowane pewnie były - popraw mnie jeśli się myle - przez ksiażę Martina "Clean Code".
@Jacek. Masz racje,'crap' był użyty w pierwszej wersji, a potem został zmieniony na 'execution'. Więcej można przeczytać tutaj http://www.infoq.com/news/2008/08/manifesto-fifth-craftsmanship
Clean Code jeszcze nie czytałem :)
Ale z pewnością jest na liście na ten rok.
Aha, w takim razie bardzo ja polecem. Również Implementation Patterns Kenta Becka. W paru słowach napisałem o tych książkach tutaj: http://pawelzubkiewicz.blogspot.com/2008/11/clean-code.html
;-)
Niniejszym ciesze się, że tu trafiłe, oswiadczam także, że analityk tu także czyta i się uczy ... programistów :)
Prześlij komentarz
<< Strona główna