Ostatnio okazyjnie nabyłem książkę Panów: Andrew Hunta oraz Davida Thomasa pod tytułem "Pragmatyczny programista". Warto dodać że książka ta została wydana w 2000 roku (w USA, w Polsce 2002).
W rozdziale o narzędziach, autorzy przekonują do tezy, że programista powinien posługiwać się biegle jednym edytorem tekstu i używać go wszędzie, gdzie się da. Tłumaczą, że maestria w posługiwaniu się jednym prostym narzędziem, jest znacznie ważniejsza niż wyręczanie się kombajnem w rodzaju IDE.
Dla mnie teza ta jest dzisiaj już trochę nieaktualna. Wyobraźmy sobie kogoś kto nad projektem w JEE (z wykorzystaniem np. spring, hibernate, struts) pracuje np. vi. Znałem osobiście jednego programistę który taki styl pracy preferował ale do pewnego czasu. Kiedy poznał Intellij Idea (to nie jest blog sponsorowany) i zapoznał się z klawiszologią jego praca stała się nie tylko szybsza i prostsza ale także mniej błędogenna.
Czy więc dzisiaj słowa zawarte w pragmatycznym programiście są nadal aktualne?
Od 2000 roku wiele się zmieniło, wystarczy spojrzeć jakie wtedy były IDE i jakie są teraz... Dzisiaj Eclipse czy IDEA to nie tylko produkty tworzone pod kontem konkretnego języka. To rozwiązania do których istnieje całe bogactwo rozszerzeń, dzięki którym praca programisty staje się nie tylko prostsza ale także mniej błedo genna.
Często bowiem zdarza się, że edytując config w xml popełniam literówke. Błędy zawarte w plikach konfiguracyjnych wychodzą dopiero podczas działania aplikacji. Wykrywanie takich błędów jest więc bardzo kosztowne, ponieważ trzeba aplikacje zbudować, uruchomić i jeżeli będziemy mieli szczęście to wyłapiemy błąd podczas uruchamiania aplikacji, jeżeli nie to będziemy go musieli wy klikać.
Gdy mamy do dyspozycji IDE, z walidacją tych configów błąd lub ostrzeżenie zobaczymy na ekranie w momencie jego popełnienia, tak więc IDE oszczędza nam w tym wypadku wiele pracy. Dodatkowo IDE podpowie także w xml nazwę pakietu czy klasy.
Dodatkowo dzięki IDE zwiększa się czytelność kodu (autoformatowanie) i nawigacja po strukturach klas i interfejstów jest bardzo ułatwiona.
Dzisiaj IDE zaspokaja w 99% potrzeby programisty, ale fakt jest faktem, że raz na jakiś czas trzeba coś zrobić poza nim. Wtedy trzeba użyć narzędzi o których piszą autorzy "Pragmatycznego programisty". Maestria w posługiwaniu się nimi jest atutem, ale czy koniecznością ?
Jak widać wiele się zmieniło w ciągu ostatnich paru lat w pracy programistów. IDE jest dzisiaj ważnym narzędziem bez którego ciężko się obyć. Należy jednak pamiętać, że IDE to tylko narzędzie i nie ma w nim magicznych krasnoludków, które wszystko za nas zrobią. Niestety efektem ubocznym korzystania z IDE jest często niewiedza, co tak naprawdę się dzieje pod spodem, co IDE robi za nas. Spotkałem już "programistów" którzy tworzyli programy w IDE, a gdy poprosiłem ich o uruchomienie ich z linii poleceń, nie potrafili tego zrobić :) Podobne anegdotki, krążyły o programistach korzystających z Visual Studio, że nie piszą oni kodu, a go wyklikują.
Podsumowując, świat idzie na przód i narzędzia też i sam edytor to dzisiaj stanowczo zbyt mało. Dzisiaj maestria w posługiwaniu się IDE jest coraz bardziej wskazana, należy być jednak świadomym tego co IDE za nas robi (czasami może nam coś popsuć i wtedy wiemy gdzie szukać błędu), bo czasami nadchodzi chwila w której musimy stanąć twarzą w twarz z linią poleceń.
Wednesday, October 8, 2008
Wednesday, September 17, 2008
Rada
Dzisiaj podczas szukania czegoś na temat hibernate znalazłem ciekawą stronkę na, którą jakimś dziwnym trafem nigdy nie trafiłem :)
Common Problems
A na niej złotymi zgłoskami ważną rade...
Tak to w życiu bywa... że chcesz czy nie chcesz dokumentacje przeczytać warto, a nawet trzeba :)
Common Problems
A na niej złotymi zgłoskami ważną rade...
I'm having trouble with a bidirectional association.
When you update a bidirectional association you must update both ends.
parent.getChildren().add(child);
child.setParent(parent);
It's best to do this in an association management method of your persistent class.
I'm still having trouble!
Read the documentation! There's a detailed section about "Parent/Child Relationships" in chapter 16 of the reference documentation including code examples.
Tak to w życiu bywa... że chcesz czy nie chcesz dokumentacje przeczytać warto, a nawet trzeba :)
Wednesday, July 2, 2008
SpringOne08
Na SpringOne 2008 wybrałem się dzień wcześniej. Wszystko zaczeło się tam gdzie zawsze czyli na Okęciu. Po piwie w miejscowym barze i podróży samolotem Brussel Airlines (Już nigdy z nimi nie polece, trzeba płacić za napoje i jedzenie jak w tanich liniach, chociaż te tanie nie są), po wylądowaniu w BRU i podróży pociągiem (z przygodami) udało mi (oraz 2-jce znajomych) dotrzeć do hotelu. W hotelu, okazało się, że hotel ten też został wybrany przez SpringSource jako baza wypadowa.
Day 1.
Rozpoczeło się od wstępu Roda Johnsona, który był dość ciekawy, a zarazem bardzo marketingowy. Następnie prezentacje odbywały się równolegle w 3 salach, także zawsze można było coś ciekawego znaleść.
Ja uczestniczyłem w prezentacjach na temat Spring Batch. Rozwiązanie mnie zainteresowało, ale mój entuzjazm został szybko przygaszony tym iż jest to wersja dość młoda i nie posiada np. możliwości defioniowania zależności między job'ami i step'ami :(
Następnie "Persistence Tuning for the Spring Environments by Thomas Risberg" - wykład ciekawy, nie było srebrnych kul, ale raczej metodycznie krok po kroku wytłumaczone, co i kiedy powinno być optymalizowane.
Później przyszedł czas na najcieplejszą z nowinek czyli Spring Dynamic Modules. Narazie OSGi zachwyca entuzjastów, ale już lada dzien zapuka także w okienko projektów w naszych firmach ;)
Lunch break zaobfitował w poznanie znajomych z kraju nad Wisłą, kanapki i rosołek (no tutaj organizatorzy nie zaszaleli).
Po jedzonku "Spring Transaction Choices for Performance by Juergen Hoeller" - podsumowując, używajmy transakcji rozproszonych wtedy gdy to konieczne, gdy nie, natywnych. Dodatkowo były omawiane różne rodzaje zarządzania transakcjami gdy współpracujemy z różnymi źródłami danyc (np. wiele baz + jms).
Na koniec dnia pierwszego "Working with Hibernate with Spring 2.5 by Rossen Stoyanchev". I tutaj poznałem fajny trick, przyznam się, że sam na to nie wpadłem. Otóż przy testach integracyjnych Rossen proponował otwieranie transakcji przed testem, a potem jej rollback po zakonczeniu testu. Wstyd się przyznać ale zawsze miałem ten problem bo commitowałem i musiałem potem posprzątać po sobie (a to niestety trwa...).
Po pierwszym dniu konferencji było piwko oraz frytki z ketchupem, a gdy ten się skończył belgijska specjalność z majonezem...
Z konferencji nasz dyskusja przeniosła się do pobliskiego pubu... :)
ps. dzień drugi opiszę jutro :)
tutaj znajdziecie slajdy z konferencji :)
Subscribe to:
Posts (Atom)