Cómo se crean los proyectos de Highload PHP: transcripción





El 28 de julio, nuestra cuenta de Instagram y YouTube organizaron una transmisión en vivo con Alexander Vysotsky, un desarrollador de PHP líder en la oficina de Badoo en Londres, que trabaja en el equipo anti-spam. Sasha habló sobre cómo se crean los proyectos de Highload en PHP, su vida en Londres y, por supuesto, sobre Badoo.









Mi nombre es Alexander Vysotsky, trabajo como desarrollador PHP líder en Badoo. Estamos desarrollando aplicaciones de citas Badoo y Bumble, que tienen más de 500 millones de usuarios en todo el mundo. 



Tenemos varias oficinas en diferentes países, pero la mayoría de los desarrolladores se encuentran en Moscú y Londres. En total, el equipo de desarrollo de Badoo tiene unas 300 personas. Tenemos 20 proyectos de código abierto y muchas herramientas internas de las que hablamos a menudo en nuestro blog sobre Habré.



Hoy quiero contaros cómo es trabajar como desarrollador backend en Badoo en condiciones de dos lanzamientos al día, una carga real y un millón de líneas de código, cómo adaptarse a la vida y trabajar en el extranjero y mantener unida a tu familia.



Como llegué a badoo



Mi ciudad natal es Saratov, donde también recibí una educación especializada: me gradué de la especialidad y estudios de posgrado en la Facultad de Ciencias de la Computación y Tecnologías de la Información de SSU. Cuando se graduó de la escuela de posgrado, había trabajado como desarrollador backend en varios campos: desde el sector turístico hasta los juegos.



A mediados de 2017, el proyecto principal en funcionamiento terminó y surgió la pregunta frente a mí, ¿qué hacer a continuación: buscar algo nuevo en Saratov, mudarse a Moscú o San Petersburgo, o ir a empresas extranjeras? En este punto, ya sabía sobre Badoo y solicité un puesto vacante en la oficina de Londres. Es cierto que no tenía suficiente experiencia y conocimientos para recibir una oferta. Pero al mismo tiempo recibí dos ofertas de trabajo de Alemania y Holanda. Junto con mi esposa, decidimos mudarnos y trabajar para una empresa alemana. Durante año y medio vivimos en Leipzig, una de las ciudades más grandes de Alemania, donde trabajé en soluciones turísticas.



Sin embargo, las ganas de trabajar en Badoo no desaparecieron, y volví a presentar mi candidatura un año después. Después de varias entrevistas telefónicas y una entrevista cara a cara, recibí una oferta. Así que a principios de 2019 me mudé a Londres.



Ambos movimientos, a Leipzig y Londres, fueron una prueba seria. Me encontré fuera del entorno habitual: no había amigos, familiares, padres con los que estuviera acostumbrado a comunicarme todos los días. No fue fácil para mí, ni para mi esposa, ni para nuestra familia en general. Estábamos buscando una salida de este estado e intentamos integrarnos en la nueva sociedad lo más rápido posible.



En Alemania, la barrera obvia era el idioma: siempre aprendimos inglés, pero aquí teníamos que abordar el alemán. Nos costó mucho esfuerzo, pero después de un año y medio de vivir en Leipzig, aprendimos bien el idioma, practicándolo todos los días. En Londres no surgió este problema, además, ya teníamos la experiencia de vivir en un país extranjero. Badoo brindó el máximo apoyo durante la mudanza en materia de búsqueda de piso, en la comunicación con las autoridades fiscales. Esto ayudó a integrarse en la vida local.



Uno de los momentos más difíciles para un ruso a la hora de mudarse son los impuestos. En Inglaterra, se utiliza una escala progresiva: la tasa de impuestos aumenta según el nivel de ingresos. Otro tema problemático es la medicina. Alguien dice que todo está en orden con ella, alguien no está de acuerdo. He tenido una experiencia positiva.



Una historia aparte fue con la búsqueda de vivienda. Las buenas opciones se desarman muy rápidamente. Además, antes de obtener un apartamento en alquiler, debe pasar por un cheque. En mi caso, incluso hubo llamadas a Alemania a nuestros propietarios anteriores: les preguntaron qué tan buen inquilino era.



También es importante para mí que a mi esposa le guste la vida en un lugar nuevo. Siempre quiso obtener la profesión de diseñadora y ahora se está preparando para la admisión. Encontré cursos que le gustan; Al mismo tiempo, endureció su lenguaje y aprobó el examen IELTS para ingresar a la licenciatura en diseño de interiores. Londres tiene una gama muy amplia de instituciones educativas, pero debes recordar que para los extranjeros el costo de la educación es varias veces más alto que para los locales.



A continuación, responderé algunas preguntas del chat.



¿Qué ayudó a adaptarse cada vez a un nuevo lugar?



El principal apoyo siempre está dentro de la familia. En nuestro caso, mi esposa y yo nos apoyamos mutuamente, y esto ayudó a superar todas las dificultades iniciales. Además, cada vez tuve suerte con el equipo: tengo compañeros muy chulos, ellos siempre apoyan de palabra y de hecho, comparten su experiencia, en un principio pueden ir contigo y solucionar el problema. En general, una buena familia y buenos colegas valen su peso en oro.



¿Vale la pena dejar el trabajo autónomo para trabajar en una gran empresa con un salario menor si nunca antes ha tenido esa experiencia laboral?



La cuestión, más bien, no está en el salario, sino en los procesos asociados a la transición a una gran empresa. Cuando trabaja por cuenta propia, establece un día de trabajo para usted y crea flujos de trabajo que lo ayudan a hacer las cosas. En una gran empresa, todo es diferente: plazos estrictos, mucha más comunicación, tanto entre colegas de un equipo como entre equipos. Debe pensar si este ritmo y formato de trabajo es adecuado para usted y tomar una decisión basada en esto.

En cuanto al salario, hay que mirar al futuro. Si ahora abandonas un gran salario como autónomo y te mudas a uno más pequeño, a una empresa, luego el salario puede crecer más fuerte gracias a la experiencia en la industria.



Pequeña exención de responsabilidad: puede visitar nuestro sitio web tech.badoo.comdonde publicamos las vacantes actuales. Tal vez encuentres algo de tu agrado y dejes una solicitud.



¿Cuáles son algunos de los beneficios de Badoo en comparación con las empresas más pequeñas?



Es mejor leer sobre esto en nuestro sitio web : hay más en la lista de los que puedo recordar. Los principales puntos que no pueden dejar de alegrarse son el seguro médico voluntario, la compensación de fitness, el desayuno, el almuerzo, la cena en la empresa, el equipo de trabajo de alta calidad.



¿Es cierto que Badoo no contrata para trabajar en Inglaterra? No encuentro una respuesta explícita.



Antes de la pandemia, teníamos vacantes tanto en Moscú como en Londres. En el entorno actual, por supuesto, la reubicación y los viajes de negocios entre oficinas están temporalmente congelados, aunque la contratación continúa. Ver actualizaciones en el sitio web: siempre indica en qué oficina hay una vacante abierta. La empresa se adhiere a la máxima transparencia en esta materia.



¿Tuviste que trabajar de forma remota? ¿Se ha vuelto más difícil? ¿Cómo interaccionaste?



Sí, todavía trabajamos de forma remota. Al principio fue difícil debido a que mis compañeros y yo no siempre coincidíamos en el tiempo: alguien más “no venía” a trabajar, alguien ya se había “ido”. Se requiere sincronización entre diferentes equipos. Los problemas de comunicación se han vuelto más difíciles de resolver. En lugar de hacer preguntas personalmente, tuve que escribir o llamar, lo que lleva mucho más tiempo.

Para la interacción, tenemos un gran conjunto de chats, videoconferencias que usamos. Ahora se ha vuelto más fácil, solía hacerlo.



¿Cómo controlar el esfuerzo, la perseverancia, la automotivación, la procrastinación?



No es ningún secreto que debido a la pandemia, la mayoría de las empresas de TI se han cambiado a trabajar desde casa. Fue difícil para mí reconstruir sobre otros rieles, pero destaqué algunos puntos para mí.

Primero, se necesita un control estricto de las horas de trabajo. Puedes informar a todos los compañeros que de 9 a 18 trabajas y estás disponible en todos los mensajeros, y fuera de este horario no respondes a las solicitudes. Todo el mundo trata esto con comprensión. Cuando se trabaja desde casa, es difícil separar el trabajo de la familia, pero es muy importante mantener un estado de ánimo y relaciones psicológicos.

En segundo lugar, la automotivación y la procrastinación son importantes. Muchos artículos sobre Habré dicen que la procrastinación es normal, pero mala cuando hay mucha. Utilizo la siguiente técnica: si me encuentro con un problema grande, lo divido en muchos pequeños. Y luego, la nueva característica aterradora ya no parece aterradora y se puede lanzar sin ningún problema.



PHP y alta carga en Badoo



Pasaré a las preguntas sobre el trabajo. Trabajo en el equipo anti-spam. Como sugiere el nombre, puede parecer que solo estamos tratando con anti-spam, pero esto está lejos de ser el caso. Nuestro objetivo es brindar la mejor experiencia posible para el uso de nuestras aplicaciones. Las tareas de proteger a los usuarios son muy importantes para nosotros, para ello se destinan muchos recursos y esfuerzos.



En resumen, estamos comprometidos en la lucha contra los usuarios malintencionados: aquellos que envían spam, cometen fraudes y estropean la experiencia del usuario. Estamos utilizando activamente ML. Por supuesto, no puedo entrar en detalles para no facilitarles la vida a los spammers, pero aquí hay algunos ejemplos.



Tenemos un modelo de detección de spam / estafas. Creamos una herramienta para analizar el tráfico móvil para un equipo paralelo. Además, nuestra empresa utiliza redes neuronales: para la verificación de fotos de gestos y al enviar fotos obscenas en el mensajero. Recientemente, nuestros colegas lanzaron un llamado "detector de imágenes de pene" para proteger contra contenido inapropiado en mensajes privados: el usuario puede elegir si quiere ver dicho contenido.



¿Cómo maneja Badoo el spam? ¿Simple si o ML ya?



He visto un chiste en alguna parte de que ML es solo un montón de si / si no. Pero, por supuesto, este no es el caso en absoluto con nosotros.

Badoo tiene varios usos para ML, ya que puede mejorar enormemente los proyectos. Por ejemplo, como dije, usamos la verificación de la foto del usuario, y ML ayuda con esto: determina que la persona realmente tomó una foto ahora y que hizo lo que se le pidió. Las neuronas son geniales.



¿Cómo implementa ML? PHP, otro lenguaje, algún tipo de framework, ¿desarrollo completamente propio?



Tenemos muchachos geniales en el equipo de datos. El blog tiene un informe interesante de Alexander Krasheninnikov , desafortunadamente, ya es mi antiguo colega, que dice qué tipo de equipo es, qué problemas resuelve, cómo mejora el trabajo de Badoo y nos ayuda a todos. El equipo de datos ha creado su propio marco de ML, que es muy fácil de usar y está disponible para todos los demás equipos de la empresa: podemos decir que ya han hecho todo el trabajo por nosotros. Tienen una implementación muy buena, excelente documentación, un enfoque muy sencillo para trabajar con el marco.



¿Cuáles fueron los mayores desafíos a los que se enfrentó en Badoo?



No puedo señalar una tarea o un proyecto específicos que serían los más difíciles. Hay proyectos interesantes y hay otros muy interesantes. En mi práctica, todos estos son proyectos relacionados con el aprendizaje automático. Cuando estaba en la escuela de posgrado, toqué este tema y esta área me impresiona. Hicimos un proyecto para el equipo de Performance Marketing relacionado con el análisis de tráfico; fue genial, encontramos muchas ideas útiles.



¿Por qué estás usando PHP?

 

PHP es una gran herramienta para resolver problemas de desarrollo web y desarrollar rápidamente un proyecto escalable. Pero la actitud hacia este idioma en la comunidad es ambigua, y esto se debe a su reputación. Desde el inicio de PHP, ha existido la percepción de que es muy fácil escribir código incorrecto en él. En mi opinión, el umbral de entrada bajo no es una desventaja. Al contrario, le permite involucrar a una amplia gama de personas en el desarrollo. Además, realmente hace un buen trabajo desarrollando aplicaciones web, y con cada nueva versión el lenguaje mejora. 



PHP 7 ha dado un gran paso adelante en términos de productividad y desarrollo. Tenemos un gran artículo en nuestro blog sobre Habré sobre cómo la transición a esta versión nos permitió liberar una parte importante de los recursos.



La popularidad de PHP ha estado cayendo recientemente, y esto es natural: aparecen otras herramientas y lenguajes que compiten con PHP, y muchos desarrolladores están cambiando a ellos. Pero es habitual que seleccionemos herramientas para una tarea específica, y PHP se encarga de la tarea.



¿Qué opinas de PHP 8, planeas migrar?



Estamos monitoreando activamente cada nueva versión de PHP. Por supuesto, usaremos todas las características de la nueva versión, por supuesto, después de asegurarnos de que nuestro código es compatible, y la transición a PHP 8 dará más beneficios que el tiempo que dedicaremos a la transición en sí. Decidiremos sobre la transición cuando salga PHP 8.

Como dije, cuando cambiamos a PHP 7, liberamos muchos servidores, que dirigimos a otras tareas. Es decir, la transición a la nueva versión puede traer grandes beneficios.



¿Badoo utiliza la compilación PHP?



No.



Cuéntanos más sobre el marco de trabajo autoescrito de Badoo. ¿Sobre qué base se implementa y cómo es más?



Esto lo hace el equipo de la plataforma: los chicos que crean "backend para backend" y dan soporte a la mayor parte de los desarrolladores de backend. Nos dan muchas cosas interesantes. Ya he hablado en parte de esto: por ejemplo, implementan la misma funcionalidad de cola que se usa ampliamente en la empresa; también hacen un servicio en la nube para nuestras necesidades.



No diría que el marco es similar a algo específico. Trabajé con Laravel y Symfony; por supuesto, hay algunas partes y podemos usar módulos que son de código abierto en nuestro proyecto. Pero no creo que nuestro repositorio de git sea muy diferente en enfoques de otros marcos modernos. Usamos administradores de paquetes para extraer dependencias de terceros, usamos carga automática, usamos módulos para encapsular fragmentos de código.



¿Por qué Badoo usa un monolito y no microservicios?



Esta es una pregunta bastante sagrada, la comunidad está dividida en dos campos sobre esto. Para nadie es un secreto que utilizamos una arquitectura monolítica, y durante la existencia del proyecto hemos aprendido a lidiar con las desventajas de este enfoque y a aprovechar todas sus ventajas. Además, contamos con un conjunto de servicios (en Go, PHP, C ++) que usamos activamente en nuestro trabajo diario.



Si entendemos la pregunta como “deberíamos renunciar a todo y utilizar todos los recursos disponibles para reescribir el monolito existente para una arquitectura de microservicio”, responderé que no. Tenemos desafíos comerciales que la solución existente maneja con éxito. Si es necesario, estamos listos para los cambios, pero, como dije, elegimos la herramienta de acuerdo con la tarea en cuestión.



¿Cómo se escalan las diferentes piezas de un monolito bajo carga?



Buena pregunta para dar seguimiento a monolitos y microservicios. Tenemos una gran presentación en nuestro blog sobre el rendimiento y cómo se construye nuestro backend desde un punto de vista arquitectónico; te lo diré brevemente. Tenemos alrededor de 600 servidores que manejan todas las solicitudes de los clientes, y son responsables de nuestro monorepository. Con este enfoque, tenemos cierta flexibilidad para escalar, agregar autos nuevos, ingresar el código y están listos para usar.



¿Qué tan fluida es la implementación en un entorno monolítico?



La respuesta a esta pregunta se puede dividir en dos partes. La primera es la implementación técnica de nuestro pipeline CICD, que fue bien descrita por mi ex colega Yuri Nasretdinov en su charla en HighLoad (" 5 formas de implementar código PHP en condiciones de alta carga "). Recomiendo mirar. En resumen, tenemos varios cientos de servidores que atienden las solicitudes de los usuarios. Durante la implementación, solo implementamos cambios en el repositorio y cambiamos de forma atómica el enlace simbólico. 



La segunda parte es asegurarse de que la implementación no interrumpa la producción para nosotros. Antes del lanzamiento, cualquier código se verifica mediante una unidad, integración y prueba de interfaz de usuario, así como un analizador estático para detectar problemas obvios. Contamos con un departamento de control de calidad amplio y profesional, lo que nos permite lanzar con éxito dos veces al día.



Con un ciclo de lanzamiento tan corto, es muy importante para nosotros mantener la calidad de nuestro producto en un nivel alto: no queremos lanzar errores / fatales a la producción. Por lo tanto, la prueba de las funciones que se están implementando en producción es lo primero. Todo desarrollador de backend está interesado en el hecho de que su función en el backend se lanza sin acciones adicionales de su departamento y de los equipos de front-end y móviles. Puede que exista una situación en la que tenga un ticket para el desarrollo de una función de backend, la libere en producción, pero en realidad comienzan a usarla solo después de un tiempo. Luego, los ingenieros de control de calidad se acercan a usted y le preguntan por qué no funciona. Por lo tanto, en el lado del backend, al lanzar la funcionalidad, lo cubrimos con el número máximo de pruebas, simulacros y QAP para estar 100% seguros de que todolo que rodamos está funcionando al 100%.



¿Un nabo, todos están empujando a un lugar?



Sí, solo hay un nabo, y todos los ingenieros de back-end están presionando. Tenemos una regla interna para nombrar las ramas que de alguna manera están relacionadas con la tarea en cuestión. Por supuesto, no puede empujar el maestro directamente, la rama se empuja allí después de una revisión exitosa del código, después de todas las verificaciones y pruebas unitarias, y después de que el ingeniero de control de calidad que trabajó en la tarea con usted dijo que todo está en orden.



¿Está utilizando DDD u otros patrones arquitectónicos?



DDD es diseño basado en dominios. No es un patrón arquitectónico, sino una metodología. No diría que tenemos un enfoque específico, usamos una combinación de varios. 



Acerca de los patrones: en el backend, se utilizan varios patrones de diseño para resolver problemas, me gustaría resaltar esto en detalle. Usamos implementaciones de bus de eventos, tenemos muchas colas, enviamos millones de eventos que son procesados ​​por los consumidores correspondientes. También entre los patrones que se utilizan activamente se encuentra el patrón Module: la mayor parte de nuestro código se divide en instancias separadas y conectadas que interactúan a través de una API abierta limitada.



¿Utiliza excepciones o intenta evitarlas?



Usamos. Y tratamos de evitarlo.



¿Tu API es un monolito?



Si.



¿Cómo se prueba la API?



Tenemos pruebas unitarias y todo un marco para ejecutar una gran cantidad de pruebas en paralelo con una cantidad mínima de tiempo. Puedes leer más sobre esto en el artículo de Vladimir Yants en nuestro blog , describió bien y en detalle este tema. En términos de pruebas de IU, usamos Calabash y Selenium para probar que la IU funciona correctamente.



Desarrollo impulsado por pruebas, cuando las pruebas primero, luego el código, ¿no practica?



Con nosotros, cada equipo puede usar su propio enfoque al desarrollar, y sé que algunos colegas lo practican. Sé que funciona, pero no lo practico yo mismo.



¿Qué opinas de DDD?



Como dije, estamos compilando a partir de múltiples enfoques. Si hablamos de mi actitud personal, apoyo cualquier enfoque que le permita resolver problemas de manera eficaz. Vale la pena invertir en DDD: le permitirá realizar aplicaciones con un nuevo nivel de calidad.



Cuéntenos, ¿fue tal que la producción no pudo soportar una gran carga? Como manejaste esto?



No estaba en mi memoria. Contamos con ingenieros experimentados, nuestro producto ha estado en desarrollo durante más de 15 años y la empresa tiene una vasta experiencia en el desarrollo de grandes cargas. Nuestro objetivo es maximizar el rendimiento de nuestras aplicaciones.



PHP y MySQL: ¿qué hacer para optimizar el rendimiento del backend?



Toca la pila utilizada en la empresa y el rendimiento, por lo que también dividiré la respuesta en dos partes.



Acerca de la pila: debido al hecho de que Badoo tiene una gran cantidad de departamentos y equipos, utilizamos el conjunto de tecnologías más amplio posible, desde PHP, MySQL, Nginx, Go, C ++ hasta Tarantool, LUA y Scala. Cada equipo elige una herramienta para resolver eficazmente la tarea. Dado que trabajamos en condiciones de alta carga y procesamos decenas de miles de solicitudes por segundo, el problema del rendimiento de nuestro backend se vuelve crítico.

Ahora vale la pena mencionar las herramientas que se crearon internamente y se lanzaron en código abierto. La primera herramienta es Pinba (PHP ya no es un cuello de botella). Es una herramienta para recopilar estadísticas y monitorear el desempeño de una aplicación sin afectar su desempeño y para presentar los datos recolectados de una manera amigable para los humanos. 



El siguiente es Codeisok: una herramienta para administrar repositorios de git y realizar revisiones de código. Usamos activamente nuestro trabajo interno, y antes de que la función se domine, aplicamos las mejores prácticas de revisión de código (también puede leer sobre ellas en nuestro blog ) para que el código más eficiente llegue a producción. 



Otra herramienta que nos permite rastrear el rendimiento de cada pieza de código individual es LifeProf: nos permite perfilar automáticamente todas las solicitudes. Todas estas herramientas (y más) se pueden encontrar en nuestro repositorio de Github.



¿Utiliza ORM o interacción de almacenamiento directo? ¿Por qué?



Ya mencioné que tenemos nuestro propio marco. Usamos nuestra propia implementación de ORM.



¿Cómo se organiza la interacción de los módulos del proyecto? ¿De clase en clase o algo más complicado?



Buena pregunta. Cada módulo tiene un punto de entrada (controlador frontal), que proporciona una API unificada e inteligible hacia el exterior, para otros módulos o para otras funciones. No revelamos toda la implementación interna para el resto del proyecto, solo dejamos lo que queremos dar afuera.



¿Qué bollos específicos de DB se utilizan con ORM?



No entiendo completamente la pregunta, pero intentaré responder.

Ya he dicho que nuestra base de datos principal es MySQL, la mayoría de los datos se almacenan en ella. También usamos Exasol, Presto, Tarantool y Aerospike para tareas específicas. Es decir, tenemos un gran conjunto de almacenamientos para cada tarea. No nos limitamos en elegir una herramienta: si el uso de la tecnología es rentable, la usamos. MySQL es fundamental para nuestra aplicación y usamos una variedad de replicaciones y fragmentos para mantener la carga de manera eficiente.



¿Cómo funcionan las pruebas de desarrollador? ¿Para subir todo localmente en la ventana acoplable usted mismo, o hay algo más complicado en los servidores virtuales?



Otra situación en la que no puedo responder exactamente.

No usamos Docker cuando desarrollamos en PHP (pero los administradores lo usan), tenemos un entorno de desarrollo común. Nuestro equipo de plataforma se dedica, entre otras cosas, a mantener nuestro entorno de desarrollo en condiciones de funcionamiento para el desarrollo, y allí ejecutamos todas las pruebas y presentamos las características que implementaremos en producción. Es decir, tenemos un entorno preconfigurado.



Sigo sin entender en qué consiste ML: PHP, Python, ¿algo más?



Solíamos usar Python para el marco ML, pero ahora cambiaron a Spark: esto ha aumentado considerablemente el rendimiento.



¿Cómo se equilibra la carga de 600 servidores? ¿Entiendo correctamente que esto es un monorepa en cada servidor, en la ventana acoplable?



Monorepa en cada servidor, lo equilibramos de una manera bastante estándar: usando Nginx.



¿Usas generadores de código? ¿Para qué tareas?



Lo usamos con bastante frecuencia. Al desarrollar, cuando necesita generar modelos de acuerdo con alguna descripción en las configuraciones, o si hay una clase que debe implementar la funcionalidad de acuerdo con una determinada plantilla.



¿Cómo funciona la replicación de bases de datos para MySQL?



Solo puedo responder superficialmente.

No es ningún secreto que tenemos centros de datos en Europa y EE. UU., Y es necesario mantener la coherencia de los datos entre ellos. Usamos la replicación entre repositorios centrales para mantener la información actualizada en cada ubicación. Debido al hecho de que puede haber un gran retraso de replicación entre los centros de datos, utilizamos varios tipos de cachés para aquellas tareas en las que la relevancia de los datos no es crítica.



¿Cómo apoyan los ingenieros de Badoo a la comunidad PHP de habla rusa? ¿Conferencias, reuniones, blogs, reuniones informales?



Badoo acoge y participa activamente en una gran cantidad de eventos especializados. Esto está integrado en la cultura de la empresa y en la cultura de nuestros ingenieros. Los desarrolladores comparten constantemente las mejores prácticas y conocimientos en reuniones, reuniones y conferencias internas y externas.



Tenemos Badoo PHP Meetup: dos veces al año, en nuestra oficina de Moscú. A las últimas reuniones asistieron unos 250 participantes. Mi colega Vladimir Yants, a quien ya he mencionado, está desarrollando reuniones informales en Moscú - BeerPHP Moscow. Ya tiene seguidores en San Petersburgo, Saratov y otras ciudades. El formato, por supuesto, está tomado de reuniones similares de BeerJS, pero sigue siendo muy bueno: en un entorno informal, comuníquese con personas de ideas afines, colegas y tipos de la industria.



Los ingenieros de Badoo participan regularmente en el comité de programación de la única conferencia de PHP en Rusia, PHP Rusia. Este año su parte online se ha vuelto internacional y gratuita para todos los participantes gracias a nuestra empresa.



También tenemos blogs en Habré y Medium , donde compartimos todas las novedades (no solo en PHP).



¿Toma Juns o es el mínimo medio?



Como dije, debes dejar una solicitud. Durante la entrevista, quedará claro si ahora tiene el conocimiento y la experiencia suficientes para comenzar a trabajar en la empresa, o si debe obtener la experiencia y el conocimiento relevantes en otro lugar y luego regresar, como lo hice yo.



¿Está planeando una oficina en los Estados Unidos?



Tenemos una oficina en los EE. UU., Donde se aloja Bumble, en Austin, Texas. Pero no hay un equipo de ingeniería allí y aún no se sabe si nos expandiremos.



, soft/hard- ?



Ya he dicho que todas las vacantes abiertas están en nuestro sitio web tech.badoo.com . Aconsejo a cualquiera que no se avergüence, que no tenga miedo, que observe los requisitos y deje las solicitudes.



Es difícil decir qué expectativas específicas puede tener una empresa de un candidato. Yo diría: si, al leer la descripción, tiene la sensación de que no es adecuado para esta vacante, debe presentar una solicitud al 100%. La experiencia o los conocimientos relevantes se pueden aprender de la persona a través de varias rondas de entrevistas. En mi opinión, debe realizar una solicitud en cualquier caso.



Desde las habilidades duras, por supuesto, debe tener experiencia y comprensión de cómo funcionan PHP y MySQL: estas son las principales tecnologías que usamos, nuestra pila cuando se trata de desarrollo backend. Otros departamentos tienen su propia pila.



Softskills es un tema amplio. En mi opinión, gran parte del desarrollo no se trata de escribir código, sino de comunicarse con las personas. Es muy importante hacer las preguntas correctas. Si sabe cómo hacer esto, el problema está resuelto al 50%. Siempre hay problemas de malentendidos, pero cuantos menos, mejor para ti, para la empresa y para el producto. Es decir, la capacidad de comunicarse bien, definitivamente necesita trabajar en equipo. También es importante que las personas sepan cómo asumir la responsabilidad de completar el proyecto (característica, parte de la funcionalidad).






Que paso antes



  1. Ilona Papava, ingeniera de software sénior en Facebook: cómo obtener una pasantía, obtener una oferta y todo sobre trabajar en una empresa
  2. Boris Yangel, ingeniero de ML de Yandex: cómo no unirse a las filas de especialistas tontos si es un científico de datos
  3. Alexander Kaloshin, EO LastBackend: cómo lanzar una startup, ingresar al mercado chino y obtener 15 millones de inversiones.
  4. , Vue.js core team member, GoogleDevExpret — GitLab, Vue Staff-engineer.
  5. , DeviceLock — .
  6. , RUVDS — . 1. 2.
  7. , - . — .
  8. , Senior Digital Analyst McKinsey Digital Labs — Google, .
  9. «» , Duke Nukem 3D, SiN, Blood — , .
  10. , - 12- — ,
  11. , GameAcademy — .





All Articles