Zastanawiałem się ostatnio nad tym, jaki MUSI być godny zaufania freelancer-programista, a jaki być NIE MOŻE. Efektem jest kilka spostrzeżeń, które dla wielu ocierają się zapewne o banał… ale ze względu na spore zainteresowanie ostatnim postem o tej tematyce postanowiłem się nimi podzielić.
Co zatem cechuje profesjonalistę?
Zadowolenie klienta
Różne mogą być bodźce powodujące zostanie freelancerem i różne zrządzenia losu mogą być przyczyną radości bądź rozżalenia. Wartością numer jeden w tym zawodzie jest moim zdaniem zadowolenie klienta. To jest nagroda za samokształcenie, za pracę i włożony w projekt wysiłek oraz staranne jego wykonanie. Pieniądze są oczywiście głównym “namacalnym” powodem przyjmowania zleceń, ale powiększony stan konta nie przysporzy satysfakcji na “wyższym poziomie”. Dla mnie osobiście wyraz uznania usłyszany od zleceniodawcy po udanej współpracy to jak taka finalna kostka cukru dla konia po udanym wyścigu. Zdarza mi się spotykać z opinią “klientowi nawet nie trzeba się starać dogodzić, bo sam nie wie czego chce – ważne żeby zapłacił”. Ja myślę, że prawdziwą sztuką jest dokładne przeanalizowanie rozwiązywanego problemu i POMOC zleceniodawcy w wybraniu optymalnej drogi. To faktyczne uproszczenie jego życia/zwiększenie dochodów/automatyzacja powtarzalnych procesów powinno być celem naszej pracy – a nie jedynie wypełnienie zobowiązań płynących z suchych liter podpisanej umowy. Powinno się wychodzić poza czystą implementację zadanych instrukcji i szukać lepszych pomysłów, wynajdywać potencjalne zagrożenia, sugerować alternatywne (uzasadnione) ścieżki prowadzące do tego samego celu. Nie jesteśmy sprzedawcami w komisie samochodowym, gdzie liczy się wciśnięcie byle czego nieświadomemu klientowi i brzęk wyłudzonej mamony o dno kasy oznacza sukces – w naszym przypadku autentycznie da się wyjść poza prosty schemat usługodawca-usługobiorca. Takie podejście do tematu pozwoli na czerpanie większej przyjemności z życia zawodowego (a są i inne bonusy – kiedyś dostałem niespodziewanie 20% większą zapłatę “za dobrą robotę” i to od wcale niebagatelnej kwoty), płynącej spoza stanu konta na koniec miesiąca.
Terminowość
Elementem dość mocno powiązanym z poprzednią kwestią jest terminowość. A jednak warto wspomnieć o niej w osobnym akapicie… Niedawno byłem świadkiem, jak ktoś innego programistę-freelancera określa mianem “mistrza w przekładaniu terminów i wyszukiwaniu wymówek”. Szczerze mówiąc trudno jest mi uwierzyć, że taka osoba potrafi utrzymać się na rynku. Przy szacowaniu terminu projektu należy dokładnie zapoznać się z wymaganiami, porównać je z własnymi umiejętnościami i porządnie zastanowić się, w ile czasu damy radę daną rzecz wykonać. Liczenie na to że “zadeklaruję najkrótszy termin więc ja zostanę wybrany do realizacji, a potem się ten termin przesunie” jest szczeniackie i niepoważne. Nadejście umówionego wcześniej terminu powinno nieść za sobą jeden z dwóch scenariuszy: “oddaję gotowy projekt” bądź “nie jestem w stanie zrealizować projektu nawet za milion lat“. Renegocjacja terminu może według mnie wchodzić w grę, jeżeli faktycznie pojawią się poważne problemy które były nie do przewidzenia podczas zawierania umowy. I problem taki należy zgłaszać drugiej stronie momentalnie, bez zwlekania typu “im później się klient dowie tym bardziej nie będzie mógł znaleźć innego wykonawcy”. I gwoli ścisłości: do takich “nieprzewidzianych problemów” nie zaliczam scenariusza, gdy rozgryzienie nowej technologii czy integracja z zewnętrznym systemem zajmuje tydzień zamiast zaplanowanego jednego dnia. I znowu przykład z własnego podwórka: raz zdarzyło mi się nie wyrobić w terminie z powodu tak zmieniających się wymagań, że system raz po raz był wywracany do góry nogami. Pierwotny czas zakładał 8 tygodni pracy. Pod koniec klient (sam) zasugerował wydłużenie go do 9 tygodni. Summa summarum z zaproponowanego tygodnia wykorzystałem 2 dni (no… 2 doby:) ). Na koniec polecam fajny tekst “Separate Estimating from Committing“.
Dostępność
Dotrzymywanie umówionych terminów łączy się niejako z kolejnym punktem: dostępnością. “Wolne się lansowanie” z jednej strony faktycznie daje pewną swobodę, ale z drugiej – to nie jest zajęcie od 8 do 16 tylko to praca 24/7. I tak naprawdę definicja życia jako całości. Jeżeli klient wysyła jakieś pytanie – nie pozwól aby czekał na odpowiedź. Jeżeli dostałeś ofertę projektu lub prośbę o wycenę – nie ignoruj drugiej strony odkładając reakcję na “gdy będę miał czas”. Daj poznać, że faktycznie jesteś osobą kryjącą się za skrzynką mailową. A w razie autentycznego braku możliwości porządnego zajęcia się poruszoną kwestią – potwierdź otrzymanie wiadomości i zadeklaruj termin bardziej rzeczowej odpowiedzi. I oczywiście nie zapomnij tego potem zrobić:).
Szczerość
Na sam koniec zostawiłem sobie klamrę spinającą wszystkie powyższe punkty oraz gwarantującą dobre relacje ze zleceniodawcami. Jest to szczerość w kontaktach z klientem. Nie dasz rady wykonać projektu w zadanym terminie? To go nie przyjmuj (o czym było wcześniej). Nie znasz proponowanej technologii? Nie kombinuj, że po cichu znajdziesz sobie podwykonawcę. Uważasz, że wymyślone wymagania są po prostu niewykonalne w określonych warunkach? Powiedz to od razu, a nie po przyjęciu zaliczki i rozpoczęciu prac. Czujesz, że jakaś część może sprawić problemy podczas realizacji? Ostrzeż o tym klienta bez myślenia “przecież ja wszystko wezmę na klatę, a potem się zobaczy”. Po wycenie spotkałeś się z warunkiem “dostaniesz zlecenie ale za 50% tej kwoty”? Pamiętaj, że lepiej nie wykonywać projektu wcale niż robić go byle jak usprawiedliwiając się “dostaną tyle za ile zapłacili”. I tak dalej, i tak dalej… Zlecenie zakończone sukcesem potrzebuje czystej atmosfery. Trzeba też spojrzeć prawdzie w oczy: taka szczerość prawdopodobnie spowoduje, że część zleceń po prostu przepadnie. Ale moim zdaniem lepiej już na samym początku postawić sprawę jasno, niż potem kombinować. I tu także historyjka z życia wzięta. Kilka tygodni temu zostałem poproszony o oszacowanie nakładu pracy potrzebnego do zrealizowania sporego przedsięwzięcia internetowego. Spotkania i rozmowy zajęły w sumie niemało czasu i doprowadziły mnie do konkluzji, że spełnienie wszystkich założeń w dostępnym przedziale czasowym jest niemożliwe. Moja porada mogła brzmieć: “spoko, biorę, robię, będzie git” i pewnie miałbym z tego niemało kasy. Ale brzmiała “do zaplanowanej premiery da się zrobić bardzo dobrze kluczowe 20% funkcjonalności; potem sugeruję na spokojnie rozejrzeć się za dodatkowymi ludźmi i prowadzić projekt dalej, opierając się na działającym szkielecie generującym już jakieś przychody”. Odpowiedzi były dwie: “ale mamy przecież aż trzy miesiące!” oraz finalnie “dzięki, ale znalazłem osobę, która to zrobi”. Naświetlając co nieco kontekst całej sytuacji: w założeniu do głównych komponentów zaliczał się serwis z wiadomościami, forum, rozbudowany profil użytkownika, osobisty kalendarz/organizer, wewnętrzny twitter, ogłoszenia pracy, ogłoszenia nieruchomości, sondy, konkursy, zintegrowana z mapą organizacja wydarzeń… cuda niewidy, nawet nie pamiętam wszystkiego. Względem każdej części istniały oczywiście pewne wymagania, które wykluczały wzięcie pierwszego lepszego CMSa prosto z pudełka. Przyznaję że z wielkim zainteresowaniem oczekuję na zaplanowaną datę premiery aby na własne oczy przekonać się o efekcie trzymiesięcznej pracy, jednego człowieka nad taką kobyłą.
Mam nadzieję po raz kolejny, że w jakiś sposób pomoże to komuś zwrócić uwagę na rzeczy ważne. Jak już się za coś bierzemy to dążyć należy do profesjonalizmu i nie zadowalać się amatorką oraz szybkim zyskiem na dzień dzisiejszy. Takie coś może się sprawdzić na krótką metę, ale… teraźniejszość to prawie przeszłość. A o wyżej wymienione czynniki dbać należy z myślą o przyszłości. (jak czasami przywalę jakiś aforyzm to sam nie wiem czy śmiać się czy płakać:) )
Czy o czymś zapomniałem, coś pominąłem? Jak jest Waszym zdaniem? Czy ETYKA zawodowa to faktycznie coś, o co warto walczyć, czy też puste dyrdymały dla niepoprawnych idealistów? Może się mylę i któryś z powyższych punktów wcale nie jest “najważniejszy”? Chętnie poznam dodatkowe głosy w tej kwestii.
Moim zdaniem trafiłeś w sedno. I muszę przyznać, że nie spotkałem jeszcze firmy, która by postępowała zgodnie z tymi ideami. Każda firma tworząca oprogramowanie leci na darmowych studentach i za krótkich terminach, o jakości tworzonego softu już nie wspomnę. A cały bajer ze zbijaniem kasy polega na tym, że nie zarabia się na produkcji systemu tylko na jego utrzymaniu. Więc wygrywasz przetarg najniższą ofertą (po kosztach) a potem zdzierasz z klienta regularne opłaty za utrzymanie systemów. I ten fakt aż mnie przygnębia.
Moim zdaniem głównym problem polskiego rynku oprogramowania jest brak etyki zawodowej i niedojrzałość tego rynku. Te dwie kwestie są bardzo ze sobą powiązane. Standardowy scenariusz – mamy start-up, goście chcą się gdzieś zaczepić, rzucają na przetargu kwotę tak niską, że nikt za tyle tego nie zrobi, konkurencja (ta bardziej dojrzała) podaje swoją kwotą (rzetelną i realną) i przegrywa, bo zleceniodawca się chwile zastanowi, a potem powie konkurencji "wiecie, znalazłem kogoś kto to zrobi…" :). Dlatego moim marzeniem byłoby pracowanie dla klienta, który nie weźmie najniższej oferty tylko dla tego, że jest najniższa. Jeżeli w życiu zawodowym (i prywatnym) stosujesz się… Read more »
@Farol:
I to jest zaleta bycia freelancerem – "prawdziwa" firma musi na pierwszym miejscu mieć kasę i zdobywać ją wszelkimi sposobami. A freelancer – niekoniecznie.
@procent
[quote]A freelancer – niekoniecznie[/quote]
Myślałem, że każdy musi jeść :P
@leszcz: Brak etyki – tak. Z drugiej jednak strony – naiwność klienta. Gdyby klient się chwilę zastanowił i zastosował porównanie z codziennego życia: jakość "normalnych" produktów vs. jakość prawie darmowych badziewi "made in Kerfur" czy sygnowanych kciukiem z Oszą, a następnie to porównanie przeniósł na rynek software to może byłoby inaczej. MUSI być powód dla którego ktoś zrobi program za 30% ceny konkurencji. Ale na ten temat też już powoli powstaje zalążek posta, więc nie będę się teraz rozwodził. A co do stosowania tych zasad… W życiu zawodowym na szczęście mogę sobie pozwolić na kierowanie się właśnie tym co napisałem… Read more »
@Farol:
Jeść musi każdy, ale freelancer zje mniej niż cała firma:). Dla freelancera może wystarczyć jeden dobry długi projekt od, jak to określił leszcz, wymarzonego klienta. A firma musi nałapać ich więcej, niejednokrotnie nie bacząc na etykę.
@leszcz niestety by tak sie stalo musi sie zmienic prawo polskie dotyczace przetargow dla instytucji panstwowych, gdzie cena odrgywa istotna kwestie. Przyklady sami widzimy chociazby na drogach gdzie najtaniej nie oznacza najlepiej. ale nie da sie tego obejsc do poki prawo nie ulegnie zmienie. @Procent Etyka to jest cos o co trzeba walczyc, ale trzeba tez pamietac ze Twoja definicja nie jest taka sama jak calej reszty. Dla Ciebie etyka to to i to, dla kogos innego jest to zupelnie inna – w szczegolnosci w dev, choc pewnie sie one czesciowo pokrywaja. Ale tak jak napisalem nie zaleznie jaka ona… Read more »
Freelancer powinien… dobrze ujęte, celem powinno być nie tylko wykonanie zlecenia ale wykonanie go taki sposób abyśmy i my i klient byli zadowoleni.
Czasem niestety trafiamy na klientów którzy nie mają wiedzy/chęci/wyobraźni albo po prostu zachowują się tak jak tu: http://www.youtube.com/watch?v=R2a8TRSgzZY – wtedy lepiej nie podejmować się wykonania projektu niż liczyć że "jakoś to będzie".
Dodałbym jeszcze że trzeba także klientowi umieć powiedzieć NIE – szczególnie gdy przez brak wiedzy, wyobraźni lub chęć tymczasowej oszczędności chce sobie "urwać rączkę".
Ja bym z dostępnością uważał. Przezwyczaisz klienta, że może mieć odpowiedź w ciągu 5 sekund po wysłaniu maila to potem będzie się denerwował, że musi czekać godzinę czy dwie na odpowiedź.
Witam 1) Zastanawiające, ile trzeba się narobić, żeby dojść do poziomu w którym kogoś stać na podejście opisane w tym poście. I finansowo (mieć pełną lodówkę) i merytorycznie. Przy czym merytorycznie oznacza, że developer dysponuje odpowiednią wiedzą, doświadczeniem i umiejętnością takiej – nie wiem – wewnętrznej argumentacji, by być ponad swoim przeczuciem, że zadanie da się na bank wykonać przez noc. Musi być też odporny na manipulacje ofertami innych (oczywiście o połowę mniejszymi). No i powinien godzić się na myślenie krytyczne o sobie, np. być w stanie policzyć, że zadanie trwało nie tydzień roboczy, ale 120 godzin i faktycznie zarobił… Read more »
@pawelp:
Witam również:).
To nie jest kwestia "narobienia się", a przemyślanych ruchów umożliwiających takie a nie inne postępowanie. Ale o tym pisałem kiedy indziej: http://www.maciejaniserowicz.com/post/2010/01/20/Zawod-programista-Zawod-freelancer-Przestrogi.aspx .
Co do 2 doby==6 dni… przyjmijmy zatem, że zaproponowany tydzień przedłużenia ==7dób.
Szczerosc nie oznacza lamania zasad – oznacza spojrzenie na rzeczywistosc bez różowych okularów i bez desperackiego zaślepienia koniecznością zdobycia jak najwiekszej liczby zlecen.
Witam, Całkiem niedawno trafiłem na Twojego bloga, muszę przyznać, że wychodzi Ci to świetnie – nie dość że poruszasz ciekawe (i istotne) tematy, to na dodatek masz to "lekkie pióro (klawiaturę?)", co sprawia że Twoje teksty czyta się prawie z przyjemnością. Prawie, bo – np. w tym tekście, zanim dotarłem do punktu "Szczerość", to musiałem zrobić kilka minut przerwy ze względu na zmęczenie oczu. Nie wiem czy to wina kolorów, ale – sądzę, że mógłbyś częściej łamać akapity, zwęzić kolumnę i ewentualnie zwiększyć interlinię. Dodam, że się nie znam, może wystarczy coś innego – w każdym bądź razie, w obecnej… Read more »
@uolot:
Dzięki za miłe słowa:).
Co do wyglądu bloga… od jakiegoś czasu zastanawiam się nad "redesignem" czy nawet przesiadką na inny silnik, bo moja strona wygląda dość paskudnie na tle innych polskich blogów o .NET. Do tego czasu postaram się jednak wydedukować jak poprawić czytelność tekstów, może faktycznie lekka zmiana koloru czy układu pomoże.
Witam, Ciekawy tekst i madre przemyslenia. Duzo z tego jest prawda ale zycie i tak weryfikuje czesc podejscia do klienta oraz potencjalnych tematow jakie sie pojawia w trakcie trwania projektu. Czesto trzeba wybrac pomiedzy dobrem walsnym a zadowoleniem klienta. Trzeba ocenic sily jakimi dysponujemy i czas jaki jestesmy w stanie poswiecic klientowi. Wg mnie niema zlotego srodka i jednego przepisu. Kazdy jest inny a i tak na koncu liczy sie zadowolenie Klienta oraz Nasze saldo. Nie oszukujmy sie ze kazdy robi to zadarmo. W poprzedniem artykuje (ktory cytujesz) napisales jedno zdanie (sentencje) : " Lepszy późniejszy start, niż falstart. "… Read more »
a ja mam pomysl na nastepny post:"Freelancing, a praca zespolowa. Zdobywanie dobryk praktyk od czeladnikow".
To ja proponuje "Freelancing, a Co-Working Center" i życzę nam wszystkim byśmy zawsze mogli wytrwać przy swoich zasadach.
Miło że ktoś podejmuje takie tematy, dzięki! :) klm_ zaproponował bardzo ciekawy kolejny post: "Freelancing, a praca zespolowa. …". %, jeżeli posiadasz w tym temacie wiedzę, masz doświadczenia w pracy zespołowej ale w modelu zdalnym w którym z pewności pracujesz, to na pewno nie tylko ja będę czytał z zaciekawieniem tego posta na zamówienie :)
@Janet:
Każdy projekt ocenia się inaczej i ewentualne przeszłe relacje z klientem, czy też potencjalne relacje przyszłe, mają na to spory wpływ.
Nigdzie nie napisałem o pracy za darmo:). Podkreślałem jedynie że "możliwość zarobienia trochę więcej" nie powinna być dobrem najwyższym.
@klm_, @weles, @Łukasz:
Dzięki za propozycje, zanotowałem i pomyślę czy miałbym coś interesującego do powiedzenia na te tematy:).
Hej,
Z innej beczki.. Kiedy przechodziłeś na własną DG, jak wyglądała sprawa z twoim sprzętem? Konkretniej: Jak wygląda sytuacja, kiedy mając DG korzystasz z komputera na którym jest oprogramowanie (oczywiście oryginalne) zarówno prywatne, jak i te, które wykorzystujesz przy pracy? Wiadomo, licencje są różne, jedne są free do użytku domowego, ale przy wykorzystaniu komercyjnym powinny być zakupione licencje. Istotą tu rozumiem jest samo oprogramowanie, czyli na swoim komputerze mogę mieć soft darmowy (lub zakupiony, ale z licencją do użytku domowego) o ile nie służy mi np. przy pisaniu oprogramowania, czy tworzenia grafiki?
ps. bardzo fajny blog :)
@placek:
Dzięki:)
Wydaje mi się że dobrze rozumiesz. Nie zagłębiałem się w to (większość oprogramowania i tak mam na licencji ‘do uzytku komercyjnego’), ale logiczne wydaje się założenie, że mozesz miec licencje "domowe" dla rzeczy z ktorych nie korzystasz przy pracy a musisz miec licencje "komercyjne" dla rzeczy ktore wykorzystujesz zarobkowo.
Też tak mi się wydawało, ale jednak wolałem się upewnić. Zastanawia mnie tylko jak jest z licencją na Windowsa, nie wiem jakiego Ty posiadasz, ale może wiesz, czy wersja Home Edition (już sama nazwa sugeruje, że średnio to do biznesu pasuje, no ale może..) jest ok, dla prowadzenia działalności i pracowania na niej? Wówczas ten system by był jednocześnie dla zastosowań prywatnych jak i komercyjnych.
@placek:
Ja mam z MSDN. Musiałbyś się w licencję wczytać albo zapytać w MS, ale myślę że można na tym normalnie pracować. Tylko pytanie czy wystarczy do zastosowań programistycznych (nie wiem jak później, ale w XP Home nie było np. IIS).