Minulta kysytään usein, millaisista seikoista asiakkaan ja ohjelmistotoimittajan välillä tulisi sopia. Käyn seuraavassa tiiviisti läpi tärkeimpiä asioita.
Tekijänoikeudet
Asiakkaalle räätälöidyssä ohjelmistokehityksessä myös tekijänoikeuksien tulee kuulua työn maksajalle, eli asiakkaalle. Muuten syntyy ikävä toimittajalukko.
Tyytyväisyystakuu
En suosittele kiinteää hintaa. On fiksumpaa tehdä ohjelmistokehitystä aikapohjaisella veloituksella. Esimerkiksi maksuerittäin sovittava tyytyväisyystakuu lisää asiakkaan luottamusta toimittajaan.
Toteutustiimi
On hyvä listata sopimuksessa, millaisella porukalla yhteistyötä lähdetään tekemään.
Millä ehdoilla tiimistä saa vaihtaa tekijän
Sopikaa henkilövaihdosten pelisäännöt. Ei kannata vaatia kovia sanktioita muutoksista tiimiin, sillä asiantuntijat voivat erinäisistä inhimillisistä syistä toivoa vaihdosta. Pidemmissä projekteissa olisi kuitenkin hyvä jos tiimi pysyisi samana esimerkiksi ensimmäisen vuoden ajan, ja sen jälkeen toimittaja vastaisi uusien tiimiläisten sisäänajon kustannuksista.
Alihankkijoiden hyödyntäminen
Tiimiin kannattaa ottaa parhaat saatavilla olevat tekijät. Jos jonkin alueen paras osaaminen löytyy toimittajan alihankkijalta, on järkevää hyödyntää tilaisuus. Asiakkaalla pitää toki olla päätösvalta jokaisen asiantuntijan kohdalla.
Vastuut ja velvollisuudet
Erityisesti projektin koordinointivastuusta ja raportoinnista tulee aina sopia. Muuten toimittaja voi odottaa esimerkiksi voimakkaampaa projektinvetoa kuin mihin asiakkaalla on kyvykkyyttä.
Muut ehdot
Tyypillisesti sopimuksissa viitataan myös IT2018-ehtoihin. Asiakkaan kannattaa aina tutustua niihin. IT2018-ehdot esimerkiksi pitävät tekijänoikeudet toimittajalla, jos muuta ei sovita.
Avoimen lähdekoodin hyödyntäminen
Ohjelmistokehityksessä hyödynnetään runsaasti vapaasti saatavilla olevia komponentteja. Yksi komponentti toteuttaa tyypillisesti jonkun järjestelmässä tarvittavan asian, kuten esimerkiksi tietokannan käsittelyn tai vaikkapa päivämäärän valitsimen. Näihin komponentteihin liittyy aina jokin lisenssi, joka määrittelee miten koodia saa hyödyntää. Jos toteutustyössä käytetään Copyleft-lisensoitua komponenttia, saattaa se pahimmillaan tuhota asiakkaan liiketoiminnan. Copyleft-lisenssi voi pakottaa lisensoimaan kaiken ohjelmistossa hyödynnetyn koodin samalla lisenssillä. Tämä poistaa toimittajalta ja asiakkaalta kaikki tekijänoikeudet (siksi sanaleikki copyright<->copyleft) ja tekee koko lopputuotoksesta vapaasti hyödynnettävää kenelle tahansa. Tunnetuin Copyleft-lisenssi on GPL.
Näistä syistä toimittajan ja asiakkaan täytyy ehdottomasti sopia, millaisia komponentteja saa hyödyntää, ja näistä komponenteista sekä niiden lisensseistä pitää ylläpitää ajan tasalla olevaa listaa. Koska kyseessä on aika monimutkainen, lähinnä ohjelmistokehityksessä esiintyvä asiakokonaisuus, on toimittajan vastuulla varmistaa, että asiakkaalla on riittävä ymmärrys lisenssien merkityksestä.
Takuutyö
Rapatessa roiskuu ja koodatessa syntyy myös bugeja. Sopikaa millainen ongelmien korjaus kuuluu laskutettavaan työhön ja millainen takuutyöhön.
Erityisesti monia avoimen lähdekoodin komponentteja kehitetään jatkuvasti eteenpäin, mikä aiheuttaa lisätyötä versiopäivitysten myötä. Nämä päivitykset kuuluvat normaalin ohjelmistokehitystyön piiriin. Fiksu toimittaja varmistaa, että asiakkaalla on mahdollisimman aikaisessa vaiheessa tieto tulevassa olevista päivitystöistä, jotka voivat joskus aiheuttaa merkittävästikin lisätyötä.
Ylläpito, jatkokehitys ja palvelutasosopimus (SLA)
Tyypillinen ohjelmisto ei koskaan tule valmiiksi, vaan vaatii huolenpitoa myös käyttöönoton jälkeen. Ihanteellisessa tapauksessa tämä käyttöönotto tehdään heti, kun pienin tarvittava toiminnallisuus on valmiina, jotta koodi saadaan tuottamaan mahdollisimman nopeasti arvoa.
Sopimuksessa pitää sopia, kuka vastaa ohjelmiston ylläpidosta ja valvonnasta, missä ympäristössä järjestelmää ajetaan ja mitä se maksaa. SLA-ehdoilla sovitaan esimerkiksi siitä, kuinka paljon järjestelmältä sallitaan saavuttamattomissa oloa ja miten nopeasti ongelmatilanteisiin tulee reagoida. Reagointiajat jaotellaan tasoihin ongelman kriittisyyden mukaan.
Henkilötietojen käsittely
EU:n tietosuoja-asetus (GDPR) velvoittaa sopimaan henkilötietojen käsittelystä. Tässä tyypillisesti hyödynnetään esimerkiksi IT2018 EHK ‑sopimusta tai vastaavaa vakiopohjaa.
Usual suspects
Loppuun vielä lista muista sovittavista asioista. Ne tuskin kaipaavat tarkempaa esittelyä.
- Aikataulu
- Hinnoittelumalli
- Hintojen voimassaolo
- Hintojen korotusehto
- Maksuehto
- Matka-ajan korvaus
- Sopimuksen voimassaoloaika
- Salassapitovelvollisuus
- Korvausvelvollisuus
- Viestintäkanavat
- Työskentelypaikka
- Kenen tarjoamia työvälineitä käytetään
- Rekrytointirajoitukset
- Referenssioikeus