Podczas wybierania programisty do realizacji projekty trzeba zastanowić się na złożonością projektu, własnym doświadczeniem, wiedzą i określonością zlecenia. Przy uwzględnianiu wydatku na zlecenie dobrze jest pamiętać o kosztach jakie ponoszą programiści i firmy informatyczne a także dyskusyjne koszty dokształcania i researchu, które mogą różnie być rozkładane.
Ostatnio uznałem że warto zebrać w jednym miejscu kilka wniosków, które wynikają z moich doświadczeń jako programista i osoba z programistami współpracująca. Czym dłużej pracuję zawodowo jako programista, tym bardziej czuję się amatorem. Informatyka i programowanie to tak ogromna i rozległa dziedzina, ze dopiero z czasem widzi się coraz większy horyzont możliwości technicznych i aspekty nie-informatyczne, które są tak samo ważne, a czasem nawet ważniejsze. Umiejętności komunikacji, zrozumienia drugiej osoby, czy chociaż próby. Mam nadzieję, że dzięki poniższym informacjom łatwiej będzie zrozumieć programistów nie-informatykom, ale też programistów nie-programistom. Oczywiście ten tekst nie wyczerpuje tematu, a właściwie w pewnym uproszczeniu go inicjuje. Dlatego zachęcam do lektury i komentarzy:
Wieloznaczność terminu programista
Jeżeli jesteś nie-informatykiem możesz mieć jeden obraz programisty. Jeżeli jesteś informatykiem, programista może mieć dla Ciebie inne znaczenie niż dla innych. Dlatego wyjaśnijmy najpierw w jak wielu różnych miejscach pracują programiści i jak bardzo różnią się. Programiści pracują w różnych miejscach: w korporacjach, na własnej działalności gospodarczej, w małych firmach informatycznych, albo jako programista wspomagający dział informatyczny firmy zajmującej się inną branżą. Jak widać są różne stanowiska i to co odnosisz do programisty w małej firmie nie zawsze musi się odnosić do freelancera albo do pracownika korporacji.
Z drugiej strony do programistów odzywają się różni klienci: są to klienci korporacyjni, małe firmy, osoby prywatne, a z innego punktu widzenia osoby nieznające się na informatyce, osoby trochę z nią obeznane albo informatycy albo inni programiści.
Jeden programista, a zadań wiele
W zależności od tych czynników różnie układa się między nimi współpraca. Osoba nieobeznana albo firma może zlecić wykonanie bliżej nieokreślonego projektu. Wtedy programista musi zająć się też projektowaniem i konsultacjami z klientem, tak aby określić najpierw jaki cel klient chce osiągnąć. Bez tego nie ma szansy na to, aby trafić w oczekiwania, które mogą być na początku zupełnie niejasne z punktu widzenia informatycznego. Dopiero wtedy może zacząć programować, gdy pomoże klientowi nakreślić dokładnie co chce osiągnąć i jakie technologie można wykorzystać w celu osiągnięcia sukcesu. A więc dobry programista (chyba że pracuje z dala od klientów, w ciemnej serwerowni) musi mieć umiejętności interpersonalne, z uwagi na duży poziom komplikacji świata programistycznego nawet uważam, że bardzo duże.
Oprócz konsultacji z klientem, która wymaga czysto interpersonalnych umiejętności, programista musi znać się na innych dziedzinach. W zależności od wagi i wymogów technicznych klientów programista może też stać się:
- testerem
- dokumentalistą
- grafikiem (* – najlepiej minimum)
- autorem tekstów
W przypadku pojedynczego programisty jest on zdany w tych kwestiach sam na siebie, w przypadku firm informatycznych rozdziela się te zadania pomiędzy kilka osób, co powinno zmniejszyć teoretycznie zmniejszyć koszty całościowe, skoro każdy robi to w czym jest najlepszy, ale nie zawsze tak jest, chociaż powinno być i na pewnym poziomie jest to widoczne.
Koszty o których pamiętamy
Jeżeli chodzi o koszty pracy, o jakich łatwo zapomnieć, to w przypadku pojedynczych zleceń to
- koszt prądu
- programów
- książek
- szkoleń
W przypadku regularnej działalności np. freelance na działalności gospodarczej to warto pamiętać, że programista musi zapłacić:
- podatek ZUS
- podatek zdrowotny,
- ewentualne zlecenie grafiki
- zlecanie zadań nie-programistycznych odpowiednim innym osobom
W przypadku firm informatycznych jest szereg innych kosztów, o których nie będę tutaj się rozpisywał.
Kogo wybierać do zadań programistycznych?
Warto jednak pamiętać o tych kosztach kiedy zatrudniamy kogoś do projektu informatycznego i dobierać odpowiednią “jednostkę” do zadania specjalnego. Duże zadanie, szczególnie od nie-informatyka jest dobre dla firmy, która zapewni ciągłe wsparcie.
Natomiast mniejsze zadania, szczególnie zlecane przez małe firmy, czy osoby prywatne, które wiedzą konkretnie czego chcą, w tym od informatyków i programistów nadają się dla osób prowadzących DG czy freelancerów, jednak musimy się upewnić, czy ich standardy i wsparcie spełnią nasze oczekiwania. Kiedy klient dostanie gotowy produkt, może zgłaszać błędy, które trzeba naprawić, albo prosić o następne funkcje, które trzeba wdrożyć. Dla klienta rodzi to potrzebę znalezienia osoby, która będzie dostępna, a dla programisty uwzględnienie tej pracy w kosztach.
Jak rozliczać koszty researchu i dokształcania?
Jest jeszcze jeden koszt w pracy programisty. Jest dostępnych wiele narzędzi programistycznych, języków programowania, platform itd. Dlatego przy wielu projektach programiści muszą dokształcać się z nowych dziedzin. Myślę, że dlatego właśnie wiele osób wybiera ten zawód. Dostarcza on ciągłej motywacji do dalszego rozwoju. Rodzi natomiast to określone koszty, a konkretnie czas potrzebny na rozpracowanie nowych technologii i ich wykorzystanie. Kto powinien ponosić te koszty?
W przypadku większych zespołów nie jest to problem, ponieważ firma może inwestować środki zebrane do tej pory na rozwój programistów, planować jakie umiejętności będą im potrzebne i rozkładać koszty na kilka zleceń. Jednak w przypadku mniejszych firm i freelancerów jest to trudniejsze. Nie ma pewności, że dana umiejętność przyda się przy następnych projektach. Dlatego uwzględniają oni czas na naukę w kosztach realizacji projektów. Czasem jest to dobre. Nawet gdy jest to niszowa umiejętność, a klient jej bardzo potrzebuje, to za nią zapłaci.
Dyskusyjne jest natomiast gdy umiejętność jest przenośna, potrzebna do realizacji następnych projektów. Jeżeli programista przy projekcie nauczy się umiejętności, którą wykorzysta w następnych 10 projektach można rozważyć rozdzielenie kosztów. Według mnie jest to racjonalne rozwiązanie dla obu stron. Nowe umiejętności mogą dać programiście określone korzyści na rynku pracy, a więc mogą mieć określoną wartość, przy czym wymaga to dokładnego rozważenia.
Podsumowując, warto wybierać programistów odpowiednio do swoich potrzeb i biorąc pod uwagę co konkretnie od nich wymagamy, a jednocześnie uwzględniać koszty pracy, które ponoszą i jak wieloma dziedzinami mogą się zajmować.
Piszę o programistach, a nie o informatykach, żeby nikogo nie drażnić. Dla programistów informatyk to admin, dla admina informatyk to sprzedawca komputerów, a dla nie-informatyka informatyk to programista, admin, sprzedawca komputerów i każdy, kto zna się na komputerach, co tylko potwierdza, że trzeba dążyć do zrozumienia 😉
