En inblick på Facebooks utvecklingsprocess för mobilappar

Författare: Laura McKinney
Skapelsedatum: 4 April 2021
Uppdatera Datum: 1 Juli 2024
Anonim
En inblick på Facebooks utvecklingsprocess för mobilappar - Appar
En inblick på Facebooks utvecklingsprocess för mobilappar - Appar

Innehåll


Nyligen besökte jag Facebook-huvudkontoret i London för att lära mig om processen att utveckla och underhålla sin mobila Facebook-app. Mycket mer händer här än du antagligen förstår: några av Facebooks appar hanteras här i sin helhet, som WhatsApp för desktop och den affärsinriktade Workplace-appen.

Kontoren är precis vad du kan förvänta dig av Facebooks bild, men kanske inte riktigt till sociala nivåer av överskott. Detta är en plats där seriöst arbete görs, men det finns en trendig, knäppa och avslappnad atmosfär ändå. Anställda kan bära bärbara datorer för att arbeta var de än väljer, det finns ett tryckeri för att skapa affischer (bara för), beställt konstverk på flera av väggarna och en jätte Ninja Turtle - jag fick aldrig svar på varför.

Åh, och maten är otrolig. Jag var där under det kinesiska nyåret och det hade jag flera olika fläskmage. Härliga tider.


Men jag var inte där för att njuta av inredningen och köket, jag var där för att lära mig om Facebook på mobil. Mer specifikt: hur på jorden går du till och med att upprätthålla ett projekt så stort och ambitiöst? Facebook-backenden tjänar över två miljarder människor, och Android-appen ser bara en ny version som släpps varje vecka.

Hur hanterar du en app med ett så ambitiöst antal funktioner

Jag talade med Tal Kellner via Facebooks eget telepresenssystem. Tal är en teknisk programchef som ansvarar för Release Engineering Team baserat på Tel Avivs tekniska kontor. Hon var mer än glad över att dela med sig de skitna detaljerna.


Tal och hennes team laddar upp sin Lite-version av Facebook till iOS för första gången

Det jag lärde mig var ganska fascinerande både ur utvecklarperspektiv och som användare. Det här är vad jag fick reda på.

Projektledning på Facebook - Why Scrum> Waterfall

När du tittar på ett stort projekt måste du ta hänsyn till din projektledningssätt. Ett sådant exempel kallas ”vattenfall” projektledning. Detta är en sekventiell och linjär strategi där du arbetar med en viss fas i tur och ordning, som att gå från idéer till implementering till test till frisläppning.

företag som Facebook väljer istället ett mer modernt tillvägagångssätt för projektledning som kallas "scrum"

Av avgörande betydelse, i detta tillvägagångssätt börjar du inte nästa fas förrän den föregående fasen är klar. Systemet kommer från tillverkning, där vissa steg ofta förlitar sig på föregående steg: du måste källa tegel innan du kan bygga en vägg!

När det gäller programvara är denna strategi begränsande. I värsta fall kan det ta så lång tid att uppdatera en uppdatering, den är föråldrad när den kommer. Duke Nukem För evigt någon?

Således väljer vissa mjukvaruföretag istället en mer modern metod som kallas "scrum", vilket är en smidig metod. Denna metod prioriterar det arbete som är viktigast och delar upp det i modulära bitar. Det förlitar sig på kommunikation mellan interna avdelningar och till och med enskilda agenter som arbetar ensamma på sina egna hörn av kod.

Resultatet är i teorin att alla kan arbeta med det som är mest pressande för dem hela tiden, och att alla andra delar av verksamheten vet vad de gör. Det finns en hög ägandegrad för varje ingenjör och alla är slutligen ansvariga för sitt eget arbete. Detta gör inte bara företaget mer smidiga, utan det ökar förhoppningsvis också arbetsplatsens tillfredsställelse. Ingen är bara en kugge i maskinen.

vem som helst från var som helst inom organisationen kan föreslå en idé till en ny funktion

Jag var väldigt imponerad av att höra att någon från någonstans inom organisationen kunde föreslå en idé till en ny funktion och sedan börja arbeta med det om man får klarsignalen. Ibland kan det till och med utvecklas till en egen separat app! Facebook är mycket mer ett samarbetsprojekt än den ovanifrån tvingade visionen för ett fåtal personer (eller en person) som ofta framställs som.

Detta gör att Facebook kan genomföra en mycket snabb utvecklingscykel, vilket möjliggör en ny mobiluppdatering varje vecka och tusentals åtaganden (föreslagna kodändringar) mellan dess. Om du tycker att det är imponerande uppdateras webbversionen (baksidan som också tjänar mobilappen) en gång varannan till tredje timme!

Facebook stöder generellt mycket nya idéer och nystartade företag. Det har till och med ett initiativ som heter LDN LAB som ägnas åt att stödja nya idéer och företag.

Att hitta balans

Hämtad från Tals egna bilder

Naturligtvis kommer det fortfarande alltid att vara en gräns när det gäller vad ett företag kan hantera. Med så mycket kod finns det alltid utrymme för förbättringar, men det måste komma en tid då versionen betraktas som "tillräckligt bra."

Det är där "gyllene triangeln" spelar in. Denna triangelns tre punkter representerar funktioner, kvalitet och tid. Varje företag har ett val att göra här: prioriterar du nya funktioner när det gäller crunch-tid på bekostnad av att ta lite längre tid? Tillåter du att en mindre befintlig bugg glider genom nätet om det betyder att du kan lägga till fler funktioner? När du inte kan göra allt, tvingas du prioritera.

På Facebook är prioriteringarna kvalitet och tid. Om en uppdatering faller bakom det tilldelade fönstret kommer en funktion troligen att skjutas tillbaka; snarare än att ett hörn skärs eller uppdateringen försenas.

Versionskontroll och jongleringsändringar

För att hantera dessa uppdateringar och ändringar av koden använder Facebook sin egen modifierade version av Mercurial. Det är istället för den mycket använda Git, som uppenbarligen inte skalade så bra för företagets ändamål. Phabricator motsvarar GitHub och använder många plugins för att effektivisera arbetsflödet och ibland bara för att göra saker lite roligare (Facebook gillar sina memes tydligen).

För de icke-programmerare där ute är Mercurial, liksom Git, ett versionskontrollsystem. Det gör att ett stort antal människor kan arbeta med en enda mjukvara och att göra ändringar och korrigeringar utan att äventyra huvudversionen av appen, kallad "mastergren." Dessa verktyg hjälper till att förhindra kodkonflikter och möjliggöra experiment. Först när en förändring har godkänts noggrant på en testgren kommer den att åtagas sig till befälhavaren.

Föreställ dig om någon dålig programmerare gjorde en skrivfel som bröt hela koden och det bara fanns en version! Det skulle vara en dålig dag för alla.

Verktyg som Mercurial gör det möjligt att implementera scrummetoden med relativt enkelhet och låter alla arbeta med specifika funktioner och buggar samtidigt innan de slås samman i en stor kruka.

En gång i veckan kommer en frisläpparkandidat att avskäras från befälhavaren och den kommer sedan att gå igenom testfasen. Kodare som har spenderat hela veckan med att arbeta med bugfixar eller nya funktioner kommer nu att korsa fingrarna och hoppas att deras arbete gör det till den nya uppdateringen.

Eventuella korrigeringar eller ändringar som gjorts av teammedlemmar i sista minuten kräver att de "cherry plockas" för att inkluderas i den nya grenen av de ansvariga. Enligt uppgift har de varit kända för att använda mutor i form av choklad och alkohol som är begåvade till beslutsfattarna.

För att kompilera använder Facebook ett annat verktyg som heter Buck. Detta enda byggverktyg kan bygga vad som helst när det gäller att förpacka appen. Det finns inget behov av separata alternativ som Gradle eller Myra när du riktar dig till olika plattformar.

Fångar buggar i tid

Med alla som arbetar med olika saker och så många uppdateringar som regelbundet går ut, är det mycket viktigt att företag ser till att deras programvara fungerar och inte har några allvarliga buggar. För det mesta har Facebook en ganska bra erfarenhet av att hålla saker igång.

Därför delar teamet mjukvarutestning i nivåer, kallad C1, C2 och C3.

C1 är interntestning och alla anställda kommer att köra den versionen. Under C2 går versionen igenom 2 procent av allmänheten, och C3 är produktion. Om något verkligt allvarligt hittas, kan varje anställd få åtkomst till en nödstoppsknapp för att få produktionen till ett stopp.

De frivilliga som lägger sig fram för att hålla nivån fortskrider går vidare med namnet "tree huggers" (eftersom grenar), och gör detta utöver sina vanliga jobb.

På mobil kallas liknande nivåer alfa, beta och prod. Alpha betyder ett internt test som alla anställda kommer att köra. Processen för alla företag som använder sina egna produkter på detta sätt kallas "dogfooding" - från "att äta din egen hundmat."

Testare har också några unika och intressanta verktyg till sitt förfogande för att snabbt rapportera buggar. Den ena är "Rageshake", där bara skakning av enheten i frustration möjliggör en felrapport, som med Google Maps.

Testare har också några unika och intressanta verktyg till sitt förfogande för att snabbt rapportera buggar

Under alfa - som effektivt hänvisar till alla interna tester - använder Facebook också automatiska tester för att köra appen. Till exempel fungerar en nyligen förvärvad mjukvara som kallas “Sapienz” i huvudsak genom att klicka på varje knapp och använda alla funktioner i ett slumpmässigt angrepp tills det utlöser en krasch. Den loggar sedan stapelspåret, registrerar handlingen och rapporterar tillbaka.

Beta-appen (den version som testats av allmänheten) går igenom ett litet underavsnitt (~ 2 procent) av allmänheten. Det här lilla utdraget kommer att få uppdateringen i förväg och ger Facebook feedback från den verkliga världen. Om allt verkar bra går uppdateringen ut till hela befolkningen och processen börjar på nytt.

Kraftfulla verktyg för automatisering och kraftmultiplikation

För att hålla hela processen så snabb och smidig som möjligt använder Facebook ett stort antal olika verktyg. Vi har redan sett hur företaget använder Phabricator och Sapienz, men det har andra verktyg och plugins för andra steg.

Ett verktyg som heter Picknic samlar alla dragförfrågningar (ändringar som anställda har gjort) på ett ställe för snabb och enkel granskning.

När tester kastar upp ett fel, informerar en bot som heter Nagbot de ansvariga och försöker dem försiktigt att få arbetet gjort. Att använda en rudimentär AI för att hantera den här processen säkerställer inte bara att arbetet görs, utan gör det också möjligt för chefen att undvika att vara den "dåliga killen" genom att ständigt pirra!

när tester kastar upp ett fel för någon att fixa, informerar en bot som heter Nagbot de ansvariga och försöker dem försiktigt att få arbetet gjort

Crashbot är en annan bot ansvarig för att rapportera dessa fel när de inträffar och är att föredra framför mätningar från Google Console, eftersom det rapporterar i realtid. Crashbot markerar ett problem när problemen överskrider en "acceptabel kraschgräns." Detta kan bero på antalet personer som upplever felet eller antalet gånger en enda användare har stött på samma fel. Hursomhelst kommer Facebook också att ha ett värde som visar antalet ledsna användare.

För intern kommunikation använder Facebook något som kallas Workplace. Detta är i själva verket en version av Facebook avsedd för företag, som ger ett användbart sätt att få information om medlemmarna i teamet och snabbt kommunicera med de som sitter på andra sidan kontoret. Facebook säljer också denna programvara till tredje part.

Naturligtvis kommer Facebook inte att slösa bort tid på att ladda upp varje ny version av sina appar till Play Store, App Store, Amazon och allt annat. Det finns också en app för den som kallas Mobile Push Train.

Stänga tankar

Att hålla en app som Facebook uppdaterad är ett enormt åtagande, och företaget måste fortfarande övertyga användare att faktiskt installera dessa uppdateringar. Detta är särskilt svårt i länder där anslutning inte är garanterad. I Kanada har bara en procent av användarna fortfarande en version av Facebook över ett år gammal. I Etiopien är det antalet närmare 50 procent!

Teamet på Facebook arbetar helt klart mycket hårt och använder massor av verktyg och processer för att hålla allt så strömlinjeformat som möjligt. I slutet av dagen syftar utvecklingsgruppen att följa fem härskande principer:

  • Håll befälhavaren ren.
  • Har ett team med expertis inom release engineering.
  • Släpp ofta i tid.
  • Hundfoderprodukter.
  • Var vänlig mot användare.

Det låter enkelt, men som du ser innebär det mycket snurrplattor. Även underhåll av alla verktyg som används i processen är ett projekt i sig själv!

På sin sida upprätthåller Facebook en vänlig och hjärtlig atmosfär på kontoret i London. Teamet utbyter GIF och memes genom plugins, de namnger rum baserade på "saker som briterna hatar" och Shakespearean-ordspår, och de är mycket stolta över sitt arbete. På Facebook arbetar de hårt och spelar hårt, och det verkar som om systemet för det mesta fungerar.

Nästa gång en ny uppdatering rullas ut för en av dina större appar, skona en tanke för allt arbete och organisation som krävs för att komma dit.

Drone Rush 2017-köpguide

Laura McKinney

Juli 2024

Helgdagarna är preci runt hörnet, och du kanke tänkte köpa en drönare. Kanke köper du för en familjemedlem eller för dig jälv, oavett din prikla eller din ...

Vi vet att många av er inte firar jul, men vi kan alla dra nytta av några bra drone-erbjudanden för emetern. Oavett om du handlar för dig jälv eller för en nära och ...

Vi Rekommenderar