Meie jaoks on oluline mĂ”ista, mis toimub meie Ă”pilastega Ă”ppe ajal ja kuidas need hetked mĂ”jutavad tulemust, seetĂ”ttu kaardistame kliendi teekonna â klientide kogemuste kaardi. Ăppeprotsess ei ole pidev ja terviklik, see on kimp omavahel seotud sĂŒndmustest ja Ă”pilase tegevustest, mis vĂ”ivad oluliselt erineda erinevate Ă”pilaste seas. Siin on ta lĂ€binud tunni: mida ta edasi teeb? Kas ta lĂ€heb kodutööle? Avab mobiilirakenduse? Muudab kursust, palub vahetada Ă”petajat? Sisestub kohe jĂ€rgmistesse tundidesse? VĂ”i lahkub lihtsalt pettunult? Kas selle kaardi analĂŒĂŒsimise kaudu on vĂ”imalik tuvastada mustreid, mis viivad kursuse edukale lĂ”petamisele vĂ”i vastupidi, âlahkumiseleâ?

Tavaliselt kasutatakse CJMi koostamiseks spetsialiseeritud, ĂŒsna kalliseid sulgeda koodiga tööriistu. Kuid me soovisime vĂ€lja mĂ”elda midagi lihtsat, mis vajaks minimaalset vaeva ja oleks vĂ”imalikult avatud lĂ€htekoodiga. Nii tekkis idee kasutada Markovi ahelaid â ja meil Ă”nnestus. Oleme koostanud kaardi, tĂ”lgendanud Ă”pilaste kĂ€itumise andmeid graafina, nĂ€inud tĂ€iesti mitteilmseid vastuseid globaalsele Ă€ri kĂŒsimusele ja isegi leidnud sĂŒgavale peidetud vigu. KĂ”ike seda tegime avatud lĂ€htekoodiga Python-skriptide abil. Selles artiklis rÀÀgin kahest juhtumist, mis andsid need mitteilmseid tulemusi ja jagan skripti kĂ”igiga, kes soovivad.
Nii nĂ€itavad Markovi ahelad ĂŒlemineku tĂ”enĂ€osust sĂŒndmuste vahel. Siin on primitiivne nĂ€ide Vikipeediast:

Siin on âEâ ja âAâ â sĂŒndmused, nooled â ĂŒleminekud nende vahel (sealhulgas ĂŒleminek sĂŒndmusest endasse), ja noolte kaalud â ĂŒlemineku tĂ”enĂ€osus (âkaalutud suunatud graafâ).
Mida kasutati
Ahel Ôpetati Python'i standardse funktsionaalsusega, millele söödati Ôpilaste aktiivsuse logisid. Graaf saadi saadud maatriksist NetworkX teeki kasutades.
Logi nÀeb vÀlja jÀrgmine:

See on csv-fail, mis sisaldab kolme veergu: Ă”pilase ID, sĂŒndmuse nimetus, aeg, millal see sĂŒndmus leidis aset. Need kolm vĂ€lja on piisavad, et jĂ€lgida kliendi liikumisi, koostada kaart ja lĂ”puks saada Markovi ahel.
Raamatukogu tagastab ehitatud graafikuid .dot vÔi .gexf formaadis. Esimeste visualiseerimiseks vÔib kasutada tasuta Graphviz paketti (tööriist gvedit), me töötasime .gexf ja Gephi'ga, mis on samuti tasuta.
Edasi tahan tuua kaks nĂ€idet Markovi ahelate kasutamisest, mis on vĂ”imaldanud meil uut moodi vaadata meie sihte, Ă”ppeprotsesse ja kogu Skyengi ökosĂŒsteemi. Ja ka veidi vigu parandada.
Esimene juhtum: mobiilirakendus
Alguses uurisime Ă”pilase teekonda meie kĂ”ige populaarsemas tootes â General kursusel. Sel hetkel töötasin Skyengi lasteosakonnas ja soovisime nĂ€ha, kui efektiivselt mobiilirakendus meie laste sihtrĂŒhmas töötab.
VÔttes logid ja viies need lÀbi skripti, sain midagi sellist:
Sissejuhatus sĂ”lme â Start General, ja all kolm vĂ€ljundsĂ”lme: Ă”pilane «magas», vahetas kurssi, lĂ”petas kursuse.
- Fell asleep, «Magas» â see tĂ€hendab, et ta ei osale enam tundides, tĂ”enĂ€oliselt on ta loovutanud. Me nimetame seda seisundit optimistlikult «magama», kuna teoorias on tal vĂ”imalus jĂ€tkata Ă”pinguid. See on meie jaoks halvim tulemus.
- Dropped general, Vahetas kurssi â vahetas Generalilt millegi teise peale ja kadus meie Markovi ahelast.
- Finished course, LĂ”petas kursuse â ideaalne seisund, inimene on lĂ€binud 80% tundidest (kĂ”ik tunnid ei ole kohustuslikud).
Sattumine sĂ”lme successful class tĂ€histab Ă”ppetunni edukat lĂ€bimist meie platvormil koos Ă”petajaga. See fikseerib edusamme kursusel ja lĂ€henemise soovitud tulemusele â «LĂ”petas kursuse». Meile on tĂ€htis, et Ă”pilased kĂŒlastaksid seda nii palju kui vĂ”imalik.
Kuna kahtlesime mobiilirakenduse tÀpsetes kvantitatiivsetes jÀreldustes (sÔlm app session), ehitasime iga lÔpp-sÔlme jaoks eraldi ahelad ja seejÀrel vÔrdlesime paarikaupa servade kaalu:
- app session'ist tagasi sinna;
- app session'ist successful class'i;
- successful class'ist app session'i.
Vasakul â kursuse lĂ”petanud Ă”pilased, paremal â «magajad»
Need kolm servi nÀitavad seost Ôpilase edukuse ja mobiilirakenduse kasutamise vahel. Ootasime, et kursuse lÔpetanutel on mobiilirakendusega tugevam side kui «magajatel». Kuid reaalsuses saime hoopis vastupidiseid tulemusi:
- veendusime, et erinevad kasutajagruppide suhtlemised mobiilirakendusega on erinevad;
- Edukaorid kasutavad mobiilirakendust vÀhem intensiivselt;
- Uinuvad Ôpilased kasutavad mobiilirakendust aktiivsemalt.
See tĂ€hendab, et "uinuvad" Ă”pilased hakkavad ĂŒha rohkem aega mobiilirakenduses veetma ja lĂ”puks jÀÀvad nad sinna igaveseks.

Esmalt olime ĂŒllatunud, kuid pĂ€rast mĂ”tlema hakates saime aru, et see on tĂ€iesti loogiline efekt. Aegade jooksul Ă”ppisin ma prantsuse keelt iseseisvalt, kasutades kahte tööriista: mobiilirakendust ja grammatika loenguid YouTube'is. Alguses jagasin aega nende vahel 50/50. Kuid rakendus oli lĂ”busam, seal oli mĂ€ngude elemendid, kĂ”ik oli lihtne, kiire ja arusaadav, samas pidin loengutes sĂŒvenema, midagi ĂŒles kirjutama, harjutama mĂ€rkmikus. Aja jooksul veetsin ma smartphone'is aina rohkem aega, kuni selle osa kasvas 100%-ni: kui veedad selles kolm tundi, tekib vale tunne tehtud tööst, mistĂ”ttu pole mingit soovi minna ja midagi kuulata.
Aga kuidas nii? Me ju tsĂŒkliliselt lĂ”ime mobiilirakenduse, mĂ€ngustasime selle, muutsime selle atraktiivseks, et inimesed veedaksid seal rohkem aega, aga selgub, et see ainult segab neid? Tegelikult on pĂ”hjus see, et mobiilirakenduse tiim tegi oma ĂŒlesandeid liiga hĂ€sti, mille tulemuseks oli see, et see muutus suurepĂ€raseks iseseisvaks tooteks ja hakkas meie ökosĂŒsteemist vĂ€lja kukkuma.
Uurimise tulemusena jÔuti arusaamisele, et mobiilirakendust tuleb kuidagi muuta, et see ei segaks pÔhikursusest. Ja nii laste kui ka tÀiskasvanute puhul. Praegu on see töö kÀimas.
Teine juhtum: onboardingu vead.
Onboarding on uus Ă”pilase registreerimise protseduur, mis ei ole kohustuslik, kuid aitab vĂ€ltida tulevikus vĂ”imalikke tehnilisi probleeme. PĂ”histsenaarium hĂ”lmab seda, et inimene registreerib end maandumislehel, saab juurdepÀÀsu isiklikule kontole, temaga vĂ”etakse ĂŒhendust ning korraldatakse sissejuhatav tund. Samas mĂ€rkame sissejuhatava tunni ajal suurt arvu tehnilisi raskusi: vale brauseri versioon, mikrofoni vĂ”i heli probleemid, Ă”petaja ei saa kohe lahendust soovitada ja see kĂ”ik on eriti keeruline, kui tegu on lastega. SeetĂ”ttu oleme arendanud isiklikus kabinetis tĂ€iendava rakenduse, kus saab lĂ€bi viia neli lihtsat sammu: kontrollida brauserit, kaamerat, mikrofoni ja kinnitada, et vanemad on sissejuhatava tunni ajal lĂ€heduses (sest nemad maksavad laste hariduse eest).
Need paar onboarding'i lehte nÀitasid jÀrgmist funnelskeemi:
1: algblokk kolme veidi erineva (olenevalt kliendist) sisselogimise vormiga.
2: nÔusoleku kinnitamise mÀrkeruut tÀiendava onboarding'i protseduuri jaoks.
2.1-2.3: vanema kohaloleku kontroll, Chrome'i versiooni ja heli kontroll.
3: lÔppblokk.
See nĂ€eb vĂ€ga loogiline vĂ€lja: esimestel kahel sammul lahkub enamik kĂŒlastajatest, mĂ”istes, et siia tuleb midagi tĂ€ita, kontrollida ja aega pole. Kui klient jĂ”uab kolmandasse sammu, siis on ta juba peaaegu kindel, et ta jĂ”uab lĂ”puni. Funnelskeemil ei ole ĂŒhtegi pĂ”hjust midagi kahtlustada.
Otsustasime siiski analĂŒĂŒsida meie onboarding'i mitte klassikalise ĂŒhemÔÔtmelise funnelskeemiga, vaid Markovi ahela abil. Lisame veidi rohkem sĂŒndmusi, kĂ€ivitame skripti ja saame sellise tulemuse:
Selles segaduses on ĂŒhemĂ”tteliselt aru saada vaid ĂŒhte: midagi on valesti lĂ€inud. Onboarding'i protsess on lineaarne, see on disainis paika pandud, selles ei tohiks olla sellist keerulist seostulemuste vĂ”rgustikku. Siin on kohe nĂ€ha, et kasutajat visatakse sammude vahel, mille vahel ei tohiks ĂŒldse ĂŒleminekuid olla.

Selle kummalise pildi pÔhjused vÔivad olla kaks:
- vead on sattunud logide andmebaasi;
- vead on olemas ka tootes â onboarding'is.
Esimene pĂ”hjus on tĂ”enĂ€oliselt olemas, kuid selle kontrollimine on piisavalt tööintensiivne ja logide parandamine ei paranda kindlasti kasutajakogemust. Teise puhul, kui see on olemas, oleks pidanud kiiresti midagi ette vĂ”tma. SeetĂ”ttu asusime vaatama sĂ”lmi, tuvastama servad, mida ei peaks olema, otsima nende tekkimise pĂ”hjuseid. NĂ€gime, et mĂ”ned kasutajad jĂ€id ringi kĂ€ima, teised kukkusid keskmisest algusesse, kolmandad ei saanud ĂŒldse esimestest kahest sammust vĂ€lja. Edastasime andmed QA-le â ja jah, vĂ€lja tuli, et onboardimisel oli piisavalt vigu: see oli selline kĂ”rvaltoode, veidi kĂ€tetööga tehtud, seda ei testitud piisavalt sĂŒgavalt, kuna ei oodatud mingeid probleeme. Praeguseks on kogu registreerimisprotsess muutunud.
See lugu nÀitas meile ootamatut Markovi ahelate rakendust QA valdkonnas.
Proovige ise!
Ma olen ĂŒles laadinud oma avalikuks â kasutage mureta. Dokumentatsioon on GitHubis, kĂŒsimusi vĂ”ib esitada siin, pĂŒĂŒan kĂ”igile vastata.
Ja siin on kasulikud lingid: , . Siin Markovi ahelate kohta. Artiklis olevad graafid on loodud kasutades .
Allikas: habr.com
