Najważniejsze elementy umowy IT.
Każdy projekt informatyczny posiada swoją specyfikę jednak niezależnie od tego, czy mówimy o prostym zleceniu czy kontrakcie za grube miliony, współpraca stron następuje w oparciu o umowę. Jakie elementy są kluczowe w każdym kontrakcie informatycznym?
- Przedmiot umowy.
Brzmi to jak truizm, ale najważniejszą sprawą w każdej umowie jest określenie jej przedmiotu. Możemy mieć do czynienia z umową wdrożeniową (instalacja danej aplikacji w określonym systemie operacyjnym użytkownika), utrzymaniową (sprawowanie nadzoru nad danym serwisem i reagowanie na ewentualne błędy) lub umową o stworzenie oprogramowania (rodzaj umowy o dzieło, w której rezultatem jest stworzenie konkretnego programu. Bardzo często umowy łączą cechy poszczególnych typów (np. umowa o stworzenie oprogramowania, jego wdrożenie w istniejący w danej firmie system aplikacji zewnętrznych, a później jego rozwój i utrzymanie). Zdarza się, że współpraca między firmą informatyczną a klientem wykracza poza standardową usługę programistyczną i obejmuje na przykład szkolenie pracowników. Wszystko to sprawia, że kluczowe znaczenie ma dokładne określenie przedmiotu umowy. W praktyce oznacza to, że nie wolno oszczędzać czasu ani środków na wypracowaniu jak najdokładniejszego opisu rezultatu, która ma zostać osiągnięty. Najlepszym rozwiązaniem jest stworzenie specyfikacji zamówienia, która będzie załącznikiem do umowy. Ważne jest, aby na tym etapie negocjacji połączyć siły prawników i informatyków, bo tylko w ten sposób można połączyć wiedzę techniczną z wymogami prawa zobowiązań.
Wskazówki:
– Wprowadź specyfikację techniczną jako załącznik do umowy.
– Wprowadź słowniczek pojęć i upewnij się, że obie strony umowy w ten sam sposób interpretują zastosowane wyrażenia.
– Stosuj precyzyjne terminy techniczne, unikaj wyrażeń ocennych i opisowych.
- Harmonogram prac i ewentualne zmiany.
Każda umowa realizowana jest w określonym terminie. W większości wypadków bywa tak, że software house zobowiązuje się do osiągnięcia danego rezultatu w określonym czasie. W świecie idealnym kontakt kończy się wraz z upływem przewidzianej daty. Niestety, rzeczywistość rządzi się swoimi sprawami. Czasem opóźnienia wynikają z siły wyższej (epidemie, działania wojenne prowadzone na terenie, na którym pracuje zewnętrzna część zespołu), innym razem wynikają ze złej organizacji pracy. Ważne, aby określić, za jakie opóźnienia odpowiada wykonawca oraz jakie są konsekwencje tych opóźnień (sposób naliczania ewentualnych kar umownych). Częstym rozwiązaniem jest wprowadzenie kamieni milowych, których terminy naliczane są od zakończenia każdego pojedynczego etapu. Dobrym pomysłem jest wprowadzenie procedury sanacyjnej, a więc mechanizmu opartego na komunikowaniu przez firmę informatyczną ewentualnych problemów celem uniknięcia ich konsekwencji finansowych. Niezależnie od wszystkiego, najlepszym rozwiązaniem jest planowanie pracy i przewidywanie jej zakończenia z rozsądnym zapasem czasu na nieprzewidziane zdarzenia.
Wskazówki:
– Planuj realizację projektu z buforem bezpieczeństwa.
– Określ, jakie są konsekwencje niedotrzymania terminu i za jakie opóźnienia odpowiadasz,
– Rejestruj wszystkie przestoje zawinione przez zleceniodawcę.
- Współpraca stron.
Ten punkt nierozerwalnie łączy się z poprzednim. Niedotrzymanie terminu umowy w wielu przypadkach wynika z niedostatecznej współpracy pomiędzy stronami. Programiści nie pracują w oderwaniu od realiów biznesowych klienta, a praktyka realizacji umowy niemal zawsze obnaża niedociągnięcia umowy. Nie wszystko można przewidzieć w specyfikacji technicznej, a niektóre projekty, szczególnie te większe, realizowane w dłuższych jednostkach czasu, wymagają elastycznego podejścia do zmieniającej się rzeczywistości. Każdy szef zespołu lub PM zna ze swojego doświadczenia sytuację, w której projekt nie może ruszyć z miejsca z uwagi na brak informacji ze strony zamawiającego. Aby uniknąć tego typu nieporozumień, warto wprowadzić w kontrakcie funkcję koordynatorów reprezentujących obie strony i określić formę komunikacji (najlepszym rozwiązaniem jest e-mail, gdyż pozwala zachować historię korespondencji). Dobrym rozwiązaniem jest też wprowadzenie mechanizmu odbioru poszczególnych kamieni milowych w formie protokołu (nawet elektronicznego) z uwagami stanowiącymi informację zwrotną. Nie bez znaczenia – przynajmniej z punktu widzenia firmy informatycznej – jest dobre przygotowanie się do kontraktu poprzez dokładne zbadanie potrzeb klienta, jego zaplecza technologicznego, kompetencji zespołu wdrożeniowego oraz wyobrażeń na temat projektu. Pozwoli to nie tylko prawidłowo wycenić projekt, ale też ułatwi jego realizację poprzez zbudowanie potrzebnej wiedzy o kliencie.
Wskazówki:
– Poproś zamawiającego o wskazanie osoby do komunikacji i wpisze jego nazwisko do umowy.
– Zbadaj potrzeby klienta i jego wyobrażenie o projekcie przed podpisaniem kontraktu.
- Prawa autorskie.
Kwestia praw autorskich ma szczególne znaczenie w umowach o stworzenie oprogramowania. Tworzony program jest utworem w myśl przepisów Prawa Autorskiego i z tego tytułu jego twórcy (firmie informatycznej) przysługują określone prawa. W praktyce funkcjonują dwa podstawowe modele uregulowania kwestii praw autorskich: licencja (pozwolenie na warunkowe użytkowanie danej aplikacji) oraz przeniesienie praw autorskich (firma przenosi prawa autorskie na klienta, określając pola możliwej eksploatacji, czyli wykorzystania utworu). W przypadku modelu licencyjnego ważne jest, aby określić warunki jej wykorzystania, a przede wszystkim ustalić, czy jest to licencja wyłączna czy nie (w tym drugim wypadku firma informatyczna może sprzedać prawa do programu czy aplikacji wielu innym klientom). Gdy strony decydują się na przeniesienie praw autorskich na klienta, pamiętać należy o pisemnej formie przeniesienia tych praw oraz wskazaniu wszystkich możliwych pól eksploatacji (wykorzystywanie, powielanie, dystrybucja cyfrowa itp.). Należy pamiętać, że przenosić można jedynie prawa majątkowe. Obok praw majątkowych funkcjonują prawa osobiste autora (np. prawo do mienienia się twórcą utworu), których nie można przenosić, ale co do których można zawszeć osobne porozumienie i umówić się z twórcą, że nie będzie ich wykonywał (co w praktyce będzie oznaczać, że twórca pozostanie w cieniu i nie będzie się chwalił statusem autora). Kwestia praw autorskich w ostatnim czasie zyskała szczególnego znaczenia z uwagi na ulgę podatkową IP BOX która przysługuje w przypadku przenoszenia praw autorskich.
Wskazówki:
– Ustal, czy udzielasz klientowi licencji czy przenosisz na niego prawa autorskie.
– Ustal, w jaki sposób klient będzie korzystał z Twojego oprogramowania (pola eksploatacji).
- Wynagrodzenie.
Wynagrodzenie w projektach IT może przybierać co do zasady dwojaką formę: może mieć postać ustalonego z góry ryczałtu (ten model jest powszechny w przypadku kontaktów zawieranych we wszelkiego rodzaju przetargach publicznych, gdzie oferenci konkurują z góry oznaczoną ceną) lub zostać określone w oparciu o metodę kosztową (zwykle stawka godzinowa pracy informatyka). W przypadku metody ryczałtowej kluczowe znaczenie ma właściwe wyliczenie zaproponowanej stawki. Wzrost wynagrodzeń, rosnąca inflacja oraz wysoka konkurencyjność na rynku pracownika sprawiają, że stawka opłacalna w dniu podpisania umowy nie będzie już tak efektywna po upływie kilku miesięcy. Metoda kosztowa oparta o stawkę godzinową wydaje się być pozbawiona tej wady, jednak w tym wypadku istotne jest wprowadzenie metody rozliczenia wykonanej pracy i nadzoru ze strony klienta, aby nie narazić się na zarzut oszustwa. W obu modelach można pokusić się o klauzule waloryzacyjne i zabezpieczające interesy obu stron (dla przykładu: w modelu ryczałtowym warto pomyśleć o waloryzacji stawki w oparciu o stopę inflacji, a w metodzie kosztowej można wprowadzić przewidywaną pulę godzin na dane zadanie, powyżej której kontynuowanie prac zależy od akceptacji klienta).
Wskazówki:
– Oszacuj, jak długo będzie trwała realizacja umowy i ustal, czy inflacja nie ma istotnego wpływu na rentowność danego kontraktu.
– Wprowadź mechanizmy kontroli wynagrodzenia niezależnie od modelu, który wybrałeś.