Ostatnio istną burzę wywołało na Wykopie ogłoszenie z forum internetowego Webhostingtalk. Poszukiwano niewo… tfu kogoś, kto zrobi silnik a la demotywatory.pl za bagatela 50zł. Temat dla mnie bardziej niż ciekawy z dwóch względów. Pierwszy to taki, że gdzieś tam w tle pojawiły się odwołania do mojego artykułu sprzed dwóch lat – “Mamo! Umiem PHP!“. Drugi, że z tego wszystkiego wynikła dość ciekawa dyskusja, do której chciałbym dorzucić swoje 3 grosze.
Z komentarzy pod wykopem1 i z postów na forum płyną dwa (no, może w porywach trzy) wnioski – tylko młodzież robi kompletne strony za przysłowiową flaszkę (lub paczkę fajek, jeśli to młodzież mniej buntownicza jest), za 50zł nie da się kupić dobrej whisky (tudzież palety sprawdzonego, niemieckiego Marlboro od Tomasza H.) oraz to, że żaden szanujący się programista nie spędzi dwóch tygodni, by zarobić stawkę, jaką może uzyskać za godzinę w dobrej firmie.
Przede wszystkim jednak – nie przesadzajmy i nie demonizujmy rzeczywistości. Natura, jak kiedyś mądrze powiedziano, lubi równowagę. Zawsze znajdzie się ktoś, kto zrobi serwis za grosze. Takie mamy prawa rynku – jeden potrzebuje na chleb, drugi na ferrari. Pewnych rzeczy niestety nie można zmienić, mimo że wszelka logika nakazuje, by było tak, a nie inaczej. Poza tym za małe pieniądze pracuje wielu młodych programistów. Bardzo często ktoś, coś tam, kiedyś zakodował, udało się, więc dlaczego nie przyjąć zlecenia? Jasna sprawa, sam tak robiłem. Jakie są jednak konsekwencje niskich cen i małego doświadczenia programistów?
Każda strona internetowa, choćby tylko z księgą gości, to określona funkcjonalność i masa zależności. O ile kiedyś nie doceniałem porównań z budową domu, tak teraz jest to dla mnie sztandarowa analogia. Dom można zbudować na kilka sposobów – użyć innych – droższych lub gorszych – materiałów. Zatrudnić bardziej bądź mniej wykwalifikowanych pracowników. Skorzystać z tańszej lub droższej ekipy budowlanej. I tak dalej. Identycznie jest z programowaniem – serwer (dzielony hosting, serwer dedykowany?), język (tani w utrzymaniu PHP, potężna JAVA?), baza (darmowy PostgreSQL czy drogi Oracle?).
Często wiele rzeczy można zrobić na kilka sposobów. Z reguły tylko doświadczeni (a więc drożsi i lepsi) programiści wiedzą, jaki wybrać sposób, bo spędzili mnóstwo czasu na kodowaniu i nauce, poznając różne techniki i rozwiązania wielu problemów. Nie od parady wymyślono na studiach specjalizację o dumnej nazwie inżynieria oprogramowania, a osobom, które tworzą programowanie daje się tytuł inżyniera, a potem magistra. Wracając do przykładu z budową domu, drogi kliencie – komu zleciłbyś coś, co ma Tobie służyć na lata (zapewne także Twoim potomkom)? Młokosom czy doświadczonym budowniczym?
Następny problem to spłycanie prestiżu własnych produktów. Zlecając wykonanie dość skomplikowanej strony za zaniżoną stawkę automatycznie godzimy się na to, że finalny efekt będzie na poziomie deski klozetowej. Jak w każdej branży, dobre usługi kosztują więcej od tych średnich i kompletnie słabych. Nie wiesz, czy można zaufać danej firmie? Spytaj specjalistę bądź znajomego, który ma o tym pojęcie!
Mimo wszystko, popyt na tanie usługi wciąż rośnie. Zawsze znajdą się osoby, które mało zapłacą oraz te, które z przyjemnością mało zarobią. Rodzą się pytania – jak można zminimalizować rujnowanie trudnego zawodu, jakim jest fach programisty? Czy czasem w głowach nam się nie poprzewracało bo tak naprawdę programowanie nie jest wcale ciężkie i drogie? Jaki wpływ mają tanie usługi na kondycję technologii na świecie (i stron internetowych, jeśli spłycamy problem tylko do webdevelopmentu)?
Odpowiedź na pierwsze pytanie jest łatwa, ale i mało przekonująca. Niestety, pieniądz zawsze wygra z ideami. Możemy ewangelizować, indoktrynować i pouczać. Z większymi lub mniejszymi – jak to bywa – skutkami. Czy aby jednak wystarczającymi, kiedy, bądźmy szczerzy, statystyczny klient odpowiada sobie głównie na jedno pytanie: jak dużo mogę zyskać za jak najmniejszą kwotę? Czy wystarczy mu wiadomość, że produkt za 50zł nadaje się do kosza? (przecież działa!). Nie jestem pewien, czy odpowiednią kampanią możemy kogoś przekonać, tym bardziej, że wiele osób kupuje za bezcen z premedytacją (jak bohater wykopowego wątku)! Może więc uderzyć w programistów? Ale co wtedy, kiedy jeden z drugim nie ma co wrzucić do gara? Może jest po prostu za słaby, bo dobrze płatna praca w IT zawsze się znajdzie, a nie mają jej tylko miernoty? Ekhm…
Ciekawa jest też sprawa gloryfikacji naszego zawodu. Na ten temat można spotkać wiele skrajnych opinii, jednak jako człowiek, który włożył w swoją edukację bardzo dużo wysiłku (oraz godzin przed monitorem i książkami) chciałbym stanowczo zaakcentować, że programista chłonie mnóstwo wiedzy, porównywalnie z lekarzem czy prawnikiem. W dodatku nieprzestanie używa swojego mózgu, wymyśla, kreuje, nie powiela ścieżek i wzorów, choć jak wszędzie, posługuje się pewnymi wzorcami projektowymi i algorytmami. Nasza praca nie polega jednak na banalnym dopasowywaniu elementów! W żadnym wypadku! To godziny żmudnej harówki, ciągłego rozwoju i mnóstwa wyrzeczeń – dobrze, że jeszcze weekendowych dyżurów nam nie dają… Programista to zawód ważny i trudny, choć obarczony relatywnie niską skalą ryzyka.
Bagatelizowanie problemu cen, a co za tym idzie powstawanie słabego oprogramowania oceniam jako zagrożenie, choć każdy jest kowalem własnego losu. Dziurawa strona może spowodować wyciek danych naszych klientów lub zablokowanie strony przez internetowych wandali (czy po prostu tzw. script-kiddies), a to tylko pierwsze z brzegu przykłady. Oprogramowanie słabej jakości nie skaluje się, nie można go szybko i tanio rozwijać. Źle napisane aplikacje są mało wydajne, wymagają większych nakładów na sprzęt i utrzymanie. Po prostu nie działają! Sprawiają tylko wrażenie działających!
Wypada poruszyć także temat tych, którzy sprzedają swoje usługi za bezcen. Jak powiedziano, są to w większości młodzi programiści, którzy łączą przyjemne z pożytecznym – naukę i zarobek. Trzeba sobie powiedzieć jasno, nie da się w 2 lata zdobyć wystarczającej wiedzy (choć pal licho wiedzę, tutaj, przyrzekam, najważniejsze jest doświadczenie i tysiące linijek kodu “w palcach”). Jasne, młody programista może stworzyć coś, co działa, nie ma jednak pewnego dystansu do tworzonego przez siebie kodu, nie poznał zbyt wielu technologii i technik, w efekcie jego kod jest generalnie nieefektywny i mało elastyczny, a to tylko dwa z kilkunastu przymiotników, jakie miałem uszykowanych na tę okazję.
Co 16-latek wie np. o Dependency Injection? Uwierzcie, z każdym miesiącem rzeczy, które wcześniej były zbyt skomplikowane stają się banalne, a kod, który napisaliście wcześniej okazuje się zupełnie do kitu. Oczywiście potrzebna jest ciągła praktyka i stosowna edukacja (stety-niestety uczelnia, paradoksalnie, bardzo pomaga w rozwoju programisty, choćby forsując dotąd nieznany przez Ciebie język, który okazuje się strzałem w dziesiątkę!). Z czasem skomplikowaną tablicę nazwiemy dojrzale strukturą danych, a dane podejście wzorcem projektowym. Bez doświadczenia to tylko “ee no, Ty, jakoś podziałałem tym set_array() i forem i wyszło, hehe, a teraz idę na real, elo“.
Ciężko jest mi jednoznacznie ocenić, czy nie powinno się brać zleceń w młodym wieku, bo sam takie brałem, mając dziś świadomość, że kod nie był najlepszej jakości. Jednak to, co wyniosłem z moich, nazwijmy to, “programistycznych przygód” bardzo doceniam, bo wiem, że dało mi niesamowite podstawy, mimo że – można by rzec – bawiłem się w programowanie. Może powinniśmy jednak przenieść w czasie pobieranie pieniędzy za naszą twórczość, skupiając się na oprogramowaniu open source bądź własnych, szkolnych projektach? No właśnie. Czy szkoły poza olimpiadami i zawodami oferują jakiekolwiek możliwości do polepszenia swoich praktycznych umiejętności? Czy młodzież woli dostać dyplom i uznanie, czy też 50 złotowy banknot? Może to już tak musi być, że najpierw młodzi piszą słabe programowanie, które potem poprawia kolejny nowicjusz, kiedy pierwotny autor zahaczył się już o dobrą posadę głównego programisty w dobrym banku?
Czy eliminując problem niskich cen, nie narazilibyśmy się na poniższą zależność?
Mało ofert dla słabo doświadczonych programistów -> nikłe możliwości ich rozwoju -> słabi programiści
Z kolei teraz, mam wrażenie, wygląda to tak:
Niskie ceny -> mierna jakość produktów -> … -> … -> dobrzy programiści
Pytanie, jak wyglądają proporcje i ilu słabych programistów zostaje wyprodukowanych na końcu tego procesu? Takich pytań jest więcej.
Dyskusja na temat jakości oprogramowania za niską cenę, paradoksalnie, niesie ze sobą wiele aspektów – finansowych, edukacyjnych, ale i – w pewnym sensie – społecznych. Z pewnością nadal będziemy mieć do czynienia z ofertami, podobnymi do tej wymienionej we wstępie. Myślę jednak, że padło na tyle dużo pytań, by więcej nie bagatelizować poruszonego tutaj problemu i odpowiedzieć na nie każdy osobno.
- Swoją drogą widać jak na dłoni popularność Wykopu. Obecnie bardzo rzadko pojawiają się (a przynajmniej mam takie wrażenie) wpisy zahaczające o web, nie mówiąc już o polskiej blogosferze technicznej (choć tutaj nie narzekałbym – wykopywanie trupa to zadanie mało przyjemne). Macie jakiś plan ratunkowy? ;-)
Komentarze