Una mirada al proceso de desarrollo de aplicaciones móviles de Facebook

Autor: Laura McKinney
Fecha De Creación: 4 Abril 2021
Fecha De Actualización: 1 Mes De Julio 2024
Anonim
Una mirada al proceso de desarrollo de aplicaciones móviles de Facebook - Aplicaciones
Una mirada al proceso de desarrollo de aplicaciones móviles de Facebook - Aplicaciones

Contenido


Recientemente, visité la sede de Facebook en Londres para conocer el proceso de desarrollo y mantenimiento de su aplicación móvil de Facebook. Aquí hay mucho más de lo que probablemente te des cuenta: algunas de las aplicaciones de Facebook se manejan en su totalidad aquí, como WhatsApp para escritorio y la aplicación Workplace orientada a los negocios.

Las oficinas son justo lo que esperarías de la imagen de Facebook, aunque tal vez no del todo en los niveles de exceso de la Red Social. Este es un lugar donde se realiza un trabajo serio, pero hay un ambiente moderno, peculiar y relajado. Los empleados pueden llevar computadoras portátiles para trabajar donde quieran, hay una sala de impresión para hacer carteles (solo porque), obras de arte encargadas en varias de las paredes y una tortuga Ninja gigante: nunca obtuve una respuesta de por qué.

Ah, y la comida es increíble. Estuve allí durante el año nuevo chino y tuve múltiple vientres de cerdo. Buenos tiempos.


Sin embargo, no estaba allí para disfrutar de la decoración y la cocina, estuve allí para aprender sobre Facebook en dispositivos móviles. Más específicamente: ¿cómo demonios haces para mantener un proyecto tan grande y ambicioso? El backend de Facebook sirve a más de dos mil millones de personas, y solo la aplicación de Android ve una nueva versión lanzada cada semana.

¿Cómo gestionas una aplicación con una cantidad tan ambiciosa de funciones?

Hablé con Tal Kellner a través del propio sistema de telepresencia de Facebook. Tal es un gerente de programa técnico, a cargo del equipo de ingeniería de lanzamiento con sede en la oficina de ingeniería de Tel Aviv. Estaba más que feliz de compartir los detalles arenosos.


Tal y su equipo cargan su versión Lite de Facebook a iOS por primera vez

Lo que aprendí fue bastante fascinante tanto desde la perspectiva del desarrollador como como usuario. Esto es lo que descubrí.

Gestión de proyectos en Facebook - Por qué Scrum> Cascada

Al mirar cualquier proyecto grande, debe considerar su enfoque de gestión de proyectos. Un ejemplo de este tipo se llama gestión de proyectos "en cascada". Este es un enfoque secuencial y lineal en el que trabaja en una fase específica a su vez, como pasar de la ideación a la implementación a la prueba y el lanzamiento.

empresas como Facebook optan por un enfoque más moderno para la gestión de proyectos llamado "scrum"

De manera crucial, en este enfoque no comienza la siguiente fase hasta que se complete la fase anterior. El sistema se origina en la fabricación, donde ciertas etapas a menudo se basan en la etapa anterior: ¡necesita obtener ladrillos antes de poder construir un muro!

Cuando se trata de software, este enfoque es restrictivo. En el peor de los casos, una actualización puede tardar tanto tiempo en implementarse que es obsoleta para cuando llega. Duke Nukem ¿Alguna vez alguien?

Por lo tanto, algunas compañías de software optan por un enfoque más moderno llamado "scrum", que es una metodología ágil. Este método prioriza el trabajo que más importa y lo divide en fragmentos modulares. Se basa en la comunicación entre departamentos internos e incluso agentes individuales que trabajan solos en sus propios rincones de código.

El resultado, en teoría, es que todos pueden trabajar en lo que es más apremiante para ellos todo el tiempo, y que todas las demás partes del negocio saben lo que están haciendo. Hay un alto nivel de propiedad para cada ingeniero, y todos son responsables de su propio trabajo. Esto no solo hace que la empresa sea más ágil, sino que también aumenta la satisfacción en el lugar de trabajo. Nadie es solo un engranaje en la máquina.

cualquier persona de cualquier parte de la organización puede sugerir una idea para una nueva función

Me impresionó mucho saber que cualquier persona de cualquier parte de la organización podría sugerir una idea para una nueva función y luego trabajar en eso si se le da el visto bueno. ¡A veces esto podría incluso convertirse en su propia aplicación separada! Facebook es mucho más un proyecto de colaboración que la visión forzada de arriba hacia abajo de unas pocas personas (o una persona) a menudo se describe como.

Esto le permite a Facebook implementar un ciclo de desarrollo extremadamente rápido, permitiendo una nueva actualización móvil cada semana, y miles de confirmaciones (cambios de código propuestos) entre ellas. Si crees que es impresionante, ¡la versión web (cuyo backend también sirve para la aplicación móvil) se actualiza una vez cada dos o tres horas!

En general, Facebook apoya mucho las nuevas ideas y nuevas empresas. Incluso tiene una iniciativa llamada LDN LAB dedicada a apoyar nuevas ideas y negocios.

Encontrar el equilibrio

Tomado de las diapositivas de Tal

Por supuesto, siempre habrá un límite cuando se trata de lo que una empresa puede manejar. Con todo este código siempre hay margen de mejora, pero tiene que llegar un momento en que la versión se considere "suficientemente buena".

Ahí es donde entra en juego el "triángulo dorado". Los tres puntos de este triángulo representan características, calidad y tiempo. Cada empresa tiene que tomar una decisión aquí: cuando se trata del momento crucial, ¿prioriza las nuevas funciones a expensas de tomarse un poco más de tiempo? ¿Permites que un pequeño error existente se deslice por la red si significa que puedes agregar más funciones? Cuando no puedes hacer todo, estás obligado a priorizar.

En Facebook, las prioridades son calidad y tiempo. Si una actualización se queda atrás de la ventana asignada, una característica probablemente se retrasará; en lugar de cortar una esquina o retrasar la actualización.

Control de versiones y cambios de malabarismo

Para manejar estas actualizaciones y cambios en el código, Facebook usa su propia versión modificada de Mercurial. Eso es en lugar del muy usado Git, que aparentemente no escalaba tan bien para los propósitos de la compañía. Phabricator es el equivalente de GitHub, y utiliza muchos complementos para ayudar a optimizar el flujo de trabajo y, a veces, solo para hacer las cosas un poco más divertidas (aparentemente a Facebook le gustan sus memes).

Para los no programadores, Mercurial, como Git, es un sistema de control de versiones. Permite que un gran número de personas trabajen en una sola pieza de software y realicen cambios y arreglos sin poner en peligro la versión principal de la aplicación, llamada "rama maestra". Estas herramientas ayudan a prevenir conflictos de código y permiten la experimentación. Solo una vez que se haya aprobado completamente un cambio en una rama de prueba, se enviará al maestro.

¡Imagínese si un mal programador cometiera un error tipográfico que rompiera todo el código y solo hubiera una versión! Ese sería un mal día para todos.

Herramientas como Mercurial hacen posible implementar el enfoque scrum con relativa facilidad, permitiendo que todos trabajen en características y errores específicos simultáneamente antes de fusionarlo todo en un gran bote.

Una vez a la semana, un candidato de liberación se cortará del master y luego pasará por la fase de prueba. Los codificadores que han pasado toda la semana trabajando en la corrección de errores o en nuevas funciones en este momento cruzarán los dedos esperando que su trabajo llegue a la nueva actualización.

Cualquier arreglo o cambio de última hora realizado por los miembros del equipo requerirá ser "seleccionado" para su inclusión en la nueva sucursal por parte de los responsables. Según se informa, se sabe que usan sobornos en forma de chocolates y alcohol para los que toman las decisiones.

Para compilar, Facebook usa otra herramienta llamada Buck. Esta herramienta de compilación única puede compilar cualquier cosa cuando se trata de empaquetar la aplicación. No hay necesidad de opciones separadas como Gradle o Ant cuando se orienta a diferentes plataformas.

Atrapando errores a tiempo

Con todos trabajando en cosas diferentes, y con tantas actualizaciones que salen regularmente, es muy importante que las compañías se aseguren de que su software funcione y no tenga ningún error grave. En su mayor parte, Facebook tiene un historial bastante bueno de mantener las cosas funcionando.

Con ese fin, el equipo divide las pruebas de software en niveles, denominados C1, C2 y C3.

C1 es una prueba interna y todos los empleados ejecutarán esa versión. Durante C2, la versión se ejecuta a través del 2 por ciento del público en general, y C3 es producción. Si se encuentra algo realmente serio, cada empleado podrá acceder a un botón de parada de emergencia para detener la producción.

Los voluntarios que se esforzaron por mantener el progreso de los niveles se conocen con el nombre de "abrazadores de árboles" (por ramas), y lo hacen además de sus trabajos habituales.

En dispositivos móviles, los niveles similares se denominan alfa, beta y prod. Alfa significa una prueba interna, que todos los empleados ejecutarán. El proceso de cualquier compañía que use sus propios productos de esta manera se llama "alimentación para perros", desde "comer su propia comida para perros".

Los probadores también tienen algunas herramientas únicas e interesantes a su disposición para informar rápidamente de errores. Uno es "Rageshake", donde simplemente sacudir el dispositivo con frustración permitirá un informe de error, como con Google Maps.

Los probadores también tienen algunas herramientas únicas e interesantes a su disposición para informar rápidamente de errores

Durante alfa, que efectivamente se refiere a cualquier prueba interna, Facebook también usa pruebas automáticas para ejecutar la aplicación. Por ejemplo, una pieza de software recientemente adquirida llamada "Sapienz" funciona esencialmente haciendo clic en cada botón y usando cada función en un asalto aleatorio hasta que desencadena un bloqueo. Luego registra el seguimiento de la pila, registra la acción e informa.

La aplicación beta (la versión probada por el público en general) pasa por una pequeña subsección (~ 2 por ciento) del público en general. Este pequeño fragmento recibirá la actualización con anticipación, proporcionando a Facebook comentarios del mundo real. Si todo parece bueno, la actualización se envía a toda la población y el proceso comienza de nuevo.

Potentes herramientas para la automatización y la multiplicación forzada.

Para mantener todo este proceso lo más rápido y fluido posible, Facebook utiliza una gran cantidad de herramientas diferentes. Ya hemos visto cómo la compañía usa Phabricator y Sapienz, pero tiene otras herramientas y complementos para otras etapas.

Una herramienta llamada Picknic reúne todas las solicitudes de extracción (cambios que los empleados han realizado) en un solo lugar para una revisión rápida y fácil.

Cuando las pruebas arrojan un error, un bot llamado Nagbot informa a los responsables y los empuja suavemente para que hagan el trabajo. ¡Usar una IA rudimentaria para manejar este proceso no solo asegura que el trabajo se haga, sino que también le permite al gerente evitar ser el "tipo malo" al regañar constantemente!

Cuando las pruebas arrojan un error para que alguien lo repare, un bot llamado Nagbot informa a los responsables y los empuja suavemente para que hagan el trabajo

Crashbot es otro bot responsable de informar esos errores a medida que ocurren, y es preferible a las métricas de la Consola de Google, ya que informa en tiempo real. Crashbot marcará un problema una vez que los problemas superen un "umbral de bloqueo aceptable". Esto puede deberse a la cantidad de personas que experimentan el error, o la cantidad de veces que un solo usuario ha encontrado el mismo error. De cualquier manera, Facebook también tendrá una métrica que muestra el número de usuarios tristes.

Para la comunicación interna, Facebook usa algo llamado Workplace. Esta es efectivamente una versión de Facebook destinada a las empresas, que proporciona una forma útil de obtener información sobre los miembros del equipo y comunicarse rápidamente con aquellos que se encuentran al otro lado de la oficina en expansión. Facebook también vende este software a terceros.

Por supuesto, Facebook no perderá tiempo cargando cada nueva versión de sus aplicaciones en Play Store, App Store, Amazon y todo lo demás. También hay una aplicación para eso llamada Mobile Push Train.

Pensamientos finales

Mantener una aplicación como Facebook actualizada es una tarea inmensa, y la compañía aún necesita convencer a los usuarios para que realmente instalen esas actualizaciones. Esto es particularmente difícil en países donde la conectividad no está garantizada. En Canadá, solo el uno por ciento de los usuarios todavía tiene una versión de Facebook de más de un año. ¡En Etiopía, ese número está más cerca del 50 por ciento!

El equipo de Facebook claramente trabaja muy duro y utiliza un montón de herramientas y procesos para mantener todo lo más ágil posible. Al final del día, el equipo de desarrollo tiene como objetivo cumplir con cinco principios rectores:

  • Mantén limpio al maestro.
  • Tener un equipo con experiencia en ingeniería de lanzamiento.
  • Suelte a tiempo a menudo.
  • Productos de comida para perros.
  • Sé amable con los usuarios.

Suena simple, pero como puede ver implica muchas placas giratorias. ¡Incluso mantener todas las herramientas utilizadas en el proceso es un proyecto en sí mismo!

Por su parte, Facebook mantiene una atmósfera amigable y alegre en la oficina de Londres. El equipo intercambia GIF y memes a través de complementos, nombran salas basadas en "cosas que los británicos odian" y juegos de palabras de Shakespeare, y se enorgullecen mucho de su trabajo. En Facebook, trabajan duro y juegan duro, y parece que, en su mayor parte, el sistema funciona.

La próxima vez que se implemente una nueva actualización para una de sus aplicaciones más grandes, piense detenidamente en todo el trabajo y la organización que llevó llevarla allí.

Lo auriculare inalámbrico on una excelente opción para lo oyente que no quieren entire atado a u teléfono. Hay innumerable opcione diponible, dede lo má barato hata lo ridícul...

No, no tiene que uar Pixel tand con u Pixel 3 o 3 XL. La erie Google Pixel utiliza el etándar de carga Qi y funcionará con cualquier plataforma de carga y etera que admitan ete etándar....

Publicaciones Fascinantes