U nas na wyrobisku

Chaotyczny wpis. Pisany bardzo nie po kolei. Te kawałki z bluzgami były pisane na początku, jak miałem w głowie obrazek siebie spędzającego życie jako programista java, co mnie z leksza drażniło. Te bardziej ironiczne -- na końcu, jak wykombinowałem dalszy plan działania, więc mi się humor poprawił.

Czytam książkę o umlu. Będę mniej więcej znał umla.

Po chuj?

Żeby to rzeczywiście miało jakąkolwiek wartość praktyczną (z zawodowego punktu widzenia), to musiałbym do tego jeszcze dodać jakieś wzorce projektowe (jedna, może dwie książki) i rzecz kluczową -- rzeczywistą znajomość jakiegoś obiektowego języka programowania.

Tylko którego? C#? Java? (To poniekąd to samo.) Java mnie przeraża. Nie ma czegoś takiego jak "programista java". Równie dobrze można mówić o "informatyku". Co to jest programista java? Co on robi? Serwlety, midlety, applety, pierdlety? J2EE, jboss, jini, swing... java2, java3, java4, java5... Widzieliście ostatnie wydania thinking in java? Ja mam encyklopedię tych rozmiarów. A po przeczytaniu tego i tak pewnie bym dalej nie był w stanie nic konkretnego zakodować (bo nie koduje się w javie przecież, koduje się w j2ee, jbossie, etc, etc).

Więc co? C++? C++ to już język niszowy (w porównaniu do javy i c#; nie w liczbach bezwzględnych) i z czasem będzie coraz bardziej niszowy. Jaki jest sens wtłaczania sobie do głowy tej całej obiektowej papki tylko po to, żeby kodować w C++?

W praktyce wybór kariery jest w większości przypadkowy. Jesteś programistą? A dlaczego nie administratorem? I dlaczego programistą j2ee, a nie czegoś innego? Bo na studiach akurat cię uczyli javy, a jak dostałeś staż to z j2ee i ci już tak zostało? Ano właśnie.

Na tej zasadzie ja jestem. Ja nie wiem czym ja jestem. Nie jestem adminem. Prawdziwi admini mają certyfikaty cisco, a ja nie mam certyfikatu cisco. Ja tylko całkiem nieźle znam jedno distro od środka i bardzo lubię wykorzystywać do maksa jego podstawowe narzędzie -- package managera. Tak, pozwala mi to na sprawne stawianie niezagraconych serwerów, ale ja tego po prostu nie lubię robić. Fajnie jest jak już działa, ale kogo może podniecać perspektywa grzebania w konfigach postfiksa, żeby działał z amavisem-new? Nie mnie.

A już na pewno nie mam ochoty zdobyć certyfikatu cisco.

Dla mnie naturalnym środowiskiem jest linia komend. Pliki, rury i takie tam. A jeśli koduję coś, co ma być szybkie, to wtedy używam znajomości C. epoll, dlaczego nie używa się dużej ilości wątków, blokujące sockety, minimalizowanie kopiowania danych, glib, może jakieś mempoole zamiast malloców, minimalizowanie ilości zmian kontekstów (ograniczać sysctle), etc, etc. To jest fajne. Nie wiem dlaczego. Może mam zboczenie, bo zaczynałem od assemblera, a poza tym bycie blisko kernela jest takie sexy.

A jak potrzebuję coś napisać, żeby działało, to używam pythona. Siadam, piszę, działa. Język dla hackerów.

Tutaj jestem bezpieczny. Tutaj wszystko jest proste. Mam swoje segfaulty, coredumpy, epolle, poldki i takie tam inne. Tutaj nie śnią mi się po nocach obiekty w javie. I sama java ze swoim nieskończonym stopniem złożoności.

Ten moment w życiu, kiedy to już nie ja kieruję moimi zainteresowaniami, tylko one mną...

Kurwa, jak ja tego nienawidzę.

Aaa, w dupie to mam. Nauczę się w końcu porządnie C++, przynajmniej nie będzie, że nie znam żadnego obiektowego, a w razie czego może jakieś kde zakoduję. Do tego wezmę się w końcu kiedyś za lepsze poznanie pythona, zwłaszcza tych wszystkich nowych ficzerów z ostatnich kilku wersji. Genericsy, dekoratory, stare typy obiektów, nowe typy obiektów. Co to w ogóle jest.

Jedyna nadzieja z zawodowego punktu widzenia, to jakoś się wkręcić w ten cały opensourcowy światek (jest w polsce coś takiego w ogóle; komercyjne znaczy się?). Albo przynajmniej pracować w, hmm, 'zwinnych' linuksianych firmach (a to jest?). Niech ów światek rośnie na zdrowie, im większy urośnie, tym mniejsza szansa, że wyląduję pod mostem. (A jak chcecie znać moje zdanie, to bardzo bym polecał wkręcenie się w wine'a. Mam niejasne wrażenie, że umiejętność odpalenia dowolnego windzianego programu pod linuksem jest/będzie w najbliższym czasie sporo warta. Zwłaszcza przy obecnym wejściu visty, gdzie firmy mogą stwierdzić, że lepiej im zapłacić komuś, żeby im legacy oprogramowanie odpalił na linuksie i na to zmigrować. Już nie wspominając o skillu z reversingu windzianych programów, który się przy tej okazji zdobywa, a który też ma swoją wartość.)

  1. 1. bmalkow

    "Programistą Javy" (masz rację, że to nieostre określenie, ale chyba c# jest podobnie: można pisać desktopowe aplikacje, serwerowe, i nie wiem sam co jeszcze) zostałem już po studiach. Całkiem świadomie. Na studiach to tylko sie dowiedziałem, że Java istnieje. Miałem po prostu w pracy do zrealizowania projekt, i całkowicie wolną rękę co do technologii/języka. Padło na Javę.

    Zastanawiam się czasem, skąd taka niechęć do tej javy? Ja już wyrosłem z ewangelizacji. Nie obchodzi mnie jakiego systemu kto używa, czasem tylko windziarzom powiem SOA#1, przestałem namawiać kogo się da na Jabbera (jak ktoś używa gg, to ze mną pogada via mail lub telefonicznie), przestałem też przekonywać kogokolwiek do Javy -- niech każdy używa tego co lubi i co mu daje pieniądze/satysfakcję czy jaką tam kto ma hierarchię wartości.
    Ja pracuję w Javie zawodowo. I w fabryce i fuchę też w javie rzeźbię. Opensource'owy projekt w którym uczestniczę również jest w Javie. I'm happy!

    Warto się natomiast zastanowić (i pewnie popytać) dlaczego firmy decydują się na Javę. Dlaczego niewielkie firmy piszą w Javie aplikacje dla swoich pracowników? Dlaczego wielkie firmy (Siemens czy inny Comarch) piszą dla swoich klientów aplikacje w Javie? Dlaczego ludzie piszą aplikacje dla międzynarodowych firm właśnie w Javie (i pewnie nie dlatego, że programista akurat zna Javę, jakby Phillips chciał aplikacje w Pythonie/PHP/Ruby to na pewno nie zaakceptowałby tej w Javie).
    Pytanie jest postawione "na poważnie". Sam nie wiem (a chciałbym się dowiedzieć) dlaczego akurat Java jest wybierana przez management. Mało prawdopodobne, iż powodem jest to, że manager usłyszał "java is cool" i zadecydował. Takim podejściem można się wpuścić w kanał.

    Z resztą, gdyby decyzja o wyborze języka była podejmowana na podstawie, dajmy na to, lektury jednej książki, to wszyscy pisaliby w Lispie ;-)

  2. 2. Jajcuś

    Wiesz... na pewno znajdzie się miejsce dla Ciebie. Bo właściwie, to ja chyba teraz robię mniej-więcej to, do czego dążysz.
    Klon PLD do urządzeń opartych o "małe PC". W tym cała masa pythonowych skryptów, które organizują pracę systemu (np. załatwiają upgrade obrazu dysku) i są pomostem między systemem, a GUI (w Javie). Czasem napiszę jakiś sterownik do kernela (prosty watchdog w nietypowym sprzęcie), czasem spatchuję jakąś aplikację w C, czasem coś dopiszę w tym GUI (ogólnie kodem Javy zajmuje się kto inny, ale jak trzeba dodać jedną opcję do menu, to mogę to zrobić). Jestem też tym, co projektuje (nie, nie w sensie setki obrazków i tony dokumentacji) ogólny kształt systemu, według wymagań szefa i klientów oraz na podstawie tego, co mam do dyspozycji (Linux z różnym oprogramowaniem, koderzy od Javy i moja głowa).
    Tak właściwie nie jestem ani administratorem, ani programistą, z drugiej strony jestem jednym i drugim. I jakoś to się kręci, a ja całkiem przyzwoicie zarabiam. :-)
    Ale też wiem, że przecież nie tak wygląda praca w IT... i właściwie powinno się to kiedyś skończyć... oby nie. ;-)

  3. 3. Jajcuś

    bmalkow: IMHO sytuacja jest prosta: na rynku jest pełno programistów Javy i sporo gotowych rozwiązań w Javie. Skoro jest taka podaż pracy i technologii, to Java jest tania. Nawet jeśli Python jest lepszy, to dla pracodawcy jest ryzykowny, bo jak koder odejdzie, to trudniej będzie go zastąpić. Im bardziej niszowy język, tym ryzyko większe. I machina się sama napędza -- skoro wszyscy używają Javy, to najwięcej pracy jest dla Javowców, a więc najlepiej się tego uczyć i Javowców jest coraz więcej... Ostatnio obok Javy w siłę rośnie .NET, to efekt skutecznej promocji ze strony Microsoftu. Podobnie kiedyś wypromowana została Java. Za Pythonem nikt wielki nie stoi, więc nie ma kto mu dać temu językowi odpowiedniego rozpędu. Ale mimo to trzyma się całkiem nieźle. Właściwe to i Perl ma wciąż gdzieś swoją pozycję.
    Mnie się najlepiej pracuje z PLD i z Pythonem... ale mam wątpliwości narzucając te technologie pracodawcy... kiedyś będzie trzeba mnie zastąpić i trudno będzie znaleźć kogoś kto zna PLD i Pythona. Pod tym względem lepszy byłby Debian i Java... ale to problem, ryzyko i wybór pracodawcy (i wcale tego przed nim nie kryję)... z mojego punktu widzenia najlepiej zostać przy PLD i Pythonie :-)

  4. 4. Cachotterie

    Jajcuś: Nie tylko. To o czym piszesz to oczywiście również atut Javy, ale jest jeszcze parę innych czynników. I Java, i .NET są silnie typowane. Czego by nie mówili zwolennicy Pythona i okolic, to bardzo pomaga w pisaniu w dużych zespołach (a z takimi mamy do czynienia przeciez komercyjnie). Nie wyobrażam sobie dotykania cudzego kodu bez takiego wsparcia, jakie daje mi Eclipse (czy nawet VS) - w każdym razie pochłaniałoby to koszmarne ilości czasu, żeby poznać cudzą bibliotekę/inny kawałek systemu. Nawigowanie po kodzie, podpowiadanie w trakcie pisania, autouzupełnianie, automatyczne poprawianie niektórych błędów, refaktoryzacja - etc. etc. etc. To wszystko jest dla javy i .NET i to naprawdę BARDZO przyspiesza pracę, a przecież komercyjnie to się liczy.

    Python jest kapitalnym językiem i bardzo mi się podobają niektóre z jego koncepcji, ale obawiam się, że jakbym zobaczyła projekt w nim na kilkaset tysięcy linii kodu i miała w nim coś zmieniać, to by mi się zrobiło słabo - mimo że przecież taki obiektowy. Ciężko jest po prostu dla niego zrobić narzędzie pokroju Eclipsa. Te, które widziałam, są po prostu koszmarnie biedne (fakt że nie testowałam żadnych komercyjnych, o ile są - może tam jest lepiej).

    No i last, but not least - to co wspominasz o problemach kadrowych. Zgadzam się z tym, ale dorzucę jeszcze coś. Im więcej swobody (co za tym idzie i możliwości) zostawia język, tym lepszy i bardziej odpowiedzialny musi być programista. W javie pewne grzeszki nie przejdą, bo od razu dostaniesz od kompilatora po łapach. W pythonie to wyjdzie dopiero przy testach (oby automatycznych) - a na te jak wiadomo nigdy nie ma czasu. Świetnych programistów jest mało. Za to jest sporo programistów po prostu przeciętnych. Nawet gdyby rozłożenie proporcjonalne było "mamy do wyboru 100 javowców, 100 pythonowców, z czego w obu przypadkach 10% jest super, a reszta średnia" to java byłaby bezpieczeniejsza i z punktu widzenia pracodawcy lepsza - bo ci średni w javie mają dużo większe szanse wyprodukować coś działającego dobrze ;)

    Oczywiście wszystko to IMHO etc. ;)

    Chętnie zobaczyłabym dobry zespół programistów i jakiś duży system w pythonie, bo naprawdę jakoś mnie ten jezyk magnesuje - ale takie rzeczy to chyba tylko w erze ;)

  5. 5. DeeJay1

    Na dodatek w większości firm Java jest w wersji antycznej (nie tak dawno w mojej poprzedniej firmie używano 1.3). Człowiek tutaj się uczy o typach generycznych (co za paskudna nazwa), pętlach foreach, przychodzi do pracy a tu połowa nawyków nie działa (o dziwo na studiach zaczynają uczyć nowoczesnych technologii). Swoją drogą o Struts zapomniałeś wspomnieć...

  6. 6. mmazur

    Co do javy -- jak najbardziej się zgodzę, że w tym można pisać gigantyczne projekty. *Zwłaszcza* biorąc pod uwagę całą tę obiektową otoczkę, czyli różne rationale, umly, eclipsy, design patterny i co tam jeszcze. Cały ten ekosystem oznacza, że jak wielki by projekt nie był, ktoś już to robił wcześniej i pewnie te narzędzia był przetestował.

    Co do pythona zaś, to rzeczywiście, ja bym miał spore obawy przed robieniem większego projektu w tym. Fakt, że ja się na programowaniu nie znam, więc nie mam pojęcia jak to w praktyce wygląda z tymi automatycznymi testami (cholera wie, może to rzeczywiście jest bardzo dobre; w teorii powinno). Już nie wspominając o tym, że z definicji coś, co w javie będzie dużym projektem, w pythonie pewnie spokojnie można napisać jeszcze w ramach średniego.

    (Dlatego też kibicuję przebąkiwaniu Guido, żeby dodać w jakiejś formie sprawdzanie typów, bo rzeczywiście te informacje w kodzie są i można by je jakoś wykorzystać, bez sensu, żeby się gubiły.)

    Jajcuś -- "Ale też wiem, że przecież nie tak wygląda praca w IT". No właśnie. Moje parcie do javy jest spowodowane dokładnie tym. Sam pracuję w miejscu, gdzie jak przyszedłem, to musiałem napisać trochę php (znowu, pehapa znam tylko podstawy), zaprojektować pewien system i zrobić do niego jakąś bazę danych (i wyszło mi średnio na jeża, dlatego teraz chcę się upewnić, że wiem o bazach wszystkie podstawy, żeby mnie nic później nie zaskoczyło). A, i jeszcze do tego pehapa backend w pythonie dopisać.

    Później zacząłem się zajmować (odziedziczyłem) wysokowydajnym systemem w C. Dużo maszyn, dużo procka, bardzo dużo łącza, sam sobie wymyślasz jak to synchronizować, optymalizujesz w różnych miejscach (bo kod nieprodukcyjny, a poszedł na produkcję). Maszynami sam sobie zarządzam (fakt, że gentoo, no ale powiedzmy, że da się z tym jakoś żyć), sam sobie wymyślam kawałki bazy danych, koduję to wszystko, mam współpracownika z którym mogę omówić, zlecić mu zrobienie któregoś kawałka.

    Teraz natomiast muszę sobie trochę podebugować kod w javie, bo w nim jest zawarta tajemnica dlaczego mój kod w C nie działa (coś ala ty -- programistą javy nie jestem, ale debugowanie printfami jakoś specjalnie skomplikowane nie jest; albo jakaś mała modyfikacja funkcjonalności).

    Ale podobnie jak i ty, ja sobie też zdaję sprawę, że "nie tak wygląda IT". Bo my prędzej czy później wylądujemy na bruku. A ja naprawdę nie chcę zostać programistą javy :/ Ja lubię tę moją hakierkę, tu python, tam C, coś innego dla smaczku. I bez tej całej obiektowej papki z tysiącami rysuneczków, diagramików i dokumentacji.

  7. 7. Cachotterie

    MMazur: Ty masz chyba troszkę spaczone pojęcie o Javie, jeśli mówisz "I bez tej całej obiektowej papki z tysiącami rysuneczków, diagramików i dokumentacji". :) Tzn. inaczej: to bardzo dużo zależy od firmy i od ludzi, z którymi pracujesz. Są miejsca gdzie rzeczywiście masz koszmarny formalizm, tysiące diagramów w UMLu i ciężkie metodologie z pierdyliardem dokumentów.
    Są też miejsca, w których stosuje się podejście "agile" (i niekoniecznie chodzi mi tu o czyste XP) i wtedy naprawdę głównie tworzy się kod, a nie tysiące rysunków, diagramików etc. Tego jest tylko tyle, żeby np. komuś kto dołącza do projektu było łatwiej, czyli jakiś ogólny diagram architektury, podział na wartstwy etc., ale nikt przy zdrowych zmysłach nie tworzy diagramu klas do projektu, który tych klas ma setki/tysiące. Dobry kod z dobrymi testami i dobrym narzędziem typu Eclipse naprawde nie wymaga setek stron dokumentacji.

    Wszystko zależy jak trafisz (na jaką firmę), ale nie uprzedzaj się, że jak java od razu te wszystkie upierdliwe UMLe i inne pierdy. Czasem tak jest, czasem nie. Kwestia szczęścia (w razie czego przecież można zmienić firmę).

  8. 8. Jajcuś

    "Bo my prędzej czy później wylądujemy na bruku."

    Aż takim fatalistą bym nie był. Na razie pnę się raczej w górę. Częściej słyszę "nas na Ciebie nie stać" niż "nie nadajesz się". A jeśli to się skończy, to w najgorszym wypadku będziemy musieli się dostosować do "korporacyjnych standardów" i np. pogodzić się z pisaniem w Javie, albo instalować RHEL zgodnie z odgórnymi instrukcjami... Myślę, że mimo wszystko możemy być w tym lepsi niż wielu "znających Javę", zaraz po studiach, czy certyfikowanych inżynierów Cisco, a i tych lepszych będziemy w stanie dogonić. Tylko to już pewnie nie będzie to, co tygryski lubią najbardziej...

  9. 9. Anonim

    mmazur: a moze zajmij sie nieco powazniej c, systemami operacyjnymi, sterownikami,
    algorytmami w samych kernelach etc? I nie daj sie przypadkowosci wyboru kariery...

  10. 10. mmazur

    @cachotterie -- primo, jesteś jedną z Nich, więc z definicji ci nie wierzę, bo wy w javalandii się żywicie duszami niewinnych hakerów :) Secundo -- tak, tak, ja wiem, że to w praktyce nie jest aż takie straszne. Ja po prostu mam (wręcz ewidentnie) irracjonalny wstręt do akurat tego kawałka branży. No po prostu mam ochotę uciekać z krzykiem.

    @jajcuś -- tak, no ten bruk to był z przymrużeniem oka. Zaś co do tego 'nas nie stać' -- a widzisz, to też jest problem. Bo mi nie chodzi tylko o to, żeby sobie dłubać to co lubię, ja też chcę dłubać za jakieś sensowne pieniądze. Jeśli żeby robić to, co lubię, będę się musiał za jakieś grosze zatrudnić jako admin na zadupiu (bo w lepszych firmach chcą certyfikatu cisco a do tego będą mnie zmuszać do rhel), to to niespecjalnie jest jakieś wyjście i zostaje java.

    Zaś co do bycia lepszymi, niż przeciętny javowiec, to poniekąd zgoda. Choćby szersze doświadczenie powoduje, że by się nam lepiej w tej javie myślało. Ale mam poważną obawę, że coś takiego byłoby strasznie ograniczające, w tym sensie, że przy hakierce możliwości masz nieograniczone. Co lubisz? Jabbera? No to idź do JSF. A może pythona? To idź cośtam koduj z reference implementation i baw się w nowe rfc do języka. A może kernel jest fajny? No to zacznij od jakiegoś sterownika, czy innych opłotków (moje llh) i później przejdź do czegoś większego. Może lubisz desktopy? Jak wysokopoziomowe, to masz gnoma i kde, jak niskopoziomowe, to w ixach pewnie zawsze są wolne miejsca, a zawsze zostaje (przynajmniej dla mnie wybitnie ciekawy ze względu na doświadczenia z pld) middleground, czyli integracja tego wszystkiego -- niskopoziomowego (package managery, userland okołokernelowy i pokrewne) z wysokopoziomowym (jakieś ustalanie policy, klikadła, integracja desktopów via hal, etc.). Dłubiesz w fajnych rzeczach, za które jest dużo expa i dużo geek pointów. To jest *fajne*.

    A w javie co? Tam w ogóle jest cokolwiek poza ścieżką korporacyjną? Może jestem dziwny, ale perspektywa zdobywania kolejnych certów z oracla, .neta, czy j2ee jakoś kompletnie mnie nie podnieca. Ja nie lubię tego typu formalizmów, gdzie muszę ryć, żeby zdać, a nie dla samego siebie, żeby lepiej umieć. Po prostu mnie to odrzuca.

  11. 11. walczyk

    Z tego co widzę większość ludzi związanych z linux-em lubi poprostu "grzebać" w systemie ( łączyć większe kawałki pracy innych aby uzyskać jakąś spójną działającą całość ), czy nie jest to wynikiem poprostu przyzwyczajenia od młodych lat do systemu w którym trzeba pogrzebać aby coś działało ( sam się do tego przyzwyczaiłem więc piszę trochę o swoim przykładzie, btw gdybym siedział dalej w windows pewnie teraz dalej zarywał bym noce żeby coś popsuć ), piszecie że nie chcecie być programistami javy - jak mam to rozumieć nie cieszy was już stworzenie czegoś działającego, gdzie od podstaw kod jest wasz? Przecież tu nie chodzi o język - jeśli wszystkie są do siebie tak podobne. Może czas pomyśleć o samym projektowaniu systemów, a kodowanie zostawić innym ( swoją drogą zastanawiam się jak to wygląda w rzeczywistości - czy realne jest praca jako projektant bez dotykania kodu ?)

  12. 12. mmazur

    Realna jest, zwłaszcza przy odpowiednio dużym projekcie. Natomiast to nie jest coś, co ja bym chciał robić. Nie mam nic przeciwko projektowaniu, to jest rzeczywiście jedna z fajniejszych rzeczy (samo kodowanie zazwyczaj jest nudne), tyle tylko, że niech to będzie projektowanie *i* kodowanie.

    Tak jak ja teraz pracuję. Wymyślę, omówię ze współpracownikiem, kodujemy obaj. Tak jak jajcuś współpracuje z tymi swoimi javowcami.

    To się mądrze nazywa 'metodyki zwinne', natomiast dla nas opensourcowców jest to wręcz organiczne, kulturowe. Nie chcę pracować inaczej, dlatego certyfikaty i korporacje mnie przerażają.

  13. 13. mmazur

    Poza tym języki nie są wcale do siebie aż tak podobne. C jest takie jakie jest, bo być musi -- tak naprawdę to jest taka nakładka na assembler; C++ analogicznie -- nakładka na assembler + obiektówka; python, czy tam ruby natomiast to spełnienie marzeń -- siadasz, piszesz, działa; reszta języków... no cóż. Jeśli najpierw poznasz C i spróbujesz coś w tym napisać, a później poznasz pythona, to na C (z obowiązkowym glibem albo odpowiednikiem) będziesz miał ochotę tylko wtedy, gdy rzeczywiście będziesz wiedział, że akurat C ci w tym konkretnym przypadku potrzebne. W przeciwnym razie będzie cię skręcało, że musisz tego używać.

    Przy takim podejściu na inne języki (zwłaszcza główne mainstreamowe, czyli java i c#) miejsca po prostu nie ma. Tak jak cacha mówiła -- to są języki korporacyjne, wymyślane po to, żeby można je było używać w gigantycznych projektach, gdzie programiści są na różnym poziomie, gdzie oni się często zmieniają, gdzie jest wiele poziomów managementu, etc. Jeśli ktoś chce pracować w takim środowisku, to proszę bardzo -- ja na pewno nie.

    Natomiast w przypadku małych projektów, to i owszem, możesz tej javy, czy c# używać, powstaje tylko pytanie -- a po co? O ile twój kod nie musi się integrować z kodem korporacyjnym, gdzie rozwiązania techniczne masz po prostu narzucone z góry, będzie ci się *znacznie* przyjemniej pisało w którymś z nowocześniejszych dynamicznych języków, a przy okazji wyniki zobaczysz znacznie znacznie szybciej.

  14. 14. walczyk

    Pisałeś kiedyś że podoba ci się jak wielkie firmy jak google dbają o swoich pracowników itp, nie chcesz już zobaczyć jak w praktyce wygląda praca takich firm.

    Ostatnimi czasy próbujemy ogarnąć pewien projekt od podstaw - myślę że bardzo przydała by mi się wiedza jak "to" ( rozmowa z klientem, projektowanie, podział pracy ) powinno wyglądać. Mam wręcz wrażenie że dochodząc do pewnych wniosków sam gubię rzeczy których powinienem nauczyć się od mądrzejszych.

    Co do języków to trzeba poprostu dobrać odpowiedni język do problemu który mamy rozwiązać - taka rozmowa o językach programowania jest dla mnie o tyle jałowa że nie przynosi mi żadnych nowych informacji.
    Czy nie powinniśmy się skupić na istocie rozwiązywanego problemu i to jak najlepiej coś ugryźć. Póki mam niedobory wiedzy o językach ich zastosowaniu itp będę o nich rozmawiał czytał itp, czekam tylko na taki czas kiedy to sam rozwiązywany problem będzie stwarzał dyskusję i każe mi zamknąć laptopa i może poobserwować naturę, ludzkie zachowanie itp ( :P to już tak luźniej mówiąc )

  15. 15. Cachotterie

    Hehe, rozumiem to niczym wytłumaczone "organiczne nieznoszenie" bo ja tak samo mam z C/C++ ;) Znam wszystkie argumenty czemu nie są takie złe na pamięć, ale jak mam cokolwiek w tym napisać to mnie skręca ;]

    Anyway. Nie jest tak, że w javie pisze się w megawielkich korporacjach, i wcale nie jest też tak, że od razu wiąże się to z certyfikatami i innymi formalnymi ścieżkami... Ode mnie w firmie (obecnie trochę > 20 programistów) nikt nie oczekuje, że pójdę do Suna żeby mi powiedział "tak, znasz javę", bo to czy/na ile ją znam widać na każdym kroku, przy każdym projekcie i każdej rozmowie. Nie muszę nic ryć i rozwiązywać durnych teścików. I raczej w każdej normalnej firmie tak jest. Certyfikat jest dodatkowym atutem, jeśli chciało Ci się go zrobić, ale nie spotkałam się jeszcze (czy to osobiście, czy w opowieściach znajomych) z firmą, gdzie by było na niego jakieś większe parcie. Choć może to jest pochodna wielkości miasta w jakim mieszkam i pracuję, może w małych miejscowościach jest inaczej - nie wiem.

    Wydaje mi się też, że niekoniecznie trzeba mieć do czynienia z projektem na 100 i więcej osób i korporacją, żeby java/c# były jedynym sensownym wyjściem. Tak naprawdę (wydaje mi się) starczy 10 osób na projekt (a przecież firma może mieć takich projektów 1 albo 50 i nic to nie zmienia). To nie tylko korporacje. To firmy nawet na kilkunastu/kilkudziesięciu programistów. Zresztą każda duża firma gdzieś kiedyś zaczynała ;) Jeśli bierze się pod uwagę, że kiedyś się rozrośniemy, to lepiej od razu wziąć język "zespołowy" niż w okolicach 15 zatrudnionej osoby myśleć "to co, czy to już czas przerzucać się z pythona na c#" ? ;)

    Zresztą jest jeszcze kolejny aspekt tego wszystkiego: dostępność bibliotek. Python jako czysty język jest rzeczywiście "sprawniejszy" niż java czy c# i szybciej się w nim pisze. Tyle że w tej chwili ja swoje programowanie odbieram bardziej jako sklejanie z N klocków (bibliotek/frameworków) niż rzeczywiście pisanie swojego kodu... *Wydaje* mi się, że pod tym względem java i .NET wypadają dużo korzystniej niż którykolwiek inny język - i to kolejny powód popularności w korporacjach. Po co tracić czas na wymyślanie koła od nowa, skoro ktoś już je wymyślił, napisał i *przetestował* (często na setkach tysięcy użytkowników).
    Dlatego chociaż teoretycznie python jest nowocześniejszy i "szybszy" (w pisaniu) niż java czy .NET kiedy przychodzi do napisania np. aplikacji mergującej zawartość plików tekstowych w dwóch folderach, to nie zawsze musisz zobaczyć wyniki szybciej, gdy chodzi o jakąś nieco bardziej skomplikowaną aplikację (szczególnie taką która ma mieć jakieś bardziej zaawansowane GUI, i tu akurat C# ze swoim klikadełkowym VS triumfuje nad javą) . Python też ma swój zasób bibliotek, jasne, ale wydaje mi sie że tam gdzie python ma jedną, java ma X do wyboru, a każda z nich ma N razy więcej potencjalnych bugreporterów.

    Ale całe szczęście każdy może znaleźć kawałek miejsca dla siebie. :) Jeśli masz organiczny wstręt do javy i okolic, to moim zdaniem nie warto się zmuszać. Ja mam to szczęście, że takie programowanie i tworzenie "czegoś z niczego", gdzie strasznie dużo zależy ode mnie (no i oczywiście pozostałych członków zespołu) stwarza mi kupę frajdy. Babranie się w bebechach linuksa z kolei, gdzie praktycznie nic ode mnie nie zależy, wręcz przeciwnie. Np.: patrzę na większość dystrybucji, szlag mnie trafia, że chyba tylko PLD ma indeksy przyrostowe i co mogłabym z tym tak naprawdę zrobić? Raczej niewiele...
    Zawsze uważałam, że lepiej być świetnym i mieć pasję do tego, co robisz, niż robić coś tylko dlatego, że jest bardziej popularne/potencjalnie dochodowe/whatever. Ludzie dobrzy w tym co robią (a jak coś lubisz, to zwykle też jesteś dobry) znajdą swoje miejsce zawsze. Bezrobocie Ci nie grozi ;)

  16. 16. alek

    Niedawno trafiłem na wątek pt. "w co się wgryzać" i jedna myśl mi się spodobała - "ucz się javy, będziesz konkurował z milionami Hindusów i Chińczyków" :-)

  17. 17. mmazur

    Akurat google to nie jest dobry przykład jeśli idzie o 'wielkie firmy', bo oni tam kuszą akurat takich jak ja tym, że 20% czasu można dłubać przy czym się chce, a poza tym tam używają dużo pythona, etc.

    Zaś w takiej archetypicznej korporacji marzeniem managementu jest taki stan, gdzie programiści są stuprocentowo wymienialni. Tzn. zwalniasz jednego, zatrudniasz drugiego i po minimalnym czasie ten drugi osiąga wydajność pierwszego.

    Coś takiego mnie niespecjalnie interesuje.

    Zaś co do dobierania języka do odpowiedniego problemu -- to jest właśnie to, co ja chcę mieć. Swoboda dobierania najwygodniejszego rozwiązania technicznego do konkretnego problemu. Tak zwana hakierka. Czegoś takiego *nie* *masz* w korporacji, a jeśli masz, to w bardzo ograniczonym zakresie, z tego prostego powodu, że normalny szef nie będzie chciał ryzykować, że użyjesz jakiegoś dziwactwa, zwolnisz się, a on później nie będzie mógł znaleźć nikogo na twoje miejsce.

    Zaś co do uwag cachy, to w większości się zgadzam z dwoma wyjątkami.

    Primo, ja tak naprawdę nie wiem jak to jest do końca z używaniem pythona w większych projektach. Na chłopski rozum by się wydawało, że będzie trudniej, natomiast jak to jest w praktyce -- nie wiem, nie znam się (zaś co do bibliotek, to po pierwsze zależy od obszaru zainteresowań, a po drugie po to jest ironpython i jpython, żeby zrobić pythona przyjaznym dla korporacyjnych dronów, bo zintegrowanym z resztą ekosystemu :).

    Secundo natomiast -- kompletnie nie zgodzę się odnośnie uważania linuksa za system zamknięty. Z hakierskiego punktu widzenia to właśnie .net jest kompletnie zamknięty, a java dopiero zaczyna się otwierać (i długa droga przed nią). W przypadku opensource'u wszędzie masz kod źródłowy, a większość dystrybucji już wpadła na to, że muszą mieć wersje community, żeby ludzie mogli się zgłaszać ze swoimi poprawkami. Oczywiście to zawsze ma jakieś ograniczenia, tzn. nigdy nie osiągnę w takim debianie, a już w fedorze, czy opensuse na pewno, swobody decyzyjnej, jaką mam w pld, ale co by nie było ona jest. Zawsze mogę wziąć źródła i coś sobie dohakować i mam niezerową szansę, że mi to mergnął upstreamowo.

    A odnośnie 'robienia tego, co się lubi'. Hobby jedno, zarabianie sensownych pieniędzy drugie. Chciałbym, to ja sobie dłubać przy pld, ale nie będę, bo w tym nie ma pieniędzy. Więc muszę kombinować dalej. To nie jest kwestia tego, *czy* będę robił to, co chcę, tylko jak daleko będę od tego, co rzeczywiście wolałbym robić.

  18. 18. Cachotterie

    Co do 2 wyjątków ;)
    Primo: fakt że z praktyki też nie znam. Ale w biznesie nie ma miejsca na sentymenty i nikt nie siedzi w javie/.net tylko dlatego, że lubi Suna/M$. Skoro tyle firm uważa, że najbardziej im się opłaca pisac w tym właśnie, to myślę że jednak coś w tym jest... Choć fakt, że i java kiedyś zaczynała widziana jako coś dla "oszołomów" ;)))

    Secundo: Niejasno się wyraziłam chyba :) Jasne że java/.net same w sobie są znacznie bardziej zamknięte niż linuks i nie to miałam na myśli (nie zamkniętość). Nie chodziło mi o dłubanie w nich jako w narzędziach (np. poprawienie buga w JDK czy nawet patchowanie jakichś bibliotek). Chodzi mi o to, że jako programista javy/.net generalnie tworzysz coś od zera (czy to będzie system księgowy, czy jakiś webowy frontend do czegośtam, to bez znaczenia). Masz udział w doborze frameworków, podejścia, tego czy i jaką bazę danych do tego stworzysz etc. etc. Takie własne dziecko od początku do końca. Z decyzjami, za które Ty i Twój zespół odpowiadacie i jak coś nie gra i jest zrobione do tyłka, to wiadomo że to Wy nawaliliście. Odpowiedzialność, ale i frajda jak się zrobi dobrze.
    A z linuksem to jest tak, że (oczywiście to tylko moje bardzo subiektywne zdanie) zawsze będziesz tylko popychadłem, które może w najlepszym razie wrzucić gdzieś jakiegoś patcha - jak głównym developerom się spodoba ;) Na pewno nie mam - o właśnie, dobrze to ująłeś - władzy decyzyjnej. Choćbym - na przykład - chciała dopisać coś w stylu poldka do Mandrivy/Ubuntu/whatever, to polegnę na samym początku, bo ja to bym chciała indeksy przyrostowe, a tak się nie da. Albo się dostosuję i będę robić tak, jak moim zdaniem jest biednie, albo mogę dać (i daję) sobie spokój.

  19. 19. Jajcuś

    Cachottererie: z tą zamkniętością i swobodą trochę mieszasz. Po pierwsze są dwie sprawy:

    1. Na ile dana praca jest "tworzeniem od zera", a na ile tylko wykorzystywaniem gotowych rozwiązań.

    - w Linuksie są setki aplikacji, bibliotek i innych narzędzi z których można coś stworzyć. Rzadko robi się coś od zera, ale można.
    - w Javie są setki bibliotek i frameworków. Właściwie oczekuje się od programisty Java, że wykorzysta dostępne rozwiązania, a nie będzie robił od zera. Sama to przyznajesz, że raczej składasz z klocków, niż piszesz własny kod.

    2. Ile ma się swobody tworzenia

    - piszesz, że do RH nie możesz zrobić/użyć poldka, bo jesteś ograniczona ich założeniami i infrastrukturą. Ale możesz stworzyć własną dystrybucję, albo system oparty o np. PLD. Ja u siebie w pracy mam wpływ na wybór dystrybucji (PLD i własna, oparta o PLD), wybór oprogramowania i kształt infrastruktury -- wszystko albo dostosowałem do swoich potrzeb (biorąc np. z PLD), albo stworzyłem prawie od zera

    - pracując jako programista Javy w dużym projekcie też jesteś ograniczona założeniami, infrastrukturą i projektem. Jeśli system jest oparty o framework X i Javę w wersji Y, to swoją część pewnie też musisz o to oprzeć, nawet jeśli co innego pasuje Ci bardziej


    Więc między programowaniem, a "grzebaniem systemowy" różnice są na pewno nie tam, gdzie szukasz. Bo akurat swoboda tworzenia może być tak samo różna i zależy od podobnych czynników.

  20. 20. bmalkow

    mmazur: nie pozostaje Ci widzę nic innego, jak tylko założyć własną firmę i robić coś czego mogą chcieć inni (eh... widzisz... zawsze ci INNI się pojawiają, albo mówią JAK albo mówią CO masz robić) narzędziami i technologiami jakimi Ty chcesz.
    Znajomy zrobił webankieta.pl. W Ruby. Klienci mówią mu tylko CO chcą, anie JAK on ma to zrobić. Oczywiście nie wiem czy da się wyżyć tylko z takiej działalności, ale może warto spróbować.

  21. 21. Cachotterie

    Jajcuś: Masz rację, ale... ;) Wszystko zależy tak naprawdę od zastosowań i osobistych doświadczeń. Ja zdecydowanie częściej mam poczucia zderzania się ze ścianą jak próbuję coś podłubać w linuksie i okolicach, niż javie (i nie ma to nic wspólnego z opensourcowością). Stworzenie własnej dystrybucji od zera to coś, co raczej nie ma racji bytu w moim wykonaniu :] Stworzenie jakiegoś systemu np. wspierającego wymianę wiedzy między lekarzamia od zera (tym bardziej że przecież robię to w firmie, płacą za to mi i jeszcze n osobom) - to już zupełnie inna bajka.
    Tak naprawdę być może do tego to się sprowadza - czasowo nie stać mnie na zrobienie czegoś od zera w linuksie. Nikt mi też za to raczej nie zapłaci (a co najmniej znaleźć taką firmę jest o niebo trudniej). Więc jedyne co potencjalnie mogłabym zrobić, to "doklejać" się do jakiegoś projektu i popisywać conieco w wolnym czasie (cóż to za pojęcie... :> ).
    W javie/.net zaś po pierwsze mogę to robić fulltime w pracy, a po drugie jest masa drobnych możliwości naskrobania sobie jakiegoś malutkiego pomocnego programiku jak coś mi jest potrzebne. Mogę w tym tworzyć "od zera" praktycznie w każdym momencie. Owszem, i java i linuks to składanie z klocków, tyle że w javie żeby z tych klocków wyszło coś sensownego trzeba mniej pracy (na np. zintegrowanie frameworków i doklejenie trochę swojej logiki) niż w linuksie (np. żeby zbudować od zera własną dystrybucję). Przynajmniej ja tak to widzę ;)
    Co do drugiego zaś - cóż, racja że tu wszystko zależy od tego co robisz. Ja akurat mam to szczęście, że moja firma praktycznie wszystkie projekty robi od zera, a nie n-ty rok z rzędu dłubie jakiś system (z n lat pewnie to sie zmieni, ale póki co jesteśmy młodzi ;)) ). Co za tym idzie, swoboda doboru narzędzi jest naprawdę ogromna. I jeszcze: szefowie są niezwykle otwarci i bardzo nas wspierają w próbach użycia narzędzi również spoza kanonu tych, których wszyscy używają (choćby to, że zamiast klasycznej bazy danych do systemu zarządzania wiedzą wzięliśmy JCR (JSR-170)) i to w czasach, kiedy naprawdę było w powijakach.

    Tak więc... well, mnie się wydaje że w takich dyskusjach zawsze dochodzi się do punktu gdzie trzeba powiedzieć "to zależy" ;) Ja akurat mam takie a nie inne doświadczenie i dla mnie jednak w javie mam 1000kroć większą swobodę niż w linuksie. Ale spodziewam się, że dla Was jest dokładnie odwrotnie ;)

  22. 22. Alex

    @cachotterie Strasznie idealizujesz javę. Java (rozumiana jako J2EE) jest takim COBOL-em 21 wieku, znaczy służy do przemsyłowego produkowania aplikacji biznesowych. I isototnie, dzięki eclipsom i samej Javie udało się osiągnąć wymienność ludzi w zespole.

    Jak czytam twoje wypowiedzi to mam grube skojarzenie z jednym z dwóch dominujących typów gościa na <a "news:pl.comp.lang.python">pl.comp.lang.python</a>, znaczy kimś kogo świat końćzy się na tym co robi na serwerze WWW i frameworku webowym. Nie mówię, że twój się tak kończy, ale świat to nie tylko MVC.

    Dość charakterystyczne jest, że w Javie jest strasznie mało projektów opensourcowych robiących coś konkretnego (tomcat jest projektem opensourcowym do robienia innych projektów w javie, eclipse tak samo).

    Trochę nie rozumiem tych uwag o budowani dystrybucji od zera. Po co? Instalujesz Debiana i na tym buduje się konkretną aplikację. Dla siebie lub dla klienta.

    Co do porównania java-python to z mojego punktu widzenia nadmiar bibliotek jest problemem - tracisz mnóstwo czasu żeby wybrać, a ponieważ rynek jest sfragmentowany to każdy ciągnie w swoją stronę, zwłaszcza w oprogramowaniu komercyjnym z bugreportami jest słabo. Biblioteka standardowa pythona czy CPAN perla są pierwsza klasa.

    W linuxie rzadko pisze się małe pomocne programiki które trzeba kompilować, do 99% rzeczy robionych z ręki wystacza linia poleceń.

    No i last but not least - java jest ciężka.

    Znaczy ja ogólnie nie rozumiem o co kaman.

  23. 23. Cachotterie

    Alex: A czy ja twierdzę, że nie służy do przemysłowego produkowania aplikacji biznesowych? Jeśli Twoim zdaniem coś w tym złego - Twoje prawo, ja w tym nie widze nic złego. Wręcz przeciwnie - dzięki temu mogę robić przyzwoitą kasę na czymś co lubię.
    Poza tym jeśli dla Ciebie "idealizowaniem javy" jest to że preferuję ją nad dłubanie w linuksie - cóż, to Twoja interpretacja i Twoje prawo, chyba marne mam szansę wyprowadzać Cię z błędu i tejże interpretacji.
    To, że świat nie kończy się na MVC dla mnie ma małe znaczenie, bo akurat w tych okolicach czuję się najlepiej, to na cholerę na siłę mam szukać czegoś innego? Mmazur lubi linuksa, a nie lubi javy, a ja na odwrót (w sensie tylko dłubania w linuksie, bo używanie to co innego). Czemu jemu nie powiesz "idealizujesz linuksa, świat nie kończy się na linuksie". Co złego jest w tym, że ktoś ma jasno określone preferencje? (przynajmniej w danym momencie czasu, bo nie mówię że za 10 lat mi się to nie zmieni i z obrzydzeniem nie będę odrzucać czegokolwiek związanego z MVC).

    I tak, widać że nie rozumiesz o co mi kaman, ale... well ;) Tak bywa.

  24. 24. mmazur

    Ja tylko mała uwaga odnośnie 'czasowości' rozwiązań hakierskich vs. corporate java. Akurat obiektywnie rzecz biorąc, pomijając miejsca w których python, czy inne ruby po prostu nie mają odpowiednich bibliotek, więc się nie da, sklecenie odpowiedniego systemu przez opensourcowca (znana mu dystrybucja, jakiś język dynamiczny, shell, ewentualnie C, może pehap, czy ror albo django do wuwy, mysql) będzie najprawdopodobniej znacznie szybsze i wymagające znacznie mniejszej ilości ludzi, niż analogiczna rzecz w javie.

    Pomijam tu kwestie maintainowalności, acz imho (abstrahując od faktu, że może być problem ze znalezieniem na rynku odpowiednio wykwalifikowanych ludzi), jest to jak najbardziej do osiągnięcia, kwestia tylko doświadczenia osoby to robiącej.

  25. 25. Alex

    @mmazur: no więc to jest właśnie pół mojego punktu.

    Drugie pół które Cacho missed completely, jest takie że w MVC da się zrobić &bdquo;tylko&rdquo; aplikacje www. Czasem to tylko wystarcza, czasem nie. Człowieka ogólnego posadzisz do frameworka MVC, MVC-owca/y nie posadzisz do pisania modułów do kernela jednego dnia a drugiego do pisania analizatorów do logów. O właśnie to jest narzędzie które trzeba często pisać custom, a którego w schemacie MVC kompletnie sobie nie wyobrażam. I żeby nie było, wszystko co powyżej BTDT.

    Co zaznaczmy, nie oznacza że wszyscy powinni znać się na wszystkim, trzeba być tylko świadomym że świat się na tomcacie/odpowiedniku nie kończy, poje doświadczenia z p.c.l.python (można wygooglać) świadczą o tym, że to zdumiewająco oczywiste stwierdzenie wielu ludziom się w głowie nie mieści. Tu też zaliczam przypadki które uważają że jak aplikacja nie mieści się w MVC to jest - uwaga - źle zaprojektowana.

  26. 26. Cachotterie

    Alex: A Ty miss completely, że człowiek który dobrze się czuje w MVC i okolicach jest bardzo zadowolony z tego, że go nikt nie posadzi do "modułów do kernela jednego dnia a drugiego do pisania analizatorów do logów".

    Druga rzecz, że na "dzikim zachodzie" już zauważyli że lepiej mieć specjalistów, a nie "ludzi do wszystkiego", ale widać Ty (i muszę oddać, jak widać z niektórych ogłoszeń o pracę, z których gremialnie polewamy na uczelni w pewnych polskich firmach również) uważasz, że można się znać na wszystkim. Ja uważam że tematyka w tej branży jest zbyt szeroka, i albo rzeczywiście dobrze znasz jeden jej kawałek (góra kilka), albo tak naprawdę nie znasz żadnego i wszystkiego ledwo liźniesz. Jak posadzisz człowieka "ogólnego" do MVC to w większości przypadków wyprodukuje Ci kod, którego nikt nie będzie chciał po nim dotknąć, bo najzwyczajniej w świecie brak mu doświadczenia i nie wie, jakie błędy ludzie już setki razy popełnili i co się sprawdza, a co nie. Sam ich nie popełnił, nie nauczył się na własnych błędach, a i czytać wszystkiego (blogów, artykułów etc.) we wszystkich technologiach się nie da.

  27. 27. Hoppke

    @Alex: w MVC da się zrobić "tylko" aplikacje www?

    Hmm, to tym gnomowcom nikt nie powiedział, że nie robią webappów. I piszą głupi kod w modelu MVC.
    http://developer.gnome.org/feature/archive/gconf/api.html

    Słuchaj, pisałeś kiedyś coś większego, niż wspomniane parsery logów? Przecież nawet robiąc trywialną aplikację w gtk+ musiałeś zauważyć, że obiekt przechowujący dane jest oddzielony od obiektu odpowiedzialnego za renderowanie, a to wszystko jest dodatkowo zarządzane przez jeszcze inny kawałek kodu. Nawet głupie wyświetlenie pliku tekstowego wymaga załadowania tekstu do jakiegoś TextBuffera i podpięcie go pod TextView (nazewnictwo z sufitu). Ale oczywiście możesz uważać, że prawdziwi mężczyźni nie używają MVC ani innych zdrowych technik programowania. Prawdziwe meny piszą w pythonie. Parsery logów. Ale bez front-endów GUI, bo tam to cholerne MVC na każdym kroku się czai...

  28. 28. Alex

    @Hoppke: pisałem. Duże. Nie pod GNOME :-)

    Ja nie atakuję MVC, ja atakuję ludzi którzy znają _tylko_ MVC, albo tylko _jedną platformę_ MVC i wszystko chcą tak pisać (kiedy masz tylko młotek, wszystko wygląda jak gwóźdź). Rozumiesz?

  29. 29. Cachotterie

    Alex: Mam wrażenie że nie do końca rozumiesz o czym piszesz. MVC to jest bardzo abstrakcyjne pojęcie, a nie słowo klucz, jak starasz się je traktować. To tylko jakaś koncepcja, a nie technologia. Nie można znać "tylko MVC" bo to nie język, nie framework i nie biblioteka. To tak jakbyś powiedział "ja atakuję ludzi którzy znają tylko wzorce projektowe z książki Bandy Czworga". Model-View-Controller to po prostu nacisk na to, żeby oddzielać widok od danych i czegoś co tym zarządza, nic więcej. Tak samo może to mówić o webówce, o dowolnej aplikacji desktopowej, jak nawet o mądrze zrobionej aplikacji serwerowej z wydzielonym API. Żeby COKOLWIEK napisać nie wystarczy Ci znajomość abstrakcyjnej idei MVC i analogia do młotka jest kompletnie chybiona. MVC to nie młotek. MVC to już prędzej opis, jak warto jakiegokolwiek młotka, ale również i wiertarki użyć.

Adde commentarium: (textile lite)