Podczas konferencji, w której niedawno brałem udział, jedna z uczestniczek reprezentująca firmę IT zgłosiła problem polegający na tym, że spora część programistów w trakcie wykonywania pracy korzysta z open source`owych kodów, które wykorzystuje sprzecznie z licencjami. Zetknęła się nawet z przypadkiem, że użyte kody w ogóle nie były na wolnych licencjach. Dodała, że mimo wielu prób nie udało się wyeliminować tej praktyki, prowadzącej nie tylko do kłopotów wewnątrz firmy związanych z naruszeniem praw autorskich do kodów źródłowych, ale również problemów zewnętrznych – dostarczone kontrahentom rozwiązania były obarczone wadami prawnymi. Podczas dyskusji, która później nastąpiła pojawiło się kilka pomysłów. Ja zaproponowałem wprowadzenie kar umownych dla tych programistów, którzy współpracują z firmą w ramach B2B. I choć ta sugestia spotkała się z aprobatą uczestników panelu dyskusyjnego, to pojawiły się obawy, że biorąc pod uwagę aktualne realia rynku IT, kary umowne mogłyby zrazić sporą część deweloperów.
Kara umowa – pozorna ochrona interesów zleceniodawcy
Zanim przejdę do kwestii prawnych, podzielę się opinią na temat kar umownych sformułowaną przez jednego z uczestników konferencji, zarządzającego jednym z najprężniej rozwijającym się software house`ów w Polsce. Otóż w przypadku włączenia do kontraktu kar umownych, szczególnie gdy opiewają na wysokie kwoty, kalkuluje on odpowiednio wyższą cenę za usługi deweloperskie, tak aby finalnie umowa, którą zawiera w każdym przypadku przynosiła zysk. Tym samym, ochrona interesów zleceniodawcy poprzez kary umowne może okazać się czysto pozorna. Finalnie bowiem, nawet w przypadku naliczenia kar, i tak w najlepszym wypadku, zapłaci on za usługę software house tyle, ile przyszłoby mu zapłacić, gdyby kary umowne nie zostały wprowadzone.
Jaki z tego wniosek? Kary umowne wcale nie są najlepszym sposobem zabezpieczenia umowy, a w przypadku prawidłowego i terminowego wykonania kontraktu mogą prowadzić wręcz do tego, że usługa software house’u będzie droższa niż w przypadku braku takiego zastrzeżenia. Jeśli dodatkowo uświadomimy sobie, że w świetle prawa kary umowne można zastrzec wyłącznie w przypadku, gdy umowa zostanie niewykonana lub nienależycie wykonana, to okaże się, że sens ich stosowania stoi pod dużym znakiem zapytania, a już na pewno nie stanowi wystarczającego zabezpieczenia dla zleceniodawcy.
Jak chronić swoje interesy zawierając umowę z software house’em?
Opcji jest kilka, a najlepszym rozwiązaniem jest wdrożenie ich wszystkich jednocześnie. Do najważniejszych z nich należą:
- Podział projektu na etapy połączony ze sformalizowaną procedurą odbiorową, od której pozytywnego wyniku zależy zapłata danej części wynagrodzenia.
- Możliwość powierzenia całości lub części projektu innemu softwere house`owi w przypadku nieterminowości lub nieprawidłowego wykonywania umowy.
- Wprowadzenie exit planu, czyli procedury umożliwiającej przedterminowe rozwiązanie umowy.
1. Podziel projekt na etapy i uzależnij zapłatę danej części wynagrodzenia od dokonania odbioru danego etapu
Podzielenie projektu na etapy nawet w przypadku pracy w modelu kaskadowym da możliwość bieżącej weryfikacji postępów prac, co z kolei może być szczególnie istotne wziąwszy pod uwagę ryzyko opóźnień. W innych przypadkach, gdy korzystasz ze zwinnych metod projektowych takie rozwiązanie jest oczywistym następstwem ich wyboru, więc należy pamiętać, że aktywność product ownera jest nie tylko kwestią uprawnień, ale też realną powinnością, bez której powodzenie projektu jest co najmniej zagrożone. Warto też pamiętać, że odbiór każdego kolejnego etapu musi się wiązać ze sformalizowaną procedurą tak, aby było wiadomo na jakim etapie jest dany element aplikacji i kiedy (realnie) został ukończony. Nie jest tu konieczna taka precyzja jak w blockchainie, jednak dokładne uregulowania z pewnością są wskazane.
2. Zadbaj o możliwość wdrożenia wykonania zastępczego
Warto zadbać także o to, by możliwe było wdrożenie wykonania zastępczego. Innymi słowy, jeśli dany etap prac jest niewykonany, a umowa z software house’em jest właściwie skonstruowana, jest możliwość zlecenia wykonania przedmiotu umowy na koszt i ryzyko firmy, której pierwotnie zlecono projekt. Warto też precyzyjnie wskazać przypadki, kiedy wykonanie zastępcze będzie mogło dotyczyć całego projektu. Będzie to tym bardziej ułatwione, jeśli wykonawca zostanie zobowiązany do regularnego przekazywania kolejnych rezultatów swoich prac wraz z prawami do nich. W szczególności chodzi tu o prawa autorskie, licencje, kody źródłowe, dokumentację czy nawet know-how. Bez tych postanowień umownych istnieje ryzyko, że nowy wykonawca w praktyce nie będzie mógł kontynuować prac czy modyfikować prac już wykonanych.
3. Wprowadź exit plan
Procedury odbiorowe są tym bardziej istotne, gdy włączy się do nich także „plany awaryjne”. Oczywiście, sam fakt nieodebrania danego etapu prac, szczególnie jeśli implikuje jednocześnie brak płatności za jego (nie)wykonanie, jest już daleko posuniętą mobilizacją dla software house’u. Kolejną rzeczą, o której trzeba pomyśleć, jest kwestia dotycząca możliwości rozwiązania umowy. W przypadku umów agile mówi się o exit plan, który wprowadza się na wypadek, gdyby projekt miał być nie zakończony. W każdym jednak przypadku w umowie powinna być zastrzeżona możliwość jej wypowiedzenia, a nawet odstąpienia od wykonania w sytuacji, gdy współpraca układa się źle i nie rokuje dostarczenia prawidłowo wykonanego oprogramowania.
Wskazane wyżej kwestie to oczywiście nie wszystkie rozwiązania, jakie można zastosować, aby umowa była korzystna dla zamawiającego i w przypadku, gdy software house nie zapewnia oczekiwanych wyników pracy albo narusza terminy. Są to jednak z całą pewnością kluczowe i obligatoryjne elementy, które powinny zostać wprowadzone do umowy.
Kary umowne – kiedy mają sens?
Czy w takim razie powinno się całkowicie zrezygnować ze stosowania kar umownych w kontraktach z software house’ami? Tak daleko idącej tezy nie odważę się postawić, choć trzeba też wziąć pod uwagę choćby fakt, że w wielu przypadkach sądy mogą ostatecznie te kary obniżyć. Zastrzegając kary umowne należy jednak pamiętać o kilku kwestiach:
- Warto wprowadzać je racjonalnie. Sąd raczej nie uwzględni takich, które przewidują kilka procent ceny za każdy dzień opóźnienia. Prawnicy software house z pewnością znają metody miarkowania kar umownych, więc niewątpliwie wykorzystają je w sporze. Co prawda nie sposób abstrakcyjnie określić wysokości kary umownej, która będzie adekwatna do wszystkich możliwych przypadków jednak wydaje się raczej skazane na niepowodzenie określenie jej w wysokości wyższej niż 1% wynagrodzenia umownego za dzień opóźnienia.
- Trzeba pamiętać o tym, by wprowadzając kary umowne wskazać w umowie, że jeśli szkoda będzie wyższa niż zastrzeżona na wypadek jej wystąpienia kara umowna, będzie można dochodzić odszkodowania w wyższej kwocie. Bez tego zastrzeżenia może się okazać, że kary umowne zamiast chronić interesy firm, ostatecznie będą dla niej niekorzystne.
- Szczególnie przy większych projektach dobrze jest wprowadzić postanowienia zgodnie z którymi w przypadku, gdy kary umowne, które choćby formalnie mogą zostać naliczone osiągną określony pułap, będzie możliwość wypowiedzenia albo odstąpienia od umowy. Są bowiem w biznesie takie momenty, kiedy dalsza współpraca po prostu nie ma sensu.
Rozliczenia z software house’em – korzystnie, czyli jak?
Jak zatem rozliczać się z software house’em? Przede wszystkim rzetelnie i tego samego oczekiwać od niego – szczególnie w kontekście jakości i terminowości wykonania zleconego oprogramowania. Na szczęście niezależnie od tego, czy zdecydujemy się na zastosowanie kary umownej czy nie, jest wiele innych sprawdzonych mechanizmów takich jak choćby podzielenie projektu na części, exit plan, czy też wykonanie zastępcze, które dla własnego bezpieczeństwa warto stosować w umowach z twórcami oprogramowania.
Autor:
Piotr Kantorowski
radca prawny, wspólnik w Kancelarii Prawnej Kantorowski, Głąb i i Wspólnicy sp. k