Błąd w kodzie może kosztować znacznie więcej niż samo usunięcie usterki. Przerwany proces sprzedaży, błędnie zaksięgowane płatności, uszkodzona baza danych czy opóźnione wdrożenie przed kampanią reklamową szybko zamieniają techniczny problem w roszczenie finansowe. Klient może zażądać pokrycia strat, naliczyć karę umowną, zatrudnić własnych ekspertów i skierować sprawę do sądu.
W polskich realiach programista prowadzący działalność gospodarczą co do zasady nie musi posiadać obowiązkowego OC zawodowego. Nie oznacza to jednak braku odpowiedzialności. Zgodnie z zasadami odpowiedzialności kontraktowej przedsiębiorca, który nie wykonał zobowiązania albo wykonał je nienależycie, może odpowiadać za wynikłą z tego szkodę.
Polisa OC dla programisty nie usuwa błędu, nie gwarantuje powodzenia w sporze i nie zastępuje dobrze napisanej umowy. Jej zadaniem jest pokrycie określonych kosztów roszczenia — na przykład odszkodowania, pomocy prawnej lub opinii technicznej — pod warunkiem że zdarzenie mieści się w zakresie ochrony i nie podlega wyłączeniu.
Kiedy brak OC staje się realnym ryzykiem dla programisty
Największe ryzyko nie wynika z liczby napisanych linii kodu. Liczy się to, jakie skutki biznesowe może wywołać błąd i jak szeroką odpowiedzialność przyjąłeś w umowie.
Polisę należy potraktować priorytetowo, gdy:
- pracujesz na kontrakcie B2B i podpisujesz umowę bezpośrednio z klientem;
- wdrażasz kod na środowisko produkcyjne;
- utrzymujesz sklepy internetowe, systemy płatnicze, ERP, CRM, aplikacje medyczne lub finansowe;
- masz dostęp do baz danych, kont administracyjnych albo infrastruktury klienta;
- odpowiadasz za SLA, dostępność usługi lub czas reakcji na awarie;
- korzystasz z podwykonawców;
- realizujesz projekty dla klientów zagranicznych;
- umowa zawiera kary umowne, odpowiedzialność za opóźnienie lub obowiązek pokrycia utraconych korzyści;
- klient wymaga przedstawienia certyfikatu ubezpieczenia przed rozpoczęciem współpracy.
Programista zatrudniony wyłącznie na umowie o pracę znajduje się zwykle w innej sytuacji niż freelancer. To pracodawca zawiera kontrakt z klientem i odpowiada za realizację projektu. Własna polisa zaczyna mieć znaczenie, gdy ta sama osoba dodatkowo wykonuje zlecenia, prowadzi działalność albo podpisuje umowy we własnym imieniu.
Przy B2B trzeba uważać na popularne przekonanie, że odpowiedzialność kończy się na wartości faktury. Nie kończy się, jeżeli nie wynika to wprost z kontraktu. Projekt może być wart 40 tys. zł, a obsługiwany przez niego sklep generować wielokrotnie większy obrót. Kilkugodzinna awaria w Black Friday, błędna aktualizacja cen albo podwójne naliczenie płatności mogą wywołać roszczenie przekraczające całe roczne wynagrodzenie wykonawcy.
Nie każda reklamacja klienta oznacza jednak odpowiedzialność programisty. Trzeba ustalić:
- czy wystąpiła rzeczywista szkoda;
- czy doszło do błędu lub zaniedbania wykonawcy;
- czy istnieje związek między tym błędem a stratą;
- czy klient sam nie przyczynił się do zdarzenia, na przykład wdrażając niezatwierdzoną wersję;
- czy roszczenie nie dotyczy rezultatu, którego wykonawca w ogóle nie gwarantował.
W praktyce spory często dotyczą nie samego kodu, lecz dokumentacji i komunikacji. Brak potwierdzenia zakresu prac, ustaleń dotyczących testów, decyzji klienta albo zgłoszonych wcześniej zagrożeń osłabia pozycję programisty. Polisa może sfinansować obronę, ale nie odtworzy brakujących logów, ticketów i akceptacji.
Osobną kategorią są incydenty związane z danymi osobowymi. Programista może działać jako podmiot przetwarzający lub osoba upoważniona i powinien korzystać z danych wyłącznie zgodnie z poleceniami administratora. Osoba poszkodowana naruszeniem RODO może dochodzić przed sądem odszkodowania za szkodę majątkową lub niemajątkową również od podmiotu przetwarzającego.
Zwykłe OC działalności nie zawsze obejmie koszty analizy incydentu, odtworzenia danych, zawiadomienia osób poszkodowanych, pracy informatyków śledczych czy reakcji na cyberatak. Przy dostępie do danych produkcyjnych potrzebne może być rozszerzenie cyber albo osobna polisa cyber. To nie jest kosmetyczny dodatek. Jest potrzebne wtedy, gdy podstawowe OC wyłącza szkody dotyczące danych, prywatności lub bezpieczeństwa sieci.
Zakres polisy ważniejszy niż suma na certyfikacie
Najczęstszy błąd zakupowy wygląda tak: klient żąda OC na milion złotych, więc wykonawca znajduje najtańszą polisę z takim limitem i wysyła certyfikat. Problem pojawia się dopiero przy szkodzie, gdy okazuje się, że ochrona dotyczy ogólnego OC firmy, ale nie obejmuje czystych strat finansowych wynikających z usług informatycznych.
Dla programisty istotne są przede wszystkim następujące elementy:
- błędy, uchybienia i zaniechania zawodowe — wadliwy kod, nieprawidłowa konfiguracja, pominięcie uzgodnionego testu lub zabezpieczenia;
- czyste straty finansowe — szkody, którym nie towarzyszy uszkodzenie rzeczy ani szkoda osobowa, typowe dla projektów IT;
- koszty obrony prawnej — wynagrodzenie kancelarii, rzeczoznawcy, biegłego lub eksperta technicznego;
- utrata lub uszkodzenie danych — także podczas migracji, aktualizacji i prac utrzymaniowych;
- naruszenie praw własności intelektualnej — na przykład nieumyślne wykorzystanie komponentu na warunkach niezgodnych z licencją;
- odpowiedzialność za podwykonawców — gdy część kodu, testów lub administracji zlecasz innej osobie;
- naruszenie poufności — jeżeli nie zostało wyłączone albo ograniczone wyłącznie do określonych zdarzeń;
- rozszerzenie terytorialne — potrzebne przy klientach zagranicznych;
- koszty odtworzenia dokumentów i danych, o ile produkt przewiduje takie świadczenie.
Trzeba przy tym rozróżnić OC działalności gospodarczej od OC zawodowego. Pierwsze może chronić na przykład wtedy, gdy podczas wizyty u klienta uszkodzisz jego sprzęt. Drugie koncentruje się na szkodach powstałych wskutek wadliwie wykonanej usługi. Programista potrzebuje przede wszystkim ochrony odpowiadającej charakterowi pracy intelektualnej i kontraktowej, a nie tylko klasycznej polisy od szkód rzeczowych. Rzecznik Finansowy wskazuje, że OC firmy może być zawierane jako osobna umowa albo element pakietu, dlatego sam tytuł produktu nie przesądza jeszcze o rzeczywistym zakresie.
Najwięcej uwagi wymagają wyłączenia odpowiedzialności. W OWU mogą znaleźć się ograniczenia dotyczące:
- kar umownych;
- opóźnienia w wykonaniu projektu;
- niedotrzymania gwarantowanych parametrów lub SLA;
- utraconych korzyści klienta;
- rażącego niedbalstwa;
- usług finansowych, medycznych lub telekomunikacyjnych;
- cyberataków i naruszeń prywatności;
- błędów w oprogramowaniu tworzonym przed rozpoczęciem ochrony;
- roszczeń zgłaszanych w USA lub Kanadzie;
- świadomego naruszenia licencji albo praw autorskich;
- zobowiązań przyjętych w umowie, które wykraczają poza zwykłą odpowiedzialność wynikającą z prawa.
Ta ostatnia pozycja jest szczególnie niebezpieczna. Jeżeli dobrowolnie zgodzisz się pokrywać każdą stratę klienta, wszystkie utracone korzyści i nieograniczone kary, ubezpieczyciel nie musi przejmować odpowiedzialności stworzonej wyłącznie przez źle wynegocjowany kontrakt.
Zakres dobrowolnego ubezpieczenia zależy od OWU, a nie od nazwy na stronie sprzedażowej. Jeżeli określona działalność albo rodzaj zdarzenia nie są objęte ochroną lub zostały wyłączone, ubezpieczyciel może odmówić wypłaty.
Suma gwarancyjna również ma znaczenie, ale należy dobierać ją dopiero po ustaleniu zakresu. Dobry punkt odniesienia stanowią:
- minimalny limit wymagany przez klienta;
- limit odpowiedzialności zapisany w umowie;
- możliwa wartość szkody przy typowej awarii;
- liczba kontraktów objętych jednym wspólnym limitem;
- sposób pomniejszania sumy przez koszty prawne i wypłacone odszkodowania.
Trzeba sprawdzić, czy suma jest ustalona na jedno zdarzenie, czy na wszystkie zdarzenia w rocznym okresie ubezpieczenia. Limit miliona złotych może wyglądać solidnie, ale po wypłacie 600 tys. zł na pierwsze roszczenie do końca roku pozostanie jedynie 400 tys. zł. Jeszcze gorzej, gdy koszty obrony pomniejszają tę samą sumę.
Istotny jest także udział własny. Polisa z udziałem własnym wynoszącym 5 tys. zł nie pomoże przy sporze wartym 4 tys. zł. Wysoka franszyza obniża składkę, ale przerzuca drobniejsze roszczenia na wykonawcę. Ma to sens w większym software house’ie z rezerwą finansową, lecz bywa bolesne dla freelancera.
Jak porównać oferty i nie kupić pozornej ochrony
Proces wyboru powinien zaczynać się od umowy z klientem, nie od formularza ubezpieczyciela. Najpierw trzeba ustalić własne ryzyka, a dopiero później szukać produktu, który je obejmuje.
Krok 1: zaznacz w umowie klauzule odpowiedzialności
Sprawdź przede wszystkim:
- maksymalną wysokość odpowiedzialności;
- odpowiedzialność za utracone korzyści;
- wysokość i sposób naliczania kar umownych;
- wymagane SLA;
- obowiązki dotyczące danych, bezpieczeństwa i poufności;
- odpowiedzialność za podwykonawców;
- prawo właściwe i sąd rozstrzygający spory;
- wymaganą sumę oraz zakres OC.
Jeżeli odpowiedzialność jest nieograniczona, najpierw negocjuj kontrakt. Typowym rozwiązaniem jest limit powiązany z wartością wynagrodzenia, wielokrotnością opłat z ostatnich miesięcy albo konkretną sumą ubezpieczenia. Klient może nie zaakceptować niskiego limitu przy systemie krytycznym, ale brak jakiegokolwiek ograniczenia to ryzyko, którego polisa nie rozwiąże.
Krok 2: opisz najgorszy realistyczny scenariusz
Nie chodzi o abstrakcyjną katastrofę. Wybierz zdarzenia pasujące do faktycznej pracy:
- nieudana migracja usuwa część rekordów;
- aktualizacja blokuje składanie zamówień przez kilka godzin;
- błąd w integracji powoduje podwójne płatności;
- źle skonfigurowany dostęp ujawnia dane klientów;
- nieprawidłowa licencja biblioteki wymusza przebudowę produktu;
- opóźnienie wdrożenia przesuwa kampanię sprzedażową;
- podwykonawca publikuje klucz lub dane dostępowe w publicznym repozytorium.
Dla każdego scenariusza określ możliwy koszt, stronę odpowiedzialną i dowody, które pozwolą odtworzyć przebieg zdarzenia. Dzięki temu łatwiej ocenić, czy potrzebujesz ochrony danych, rozszerzenia cyber, wyższego limitu albo klauzuli dotyczącej własności intelektualnej.
Krok 3: porównaj OWU na jednej liście pytań
Brokerowi lub ubezpieczycielowi należy przekazać konkretny opis działalności. „Usługi IT” to za mało. Inaczej wygląda ryzyko front-end developera tworzącego strony marketingowe, inaczej administratora infrastruktury, specjalisty od cyberbezpieczeństwa czy backend developera pracującego przy płatnościach.
Przed zakupem uzyskaj jednoznaczną odpowiedź:
- Czy polisa obejmuje czyste straty finansowe?
- Czy obejmuje błędy popełnione podczas maintenance’u i wdrożeń?
- Czy działa przy utracie lub uszkodzeniu danych?
- Czy obejmuje nieumyślne naruszenie licencji open source?
- Czy pokrywa koszty prawne od momentu zgłoszenia roszczenia?
- Czy chroni podwykonawców?
- Czy obejmuje kary umowne, a jeżeli tak — które?
- Czy działa przy klientach z całej Unii Europejskiej, Wielkiej Brytanii i Stanów Zjednoczonych?
- Czy koszty obrony pomniejszają sumę gwarancyjną?
- Jaki jest udział własny?
- Czy wcześniejsze projekty są objęte okresem retroaktywnym?
- Ile czasu pozostaje na zgłoszenie roszczenia po wygaśnięciu polisy?
Szczególnej uwagi wymaga formuła claims made. W takim modelu znaczenie ma moment zgłoszenia roszczenia, a nie tylko data popełnienia błędu. Problem w kodzie wdrożonym w marcu może ujawnić się w listopadzie, już po zmianie ubezpieczyciela. Brak odpowiedniej daty retroaktywnej lub dodatkowego okresu zgłaszania roszczeń może wtedy pozostawić lukę w ochronie.
Nie wolno też samodzielnie uznawać roszczenia klienta bez sprawdzenia warunków polisy. Mail w rodzaju „to całkowicie nasza wina, pokryjemy wszystkie koszty” może utrudnić prowadzenie obrony. Po otrzymaniu żądania zapłaty należy zabezpieczyć logi, historię wdrożeń, repozytorium, tickety i korespondencję, a następnie zgłosić sprawę w terminie wskazanym w OWU.
Polisa nie zwalnia również z podstawowej higieny projektowej. Ubezpieczyciel może analizować, czy wykonawca stosował uzgodnione procedury, wykonywał kopie zapasowe, kontrolował dostęp i reagował na zgłoszone podatności. Brak testów, dokumentacji oraz procesu akceptacji nie zawsze automatycznie wyłącza ochronę, ale zdecydowanie komplikuje likwidację szkody.
FAQ: OC programisty bez niedomówień
Czy freelancer programista musi mieć OC?
W większości przypadków nie jest to ustawowy obowiązek, ale klient może wymagać polisy w umowie lub procedurze zakupowej. Przy samodzielnej odpowiedzialności B2B OC należy traktować jako jedno z podstawowych zabezpieczeń działalności.
Czy OC pokryje każdy błąd w kodzie?
Nie. Zadziała tylko wtedy, gdy błąd, rodzaj szkody, wykonywana usługa i terytorium mieszczą się w zakresie polisy. Umyślne działanie, świadome naruszenie prawa oraz część zobowiązań kontraktowych są zazwyczaj wyłączane.
Czy standardowe OC obejmuje wyciek danych?
Nie należy tego zakładać. Podstawowy zakres może wyłączać dane osobowe, cyberataki, koszty reakcji na incydent i odtworzenie systemów. Takie ryzyka często wymagają klauzuli dodatkowej albo osobnego ubezpieczenia cyber.
Czy polisa pokrywa kary umowne?
Tylko gdy OWU lub dodatkowa klauzula wyraźnie to przewidują. Nawet wtedy mogą obowiązywać podlimity, udział własny i zamknięty katalog objętych kar.
Jaka suma gwarancyjna jest odpowiednia?
Powinna odpowiadać limitowi odpowiedzialności w najważniejszych kontraktach oraz realnej skali szkody. Przy systemie produkcyjnym nie należy odnosić jej wyłącznie do własnego wynagrodzenia — istotna jest wartość operacji wykonywanych przez system.
Czy OC działalności i OC zawodowe to to samo?
Nie. Klasyczne OC firmy może obejmować głównie szkody rzeczowe i osobowe, natomiast OC zawodowe powinno chronić przed finansowymi skutkami błędnie wykonanej usługi. Programista musi sprawdzić, czy oferta rzeczywiście obejmuje działalność informatyczną i czyste straty finansowe.
Czy polisa obejmie kod napisany przed jej zakupem?
Wyłącznie wtedy, gdy przewiduje odpowiedni okres retroaktywny i spełnione są warunki zgłoszenia roszczenia. Sama ciągłość opłacania składek nie wystarczy, jeżeli kolejne umowy mają różne daty retroaktywne.
Czy programista na etacie potrzebuje własnej polisy?
Zwykle nie, jeśli pracuje wyłącznie w ramach obowiązków pracowniczych. Własna ochrona staje się potrzebna przy dodatkowych zleceniach, działalności gospodarczej albo umowach podpisywanych poza stosunkiem pracy.
Pierwsza decyzja nie powinna dotyczyć wyboru ubezpieczyciela. Otwórz największy kontrakt, zaznacz limit odpowiedzialności, kary umowne, obowiązki dotyczące danych i terytorium świadczenia usług, a następnie porównaj te zapisy z OWU. Najpilniejszy błąd do usunięcia to polisa kupiona wyłącznie dla certyfikatu — z wysoką sumą, ale bez ochrony czystych strat finansowych i błędów zawodowych, czyli dokładnie tych ryzyk, które w pracy programisty występują najczęściej.
