Kuidas see küll juhtuda sai ehk let’s make mistakes

Meie hea naaber Telia sai täna tugeva sotsiaalmeedia-klopperi tänu ühele ebaõnnestunud e-postitusele. “Kuidas see sai juhtuda!!?!” küsivad nördinud kodanikud, spetsialistid ja ilmselt ka Helin…

Aga lubage, ma räägin teile kuidas see saab juhtuda. Mina sain ise kah täna samasuguse jamaga hakkama – ning MailChimpi hirmuhigipisaratega kirja-saatmise-nupu-animatsioon on ilmselt paljudele tuttav:

chimpy-chimp

Stsenaarium on reeglina selline: Meil on mingi e-posti-rakendus, tegime kirja-põhja – noh et oleks ilus ja avaneks ka mobiilis jne. Laadisime üles Excelist imporditud listi kus on kirjas andmeteadlaste poolt välja valitud aadressid, nimed ja isikukohased viited. Testisime enda testkirjega, mis on hoolikalt koostatud katmaks kõiki äärmuslikke juhtumeid (minu nimi on testides stiilis Pëëtõr von McPikknimi Märvüž) – noh täitsa OK tundub. Saatsime pealikule/agentuurile/kliendile kah. Aga kusagil ei ole seda testnuppu, et võta palun 10 random kirjet tegelikust sihtgrupist ja näita mis juhtub.

Juhtub aga see, et kirjapõhja tegija on unustanud panna nime asemele muutuja – või siis on andmeteadlased lisanud Excelisse mediaan-nime välja. Mis iganes see ka poleks.

Mina saatsin välja teadet PHP 7 Apache moodulis ja /usr/bin/env php teemal. Ainus viis see adressaadile arusaadavaks teha tundus lisada konkreetne nimekiri serveritest, mis võivad muudatuse järel probleeme tekitada. Umbes nii:

mail-snippet

(takkajärgi lugedes peaks kiri algama lausega “saada see KOHE veebihaldurile, nõua ASAP reageerimist ja tehtud tööde raportit” olemaks ka turundus- või projektijuhi tasemel rakendatav)

Kuna meil on kick-ass inhouse arendustiim siis saatis @i mulle udupeene JSONi (mittetehniliselt: .json on .csv kuubis) mis võimaldas genereerida vabalt valitud transactional email teenuse (Mandrill, olgu nad neetud) ja umbes 20 rea koodi abil personaliseeritud kirjad. @bb tuvastas nimekirjast mõne kala – ja mina mõned teised kalad. Ahjah, ja oli veel väike palve üks objekti property veidi teise nimega edastada. @i saatis uue JSONi, Done! Proovin saatmist nii- ja naapidi, toimib.

Vajutame punast nuppu – ja kasutajad saavad kirja, kust puuduvad kogu jõupingutuse põhjuseks olevad serverinimed. Abort-abort-abort, pardal on lapsed! (kui tsiteerida multifilmiklassikuid)

Edasine tasklist:

  • katkestada kirjade saatmine
  • lõpetada koosolekul osalemine
  • tuvastada bugi (ei olnud testinud päris uue JSONiga, “kohandasin veits” vana ja eeldasin mida-iganes)
  • eksportida transactional e-posti teenusest enne katkestamist saadetud kirjade aadressid
  • fixida bugi
  • teha uus vabandusega kirja-templiit
  • kohandada saatmine kahele sihtgrupile – pooliku kirja saanud ja ülejäänud
  • testida, veenduda õige templiidi kasutamises
  • umbes x4, sest eelmine x2 ilmselt ei olnud piisav
  • saata parandatud kirjad “poolikutele”
  • testida, umbes 4x
  • saata parandatud kirjad “ülejäänutele”
  • here be dragons

Moraal? Proovime aru saada, miks me vigu teeme. Mina näiteks:

  • Ajasin ülesande keeruliseks (olen siiski veendunud, et konkreetse info andmine e-postis oli õige valik)
  • Testisin lõpuni enne andmeformaadi ja tegelikult kasutatavate andmete saamist (tekkis testi-väsimus, lõplike andmete puhul ei teinud enam täis-testi, sest enamus oli ju läbi testitud juba)
  • Mul ei olnud saatmis-lahenduses funktsiooni “näita mida kavatsed saata”, sest see oli “kõigest prototüüp”

Ma loodan, et Telia jagab oma post-mortemit kah – küllap tegid nad täiesti teistsuguseid vigu. Selliseid, mida mina võiks homme teha, aga võiks ka vältida.

ps. üks mu lemmik-podcaste on Mike Monteiro bande Let’s Make Mistakes.

pps. teavitus-kirja saatmise taustaks olid mõned (igati asjakohased) kommentaarid suunal “debugisin/muretsesin x tundi, põhjuseks oli muudatus/sündmus millest oleksite ju võinud ette teavitada, isegi kui see puudutab 1% kliente” – yep, tehtagu!