Uno sguardo al processo di sviluppo delle app mobili di Facebook

Autore: Laura McKinney
Data Della Creazione: 4 Lang L: none (month-011) 2021
Data Di Aggiornamento: 1 Luglio 2024
Anonim
Sviluppo di App Windows Universal
Video: Sviluppo di App Windows Universal

Contenuto


Di recente, ho visitato il quartier generale di Facebook a Londra per conoscere il processo di sviluppo e manutenzione della sua app Facebook mobile. Qui si svolge molto di più di quanto tu possa immaginare: alcune delle app di Facebook sono gestite qui nella loro interezza, come WhatsApp per desktop e l'app Workplace orientata al business.

Gli uffici sono esattamente ciò che ti aspetteresti dall'immagine di Facebook, anche se forse non del tutto ai livelli di eccesso del Social Network. Questo è un posto dove si fa un lavoro serio, ma c'è comunque un'atmosfera alla moda, eccentrica e rilassata. I dipendenti possono trasportare i laptop per lavorare ovunque scelgano, c'è una sala stampa per realizzare poster (solo perché), opere d'arte commissionate su diversi muri e una gigantesca tartaruga ninja: non ho mai avuto una risposta sul perché.

Oh, e il cibo è incredibile. Ci sono stato durante il capodanno cinese e ho avuto multiplo pancetta di maiale. Bei tempi.


Tuttavia, non ero lì per godermi l'arredamento e la cucina, ero lì per conoscere Facebook su cellulare. Più in particolare: come diavolo fai a mantenere un progetto così ampio e ambizioso? Il backend di Facebook serve oltre due miliardi di persone e l'app Android da sola vede una nuova versione rilasciata ogni settimana.

Come gestisci un'app con un numero così ambizioso di funzionalità

Ho parlato con Tal Kellner tramite il sistema di telepresenza di Facebook. Tal è un responsabile tecnico del programma, responsabile del Release Engineering Team con sede nell'ufficio tecnico di Tel Aviv. Era più che felice di condividere i dettagli grintosi.

Tal e il suo team caricano per la prima volta la loro versione Lite di Facebook su iOS


Quello che ho imparato è stato piuttosto affascinante sia dal punto di vista dello sviluppatore che come utente. Ecco cosa ho scoperto.

Gestione del progetto su Facebook - Why Scrum> Waterfall

Quando si guarda a un progetto di grandi dimensioni, è necessario considerare il proprio approccio di gestione del progetto. Uno di questi esempi si chiama gestione del progetto "a cascata". Questo è un approccio sequenziale e lineare in cui si lavora a sua volta su una fase specifica, come passare dall'ideazione all'implementazione al testing fino al rilascio.

aziende come Facebook optano invece per un approccio più moderno alla gestione dei progetti chiamato "scrum"

Fondamentalmente, in questo approccio non si avvia la fase successiva fino al completamento della fase precedente. Il sistema nasce dalla produzione, in cui alcune fasi si basano spesso sulla fase precedente: è necessario procurarsi mattoni prima di poter costruire un muro!

Quando si tratta di software, questo approccio è restrittivo. Nel peggiore dei casi, un aggiornamento può richiedere molto tempo per essere implementato, è obsoleto quando arriva. Il duca Nukem per sempre qualcuno?

Pertanto, alcune società di software optano invece per un approccio più moderno chiamato "scrum", che è una metodologia agile. Questo metodo dà la priorità al lavoro che conta di più e lo suddivide in blocchi modulari. Si basa sulla comunicazione tra i dipartimenti interni e persino i singoli agenti che lavorano da soli sui propri angoli di codice.

Il risultato, in teoria, è che tutti possono lavorare su ciò che è più urgente per loro in ogni momento e che ogni altra parte del business sa cosa sta facendo. C'è un alto livello di proprietà per ciascun ingegnere e tutti sono in ultima analisi responsabili del proprio lavoro. Questo non solo rende l'azienda più agile, ma spera anche di aumentare la soddisfazione sul posto di lavoro. Nessuno è solo un ingranaggio nella macchina.

chiunque da qualsiasi parte all'interno dell'organizzazione può suggerire un'idea per una nuova funzionalità

Sono stato molto colpito nel sentire che chiunque, ovunque all'interno dell'organizzazione, potesse suggerire un'idea per una nuova funzionalità, e poi metterci al lavoro su questo se fosse dato il via libera. A volte questo potrebbe persino svilupparsi in una propria app separata! Facebook è molto più un progetto collaborativo della visione dall'alto verso il basso forzata di poche persone (o una persona) in cui viene spesso rappresentato.

Ciò consente a Facebook di implementare un ciclo di sviluppo estremamente rapido, consentendo un nuovo aggiornamento mobile ogni settimana e migliaia di commit (modifiche al codice proposte) tra allora. Se ritieni che sia impressionante, la versione web (il cui backend serve anche l'app per dispositivi mobili) si aggiorna una volta ogni due o tre ore!

Facebook è generalmente molto favorevole a nuove idee e startup. Ha anche un'iniziativa chiamata LDN LAB dedicata a supportare nuove idee e imprese.

Trovare l'equilibrio

Tratto dalle diapositive di Tal

Naturalmente, ci sarà sempre un limite quando si tratta di ciò che un'azienda può gestire. Con questo codice c'è sempre spazio per miglioramenti, ma deve arrivare un momento in cui la versione è considerata "abbastanza buona".

È qui che entra in gioco il "triangolo d'oro". I tre punti di questo triangolo rappresentano caratteristiche, qualità e tempo. Ogni azienda ha una scelta da fare qui: quando si tratta di ridurre i tempi, dai la priorità alle nuove funzionalità a spese di un po 'di più? Consenti a un bug esistente minore di sfuggire alla rete se ciò significa che puoi aggiungere più funzionalità? Quando non puoi fare tutto, sei costretto a stabilire delle priorità.

Su Facebook, le priorità sono qualità e tempo. Se un aggiornamento non rientra nella finestra assegnata, una funzione verrà probabilmente respinta; piuttosto che tagliare un angolo o ritardare l'aggiornamento.

Controllo della versione e modifiche di giocoleria

Per gestire questi aggiornamenti e modifiche al codice, Facebook utilizza la propria versione modificata di Mercurial. Questo è invece del Git molto usato, che apparentemente non si è adattato allo scopo della compagnia. Phabricator è l'equivalente di GitHub e utilizza molti plugin per semplificare il flusso di lavoro e talvolta solo per rendere le cose un po 'più divertenti (a quanto pare Facebook apprezza i suoi meme).

Per i non programmatori, Mercurial, come Git, è un sistema di controllo della versione. Consente a un gran numero di persone di lavorare su un singolo software e di apportare modifiche e correzioni senza compromettere la versione dell'app principale, chiamata "ramo principale". Questi strumenti aiutano a prevenire conflitti di codice e consentono la sperimentazione. Solo una volta che una modifica sarà stata completamente approvata su un ramo di prova, verrà impegnata nel master.

Immagina se un povero programmatore avesse fatto un refuso che ha rotto l'intero codice e c'era solo una versione! Sarebbe una brutta giornata per tutti.

Strumenti come Mercurial consentono di implementare l'approccio scrum con relativa facilità, consentendo a tutti di lavorare su funzionalità e bug specifici contemporaneamente prima di unire tutto in un unico grande piatto.

Una volta alla settimana, un candidato al rilascio verrà tagliato dal master e questo passerà attraverso la fase di test. I programmatori che hanno trascorso tutta la settimana lavorando su correzioni di errori o nuove funzionalità a questo punto incroceranno le dita nella speranza che il loro lavoro arrivi al nuovo aggiornamento.

Eventuali correzioni o modifiche dell'ultimo minuto apportate dai membri del team richiedono che vengano selezionate "ciliegie" per l'inclusione nella nuova filiale da parte dei responsabili. Secondo quanto riferito, è noto che usano bustarelle sotto forma di cioccolatini e alcolici donati ai decisori.

Per compilare, Facebook utilizza un altro strumento chiamato Buck. Questo singolo strumento di creazione può creare qualsiasi cosa quando si tratta di impacchettare l'app. Non sono necessarie opzioni separate come Gradle o Ant quando si prendono di mira piattaforme diverse.

Catturare i bug in tempo

Con tutti coloro che lavorano su cose diverse, e così tanti aggiornamenti che escono regolarmente, è molto importante che le aziende si assicurino che il loro software funzioni e che non ci siano bug gravi. Per la maggior parte, Facebook ha una discreta esperienza nel mantenere le cose in esecuzione.

A tal fine, il team suddivide i test del software in livelli, denominati C1, C2 e C3.

C1 è un test interno e tutti i dipendenti eseguiranno quella versione. Durante C2, la versione attraversa il 2 percento del pubblico in generale e C3 è la produzione. Se dovesse essere trovato qualcosa di veramente serio, ogni dipendente sarà in grado di accedere a un pulsante di arresto di emergenza per fermare la produzione.

I volontari che si propongono di mantenere i livelli in progresso vanno sotto il nome di "tree huggers" (perché rami), e lo fanno in cima al loro lavoro normale.

Su dispositivi mobili, livelli simili sono chiamati alfa, beta e prod. Alpha significa un test interno, che verrà eseguito da tutti i dipendenti. Il processo di qualsiasi azienda che utilizza i propri prodotti in questo modo si chiama "cibo per cani" - dal "mangiare il proprio cibo per cani".

I tester hanno anche alcuni strumenti unici e interessanti a loro disposizione per segnalare rapidamente i bug. Uno è "Rageshake", in cui semplicemente scuotere il dispositivo per la frustrazione consentirà una segnalazione di bug, come con Google Maps.

I tester hanno anche alcuni strumenti unici e interessanti a loro disposizione per segnalare rapidamente i bug

Durante l'alfa, che si riferisce effettivamente a qualsiasi test interno, Facebook utilizza anche test automatici per eseguire l'app. Ad esempio, un software recentemente acquisito chiamato "Sapienz" funziona essenzialmente facendo clic su ogni pulsante e utilizzando tutte le funzionalità in un assalto casuale fino a quando non si innesca un arresto anomalo. Quindi registra la traccia dello stack, registra l'azione e riporta indietro.

L'app beta (la versione testata dal pubblico) passa attraverso una piccola sottosezione (~ 2 percento) del pubblico in generale. Questo piccolo frammento riceverà in anticipo l'aggiornamento, fornendo a Facebook un feedback reale. Se tutto sembra a posto, l'aggiornamento si estende a tutta la popolazione e il processo inizia di nuovo.

Strumenti potenti per l'automazione e la moltiplicazione della forza

Per mantenere l'intero processo nel modo più rapido e fluido possibile, Facebook utilizza un gran numero di strumenti diversi. Abbiamo già visto come l'azienda utilizza Phabricator e Sapienz, ma ha altri strumenti e plugin per altre fasi.

Uno strumento chiamato Picknic raccoglie tutte le richieste pull (modifiche apportate dai dipendenti) in un unico posto per una revisione rapida e semplice.

Quando il test genera un errore, un bot chiamato Nagbot informa i responsabili e li induce delicatamente a portare a termine il lavoro. L'utilizzo di un'intelligenza artificiale rudimentale per gestire questo processo non solo garantisce che il lavoro venga svolto, ma consente anche al manager di evitare di essere il "cattivo" infastidendo costantemente!

quando il test genera un errore che qualcuno può risolvere, un bot chiamato Nagbot informa i responsabili e li induce delicatamente a portare a termine il lavoro

Crashbot è un altro bot responsabile della segnalazione di tali errori nel momento in cui si verificano ed è preferibile alle metriche di Google Console, in quanto segnala in tempo reale. Crashbot segnalerà un problema quando i problemi superano una "soglia di arresto accettabile". Ciò può essere dovuto al numero di persone che hanno riscontrato l'errore o al numero di volte in cui un singolo utente ha riscontrato lo stesso errore. Ad ogni modo, Facebook avrà anche una metrica che mostra il numero di utenti tristi.

Per la comunicazione interna, Facebook utilizza qualcosa chiamato Workplace. Questa è effettivamente una versione di Facebook destinata alle aziende, che fornisce un modo utile per ottenere informazioni sui membri del team e comunicare rapidamente con coloro che siedono dall'altra parte dell'ufficio tentacolare. Facebook vende anche questo software a terzi.

Ovviamente Facebook non perderà tempo a caricare ogni nuova versione delle sue app su Play Store, App Store, Amazon e tutto il resto. C'è anche un'app per quella chiamata Mobile Push Train.

Pensieri conclusivi

Mantenere un'app come Facebook aggiornata è un'impresa immensa e l'azienda deve ancora convincere gli utenti a installare effettivamente quegli aggiornamenti. Ciò è particolarmente difficile nei paesi in cui la connettività non è garantita. In Canada, solo l'uno per cento degli utenti utilizza ancora una versione di Facebook di età superiore a un anno. In Etiopia, quel numero è più vicino al 50 percento!

Il team di Facebook lavora chiaramente molto duramente e utilizza una tonnellata di strumenti e processi per mantenere tutto il più snello possibile. Alla fine della giornata, il team di sviluppo mira ad aderire a cinque principi dominanti:

  • Mantieni il padrone pulito.
  • Avere un team con esperienza nell'ingegneria dei rilasci.
  • Rilascio puntuale spesso.
  • Prodotti per alimenti per cani.
  • Sii gentile con gli utenti.

Sembra semplice, ma come puoi vedere coinvolge molte piastre rotanti. Anche mantenere tutti gli strumenti utilizzati nel processo è un progetto in sé!

Da parte sua, Facebook mantiene un'atmosfera amichevole e allegra nell'ufficio di Londra. Il team scambia GIF e meme tramite plugin, nominano stanze basate su "cose ​​che l'odio britannico" e giochi di parole shakespeariani e sono molto orgogliosi del loro lavoro. Su Facebook, lavorano duramente e giocano duramente, e sembra che per la maggior parte, il sistema funzioni.

La prossima volta che verrà lanciato un nuovo aggiornamento per una delle tue app più grandi, risparmia un pensiero per tutto il lavoro e l'organizzazione necessari per arrivarci.

appiamo già che Motorola ta lavorando u un telefono pieghevole a conchiglia, preumibilmente uando il nome RAZR. Ora embra che harp ia dipoto ad adottare anche queto deign, poiché ha preentat...

haw Academy offre cori interattivi accreditati condotti da eperti per farti apprendere una nuova abilità che migliora il tuo curriculum al tuo ritmo. Puoi epandere le tue competenze enza eere chi...

Popolare