Ciao, sono Renzo Lucioni, senior presso l'Università di Harvard. Mi sono divertito molto quest'estate come stagista presso edX. Ho lavorato per consentire e promuovere un approccio oggettivo alla gestione del prodotto. Il mio progetto estivo consisteva in diversi miglioramenti discreti che vanno dall'LMS al team di Analytics appena formato. Il mio progetto riguardava tanto il “processo” corretto quanto la correzione del modo in cui l'LMS mostra agli studenti i loro progressi. Per “processo” intendo: identificare e validare i cambiamenti, implementarli e poi quantificarne l'impatto. Abilitare e promuovere questo “processo” è l'ombrello che copre il lavoro che ho svolto durante l'estate.
Ecco uno schema del processo che cerchiamo di seguire qui in edX. Iniziamo individuando concretamente un problema e l'effetto che ci aspettiamo di vedere risolvendolo. Identifichiamo i problemi da affrontare utilizzando i dati analitici che raccogliamo. Quindi raccogliamo potenziali soluzioni. Il passo successivo è la convalida. Prima di implementare completamente le modifiche, vogliamo convalidarle. Le modifiche possono essere motivate da un numero qualsiasi di cose, ma vogliamo assicurarci che le modifiche proposte risolvano il problema. Ci sono molti modi per convalidare. Potrebbe significare mostrare la modifica internamente a una manciata di persone, eseguirla da un gruppo di utenti che introduciamo per testare la modifica o eseguire test divisi. Se vediamo che il cambiamento aiuta, lo implementiamo. In caso contrario, si torna al passaggio uno. Dopo aver apportato la modifica, vogliamo misurarne l'impatto reale sulla produzione per assicurarci di ottenere il rendimento che ci aspettavamo dalla fase di convalida.
Per aiutare con le fasi di identificazione e quantificazione, il mio lavoro si è concentrato sull'analisi e sulla qualità dei dati. Segment.io è un servizio di terze parti che ci consente di inviare i nostri dati analitici a qualsiasi servizio di analisi che desideriamo senza doverli integrare con ciascun servizio individualmente. Ho integrato Segment.io con la piattaforma edX e ho ripulito gli eventi che registriamo. Ora utilizziamo Segment.io per tenere traccia di ciò che gli utenti stanno facendo mentre interagiscono con il materiale del corso, inoltrando queste informazioni a Google Analytics, Mixpanele Chartbeat.
Per migliorare la fase di convalida del nostro processo, ho sviluppato un approccio flessibile e leggero allo split testing. Denominato anche test A/B, il test diviso consiste nel dividere i nostri utenti in gruppi, controllare ciò che questi gruppi vedono (vogliamo mostrare qualcosa di diverso per ogni gruppo) e monitorare e confrontare il comportamento di ciascuno. Volevamo che il nostro approccio di test diviso fosse flessibile, consentendoci di applicarlo attraverso la piattaforma edX a modifiche che vanno da alterazioni estetiche a funzionalità completamente nuove. Il framework di test diviso che ho implementato si basa Tessuto a Nido d'ape Maglia - Waffle , una funzione flipper Django. Ho deciso di non utilizzare uno dei numerosi framework di test A/B open source disponibili per Django perché la maggior parte non sono compatibili con Django 1.4, non sono più mantenuti e sono scarsamente documentati o del tutto privi di documenti. Inoltre, nel tentativo di astrarre il processo di split testing, ho scoperto che questi framework sono troppo rigidi per i nostri casi d'uso tipici. La maggior parte sono progettati con lo scopo esplicito di tracciare le registrazioni o gli acquisti degli utenti. L'uso di Waffle insieme a Mixpanel costituisce un approccio più flessibile e leggero.
Waffle fornisce tre strumenti per controllare ciò che gli utenti vedono: flag, interruttori e campioni. Il mio framework utilizza i flag basati sulla sessione di Waffle per attivare/disattivare le funzionalità nelle viste Django e nei modelli Mako. Le bandiere si adattano bene al disegno di legge dei test divisi. Possono essere assegnati a tutti gli utenti, a un gruppo di utenti oa una percentuale arbitraria di utenti. Date le autorizzazioni appropriate per il modello "Flags" nel database, è possibile creare, attivare o disattivare i flag utilizzando il sito di amministrazione di Django senza coinvolgere DevOps. Inoltre, le modifiche apportate ai flag entrano in vigore immediatamente senza la necessità di eseguire il push di alcun codice. Il mio framework tiene traccia di quali flag sono attivi per un particolare utente aggiungendo una proprietà alle chiamate API Segment.io che contiene una stringa che elenca i flag attivi; questa particolare modifica è stata apportata segmento-io.html. Segment.io indirizza queste informazioni a Mixpanel, dove possiamo studiare i dati, permettendoci di confrontare il comportamento di diversi gruppi di utenti.
Ecco un esempio del processo in azione. Parlando con gruppi di utenti edX, abbiamo appreso che c'era un forte desiderio di una visualizzazione contestuale dei progressi. Storicamente, gli studenti hanno avuto difficoltà a visualizzare i loro progressi in un corso. Hanno anche avuto un aiuto minimo durante la navigazione nel materiale didattico. Al momento, la pagina di destinazione del materiale didattico dice a uno studente dove si trovava l'ultima volta e si collega a quel componente. Tuttavia, la fisarmonica del corso non indica ciò che lo studente ha completato, ciò su cui lo studente sta attualmente lavorando o ciò che lo studente non ha ancora iniziato. A peggiorare le cose, la scheda di avanzamento è separata dal materiale didattico ed è anche troppo dettagliata, il che significa che la pagina non è immediatamente utile per uno studente. Gli studenti non hanno modo di misurare in modo affidabile i loro progressi dal contesto del materiale didattico.
Ho tentato di affrontare questo problema visualizzando i punteggi degli studenti dal vivo, proprio accanto ai titoli dei problemi su cui stanno lavorando. Per apportare questa modifica, ho modificato capa_module.py and display.caffè. Cerchiamo di riservare i test divisi per modifiche grandi e rischiose, non vittorie chiare come questa modifica; vogliamo convalidare al giusto livello. In quanto tale, la convalida di questa modifica consisteva nel mostrare la modifica internamente. L'implementazione di questa funzione è ora seguita dalla quantificazione. Abbiamo osservato un calo dell'8% nel traffico dal materiale del corso alla pagina di avanzamento e utilizzeremo questi dati per informare le modifiche future.
Anche se abbiamo appena iniziato a utilizzare i dati analitici per informare le nostre decisioni e questo nuovo framework per testare in modo diviso il nuovo lavoro, sono fiducioso che questi strumenti ci consentiranno di fare scelte migliori. Uno degli obiettivi di edX è scoprire cosa aiuta le persone a imparare online. Un approccio più quantitativo combinato con test divisi ci aiuterà a raggiungere questo obiettivo.
![]()