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ę do tego co opisałeś, to szczerze podziwiam i wróżę coraz lepszą przyszłość.
@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 w poście. Oczywiście z tego powodu większość potencjalnych zleceń kończy się po wymianie pierwszych maili, ale dzięki temu mogę z czystym sumieniem spojrzeć co rano w lustro (jak to dumnie zabrzmiało:) ).
Życie prywatne natomiast to moim zdaniem kwestia wyboru: mieć 10 naprawdę dobrych znajomych czy milion friendsów z naszej-klasy. Ale ja dający rady wychodzące poza "programowanie i okolice" to już gruba przesada, więc utnę wypowiedź w tym momencie:).
@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 jest trzeba o nia walczyc.
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ł nie X a jedną trzecią X. A jedna trzecia X to być może żaden wielki sukces. Swoją drogą:
> Summa summarum z zaproponowanego tygodnia wykorzystałem 2 dni (no… 2 doby:) )
Dwie doby to 6 dni roboczych.
2) Uważam, że ta notka jest tylko szkicem postępowania (choć blisko jej do wzorca, którym warto się posługiwać). Jednak często terminowość nie jest na pierwszym miejscu (czasami jest nawet nie na 11tym:-)). Nie rzadko wynajdowanie alternatywnych ścieżek to szukanie rozwiązań, które faktycznie skrócą naszą pracę nad zagadnieniem, a nie będą specjalną korzyścią dla klienta.
3) Motywacją "dostępności" może być chęć zdobywanie co raz większej liczby klientów, jak i zwykły szacunek dla innego człowieka.
4) No i szczerość. To poważny problem. Bo szczerość to właściwie podsumowanie postu Procenta. Żeby być szczerym trzeba być i terminowym i dostępnym i umieć zadowolić klienta i wszystko inne. Bo szczerość to jest ten moment w którym łamiemy te zasady i musimy się wytłumaczyć i przed klientem i przed sobą.
OT: Pierwszy raz się pojawiam na tym blogu więc oczywiście wszystkich serdecznie pozdrawiam. Szczególnie właściciela, z którym kończyliśmy to samo liceum :-)
@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 formie czyta się po prostu źle.,
Pozdrawiam
uolot
@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. "
Hmmm, moze najpierw warto zastanowic sie nad jego sensem. Ja osobiscie jestem takim freelancerem i caly czas sie zastanaim czy za wczesnie zaczolem czy to juz byl ten czas. Moze odpowiedni czas to ten kiedy sadzimy ze chcemy oprocz regularnych 8h w pracy na etat zrobic cos extra. Nie kazdy poswieca swoj czas aby poznawac nowe technologie, zglebiac tajniki programowania.
Ja caly czas sie zastanawiam czy zaczolem w dobrej chwili. A co do klientow, technologii i pozostalych rzeczy to wszystko wg mnie uklada sie w trakcie podpisania kontraktu z klientem (wszak to on ma 80% glosow i od niego zalezy jak sie potoczy calosc projektu).
Oczywiscie to tylko moje zdanie i moge sie mylic …
Pozdrawiam … Piotrek
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).