Of je nu naar rechts of naar links leunt, er is weinig twijfel over dat, als je een Nettuts + lezer bent, je waarschijnlijk zult beamen dat technologie de politiek snel vormgeeft. In de presidentiële campagnes in de Verenigde Staten was internet een belangrijk platform voor een frontale unificatie van een bericht, maar het was ook een kernonderdeel van de interne processen van elke partij..
Onlangs hadden we de mogelijkheid om Daniel Ryan te interviewen - de directeur van Frontend Development voor "Obama voor Amerika" - over de strategieën, technologieën en ervaringen die onderdeel waren van de race tot 6 november.
De grootste schaaluitdaging was geen enkel project; het was het enorme aantal verzoeken dat we elke dag kregen. Ons dev-team was verdeeld over drie gebieden: fondsenwerving, overtuiging en het verkrijgen van kiezers bij de stembus. Nieuwe ontwerpen omzetten door middel van goedkeuringen via berichten, beleid, onderzoek, juridische zaken, enz. Toen was de lancering van die projecten binnen een paar dagen of vaak een paar uur de grootste uitdaging. Zowel Design als Dev had een team van producenten dat deze aanvragen beheerde, hen toewees aan relevante medewerkers en hen doorlopend zag.
De grootste uitdaging [...] was het grote aantal verzoeken dat we elke dag ontvingen.
Een van de dingen die vaak over de campagne is gezegd, is dat we gegevensgericht waren. Dit kan niet meer waar zijn. Mijn plaatsvervanger Kyle Rush hield toezicht op een werkgroep voor optimalisatie, bestaande uit ontwikkelaars, ontwerpers, gebruikerservaringstechnici, data-analisten, online advertentiespecialisten en inhoudschrijvers. We gebruikten een mix van benaderingen, voornamelijk gericht op Optimizely voor A / B-testen om (vaak, weerlegt) scripties te demonstreren over hoe pagina's beter zouden kunnen werken.
Door onze verkeersniveaus konden we meerdere tests per dag uitvoeren naar significante niveaus. Een wekelijks rapport werd samengesteld met bijgewerkte best practices en aanbevelingen op basis van die bevindingen. We schatten dat we ongeveer $ 125 miljoen aan incrementele verbeteringen aan onze fondsenwervingspagina's alleen al hebben gerealiseerd.
Er was geen enkele stapel. Een van de slimste dingen die we deden, was tientallen ontkoppelde systemen die met JavaScript en Akamai-services waren verbonden. Over het algemeen liep onze stack op Amazon Web Services, waaronder duizenden EC2-instanties, verschillende grote databaseclusters en S3-hosting. Onze hoofdsite, www.barackobama.com, was een Expression Engine-installatie die werd ondersteund door EC2 en RDS en werd voorafgegaan door Akamai-caching.
Akamai heeft ongeveer 98% van al ons verkeer gelost. Daarnaast gebruikten we Jekyll, meerdere aangepaste apps gebouwd op Django, Flask, Rails en Magento. Onze meest gebruikte taal was Python.
Een van de slimste dingen die we deden, was tientallen ontkoppelde systemen die met JavaScript en Akamai-services waren verbonden.
Aan de clientzijde hebben we ons eigen CSS-raster en kernstijlen samen met jQuery, Modernizr en een JavaScript-kernbibliotheek gelanceerd, die lui geladen modules naar behoefte hebben. We gebruikten de sjablonen van Mustache.js best een beetje voor browsergebaseerde apps. Als de eerste responsieve website voor een nationale campagne, hebben we veel open source-tools uitgeprobeerd om mobiele ervaringen beter te maken. Fitvids.js was een van de zwaarste gebruikte. Intern werkten we in LESS CSS, gecompileerd door CodeKit. Een van de ontwikkelaars heeft me MINDER laten zien toen we de site in oktober 2011 onder handen namen; aan het einde van de dag was de hele site daarheen overgeschakeld. Dit is slechts één voorbeeld van hoe we dagelijks openstonden voor betere benaderingen en we waren niet bang om een nieuwe methode of systeem te omarmen als het logisch klopte..
We hebben Git als onze VCS naar keuze gekozen, om alle voor de hand liggende redenen. Al onze code is door Github gegaan, die ook als hoofdstroom voor codebeheer diende. We werden zwaar geleid door de principes van "Hoe Github Github gebruikt om Github te bouwen". Waar het zinvol was, onze stroom was:
We hebben deze stroom niet overal waar we hadden gewild, kunnen gebruiken, omdat we in een werkend systeem kwamen, in plaats van helemaal opnieuw te beginnen. Toen ik in augustus 2011 aankwam, waren er bijvoorbeeld geen dev- of staging-omgevingen voor onze hoofdsite. We hebben vrij snel een staging-systeem geïnstalleerd, maar worstelden altijd om lokale dev-omgevingen te hebben voor Expression Engine.
Ontwerpideeën kwamen grotendeels rechtstreeks van het ontwerpteam. Josh Higgins, onze Design Director, en ik hebben heel hard gewerkt om ervoor te zorgen dat onze teams continu hebben samengewerkt. We zaten in ons eigen gedeelte van het kantoor, samen met de programma- / projectmanagers, zodat we de twee teams fysiek in de buurt van elkaar konden houden. Veel van de ontwerpen die we hebben ontwikkeld zijn begonnen door een ontwerper of ontwikkelaar die ergens een leuk idee vond en het naar de twee teams mailde. Deze ideeën werden vervolgens de volkstaal waarin we zouden spreken als we proberen een specifiek concept te bedenken. Zoals met al het andere was data echter onze gids. Hoe koel we ook dachten dat iets was, als uit de gegevens bleek dat we niet de gewenste resultaten behaalden, zouden we een andere aanpak proberen.
Veel van de ontwerpen die we hebben ontwikkeld zijn begonnen door een ontwerper of ontwikkelaar die ergens een leuk idee vond en het naar de twee teams mailde. Deze ideeën werden vervolgens de volkstaal waarin we zouden spreken als we proberen een specifiek concept te bedenken.
Het proces leek veel op een goed digitaal bureau. We hadden een aftrapvergadering met PM's, Producers, Leads, enz. Om de omvang van een project te achterhalen. Iemand zou de aantekeningen daarop verzenden en we zouden ze allemaal een beetje tweaken en dan naar ons leiderschap sturen om uit te loggen in de richting waarin we wilden gaan. Na het opnemen van feedback, zou een ontwerper aan comps beginnen, of, voor meer gecompliceerde projecten zou een ontwikkelaar beginnen met prototypen. De toegewezen ontwikkelaar en ontwerper zouden deze doorlopen totdat het project live was en klaar was om getest te worden. Normaal zouden we de staging-versie rondzenden voor goedkeuringen op hetzelfde moment dat het QA-team cross-browser-tests uitvoerde. Het team zou de notities van beide herhalen en dan zouden we starten. Houd in gedachten dat we tegen het einde van de zomer dit deden op een tiental projecten of meer tegelijkertijd. Vele malen zouden we deze hele cyclus in één dag doen.
Ik denk dat onze benadering in principe neerkwam op een pragmatische paranoia.
Dit was mijn eerste campagne als staflid, maar we hadden veel alumni uit '08 bij ons. Ik denk dat ik minder dan een week eerder in Chicago was geweest toen ik hoorde van het falen van Houdini, het systeem van Obama '08 verwant aan Romney's Orca. Vanwege de institutionele ervaring met het falen van dit kiezersmonitoringsysteem, plaatsen we ons nooit op een plek waar één enkele systeemstoring echte schade kan aanrichten. We hadden de luxe van tijd, die we gedeeltelijk gebruikten om ontslagen te bouwen. Onze betalingsverwerker, bijvoorbeeld, was eigenlijk een intern systeem en een leveranciersysteem dat Akamai automatisch omdraaide als een kant naar beneden ging. Dat systeem werkte zo goed dat we het repliceerden voor stembureaus. We hadden twee API's, één intern en één aangedreven door Google, met een dunne PHP-app om de uitvoer hetzelfde te maken. Akamai kon niet alleen automatisch falen, zonder dat de eindgebruiker het merkte, maar we hadden een systeem op zijn plaats waar we konden kiezen welke staten proactief gebruikten welk systeem. Hiermee kunnen we een uitval van de verkeerspiek voorkomen. De systemen waarop we specifiek voor verkiezingsdag vertrouwden, hadden allemaal twee back-upsystemen: één ondersteund door spreadsheets van Google Documenten en één die bestond uit afgedrukte papieren exemplaren van kritieke gegevens. Ik denk dat onze benadering in principe neerkwam op een pragmatische paranoia.
In het begin probeerde de campagne een jQuery Mobile-aangedreven site te maken, maar het bijhouden van twee sjablonen voor alles ging gewoon niet op schaal. We zagen dat 25% van ons verkeer afkomstig is van mobiele apparaten, maar bijna geen van onze donaties. Toen we in het najaar van 2011 een site-revisie gingen doen, was het een uitgemaakte zaak dat we eerst mobiel zouden werken, responsief / adaptief. Het was een leerproces voor ons allemaal. Als er een afhaalmaaltijd is, zou ik echt willen benadrukken, mobiel-eerst betekent niet starten met een 320 pixel breed ontwerp, het betekent beginnen met een ervaring met lage bandbreedte. In de loop van de campagne hebben we die les steeds opnieuw geleerd. Mobiel eerst is een alomvattende aanpak, inclusief het maken van inhoud die mobielvriendelijk is, een ontwerp dat flexibel is en code die zo slank mogelijk is.
Mobiel-eerst betekent niet starten met een 320 pixel breed ontwerp, het betekent beginnen met een ervaring met lage bandbreedte.
De grootste les die ik heb geleerd over grootschalige inzet is slimme mensen aannemen. Wanneer je probeert af te stemmen op schaal, met name in de hockeystickcurve waarvan we wisten dat we die zouden hebben, dan heb je mensen nodig bij elk deel van de stapel, denkend aan hoe je efficiënter kunt zijn. Het grootste deel van mijn team had geen ervaring op het soort schaal waarop we werkten, maar we hebben snel geleerd en aangepast.
Ik geloof echt dat dit de laatste presidentiële campagne is waar de "internetmensen" zullen worden gescheiden in hun eigen groep.
De structuur varieerde per project, maar onze algehele structuur was in principe verdeeld in die drie emmers die ik eerder noemde: fondsenwerving, overtuiging en het uitwijzen van kiezers. Intern was er een digitale afdeling waar mijn team deel van uitmaakte, samen met ontwerp, online advertenties, sociaal, e-mail, inhoud, digitale analyse, programmamanagers, video, online organiseren, snelle reactie en ons managementteam. Over het algemeen hebben we al het publiekswerk van de campagne online afgehandeld. Daarnaast was de technische afdeling verantwoordelijk voor de infrastructuur (ons DevOps-team) en de server-side code voor vrijwel alles wat we deden. Er was ook een overgang tussen de twee afdelingen. Een groot deel van mijn rol was de coördinatie met Tech en DevOps, omdat we constant meer en meer systemen inzetten.
Ik geloof echt dat dit de laatste presidentiële campagne is waar de "internetmensen" zullen worden gescheiden in hun eigen groep. Ons werk omvatte op enig moment elk gebied van de campagne. 2016 moet veel meer een matrix-organigram zijn dan een hiërarchische matrix.
Nogmaals bedankt aan Daniel voor het ermee eens zijn om met ons te praten. Om op de hoogte te blijven, volg hem op Twitter en houd zijn website in de gaten.