ML: W umowie o pracę znajdziemy obowiązkowe elementy stałe, dlatego większe modyfikacje nie są możliwe do wdrożenia. Jednak kontrakt cywilnoprawny daje nam swobodę konstruowania postanowień umownych. Dzięki temu strony mogą zawrzeć w nim wszystkie postanowienia, które nie będą sprzeczne z przepisami prawa, naturą konkretnego stosunku prawnego, czy zasadami współżycia społecznego.
Taka elastyczność skłania do przemyślenia, jakie elementy powinna zawierać umowa z programistą i jak stworzyć odpowiedni model wynagrodzenia. Oto kilka cennych wskazówek:
1. Szczególne znaczenie ma określenie typu umowy. Przy współpracy jednorazowej, np. w celu zaprojektowania aplikacji, można zawrzeć umowę o dzieło. Gdy jednak będzie to tworzenie kodu źródłowego lub długotrwała optymalizacja, lepiej wybrać umowę zlecenie. Często wykorzystywanym rozwiązaniem jest też tzw. umowa ramowa, czyli taka, w obrębie której zawiera się kolejne, mniejsze kontrakty odpowiadające danemu fragmentowi prac. Jednak ogólne zasady takiej współpracy określa umowa ramowa.
W sektorze IT znajdziemy też liczne umowy nienazwane, łączące poszczególne konstrukcje z kodeksu. Taka opcja sprawdzi się np. przy łączeniu przygotowania software’u z wdrożeniem i utrzymaniem, czyli w przypadku mniej standardowych usług.
2. Druga kwestia to oznaczenie przedmiotu umowy. Chodzi o określenie usługi, która ma zostać wykonana przez programistę. Poważniejsze problemy mogą wystąpić przy interpretowaniu postanowień umownych, dlatego przy określeniach technicznych warto od razu zawrzeć ich definicje umowne (np. przy takich określeniach jak działająca aplikacja czy dokumentacja). Szczegółowe opisy pozwolą na uniknięcie sporów sądowych związanych z niewykonaniem lub nienależytą realizacją postanowień umowy.
3. Trzeci element, na który warto zwrócić uwagę, to model wynagrodzenia. Współpraca z programistą rzadko ma ustaloną pensję. Wynagrodzenie wylicza się zwykle na podstawie jednego z tych schematów:
- fixed price – czyli wysokość wynagrodzenia ustalana w kontekście wykonania i oddania całego projektu (model często stosowany przy kontraktach zbliżonych do umów
- time and material – uzależnienie wysokości wynagrodzenia od czasu pracy specjalisty (model często stosowany przy kontraktach zbliżonych do umowy zlecenia).
Można również umówić się na mixed remuneration, czyli przyznawanie wynagrodzenia głównego za projekt oraz odrębne wycenianie poprawek i zmian godzinowo.
4. Ostatni element, nie mniej ważny, to klauzule poufności i zakazu konkurencji. Mowa o zabezpieczeniu umowy, co wynika zazwyczaj z postanowienia NDA (obowiązku zachowania poufności) zabezpieczającego interesy i know-how pracodawcy, oraz z zakazu konkurencji. Ta druga kwestia chroni stronę zlecającą przed tzw. employee poaching i stabilizuje stosunki między firmą, a specjalistą wykonującym zlecenie.
Warto, aby złamanie postanowień zawartych w klauzulach skutkowało karami umownymi. To dobry sposób na zdyscyplinowanie obu stron kontraktu.