Jesteś tutaj

Każdy kij ma dwa końce ? czyli firmy informatyczne "na dorobku"

Karty podstawowe

GeeCON 2012

Artykuł ma być kontynuacją (a może prologiem) bardzo trafnego tekstu "Charakter narodowy Polaków, czyli kończ waść, programowania oszczędź". Dodam, że zgadzam się z autorem niemal w całości. No, może nie przypisywał bym tych cech wyłącznie Polakom. Nie mam wielu znajomych wśród programistów innych nacji - ale myślę, że narodowość ma tu bardzo niewielkie znaczenie. Dodał bym jeszcze element ambicji, chęci wykazania się ? które to cechy potrafią nie jeden projekt wysłać w kosmos ? a niejeden wyprowadzić na całkiem niezły poziom.

Zastanówmy się co dzieje się , zanim opisywany pracownik postara się trafić do zespołu programistycznego "trzymającego poziom". Zakładam, że wymagana jest od niego konkretna wiedza, załóżmy z dziedziny J2EE oraz ? co za tym idzie umiejętność programowania / projektowania. Firma w której pracuje od dwóch lat przestała spełniać jego oczekiwania ? nazwijmy ją dla uproszczenia firmą "na dorobku".

Czym charakteryzuje się firma "na dorobku"?

Po pierwsze zespołem złożonym głównie ze studentów / programistów. Dlaczego? Bo są tańsi.

Firmy "na dorobku" bardzo często stosują darmowe oprogramowanie wątpliwej jakości ? w celu zmniejszenia kosztów. Produkty te posiadają dokumentację "in progess" lub wcale jej nie posiadają.

Firmy "na dorobku" kompletnie nie interesują się rozwojem pracownika ? jeżeli rozwój bezpośrednio nie dotyczy realizowanego projektu. Poza tym ? i tak pracuje na zlecenie do końca roku ? na stałe nie zatrudniamy, nie opłaca się, więc całą inwestycja w rozwój może sobie "odejść". Jest mnóstwo zdolnych osób szukających pracy.

Jakość kodu? Kogo to obchodzi ? klient przetestuje ? a źródeł i tak nie zobaczy.

Liczy się zysk, termin, następne zlecenie, tania siła robocza.

PATOLOGIA

Programista chcący zmienić prace wychodzi z rodziny patologicznej ? trafia do firmy trzymającej poziom i pomimo stażu zawodowego, imponującego CV obejmującego niemal całą tematykę poruszaną na TSS ? ma problemy z podstawowymi elementami programowania.

Powróćmy jednak do firmy która właśnie straciła pracownika ? projekt w toku, terminy gonią trzeba jakoś załatać dziurę ? ogłoszenie. Wymagany cały wachlarz umiejętności ? oczywiście żaden z kandydatów ich nie spełnia ? więc weźmiemy tego którego stosunek wiedzy do ceny jest najkorzystniejszy. Zna JAVE, C++, Ruby, PHP, C# ? przyda się w następnym projekcie. Zresztą w internecie jest tyle źródeł wiedzy (blogi, wiki) douczy się tego co nam potrzeba. Kolejna osoba trafia do patologicznej firmy informatycznej ? będzie miała tyle zajęć, że nie zdąży nawet sobie zdać sprawy że w zasadzie się cofa. Analizując blogi, fora, poruszając się w gąszczu materiałów, nowych bibliotek przyswaja mnóstwo kompletnie nie potrzebnej wiedzy ? często zupełnie nie fachowej ? która za rok nic nie będzie warta.

Kwestia odpowiedniej struktury grupy projektowej.

Cóż, dobrze programuje, zna się na robocie ? to niech robi swoje i od czasu do czasu popatrzy na młody narybek. Efekt? Osoba kierująca projektem jest tak zajęta swoimi zadaniami developerskimi, że nie ma czasu kontrolować reszty.

Cały tekst ma na celu jedno - zrzucenie części winy na pracodawców ? nie pracowników. Od etapu ogłoszenia ? którego konstrukcja najczęściej jest fatalna. Bardzo rzadko spotkać można rozróżnienie np. na senior, junior - developer. Nie mówiąc już o takich rolach w projekcie jak integrator, tester ? przecież to wszystko zrobi programista ! Podziały takie występują najczęściej w zagranicznych firmach informatycznych. Zupełny brak zainteresowania rozwojem pracownika, certyfikaty, kursy kosztują ? blogi i fora są za darmo. Nie poruszę kwestii motywacji (tak, tej materialnej), świadczeń ? wszyscy wiemy że jest źle. Cóż, młody kapitalizm rządzi się swoimi prawami. Pozostaje mieć nadzieję, że tego typu pataologia zostanie przezeń wyeliminowana. Na razie jednak, unikajmy firm które wymagają od nas więcej, niż są w stanie zaoferować.

Artykuły: 

Odpowiedzi

"Na dorobku" - oznacza firmę, która zaczyna, a opisany powyżej styl działania jest niestety powszechny zarówno w firmach młodych, jak i w tych dużych i doświadczonych.
Sądzę, że duże znaczenie ma fakt, że w Polsce (nie tylko zresztą) sprzedaje się lepiej nie to co LEPSZE i TAŃSZE, ale to za czym idzie większe poparcie (innymi słowy KORZYŚĆ PRYWATNA lub POLECENIE ZWIERZCHNIKA). Sytuacja jest taka, gdyż rzadko o zakupie systemu decyduje właściciel, a nawet jeżeli to rzadko ma on świadomość wagi podejmowanej decyzji.

Łatwiej szefowi IT dużej korporacji zdecydować się na zakup komputerów f-my X (droższych i może gorszych) jeżeli np. dostanie od f-my X super-extra zestaw (oczywiście - do przetestowania) i obietnice, że nikt go nie będzie chciał z powrotem. (to nie jest wyssane z palca)
Teraz podobną sytuację przenieśmy na dziedzinę nam bliższą - oprogramowanie. Często jest tak, że osoba podejmująca decyzję o wyborze/zakupie programu nie ma w tym RZADNEGO interesu ? za to, że wybierze tańsze/lepsze rozwiązanie nie będzie miał ?bonusu? - więc czym się kierować przy wyborze? Oczywiście własną sytuacją (i w sumie ja to rozumiem) ? więc albo zostanie wybrane rozwiązanie, które:
a) jest łatwiej wybrać (to jest często powód wyboru produktów f-my Microsoft): bo to lider na rynku, bo powszechny, etc. - inaczej mówiąc ? zawsze będę mógł sie wytłumaczyć dlaczego wybrałem to rozwiązanie i nikt mi nie zarzuci złego wyboru;
b) jest mniej kłopotliwe - ?oni? powiedzieli, że wszystko zrobią i ja mam z głowy;
c) bo coś będę z tego miał ? nie zawsze pieniądze, czasem jakiś gadżet, czasem jakieś zobowiązanie (bo zatrudnią mojego bratanka);

Może więc dojść do przezabawnych sytuacji np. wybraliśmy Microsoft Office, a nie Open Office bo MS Office jest powszechny, a Open Office nikt nie zna. (większość faktycznie zna MS Office, ale na poziomie bardzo niskim i kończy sie to często wysłaniem części pracowników na jakieś szkolenie - na końcu jest tak, że firma wydała kupe kasy na software i kupe kasy na szkolenia, zamiast wydać tylko kupe kasy na szkolenia).

Czasami jest tak, że decydenci nie podejmują odpowiedniej decyzji bo nie chcą robić sobie dodatkowej roboty. Wyobraźcie sobie sytuację, że dyrektor nie chce zainstalować oprogramowania dawanego za darmo, dzięki któremu jego firma zaoszczędziła by kilka milionów złotych. Nie chce ? bo po co? Czy ktoś z-góry to zauważy? Czy on będzie miał coś z tego, że będzie miał więcej pracy bo program trzeba wdrożyć, na pewno jakieś spotkania będą, trzeba będzie tracić czas, oceniać... po co to wszystko... A jeszcze niech coś się stanie... Wtedy wszyscy będą na nim psy wieszali...

Dlatego f-my softwareowe nie muszą tworzyć dobrego produktu. Łatwiej jest stworzyć coś cienkiego i słabego ? niż jakiś super produkt. Nie mówiąc już o tym, że dla firmy softwareowej programiści są obciążeniem ? dochód generują handlowcy...
Lepiej przeznaczyć X na "premię" dla handlowca, niż X na to, żeby mieć faktycznie lepszy produkt - bo to i tak nie gwarantuje wygrania z konkurencją.

Oczywiście - są wyjątki, ale generalnie uważam, że niestety to jest reguła. Mając budżet na kwote X lepiej wydać więcej na handlowców/reklamę niż na lepszy produkt - tego drugiego nikt nie doceni, jak nikt nie zobaczy - a nie zobaczy, bo przecież nie ma pieniędzy na reklame - wydaliśmy je na to, żeby zrobić lepszy produkt.
Bo lepszy produkt KOSZTUJE WIECEJ - studenci są tańsi, czasami nawet "za darmo" - a to że robią kiepski kod ...
Jak to można powiedzi parafrazując sprzedawcę samochodów: mamy programy DOBRE, TANIE i PRZYDATNE, ale niestety - tylko dwie cechy w jednym produkcie...

Portret użytkownika mbartyzel

To jest dokładnie tak jak w życiu. Możemy narzekać, że rzeczywistość nie sprzyja naszym chęciom tworzenia dobrych systemów, co w żadnym przypadku nie usprawiedliwia kiepskich projektów. Systemy tworzymy również dla siebie, bo później będziemy musieli je utrzymywać (a przynajmniej nasza firma) i rozwijać. Dobre projekty bardzo szybko się zwracają i nie kosztują więcej (a na pewno nie muszą). Czas naostrzyć piły :-)

Prawda, ponarzekało się, a teraz trzeba siadać i dalej programować, bo nie ma czasu.

Problem, który opisany jest w tym artykule, jest jak sami przyznajecie dość powszechny bez wzgledu na rozmiar firmy informatycznej. Problem jak zawsze leży w ludziach.

Po pierwsze przywiazanie do jakości jest cechą niewielu narodowości. Nawet jeżeli nie jest wrodzona a narzucona przez kogoś/coś to i tak wyrobienie właściwych nawyków trwa długo i jest męczące i mozolne czytaj: wiekszości się nie chce.

W wiekszości przypadków oddawanie czegoś dobrej jakości jest związane z ludzką przyzwoitością opierającą się na prostej zasadzie "Nie będę firmował swoim nazwiskiem bubla." I co ciekawe również większość chciałaby tę zasadę właśnie stosować nie tylko przy tworzeniu programów ale przy każdej innej pracy. Po prostu być oazą doskonałości w tym co się robi bez względu na okoliczności.

A tymczasem zanalizowaliście juz dość dokładnie te okoliczności:
1. Złe nawyki wyniesione ze studiów lub innych kursów związanych z informatyką. Sami zastanówcie się jak w studenckich warunkach można oddać na zaliczenie laborek dobry jakościowo filtr dolnoprzepustowy napisany w C++ jeżeli za stworzenie go zabieramy się na 24 godziny przed terminem oddania bo przez 3 miesiące semestru balowalismy i spotykalismy się ze znajomymi. Kto w tych warunkach będzie się przejmowął stylem pisania kodu czy poprawną koncepcją klas i obiektów. Asystent który prowadzi laborki też się nie zna bo konczył studia w tych samych warunkach. Daj Boże żeby był jednym ztych którym się chce, wtedy moze bubla nie puści. Ale jeżeli ma na głowie artykuł do napisania dla profesora bo go poprosił to pozalicza wszystkim na 3 i będzie "z głowy".
Jest to problem braku systematyczności w tym co się robi i braku powtarzalności pewnych działań na przestrzeni jakiegoś czasu (studencka zasada 3Z). Jeżeli wykonuje sie kilka razy tę samą pracę to średnio zdolny nawet student sam się zorientuje, że warto część rzeczy usprawnić, ulepszyć może skorzystać z gotowych sprawdzonych rozwiązań aby uniknąć wywarzania otwartych juz drzwi.

2. Spójrzmy na problem od strony pracodawcy. Slusznie moim zdaniem artykuł nazywa pewien odsetek firm firmami "na dorobku". Otóż jest to stwierdzenie bardzo trafne choć należy je rozumieć nie tak jak sie rozumie powiedzmy małżeństwo na dorobku. Wyobraźcie sobie ze macie 25 lat. Właśnie ukonczyliscie studia informatyczne macie głowę pełną pomysłów i macie ambicję przenosić góry i walczyć z wiatrakami. W czasie studiów na niejednej imprezie piliście wódkę z ludźmi którzy po studiach jakimś dziwnym trafem stają się szeregowymi pracownikami firm mniejszych lub większych ale również dziwnym trafem dostają na tyle mocy decyzyjnej że mają prawo decydować o wyborze dostawcy powidzmy serwisu www. No więc wybór jest prosty "Włodziu nie machnałbyś nam strony www?". Oczywiscie zgadzamy się bo co to dla nas zrobić stronę www. I tym samym sposobem którym oddalismy filtr dolnoprzepustowy na zaliczenie oddajemy stronę www. Najgorszy przypadek jest wtedy gdy Odbiorca ma znikome pojęcie o tym jak to powinno wyglądać od strony właśnie jakości czy samego ryzyka takiego projektu. Niestety w większości przypadków firmy nie mają takiego pojęcia, a więc przyjmują dowolny kit jaki im się wciśnie zgodnie z zasada "byle działało". Koło "braku jakości" zamyka się. Zostajemy polecani innym firmom jako solidny partner w biznesie i siła inercji wszystko samo się toczy.

3. Dlaczego tak więc się dzieje że Odbiorca nie stanowi naturalnej bariery przed złą jakościa. Przecież jak idziemy kupować ziemniaki na rynek to przyglądamy się uważnie czy nie łądują nam do siatki zgniłych. prawda? A może nie zawsze? A co jeśli robimy imprezę i w jej trakcie zabrakło nam czipsów. Wysyła sie kogoś po czipsy. Ten idzie do nocnego a tam tylko czipsy marki czipsy. Ponieważ potrzeba jest silniejsza od rozsądku a polecenie było jasne "Kup więcej czipsów" to nasz dostawca kupuje te byle jakie czipsy i wszyscy sa zadowoloeni. Nie ważne, że na drugi dzień wszyscy maja zgagę i biegunkę ważne, że sama impreza nie ucierpiała kosztem braku jakis tam czipsów. I tak jest właśnie u naszych polskich Odbiorców oprogramowania. Jeżeli u Odbiorcy nikt nie ma pojęcia o tym co nazwałbym "dobrymi praktykami zarzadzania projektami IT" to Dostawca "na dorobku" nie ma motywacji aby nauczyć sie czegoś dobrego/słuszniejszego po prostu lepszego. I znów koło się zamyka. Programuje sie byle jak, byle co, na byle czym, przez ekhm... byle kogo, byleby zdążyc w terminie bo kara za niewykonanie projektu jest sroga a nasza mała firemka z 5 kredytami jest do zaoraania w jedną chwilę. Najgorsze jest jak nasze refernecje spodobają się gigantom. W polskiej rzeczywistości jest tak że firmy "krzak" robią gignatyczne projekty dla gignatów bo Ci chcąc ciąć koszty sugerują się glównie ceną za wykonanie proejktu a nie faktyczną jego jakością. W razie czego po prostu nie zapłacą Dostawcy i go zaorają. Byleby nie zaksiegowano straty i prezes nie dowiedział sie że firma straciła pieniądze. Idea, że nie wdrożenie czegoś kosztuje firmę wiecej jest tylko ideą z książek o zarządzaniu. Najczęściej menadżer może zkillować projekt pod warunkiem, że za niego nie zapłaci i prezes to kupi. A tak naprawde liczy się tylko wynik sprzedaży i to na ogół pod ten wynik robi się cokolwiek.

4. Absurd idzie z góry. Niestety absurd, o którym piszecie w artykułach 387 i 388 idzie z samej góry. Bez względu na to, czy to jest Dostawca czy Odbiorca wszystko sprowadza się do tego na ile osoby odpowiedzialne za zarządzanie pozwolą na szerzenie się absurdu. Jednym i drugim zależy na zysku i terminie. Na sposobie choćby poprawnego nazywania zmiennych, metod, klas nikomu w tym momencie nie zależy. Programista niedoświadczony uczy sie już na samym poczatku swojej ścieżki złych nawyków. Z czasem widzi, że nie ma sensu sie przykładać bo to i tak nie ma zadnego znaczenia. Liczy się termin oddania i byleby jakos tam działało. Nawet doświadczeni programiści przymykają oko na rażące błedy bo termin jest ważniejszy a optymalizację kodu zrobi się już na żywym organizmie. Architektura kuleje bo nie ma czasu na jej gruntowne przeanalizowanie. Wiekszość spraw wychodzi w praniu i "na żywca" klepie sie poprawki, hotfixy i inne. Po 2 miesiącach system lub nawet zwykła strona www nie przypomina w niczym pierwszego projektu. Jest stekiem bzdurnych pomysłów i kolekcją łat na łacie. Najlepszym spsoobem ocenienia tego jest spojrzenie w plik .css takiej strony. Wielokrotnie moza tam dojrzeć zakomentowane całe linie właściwości. Klasy typu banner1 banner2....banner-dupa itd. Chaos niesamowity a to tylko dlatego, że trzeba było cos na szybko poprawić bo prezes Obiorcy poprosił o to naszego Prezesa i tak juz zostało: "przysługa za przysługę - zróbcie to nam tanio i szybko a my bedziemy zlecać Wam wszystkie nasze projekty"....

Hmm... Czemu się nabijacie z frameworków, które mają beznadziejną dokumentację a jednocześnie na stronie swojej firmy sami takie zalecacie?

Chodzi mi o WebWorka oczywiście ;)

Z zainteresowaniem przeczytałem artykuł Każdy kij ma dwa końce ? czyli firmy informatyczne "na dorobku" i od razu nasunęło mi się porównanie do wymienionego w tytule prawa. Choć prawo Kopernika (Greshama) dotyczy teorii pieniądza łatwo je sprowadzić na grunt informatyki.

Obserwując historię i mając wciąż w pamięci spostrzeżenia zawarte w artykule chciałbym sprowokować rozmowę na temat:
Czy i kiedy oraz w jakich dziedzinach oprogramowanie "kiepskiej jakości" wyprze z rynku oprogramowanie o "wyższej jakości"?

A podchodząc bardziej praktycznie, w jakich dziedzinach życia patologiczne akceptowanie przez rynek kiepskich systemów oraz wysokiego ryzyka fiaska inwestycji staje się normą?

w jakich dziedzinach życia patologiczne akceptowanie przez rynek kiepskich systemów oraz wysokiego ryzyka fiaska inwestycji staje się normą?

w kazdych w ktorych na wybor maja wplyw znajomosci i kontakty a nie rynek czyli w calej budzetowce chociazby.

To dlaczego się dziwicie, że istnieją patologię w firmach zajmujących się produkcją oprogramowania, skoro największy kawałek tortu (runku systemów informatycznych) stanowią zamówienia publiczne ;)