Wiele firm napotyka sytuację w której zostają postawione przed murem prac na stronie www. Być może trzeba coś nowego opublikować, zmienić lub dodać jakąś nową funkcjonalność. Wykonawca strony, sklepu czy aplikacji nie dokończył swojego zlecenia, wykonał je niepoprawnie lub urwał się z nim kontakt.
Jak zatem zabezpieczyć się na takie ewentualności i ryzyka? Jak zagwarantować sobie „święty spokój”, o którym tak często mówimy w kontekście współpracy z klientami Lemonovej? Biorąc pod uwagę fakt, iż wielu naszych klientów przejęliśmy po „złym” poprzednim wykonawcy przytaczamy tutaj rady na najczęściej pojawiające się bolączki.
Umowa na dobre i złe czasy
Naczelnym zadaniem umowy jest ochrona interesów stron, które ją zawierają. Wielu początkujących freelancerów lub agencji nie podpisuje umów ze względu na koszt ich sporządzenia, ryzyko niedopełnienia warunków lub jej wpływ na opóźnienie rozpoczęcia prac i tak naprawdę otrzymanie wynagrodzenia. Wiele wzorów umów jest też zbyt skomplikowanych, a zrozumienie egzekucji należnej pracy i wynagrodzenia jest często bardzo utrudnione.
Niestety, tak jak wskazałem, umowa jest niezbędna i ma za zadanie chronić interesy obu stron. Zleceniodawca czyli klient, otrzymuje swego rodzaju plan pracy i zobowiązanie drugiej strony do jego wypełnienia i stworzenia konkretnego efektu w czasie i materiale. Jeśli umowy brak, trudno wymagać terminowości, odpowiedzialności czy chociażby zaufania.
W typowej umowie na wykonanie prac web developmentu (np. stworzenie strony www) powinny się znaleźć kluczowe elementy: identyfikacja stron umowy, jej przedmiot, harmonogram prac i warunki wynagrodzenia. Do istotnych szczegółów należą: zaliczka i poprawki. Jeśli często wykonujemy małe prace dla wielu klientów to dużym ułatwieniem będzie posiadanie szablonu umowy dla takich prac.
Nawet stojąc po stronie klienta musimy pamiętać o kwestii zaliczki. Gdy razem z wykonawcą szacujecie użycie materiałów do zlecenia, zaliczka będzie sposobem na pokrycie kosztów, jak i deklaracją przekazania wynagrodzenia za pracę. Co do poprawek, to warto zamieścić w umowie tryb ich wprowadzania: co jeśli po wdrożeniu wystąpią błędy? Jak szybko zostaną naprawione? Na jaki kontakt możemy liczyć?
Planowanie prac i wdrożenia
Warto planować prace, które przekraczają 1 dzień roboczy lub mają wpływ na funkcjonowanie strony. Plan pracy pozwala zorganizować się obu stronom (np. dostarczenie materiałów przez klienta, wydzielenie czasu pracownika) i wskazać, na jakie etapy podzielono realizację. Dzielenie projektu na części przyniesie wymierne korzyści, jeśli pozwolimy klientowi „zajrzeć” i zweryfikować postęp prac w każdym z fragmentów.
Wykonawca strony internetowej lub innej aplikacji powinien też wskazać plan wdrożenia. Zaliczamy do niego opublikowanie wersji testowej i wdrożenie na produkcję, czyli finalną operację wg przedmiotu umowy. Wersja testowa w 99% przypadków w mniejszym lub większym stopniu odbiega od wyobrażenia klienta, ale nie przesądza o jakości pracy. Bardzo wiele wersji testowych, po konsultacjach z klientem, doprowadzanych jest do finalnego kształtu – im więcej konsultacji przed wersją testową, tym bardziej jest ona zbliżona do założeń projektowych.
Wdrożenie produkcyjne, czyli publikacja efektów w sieci to często zadanie dość bolesne lub pracochłonne. Tak naprawdę dobry plan wdrożenia powinien uwzględniać stworzenie wersji przedwdrożeniowej (np. lustrzany serwer lub folder), dzięki czemu przełączenie użytkowników na nowy serwis będzie niemal niezauważalne. Należy wymagać takiej wersji przedwdrożeniowej od wykonawcy. Przecież, nie chcemy zakłócić funkcjonowania obecnego serwisu, prawda?
Licencje i prawa autorskie
Praca z oprogramowaniem już stworzonym, a więc np. oprogramowaniem CMS (WordPress) lub e-commerce (PrestaShop, WooCommerce) to zazwyczaj instalowanie kupionych szablonów i wtyczek. Ważne, by wykonawca określił jakie prawa przysługują do zakupionego oprogramowania lub kodu oraz na jakich warunkach powinno się wykonywać aktualizacje.
Uwaga na gotowce!
Bardzo często szablony zakupione w Internecie są pozbawione licencji dodatkowych, np. na moduły czy zasoby multimedialne. Nie kupujmy zatem szablonu tylko „oczami”, gdyż wiele z pięknych zdjęć może się okazać niemożliwe do wykorzystania. W szablonach stron i sklepów zwróć uwagę na szybkość działania, intuicyjność i ilość przykładowych podstron. Dodatkowym kosztem będzie też zakup wtyczek w wersjach rozszerzonych, gdyż te oferowane z szablonem są zazwyczaj mocno okrojone z funkcjonalności i nie dają prawa do bezpłatnej aktualizacji.
W wielu przypadkach gotowe szablony kupione w serwisach agregujących tego typu rozwiązania (np. themeforest, templatemonster czy creativemarket) licencja zezwala na instalację tylko 1 kopii produkcyjnej na klienta oraz gwarantuje otrzymywanie bezpłatnych aktualizacji przez następne 12 miesięcy. Warto skonsultować z wykonawcą sposób aktualizacji oprogramowania oraz jego koszt. Nierzadko zmiany w kodzie nawet z oficjalnej paczki aktualizacyjnej mogą powodować błędy i dysfunkcję serwisu.
Inną kwestią są prawa autorskie do zamieszczanych i tworzonych treści. Umowa z wykonawcą powinna określać kto ma prawo do stworzonego kodu, jakich licencji udziela autor szablonu czy wtyczki oraz możliwości wykorzystania zdjęć, wideo i animacji. Wykonawca powinien wskazać pisemnie własność materiałów multimedialnych także w momencie, gdy zostają zakupione na rzecz projektu w serwisach stockowych płatnych (np. Adobe Stock, Shutterstock). Jeśli materiały pochodzą z repozytoriów bezpłatnych (np. Pexels), może być wymagana atrybucja autorstwa zdjęcia czy filmu.
Wersjonowanie kodu, dokumentacja i kopia zapasowa
Jedną z bolączek przejmowania pracy jednego programisty przez drugiego jest próba zrozumienia kodu źródłowego. Profesjonalny web developer powinien wersjonować zarówno kod oryginalny (stan przed podjęciem prac), jak i ten powstały w trakcie. Jeśli jako klient dysponujemy osobą o szerszej wiedzy informatycznej, warto poprosić ją o weryfikację jakości wprowadzanych zmian.
Uwaga na pułapkę!
Nierzetelni programiści i agencje bardzo często tworzą kod niskiej jakości i bez dokumentacji by tym sposobem zatrzymać przy sobie klienta. Komunikują tym samym, że tylko oni mogą programować dany system bo go „znają”. W „prawidłowym” świecie kod napisany w dowolnym języku oprogramowania powinien być możliwy do przekazania innemu programiście bez potrzeby wczytywania się w intencje autora.
Wykonawca, który nie chce zgadza się na przedstawienie zmian w kodzie lub nie udostępnia dokumentacji kodu nie może być nazywany rzetelnym usługodawcą IT. Dokumentacja nie musi być opisowa, wystarczy wskazanie parametrów wejściowych i wyjściowych tworzonych i przerabianych funkcji, by ktokolwiek, kto przejmie prace na tym kodzie, mógł odczytać strukturę i zależności. Ułatwia to z pewnością rozwój oprogramowania i utrzymywanie go w działaniu.
Wykonawca serwisu internetowego, którego nowa wersja zastąpi starą powinien wykonać kopię zapasową przed nadpisaniem zmian. Podobnie jest w przypadku nawet niewielkich modyfikacji. Jeśli nie będzie kopii zapasowej w momencie, gdy nowy kod zepsuje aplikację, naprawienie błędów potrwa o wiele dłużej i będzie kosztowne zarówno dla klienta, jak i użytkowników serwisu.
Gwarancja i usługi powdrożeniowe
Na co dzień piszemy dla naszych klientów tysiące linii kodu. Tak jak w przypadku pralki, telewizora czy samochodu, musimy zagwarantować działanie naszego kodu w oparciu o istniejącą architekturę. Wiele firm obawia się, że wpisując gwarancję do umowy będą zmuszeni ponosić koszty pracy w nieokreślonej przyszłości. Nic bardziej mylnego – jeśli wykonawca zastrzeże, że gwarancja obejmuje stan faktyczny na dzień wdrożenia, wszelkie poprawki będą mogły być wykonane tylko jeśli nie zmieni się środowisko, w którym pisany był kod.
Warto wiedzieć…
Najprostszym sposobem na to, by skutecznie wymagać poprawek jest zaproponowanie systemu dwóch iteracji (okrążeń). W pierwszym przebiegu poprawki powinny odnosić się do komentarza klienta. W drugim zaś, powinny być poprawkami poprawek, a więc doprowadzeniem do 100% założeń projektu. Może to oczywiście wymagać dodatkowej konsultacji.
Z drugiej też strony, klient powinien wymagać informacji o gwarancji na wprowadzane rozwiązania, gdyż w ten sposób ustrzeże się przed przykrymi niespodziankami. Gwarancja powinna być określona tak długo, jak pozwala na to licencja oprogramowania, jej cykle aktualizacyjne lub częstotliwość wprowadzanych zmian. O wiele lepszym rozwiązaniem jest oczywiście doprowadzenie do skutecznego wdrożenia i późniejszy rozwój z tą samą firmą, jednak tak jak w przypadku umowy, gwarancja ma chronić obie strony przed niespodziewanym kosztem i kłopotami.
Powtórzmy najważniejsze aspekty
Jako klient w momencie doboru zleceniobiorcy na wprowadzanie oprogramowania powinieneś pamiętać o następujących elementach:
- Stworzenie i podpisanie umowy wraz z harmonogramem, opisem prac i warunkami wynagrodzenia
- Uzgodnienie planu działań i planu wdrożenia
- Wskazanie praw autorskich do stworzonego dzieła oraz zasad licencji oprogramowania i materiałów
- Zapewnienie o prowadzeniu wersji kodu, kopii zapasowych i dokumentacji
- Uzgodnienie gwarancji i warunków jej realizacji wraz z dalszym rozwojem produktu