Et indvendigt kig på Facebooks mobilappudviklingsproces

Forfatter: Laura McKinney
Oprettelsesdato: 4 April 2021
Opdateringsdato: 1 Juli 2024
Anonim
Et indvendigt kig på Facebooks mobilappudviklingsproces - Apps
Et indvendigt kig på Facebooks mobilappudviklingsproces - Apps

Indhold


For nylig besøgte jeg Facebook-hovedkvarteret i London for at lære om processen med at udvikle og vedligeholde sin mobile Facebook-app. Meget mere foregår her, end du sandsynligvis er klar over: nogle af Facebooks apps håndteres her i deres helhed, som WhatsApp til desktop og den forretningsorienterede Workplace-app.

Kontorerne er netop, hvad du kunne forvente af Facebooks image, men måske ikke helt til det sociale netværks niveau af overskydende. Dette er et sted, hvor seriøst arbejde bliver udført, men der er ikke desto mindre en trendy, finurlig og afslappet atmosfære. Medarbejdere kan bære bærbare computere til at arbejde, uanset hvor de vælger, der er et trykkeri til at lave plakater (bare fordi), bestilt kunst på flere af væggene og en kæmpe Ninja Turtle - Jeg har aldrig svar på hvorfor.

Åh, og maden er utrolig. Jeg var der i det kinesiske nytår, og det havde jeg mange svinekød maver. Gode ​​tider.


Jeg var dog ikke der for at nyde udsmykningen og køkkenet, jeg var der for at lære om Facebook på mobilen. Mere specifikt: hvordan i alverden skal du endda opretholde et projekt så stort og ambitiøst? Facebook-backend tjener over to milliarder mennesker, og Android-appen ser alene en ny version udgivet hver uge.

Hvordan administrerer du en app med et så ambitiøst antal funktioner

Jeg talte med Tal Kellner via Facebooks eget telepresencesystem. Tal er en teknisk programleder, der er ansvarlig for Release Engineering Team med base i Tel Avivs tekniske kontor. Hun var mere end glad for at dele de grusomme detaljer.

Tal og hendes team uploader deres Lite-version af Facebook til iOS for første gang

Hvad jeg lærte var temmelig fascinerende både fra udviklerperspektiv og som bruger. Her er hvad jeg fandt ud af.


Projektledelse på Facebook - Hvorfor Scrum> Vandfald

Når du ser på et stort projekt, skal du overveje din projektstyringsmetode. Et sådant eksempel kaldes ”vandfald” -projektstyring. Dette er en sekventiel og lineær tilgang, hvor du arbejder på en bestemt fase igen, som at gå fra idéer til implementering til test til frigivelse.

Virksomheder som Facebook vælger i stedet for en mere moderne tilgang til projektledelse kaldet “scrum”

Af afgørende betydning, i denne tilgang begynder du ikke den næste fase, før den forrige fase er afsluttet. Systemet stammer fra fremstilling, hvor visse stadier ofte er afhængige af den forrige fase: du er nødt til at kilde mursten, før du kan bygge en mur!

Når det kommer til software, er denne tilgang restriktiv. I værste fald kan en opdatering tage så lang tid at rulle ud, den er forældet, når den ankommer. Hertug Nukem For evigt nogen?

Således vælger nogle softwarevirksomheder i stedet for en mere moderne tilgang kaldet "scrum", som er en smidig metode. Denne metode prioriterer det arbejde, der betyder mest, og opdeler det i modulære bidder. Det er afhængig af kommunikation mellem interne afdelinger og endda individuelle agenter, der arbejder alene på deres egne hjørner af kode.

Resultatet er i teorien, at alle kan arbejde på, hvad der er mest presserende for dem hele tiden, og at enhver anden del af virksomheden ved, hvad de laver. Der er et højt ejerskabsniveau for hver ingeniør, og alle er i sidste ende ansvarlige for deres eget arbejde. Ikke blot gør dette virksomheden mere smidig, men det forhåbentlig også øger tilfredshed på arbejdspladsen. Ingen er bare en tandhjul i maskinen.

enhver fra overalt i organisationen kan foreslå en idé til en ny funktion

Jeg var meget imponeret over at høre, at nogen fra overalt i organisationen kunne foreslå en idé til en ny funktion og derefter komme til at arbejde på det, hvis man får det til at gå foran. Nogle gange kan dette endda udvikle sig til sin egen separate app! Facebook er meget mere et samarbejdsprojekt end den top-down håndhævede vision for et par mennesker (eller en person), som det ofte fremstilles som.

Dette gør det muligt for Facebook at implementere en overordentlig hurtig udviklingscyklus, der muliggør en ny mobilopdatering hver uge og tusinder af forpligtelser (foreslåede kodeændringer) mellem da. Hvis du synes det er imponerende, opdateres webversionen (hvis backend også tjener mobilappen) en gang hver to til tre timer!

Facebook er generelt meget støttende for nye ideer og opstart. Det har endda et initiativ kaldet LDN LAB, der er afsat til at støtte nye ideer og virksomheder.

At finde balance

Taget fra Tals egne lysbilleder

Der er selvfølgelig stadig en grænse for, hvad et firma kan håndtere. Med denne meget kode er der altid plads til forbedringer, men der skal komme et tidspunkt, hvor versionen betragtes som "god nok."

Det er her den "gyldne trekant" kommer ind. Denne trekants tre punkter repræsenterer funktioner, kvalitet og tid. Hver virksomhed har et valg at foretage her: prioriterer du nye funktioner, når det kommer til crunch-tid, på bekostning af at tage lidt længere tid? Tillader du, at en mindre eksisterende fejl glider gennem nettet, hvis det betyder, at du kan tilføje flere funktioner? Når du ikke kan gøre alt, er du tvunget til at prioritere.

Hos Facebook er prioriteterne kvalitet og tid. Hvis en opdatering falder bag det tildelte vindue, vil en funktion sandsynligvis blive skubbet tilbage; snarere end et hjørne, der skæres, eller opdateringen forsinkes.

Versionskontrol og jongleringsændringer

For at håndtere disse opdateringer og ændringer af koden bruger Facebook sin egen ændrede version af Mercurial. Det er i stedet for den meget udbredte Git, som tilsyneladende ikke skalerer så godt til virksomhedens formål. Phabricator svarer til GitHub og bruger en masse plugins til at hjælpe med at strømline arbejdsgangen og undertiden bare for at gøre tingene lidt sjovere (Facebook kan godt lide, at det er memes).

For ikke-programmerere derude er Mercurial, ligesom Git, et versionskontrolsystem. Det giver et stort antal mennesker mulighed for at arbejde på et enkelt stykke software og foretage ændringer og rettelser uden at bringe den vigtigste appversion, kaldet “mastergren”, i fare. Disse værktøjer hjælper med at forhindre kodekonflikter og giver mulighed for eksperimentering. Først når en ændring er blevet grundigt godkendt på en testgren, vil den blive forpligtet over for masteren.

Forestil dig, at hvis en dårlig programmør lavede en skrivefejl, der brød hele koden, og der kun var en version! Det ville være en dårlig dag for alle.

Værktøjer som Mercurial gør det muligt at implementere scrum-metoden med relativ lethed og lader alle arbejde på specifikke funktioner og bugs samtidig, før de flettes sammen i en stor gryde.

En gang om ugen vil en frigørelseskandidat blive afskåret fra masteren, og dette vil derefter gå gennem testfasen. Kodere, der har brugt hele ugen på at arbejde med fejlrettelser eller nye funktioner, vil på dette tidspunkt krydse fingrene i håb om, at deres arbejde bliver til den nye opdatering.

Eventuelle rettelser eller ændringer i sidste øjeblik foretaget af teammedlemmer kræver, at de bliver "kirsebærplukket" for at blive inkluderet i den nye afdeling af de ansvarlige. Efter sigende har det været kendt at have brugt bestikkelse i form af chokolade og alkohol, der er gave til beslutningstagerne.

For at kompilere bruger Facebook et andet værktøj kaldet Buck. Dette enkelt build-værktøj kan bygge alt, hvad det drejer sig om at pakke appen. Der er ikke behov for separate indstillinger som Gradle eller Maur når man målretter mod forskellige platforme.

At fange fejl i tide

Med alle, der arbejder på forskellige ting, og så mange opdateringer, der regelmæssigt går ud, er det meget vigtigt, at virksomheder sørger for, at deres software fungerer og ikke har nogen alvorlige fejl. For det meste har Facebook en ret god track record med at holde tingene kørende.

Med henblik herpå opdeler teamet softwaretestning i lag, kaldet C1, C2 og C3.

C1 er intern test, og alle medarbejdere kører den version. Under C2 kører versionen gennem 2 procent af offentligheden, og C3 er produktion. Hvis der findes noget virkelig alvorligt, vil enhver medarbejder kunne få adgang til en nødstopknap for at bringe produktionen til at stoppe.

De frivillige, der fremsætter sig selv for at holde niveauerne fremskridt, går under navnet "træskuffere" (fordi grene), og gør dette oven på deres faste job.

På mobil kaldes lignende niveauer alpha, beta og prod. Alpha betyder en intern test, som alle ansatte vil køre. Enhver virksomheds proces, der bruger sine egne produkter på denne måde, kaldes "hundefoder" - fra "at spise din egen hundefoder."

Testere har også nogle unikke og interessante værktøjer til rådighed til hurtigt at rapportere fejl. Den ene er "Rageshake", hvor simpelthen rystelse af enheden i frustration muliggør en fejlrapport, ligesom med Google Maps.

Testere har også nogle unikke og interessante værktøjer til rådighed til hurtigt at rapportere fejl

Under alpha - som effektivt refererer til enhver intern test - bruger Facebook også automatisk test til at køre appen. For eksempel fungerer et for nylig erhvervet stykke software kaldet “Sapienz” i det væsentlige ved at klikke på hver knap og bruge hver funktion i et tilfældigt angreb, indtil det udløser et nedbrud. Derefter logges stakesporet, registrerer handlingen og rapporterer tilbage.

Beta-appen (den version, der testes af offentligheden) gennemgår en lille underafsnit (~ 2 procent) af offentligheden. Dette lille uddrag modtager opdateringen på forhånd og giver Facebook feedback fra den virkelige verden. Hvis alt synes godt, går opdateringen ud til hele befolkningen, og processen begynder på ny.

Kraftfulde værktøjer til automatisering og kraftmultiplikation

For at holde hele denne proces så hurtig og så glat som muligt bruger Facebook et stort antal forskellige værktøjer. Vi har allerede set, hvordan virksomheden bruger Phabricator og Sapienz, men det har andre værktøjer og plugins til andre faser.

Et værktøj kaldet Picknic samler alle pull-anmodninger (ændringer, som medarbejderne har foretaget), ét sted for hurtig og nem gennemgang.

Når testen kaster en fejl op, informerer en bot kaldet Nagbot de ansvarlige og tilskynder dem forsigtigt til at få gjort arbejdet. Brug af en rudimentær AI til at håndtere denne proces sikrer ikke kun, at arbejdet bliver gjort, men giver også lederen mulighed for at undgå at være den “dårlige fyr” ved konstant at narre!

når test kaster en fejl op for nogen at rette op, informerer en bot kaldet Nagbot de ansvarlige og tilskynder dem forsigtigt til at få udført det arbejde

Crashbot er en anden bot, der er ansvarlig for at rapportere disse fejl, når de sker, og foretrækkes frem for målinger fra Google Console, idet det rapporteres i realtid. Crashbot markerer et problem, når problemerne overskrider en "acceptabel crashtærskel." Dette kan skyldes antallet af mennesker, der oplever fejlen, eller antallet af gange, en enkelt bruger har fundet den samme fejl. Uanset hvad vil Facebook også have en metrisk, der viser antallet af triste brugere.

Til intern kommunikation bruger Facebook noget, der hedder Workplace. Dette er effektivt en version af Facebook beregnet til virksomheder, som giver en nyttig måde at få information om medlemmer af teamet og kommunikere hurtigt med dem, der sidder på den anden side af det spredte kontor. Facebook sælger også denne software til tredjepart.

Naturligvis spilder Facebook ikke tid på at uploade hver nye version af sine apps til Play Store, App Store, Amazon og alle de andre. Der er også en app til den der kaldes Mobile Push Train.

Lukende tanker

At holde en app som Facebook ajour er et enormt tilsagn, og virksomheden er stadig nødt til at overbevise brugerne om faktisk at installere disse opdateringer. Dette er især vanskeligt i lande, hvor tilslutning ikke er garanteret. I Canada kører kun en procent af brugerne stadig en version af Facebook over et år gammel. I Etiopien er dette tal nærmere 50 procent!

Teamet hos Facebook arbejder helt klart meget hårdt og bruger et væld af værktøjer og processer for at holde alt så strømlinet som muligt. I slutningen af ​​dagen har udviklingsholdet til formål at overholde fem regerende principper:

  • Hold mesteren ren.
  • Har et team med ekspertise inden for frigørelsesteknik.
  • Slip ofte til tiden.
  • Dogfood produkter.
  • Vær venlig mod brugere.

Det lyder enkelt, men som du kan se, det involverer en masse spinding plader. Selv vedligeholdelse af alle de værktøjer, der bruges i processen, er et projekt i sig selv!

På sin side opretholder Facebook en venlig og mildhjertet atmosfære på kontoret i London. Holdet udveksler GIF'er og memes gennem plugins, de navngiver værelser baseret på "ting, som britene hader" og Shakespearean-ordspil, og de er meget stolte af deres arbejde. Hos Facebook arbejder de hårdt og spiller hårdt, og det ser ud til, at for det meste fungerer systemet.

Næste gang en ny opdatering rulles ud for en af ​​dine større apps, skåne en tanke til alt det arbejde og organisation, det krævede for at få det der.

Tapet app er overalt. De er et halvt krone i Google Play tore. Plu, du kan altid øge online efter endnu mere. Nogle har dog en ærlig kærlighed til fotografering. Foto har en tenden til...

kærmen er en af ​​de met følomme - og dyre - dele af en martphone og kan let knue, når du taber en enhed på jorden. For at minimere chancerne for, at det ker, er en kærmbekytt...

Fascinerende Publikationer.