Discuții cu Obama Pentru directorul american de dezvoltare a frontierei Daniel Ryan

Indiferent dacă vă aplecați spre dreapta sau spre stânga, este puțină îndoială că, dacă sunteți un cititor Nettuts +, probabil că sunteți de acord că tehnologia formează rapid politica. În campaniile prezidențiale ale Statelor Unite, web-ul a reprezentat o platformă majoră pentru unificarea unui mesaj în față, dar a reprezentat, de asemenea, o parte esențială a proceselor interne ale fiecărei părți.

Recent am avut ocazia să-l intervievez pe Daniel Ryan - directorul dezvoltării frontierei pentru "Obama pentru America" ​​- despre strategiile, tehnologiile și experiențele care au făcut parte din cursa până pe 6 noiembrie.


Care a fost cea mai mare provocare pe scară largă pentru echipele de proiectare și dezvoltare în timpul campaniei?

Cea mai mare provocare la scară nu a fost un singur proiect; a fost volumul mare de cereri pe care le primim în fiecare zi. Echipa noastră dev a fost împărțită în trei domenii: strângerea de fonduri, convingerea și obținerea votanților la urne. Revenind la modele noi prin aprobări prin mesaje, politică, cercetare, juridică etc., lansarea acelor proiecte în câteva zile sau adesea câteva ore a fost cea mai mare provocare. Atât Design, cât și Dev aveau o echipă de Producători care au gestionat aceste solicitări, le-au atribuit personalului relevant și i-au văzut complet.

Cea mai mare provocare [...] a fost volumul forfetar al cererilor pe care le primim în fiecare zi.


Q Cum a abordat campania de testare A / B și luarea deciziilor de proiectare bazată pe date?

Unul dintre lucrurile care au fost adeseori discutate despre campanie este că am fost informați. Acest lucru nu ar putea fi mai adevărat. Deputatul meu Kyle Rush a supravegheat un grup de lucru de optimizare, format din dezvoltatori, designeri, ingineri de experiență, analiști de date, specialiști în publicitate online și scriitori de conținut. Am folosit o combinație de abordări, axate în cea mai mare măsură pe Optimizely pentru testarea A / B pentru a dovedi (și a dezactiva, adesea) teze despre modul în care paginile ar putea funcționa mai bine.

Nivelurile noastre de trafic au însemnat că am putea efectua mai multe teste pe zi la niveluri semnificative. Un raport săptămânal a fost elaborat cu cele mai bune practici actualizate și recomandări bazate pe aceste constatări. Estimăm că am obținut aproximativ 125 milioane de dolari în îmbunătățiri incrementale ale paginilor noastre de strângere de fonduri.


Îmi puteți da o scurgere simplă a stivei, din spate în față?

Nu a existat nici un singur stack. Unul dintre cele mai inteligente lucruri pe care le-am făcut a fost executarea a zeci de sisteme decuplate legate împreună cu serviciile JavaScript și Akamai. In general, stiva noastra a fugit pe Amazon Web Services, incluzand mii de instante EC2, cateva mari clustere de baze de date si gazduire S3. Site-ul nostru principal, www.barackobama.com, a fost un motor de expresie instalat susținut de EC2 și RDS și fronted de caching Akamai.

Akamai a descărcat aproximativ 98% din tot traficul. În plus, am folosit Jekyll, mai multe aplicații personalizate, construite pe Django, Flask, Rails și Magento. Limba cea mai largă folosită a fost Python.

Unul dintre cele mai inteligente lucruri pe care le-am făcut a fost executarea a zeci de sisteme decuplate legate împreună cu serviciile JavaScript și Akamai.


Q Care sunt câteva din instrumentele open source utilizate în timpul campaniei? Care a fost strategia de producție / implementare?

Pe partea clientului, am lansat propria noastră rețea de grilă și stiluri de bază CSS împreună cu jQuery, Modernizr și o bază de date JavaScript de bază care leneș încărcate de module, după cum este necesar. Am folosit șabloanele Mustache.js destul de puțin pentru aplicațiile bazate pe browser. Ca primul site web pentru o campanie națională, am încercat o mulțime de instrumente open source pentru îmbunătățirea experiențelor mobile. Fitvids.js a fost unul dintre cele mai grele folosite. Pe plan intern, am lucrat la LESS CSS, compilate de CodeKit. Unul dintre distribuitori mi-a arătat mai puțin în timp ce am revizuit site-ul în octombrie 2011; până la sfârșitul zilei, întregul site a trecut la el. Acesta este doar un exemplu al modului în care am rămas deschis la abordări mai bune în fiecare zi și nu ne-a fost frică să îmbrățișăm o nouă metodă sau sistem dacă ar fi avut sens.

Am fugit ca fiind VCS de alegere, din toate motivele evidente. Tot codul nostru a trecut prin Github, care a servit de asemenea ca fluxul principal de management al codului nostru. Am fost foarte ghidat de principiile "Cum Github folosește Github pentru a construi Github". Oriunde avea sens, fluxul nostru era:

  • ramură locală
  • setați o etichetă Git în repo, odată ce codul a fost gata pentru examinare și testare
  • implementați eticheta pe serverele de așteptare
  • revizuirea codului și asigurarea calității
  • odată ce codul a fost pregătit pentru producție, a stabilit o solicitare de tragere către sucursala principală
  • solicitările de tragere au fost revizuite de dezvoltatori de plumb sau de dezvoltatori seniori; activele statice au fost implementate în S3, în timp ce codul de pe server a solicitat o cerere de implementare echipei noastre DevOps
  • echipa DevOps a folosit Puppet și Gippetto pentru a crea distribuții apk pentru casetele Linux
  • modificările de cod mic se vor desfășura în zbor; cele mari s-ar construi sub noi clustere de servere, testate intern și apoi înlocuite în locul versiunii vechi

Nu am reușit să folosim acest flux oriunde ne-ar fi plăcut, pentru că am intrat într-un sistem de lucru, mai degrabă decât de la zero. Când am sosit în august 2011, nu existau, de exemplu, medii dev sau stadializare pentru site-ul nostru principal. Am obținut un sistem de punere în scenă destul de repede, dar ne-am străduit întotdeauna să avem medii dev locale pentru Expression Engine.


De unde provin ideile de design? Care a fost procesul de a lua o idee de la naștere la desfășurare?

Idei de proiectare în mare parte au venit direct de la echipa de design. Josh Higgins, directorul nostru de design, și am muncit foarte mult pentru a ne asigura că echipele noastre au colaborat în mod continuu. Am stat în propria noastră secție a biroului, alături de managerii de programe / proiecte, pentru a putea păstra cele două echipe care lucrează fizic una lângă cealaltă. Multe dintre modelele pe care le-am lansat au început de către un designer sau dezvoltator care a găsit o idee grozavă undeva și a trimis-o prin e-mail către cele două echipe. Aceste idei au devenit apoi vernacularul pe care noi l-am vorbi când încercam să vină cu un concept specific. Ca și în cazul tuturor, datele au fost ghidul nostru. Indiferent cât de cool am crezut că este ceva, dacă datele arătau că nu obține rezultatele pe care le-am dorit, am încerca o altă abordare.

Multe dintre modelele pe care le-am lansat au început de către un designer sau dezvoltator care a găsit o idee grozavă undeva și a trimis-o prin e-mail către cele două echipe. Aceste idei au devenit apoi vernacularul pe care noi l-am vorbi când încercam să vină cu un concept specific.

Procesul a fost la fel ca orice agenție digitală bună. Am avea o ședință de kickoff cu membrii PM, Producători, Conducători etc., pentru a stabili scopul unui proiect. Cineva ar trimite în jur notele de la asta și le-am alunga puțin pentru a le trimite un pic, apoi trimite-le conducerii noastre pentru a obține semn pe direcția în care am vrut să intrăm. După încorporarea feedback-ului, fie un designer va începe comps sau, pentru proiecte mai complicate, un dezvoltator ar începe prototipuri. Dezvoltatorul și designerul desemnat vor itera prin cele până când proiectul va fi live și gata pentru testare. În mod normal, am trimis versiunea de așteptare pentru aprobări, în timp ce echipa de QA efectua teste cross-browser. Echipa a repetat notele din ambele și apoi am lansat. Rețineți că, aproape de sfârșitul verii, am făcut acest lucru pe o duzină de proiecte sau mai mult simultan. De multe ori, am face acest ciclu întreg într-o singură zi.


Q Am citit un pic despre problemele tehnice care au afectat tabăra Romney pe tot parcursul campaniei, inclusiv întreruperile serverului și eșecurile de hard disk. Care au fost unele dintre cele mai importante decizii strategice pe care echipa Obama le-a făcut pentru a evita aceste probleme?

Cred că abordarea noastră sa înrăutățit până la paranoia pragmatică.

Aceasta a fost prima mea campanie ca personal, dar am avut multe alumni din '08 cu noi. Cred că am fost la Chicago mai puțin de o săptămână înainte de a auzi despre eșecul lui Houdini, care era sistemul lui Obama '08 asemănător cu Orca lui Romney. Din cauza experienței instituționale cu acest eșec al sistemului de monitorizare a alegătorilor, nu ne-am pus niciodată într-un loc în care un singur eșec al sistemului ar putea face pagube reale. Am avut luxul de timp, pe care l-am folosit în parte pentru a construi concedieri. Procesorul nostru de plată, de exemplu, a fost de fapt un sistem in-house și un sistem de vânzări pe care Akamai l-a învins automat dacă o parte a coborât. Sistemul a funcționat atât de bine încât l-am replicat pentru locurile de vot. Am avut două API, unul intern și unul alimentat de Google, cu o aplicație subțire PHP pentru a face ca ieșirea să fie la fel. Nu numai că Akamai s-ar putea întrerupe automat între ele fără ca utilizatorul final să observe, dar aveam un sistem în care să putem alege care state să folosească sistemul în mod proactiv. Acest lucru ne permite să împiedicăm o întrerupere a traficului. Sistemele la care ne-am bazat în mod special pentru ziua alegerilor aveau două sisteme de rezervă: una alimentată de foi de calcul Google Doc și una formată din copii tipărite tipărite ale datelor critice. Cred că abordarea noastră sa înrăutățit până la paranoia pragmatică.


Q Cum a jucat un rol în echipa de design Obama? A fost designul "primul mobil"?

La inceput, campania a incercat sa faca un site jQuery Mobile powered, dar mentinerea a doua template-uri pentru tot ce pur si simplu nu se va schimba. Am văzut că 25% din traficul nostru provine de pe dispozitive mobile, dar aproape nici una dintre donațiile noastre. Când ne-am propus să facem o revizuire a site-ului în toamna anului 2011, a fost o concluzie dinainte că vom face mobil, mai întâi, receptiv / adaptabil. A fost un proces de învățare pentru noi toți. Dacă există o tacâmă pe care aș dori să o stresez, mobilul - în primul rând nu înseamnă să începeți cu un design de 320 de pixeli, înseamnă că începeți cu o experiență de bandă redusă. Am învățat această lecție de mai multe ori pe tot parcursul campaniei. În primul rând, mobilul este o abordare cuprinzătoare, care include crearea de conținut care este prietenos cu dispozitivele mobile, design care este flexibil și cod care este cât se poate de ușor.

În primul rând, mobilul nu înseamnă că începe cu un design de 320 de pixeli, înseamnă că începeți cu o experiență de bandă redusă.


Care a fost cea mai mare lecție de învățat despre desfășurarea pe scară largă?

Cea mai mare lecție pe care am învățat-o despre desfășurarea pe scară largă este angajarea unor oameni inteligenți. Când încercați să vă potriviți pentru scară, în special pe curba hocheiului, știam că vom avea, aveți nevoie de oameni în fiecare parte a stivei, gândindu-vă cum să fim mai eficienți. Cea mai mare parte a echipei mele nu a avut nici o experiență la felul în care am lucrat, dar am învățat rapid și am adaptat.


Care a fost structura generală de management a proiectelor pentru echipa Obama?

Cred cu adevărat că aceasta este ultima campanie prezidențială în care "oamenii de Internet" vor fi separați în propriul lor grup.

Structura a variat în funcție de proiect, dar structura noastră generală a fost în principal împărțită în cele trei găleți pe care le-am menționat mai înainte: strângerea de fonduri, convingerea și transformarea alegătorilor. Pe plan intern, a existat un departament digital, pe care echipa mea a făcut-o împreună cu designul, anunțurile online, social, e-mail, conținut, analize digitale, manageri de program, video, organizare online, răspuns rapid și echipa noastră de management. În general, am gestionat online toată lucrarea publică cu care ne confruntăm. În plus, Departamentul Tech a fost responsabil pentru infrastructură (echipa noastră DevOps) și codul de pe server pentru aproape tot ce am făcut. A existat o trecere între cele două departamente. O mare parte din rolul meu a fost coordonarea cu Tech și DevOps, deoarece am desfășurat constant tot mai multe sisteme.

Cred cu adevărat că aceasta este ultima campanie prezidențială în care "oamenii de Internet" vor fi separați în propriul lor grup. Activitatea noastră a acoperit fiecare zonă a campaniei la un moment dat. 2016 ar trebui să fie mult mai mult o schemă de orgi matrice decât una ierarhică.


În încheiere

Mulțumim din nou lui Daniel că a fost de acord să vorbească cu noi. Pentru a rămâne la curent, asigurați-vă că îl urmați pe Twitter și căutați pe site-ul său.

Cod