Kertomus sivutoimisen yritykseni tekemästä asiakasprojektista. Tavoitteena oli automatisoida erään yrityksen tietojen hakua internetistä. Teknisessä mielessä kyseessä oli hakurobotti Amazonin pilvilaskenta-alustalle (AWS).
Hakurobotin testaus lähtee nopeasti liikkeelle, mutta laajenee hallitsemattomasti
Projekti nytkähti liikkeelle saatuani puhelun mahdolliselta asiakkaalta sivutoimiselle yritykselleni. Soittaja oli lukenut blogistani juoksuprojektistani ja samalla törmännyt toteuttamaani automatisoituun tietojen hakuun netistä.
Asiakasyritys kartoitti jatkuvasti, löytyykö kilpailijoilta heidän tuotteitaan vastaavaa tarjoomaa muualta internetistä. Tätä tehtiin nyt käsin, ja työ haluttiin automatisoida.
Minulle soittanut yhteysenkilö oli itse asiassa vuosia varsinaisen asiakkaan kanssa työskennellyt ulkopuolinen konsultti. Viittaan häneen kirjoituksessa nimellä konsultti.
Aloimme suunnittelemaan hakurobotin toiminnallisuuksia konsultin kanssa. Molemmat olivat yhtä mieltä siitä, että lähdetään pienellä kokeilulla liikkeelle. Ensimmäisen testiversion arvelin olevan valmis 3-4 työpäivää vastaavassa ajassa.
Aluksi lähdin kokeilemaan eri teknologioita löytääkseni käyttötarpeeseen parhaan vaihtoehdon. Samalla kävimme konsultin kanssa keskusteluja tarpeista ja tiedonsiirtorajapinnasta.
Ajatus tarkentui vauhdissa.
Toteutus valmistuu parin kuukauden aikana ja tilanne näyttää hetken hyvältä
Kävin asiakkaan toimistolla esittelemässä työn etenemistä. Aistin hienoista pettymystä, kun hakurobotti kykeni automatisoimaan vain osan työvaiheista. Sovimme, että jatkan kehitystyötä.
Alkuperäinen kevyt menetelmätestaus alkoi muuttua hiljalleen hakurobotin integroinniksi yrityksen tietojärjestelmien kanssa. Hälytyskellojen olisi pitänyt soida keskittymisen rönsyillessä.
Huomasin alkuperäisen työarvion menevän parilla päivällä pitkäksi. Konsultin mukaan tämä oli ok.
Työ eteni verkkaisesti, koska kävin ensisijaisesti normaalissa päivätyössäni. Arki-iltaisin en jaksanut enää koodata ja viikonloppuisin oli usein menoa.
Sain osuuteni tehtyä säädyllisessä ajassa parin kuukauden kuluessa. Lopputulos oli eräänlainen mikropalvelu. Hakurobotille lähetettiin tietoja yrityksen tuotteista ja takaisin sai listan vastaavista netistä löytyneistä hakutuloksista.
Konsultin tehtävänä oli ohjelmoida asiakasyrityksen järjestelmä kommunikoimaan hakurobotin kanssa.
Kommunikaatiokatkos aiheuttaa epäselvyyksiä laskutukseen
Osuuteni ollessa toimintavalmis sain laskutusohjeet konsultilta. Olin kuvitellut hänen pitävän asiakasyrityksen toimitusjohtajan ajantasalla. Niin tai näin, tieto ei ollut kulkenut.
Laskun eräpäivän lähestyessä toimitusjohtaja soitti. Hän ei ollut lainkaan perillä siitä, mitä yritykselle oli tehty ja mihin työtunnit käytetty. Olin tavannut toimitusjohtajan esitellessäni työn edistymistä.
Lähetin toimitusjohtajalle ratkaisun dokumentaation ja kirjaukset tekemistäni työtunneista. Sovimme lisäaikaa laskun maksamiseen.
Laskua ei kuulunut uuteen määräpäivään mennessä. Kaiken epävarmuuden jälkeen oli stressaavaa selvittää tilannetta.
Sovitun maksupäivän reilusti umpeuduttua sain vihdoin toimitusjohtajan kiinni puhelimella. Lopulta maksuasia saatiin hoidettua yhteisymmärryksessä.
Jatkokehitys odotustilassa kuukausia
En kuullut mitään työn edistymisestä toisessa päässä pitkään aikaan. Tuntui ikävältä, että projekti oli jäänyt epämääräiseen odotustilaan.
Muutaman kuukauden kuluttua toimitusjohtaja laittoi viestiä, että konsultti ei syystä tai toisesta tulisi tekemään osuuttaan loppuun. Hakurobottini vaatisi muutoksia, että järjestelmän lisäksi myös ihmiskäyttäjä pystyisi hyödyntämään ominaisuuksia.
Laitoin parin viikon sisään ehdotuksen uudesta toiminnallisuudesta vanhan konsultin tilalla aloittaneelle uudelle konsultille.
Jälleen kului kolmisen kuukautta, kunnes uusi konsultti kertoi yrityksen olevan valmis aloittamaan hakurobotin testaamisen. Testasin vielä hakurobotin toiminnallisuudet, ja lähetin käyttäjätunnukset.
Kehitystyö jäihin yli vuosi projektin aloittamisesta
Taas kului muutama viikko. Soittelin yritykseen ja kysyin, onko hakurobottia päästy testaamaan. Kuulemma joku oli kokeillut, mutta ei ollut saanut juonen päästä kiinni.
Robotti sinänsä toimi, mutta viestintä ja perehdytys oli ollut puutteellista. Tästä itselläni olisi ollut parantamisen varaa. Olisin voinut ajatella loppukäyttäjää jo varhaisemmassa vaiheessa. Tietysti olin toiminut sen hetkisen tietämykseni huomioiden parhaalla mahdollisella tavalla.
Ehdotin seuraaviksi askeliksi käyttötarpeen tarkennusta hakurobotin saamiseksi hyötykäyttöön.
Jälleen kului viikkoja. En tavoittanut asiakasta puhelimitse, joten laitoin sähköpostia. Ehdotin tapaamista, koska olin tavannut toimitusjohtajan vain kerran, ja uutta konsulttia en ikinä.
Sain viimein vastauksen, jossa todettiin kehitystyön menevän jäihin.
Mitä opin tästä asiakasprojektista?
Teknologia on haasteista pienin. Vaikka teknisen ratkaisun suunnitteluun ja toteuttamiseen kului merkittävä määrä aikaa, ei se jälkiviisana ollut isoin haaste. Tärkeämpää olisi ollut saada työntekijät mukaan suunnitteluun ja innostumaan heti alusta asti.
Kommunikaatiota ei voi koskaan olla liikaa. Epäselvyydet laskutuksissa, projektin tavoitteet ja rajaaminen, käyttäjien mukaan ottaminen. Esimerkiksi tapaamisia oli käytännön syistä liian vähän.
Pitää riittää, että tekee parhaansa. Koen voimakasta onnistumisen velvollisuutta asiakasprojekteissani. Tässäkin projektissa mielestäni pidin asiakasta ajantasalla, tein toimenpide-ehdotuksia hankalissa paikoissa, joustin laskutusasioissa ja rakensin toimivan sovelluksen. Silti käyttöönotto jäi puoliväliin.
Projekti oli todella kuormittava, enkä olisi itseltäni voinut enempää vaatia. Voin rehellisesti sanoa antaneeni kaikkeni ja sen täytyy riittää. Vaikka kuinka haluaisin auttaa asiakasta, asikkaallakin on vastuu tilauksestaan.
Oma ajan- ja jaksamisenhallinta. Ymmärsin, että pysty tekemään vastaavia kommunikointia ja aikatauluttamista vaativia projekteja päivätyön ohessa. Pohdinta johti isoon muutokseen yritystoiminnassani.
Projektin tekninen kuvaus
Teknisestä toteutuksesta on kirjoitettu oma blogi: Hakurobotti AWS-pilvialustalle - Tekninen kuvaus.