
Em 28 de julho, nossa conta do Instagram e do YouTube apresentaram uma transmissão ao vivo com Alexander Vysotsky, um desenvolvedor PHP líder no escritório do Badoo em Londres, que trabalha na equipe anti-spam. Sasha falou sobre como os projetos Highload são criados em PHP, sua vida em Londres e, claro, sobre o Badoo.
Meu nome é Alexander Vysotsky, trabalho como desenvolvedor PHP líder no Badoo. Estamos desenvolvendo aplicativos de namoro Badoo e Bumble, que têm mais de 500 milhões de usuários em todo o mundo.
Temos vários escritórios em diferentes países, mas a maioria dos desenvolvedores está localizada em Moscou e Londres. No total, a equipe de desenvolvimento do Badoo tem cerca de 300 pessoas. Temos 20 projetos de código aberto e muitas ferramentas internas das quais falamos com frequência em nosso blog no Habré.
Hoje quero contar a vocês como é trabalhar como backend developer no Badoo em condições de dois lançamentos por dia, um verdadeiro highload e um milhão de linhas de código, como se adaptar à vida e trabalhar no exterior e manter sua família unida.
Como cheguei ao Badoo
Minha cidade natal é Saratov, onde também recebi uma formação especializada: me formei na especialidade e pós-graduação na Faculdade de Ciência da Computação e Tecnologias da Informação da SSU. Na época da graduação na pós-graduação, conseguiu trabalhar como desenvolvedor backend em diversas áreas: do setor de turismo aos games.
Em meados de 2017, o projeto principal em andamento terminou e surgiu a pergunta diante de mim, o que fazer a seguir: procurar algo novo em Saratov, mudar-se para Moscou ou São Petersburgo ou ir para empresas estrangeiras? A essa altura, eu já conhecia o Badoo e me candidatei a uma vaga no escritório de Londres. No entanto, não tinha experiência e conhecimento suficientes para receber uma oferta. Mas, ao mesmo tempo, recebi duas ofertas de emprego da Alemanha e da Holanda. Juntamente com minha esposa, decidimos nos mudar e trabalhar para uma empresa alemã. Por um ano e meio moramos em Leipzig - uma das maiores cidades da Alemanha - onde trabalhei com soluções turísticas.
No entanto, a vontade de trabalhar no Badoo não desapareceu, e me candidatei a uma vaga novamente, um ano depois. Depois de várias entrevistas por telefone e uma entrevista cara a cara, recebi uma oferta. Então, no início de 2019 me mudei para Londres.
Ambas as mudanças - para Leipzig e Londres - foram um teste sério. Eu me encontrei fora do ambiente habitual: não havia amigos, parentes, pais com quem estava acostumada a me comunicar todos os dias. Não foi fácil para mim, nem para minha esposa, nem para nossa família como um todo. Estávamos procurando uma saída desse estado e tentamos nos integrar na nova sociedade o mais rápido possível.
Na Alemanha, a barreira óbvia era o idioma: sempre aprendemos inglês, mas aqui tínhamos que lidar com o alemão. Deu muito esforço, mas depois de 1,5 anos morando em Leipzig, aprendemos bem o idioma, praticando todos os dias. Em Londres, esse problema não surgiu, além disso, já tínhamos a experiência de morar em um país estrangeiro. O Badoo deu o máximo apoio durante a mudança para encontrar um apartamento, no trato com as autoridades fiscais. Isso ajudou a se integrar na vida local.
Um dos momentos mais difíceis para um russo ao se mudar são os impostos. Na Inglaterra, uma escala progressiva é usada: a taxa de imposto aumenta dependendo do nível de renda. Outra questão problemática é a medicina. Alguém diz que está tudo bem com ela, alguém discorda. Tive uma experiência positiva.
Outra história foi com a busca por moradia. Boas opções são desmontadas muito rapidamente. Além disso, antes de conseguir um apartamento para alugar, você precisa passar por um cheque. No meu caso, houve até ligações para a Alemanha para nossos proprietários anteriores: eles foram questionados sobre o quão bom inquilino eu era.
Também é importante para mim que minha esposa goste de viver em um novo lugar. Ela sempre quis buscar a profissão de designer e agora se prepara para entrar. Encontrou cursos de que gosta; ao mesmo tempo, ela apertou o idioma e passou no teste IELTS para entrar no bacharelado em design de interiores. Londres tem uma gama muito ampla de instituições de ensino, mas lembre-se que o custo da educação para estrangeiros é várias vezes maior do que para os locais.
A seguir, responderei a algumas perguntas do chat.
O que ajudou a se adaptar cada vez a um novo lugar?
O principal suporte é sempre dentro da família. No nosso caso, eu e minha esposa apoiamos um ao outro e isso ajudou a superar todas as dificuldades iniciais. Além disso, toda vez que tive sorte com a equipe: Tenho colegas muito legais, eles sempre apóiam em palavras e ações, compartilham suas experiências, a princípio eles podem ir com vocês e resolver o problema. Em geral, uma boa família e bons colegas valem seu peso em ouro.
Vale a pena deixar o freelancer para trabalhar em uma grande empresa com um salário mais baixo se você nunca teve essa experiência de trabalho antes?
A questão não está, sim, no salário, mas nos processos associados à transição para uma grande empresa. Ao trabalhar como freelancer, você define um dia de trabalho para si mesmo e cria fluxos de trabalho que o ajudam a realizar as tarefas. Em uma grande empresa, tudo é diferente: prazos difíceis, muito mais comunicação - tanto entre colegas de equipe quanto entre equipes. Você precisa pensar se esse ritmo e formato de trabalho é adequado para você e tomar uma decisão com base nisso.
Quanto ao salário, você tem que olhar para o futuro. Se você agora abandonar um grande salário de freelance e mudar para um menor, para uma empresa, mais tarde o salário pode crescer mais forte graças à experiência no setor.
Pequeno aviso: você pode visitar nosso website tech.badoo.comonde publicamos as vagas atuais. Talvez você encontre algo do seu agrado e deixe um pedido.
Quais são alguns dos benefícios do Badoo em comparação com empresas menores?
É melhor ler sobre isso em nosso site : há mais coisas listadas lá do que consigo me lembrar. Os principais pontos que não podem deixar de ser alegres são o seguro médico voluntário, compensação de aptidão, café da manhã, almoço, jantar na empresa, equipamentos de trabalho de alta qualidade.
É verdade que o Badoo não contrata para trabalhar na Inglaterra? Não consigo encontrar uma resposta explícita.
Antes da pandemia, tínhamos vagas em Moscou e Londres. No ambiente atual, é claro, a relocação e quaisquer viagens de negócios entre escritórios estão temporariamente congeladas, embora o recrutamento continue. Veja as novidades no site: indica sempre em que escritório está aberta a vaga. A empresa adere à máxima transparência neste assunto.
Você teve que trabalhar remotamente? Tornou-se mais difícil? Como você interagiu?
Sim, ainda trabalhamos remotamente. No início foi difícil porque os meus colegas e eu nem sempre coincidíamos no tempo: outra pessoa “não veio” trabalhar, alguém já tinha “saído”. A sincronização entre equipes diferentes é necessária. Os problemas de comunicação tornaram-se mais difíceis de resolver. Em vez de fazer perguntas pessoalmente, tive que escrever ou ligar, o que leva muito mais tempo.
Para interação, temos um grande conjunto de chats, videoconferências que utilizamos. Agora ficou mais fácil - acostumar com isso.
Como controlar o esforço, a perseverança, a automotivação, a procrastinação?
Não é segredo que, devido à pandemia, a maioria das empresas de TI mudou para trabalhar em casa. Foi difícil para mim reconstruir em outros trilhos, mas eu destaquei alguns pontos para mim.
Primeiro, é necessário um controle rígido das horas de trabalho. Pode informar a todos os colegas que dos 9 aos 18 você trabalha e está disponível em todos os mensageiros, e fora deste horário não responde às solicitações. Todos tratam isso com compreensão. Quando você trabalha em casa, pode ser difícil separar trabalho e família, mas é muito importante manter sua atitude mental e seus relacionamentos.
Em segundo lugar, a automotivação e a procrastinação são importantes. Muitos artigos sobre Habré dizem que a procrastinação é normal, mas ruim quando há muita. Eu uso a seguinte técnica: se encontro um grande problema, divido-o em vários pequenos. E então o novo recurso assustador não parece mais assustador e pode ser lançado sem problemas.
PHP e alta carga no Badoo
Vou passar para as perguntas sobre o trabalho. Eu trabalho na equipe anti-spam. Como o nome sugere, pode parecer que estamos lidando apenas com anti-spam, mas está longe de ser o caso. Nosso objetivo é fornecer a melhor experiência possível para usar nossos aplicativos. As tarefas de proteção dos usuários são muito importantes para nós, muitos recursos e esforços são alocados para isso.
Para resumir, estamos engajados na luta contra usuários malévolos: aqueles que enviam spam, se envolvem em fraudes e estragam a experiência do usuário. Estamos usando o ML ativamente. Claro, não posso entrar em detalhes para não facilitar a vida dos spammers, mas aqui estão alguns exemplos.
Temos um modelo de detecção de spam / scam. Fizemos uma ferramenta de análise de tráfego móvel para uma equipe paralela. Além disso, nossa empresa usa redes neurais: para verificação de fotos por gestos e no envio de fotos obscenas no messenger. Recentemente, nossos colegas lançaram o chamado "detector de imagem de pau" para proteger contra conteúdo impróprio em mensagens privadas: o usuário pode escolher se deseja ver esse conteúdo.
Como o Badoo lida com spam? Simples se ou ML já?
Eu vi uma piada em algum lugar que ML é apenas um monte de if / else. Mas, é claro, esse não é o nosso caso.
O Badoo tem vários usos para o ML, pois pode melhorar muito os projetos. Por exemplo, como eu já disse, usamos verificação de foto do usuário, e o ML ajuda nisso: ele determina que uma pessoa realmente tirou uma foto agora e que fez o que lhe foi pedido. Os neurônios são legais.
Como você implementa o ML? PHP, outra linguagem, algum tipo de framework, desenvolvimento totalmente próprio?
Temos caras muito legais na equipe de dados. O blog tem uma reportagem legal do Alexander Krasheninnikov - infelizmente ele já é meu ex-colega - que conta que tipo de equipe é, quais problemas resolve, como melhora o trabalho do Badoo e ajuda a todos nós. A equipa de Data criou o seu próprio framework de ML, muito fácil de utilizar e disponível para todas as outras equipas da empresa: podemos dizer que já fizeram todo o trabalho por nós. Eles têm uma implementação muito legal, uma documentação excelente e uma abordagem muito direta para trabalhar com o framework.
Quais foram os maiores desafios que você enfrentou no Badoo?
Não posso destacar uma tarefa ou projeto específico que seria o mais difícil. Existem projetos interessantes e há outros muito interessantes. Na minha prática, esses são todos projetos relacionados ao aprendizado de máquina. Quando estava na pós-graduação, toquei nesse assunto e essa área me impressiona. Fizemos um projeto para a equipe de Marketing de desempenho relacionado à análise de tráfego - foi muito legal, encontramos muitos insights úteis.
Por que você está usando PHP?
PHP é uma ótima ferramenta para resolver problemas de desenvolvimento web e desenvolver rapidamente um projeto escalável. Mas a atitude em relação a esse idioma na comunidade é ambígua, e isso se deve à sua reputação. Desde o início do PHP, existe a percepção de que é muito fácil escrever códigos ruins nele. Na minha opinião, o baixo limite de entrada não é uma desvantagem. Pelo contrário, permite envolver uma ampla gama de pessoas no desenvolvimento. Além disso, ele realmente faz um bom trabalho no desenvolvimento de aplicações web, e a cada nova versão a linguagem melhora.
O PHP 7 deu um grande passo à frente em termos de produtividade e desenvolvimento. Temos um ótimo artigo em nosso blog sobre Habré sobre como a transição para esta versão nos permitiu liberar uma parte significativa dos recursos.
A popularidade do PHP tem caído recentemente, e isso é natural - outras ferramentas e linguagens parecem competir com o PHP, e muitos desenvolvedores estão mudando para elas. Mas é comum selecionarmos ferramentas para uma tarefa específica e o PHP lida com a tarefa.
O que você acha do PHP 8, você planeja migrar?
Estamos monitorando ativamente cada novo lançamento do PHP. Claro, usaremos todos os recursos da nova versão - claro, depois de nos certificarmos de que nosso código é compatível, e a transição para o PHP 8 trará mais benefícios do que o tempo que gastaremos na própria transição. Decidiremos sobre a transição quando o PHP 8 for lançado.
Como eu disse, quando mudamos para o PHP 7, liberamos muitos servidores, que enviamos para outras tarefas. Ou seja, a transição para a nova versão pode trazer grandes benefícios.
O Badoo usa compilação PHP?
Não.
Conte-nos mais sobre a estrutura autoescrita do Badoo. Com base em que é implementado e como é mais semelhante?
Isso é feito pela equipe da plataforma - os caras que fazem "back-end para back-end" e dão suporte à maioria dos desenvolvedores de back-end. Eles nos dão muitas coisas legais. Já falei parcialmente sobre isso: por exemplo, eles implementam a mesma funcionalidade de enfileiramento que é amplamente utilizada na empresa; eles também fazem um serviço de nuvem para nossas necessidades.
Eu não diria que a estrutura é semelhante a algo específico. Trabalhei com o Laravel e o Symfony - claro, existem algumas partes e podemos usar módulos que estão em código aberto em nosso projeto. Mas não acho que nosso repositório git seja muito diferente em abordagens de outros frameworks modernos. Usamos gerenciadores de pacotes para extrair dependências de terceiros, usamos autoload, usamos módulos para encapsular pedaços de código.
Por que o Badoo está usando um monólito e não microsserviços?
Esta é uma questão bastante sagrada, a comunidade está dividida em dois campos sobre isso. Não é segredo que usamos uma arquitetura monolítica e, durante a existência do projeto, aprendemos a lidar com as desvantagens dessa abordagem e a usar todas as suas vantagens. Além disso, temos um conjunto de serviços (em Go, PHP, C ++) que utilizamos ativamente em nosso trabalho diário.
Se entendermos a pergunta como “devemos desistir de tudo e usar todos os recursos disponíveis para reescrever o monólito existente para uma arquitetura de microsserviço”, responderei que não. Temos desafios de negócios que a solução existente lida com sucesso. Se necessário, estamos prontos para mudanças, mas, como disse, escolhemos a ferramenta de acordo com a tarefa em questão.
Como as diferentes peças de um monólito escalam sob carga?
Boa pergunta para acompanhar monólito e microsserviços. Temos uma ótima apresentação em nosso blog sobre desempenho e como nosso back-end é construído de um ponto de vista arquitetônico - vou contar rapidamente. Temos cerca de 600 servidores que atendem a todas as solicitações dos clientes e são responsáveis pelo nosso monorepositório. Com essa abordagem, temos alguma flexibilidade no dimensionamento, adicionamos novos carros, colocamos o código - e eles estão prontos para uso.
Quão uniforme é a implantação em um ambiente monolítico?
A resposta a esta pergunta pode ser dividida em duas partes. O primeiro é a implementação técnica de nosso pipeline de CICD, que foi bem descrito por meu ex-colega Yuri Nasretdinov em sua palestra no HighLoad (" 5 maneiras de implantar código PHP em condições de alta carga "). Eu recomendo assistir. Resumindo, temos várias centenas de servidores que atendem às solicitações dos usuários. Durante a implantação, colocamos apenas as alterações no repositório e trocamos atomicamente o link simbólico.
A segunda parte é garantir que o deploy não interrompa a produção para nós. Qualquer código antes do lançamento é verificado usando testes de unidade, integração e IU, bem como um analisador estático para problemas óbvios. Temos um grande e profissional departamento de QA, o que nos permite lançar com sucesso duas vezes ao dia.
Com um ciclo de lançamento tão curto, é muito importante para nós manter a qualidade de nosso produto em um nível alto: não queremos lançar bugs / fatais na produção. Portanto, o teste de recursos que estão entrando em produção vem primeiro. Todo desenvolvedor de back-end está interessado no fato de que seu recurso no back-end é lançado sem nenhuma ação adicional de seu departamento e das equipes de front-end e móveis. Pode haver tal situação quando você tem um tíquete para o desenvolvimento de um recurso de back-end, você o libera em produção, mas na realidade eles só começam a usar depois de um tempo. E então os engenheiros de controle de qualidade vêm até você e perguntam por que isso não funciona. Portanto, no lado do backend, quando lançamos a funcionalidade, cobrimos com o número máximo de testes, simulações e QAPs para ter 100% de certeza de que tudoo que rolamos está 100% funcionando.
Um nabo, todo mundo empurrando para um lugar?
Sim, há um nabo e todos os engenheiros de back-end estão trabalhando nele. Temos uma regra interna para nomear ramos que estão de alguma forma relacionados à tarefa em questão. Claro, você não pode empurrar o mestre diretamente, o branch é empurrado para lá após uma revisão de código bem-sucedida, depois de todas as verificações e testes de unidade e depois que o engenheiro de QA que trabalhou na tarefa com você disse que tudo está em ordem.
Você está usando DDD ou outros padrões arquitetônicos?
DDD é um design orientado a domínio. Não é um padrão arquitetônico, mas sim uma metodologia. Eu não diria que temos uma abordagem específica, usamos uma combinação de várias.
Sobre os padrões: no backend, vários padrões de design são usados para resolver problemas, gostaria de destacar isso em detalhes. Usamos implementações de bus de eventos, temos muitas filas, enviamos milhões de eventos que são processados pelos consumidores correspondentes. Também entre os padrões usados ativamente está o padrão Módulo: a maior parte do nosso código é dividido em instâncias separadas e conectadas que interagem por meio de uma API aberta limitada.
Você está usando exceções ou tentando evitar?
Nós usamos. E tentamos evitar.
A sua API é um monólito?
Sim.
Como você testa a API?
Temos testes de unidade e toda uma estrutura para executar um grande número de testes em paralelo com o mínimo de tempo. Você pode ler mais sobre isso no artigo de Vladimir Yants em nosso blog , ele descreveu esse tópico bem e em detalhes. Em termos de testes de IU, usamos Calabash e Selenium para testar se a IU está funcionando corretamente.
Desenvolvimento orientado a testes, quando testa primeiro, depois código - você não pratica?
Conosco, cada equipe pode usar sua própria abordagem no desenvolvimento, e sei que alguns colegas a praticam. Eu sei que funciona, mas eu não pratico sozinho.
O que você acha do DDD?
Como eu disse, estamos compilando a partir de várias abordagens. Se estamos falando sobre minha atitude pessoal, apoio qualquer abordagem que permita que você resolva problemas de forma eficaz. Vale a pena investir no DDD: ele permitirá que você faça aplicativos com um novo nível de qualidade.
Diga-nos, era tal que a produção não suportava cargas elevadas? Como você lidou com isso?
Não estava na minha memória. Temos engenheiros experientes, nosso produto está em desenvolvimento há mais de 15 anos e a empresa tem vasta experiência em desenvolvimento de alta carga. Nosso objetivo é maximizar o desempenho de nossos aplicativos.
PHP e MySQL - o que fazer para otimizar o desempenho do backend?
Ele toca na pilha usada na empresa e no desempenho, então dividirei a resposta em duas partes também.
Sobre a pilha: devido ao fato do Badoo possuir um grande número de departamentos e equipes, utilizamos o mais amplo conjunto de tecnologias possível - desde PHP, MySQL, Nginx, Go, C ++ até Tarantool, LUA e Scala. Cada equipe escolhe uma ferramenta para resolver a tarefa com eficácia. Como trabalhamos em condições de alta carga e processamos dezenas de milhares de solicitações por segundo, o problema de desempenho de nosso back-end se torna crítico.
Agora vale a pena mencionar as ferramentas que foram criadas internamente e lançadas em código aberto. A primeira ferramenta é Pinba (PHP não é mais um gargalo). É uma ferramenta para coletar estatísticas e monitorar o desempenho de uma aplicação sem afetar seu desempenho e para apresentar os dados coletados de uma forma amigável.
O próximo é Codeisok: uma ferramenta para gerenciar repositórios git e conduzir revisões de código. Usamos ativamente nosso trabalho interno e, antes que o recurso seja masterizado, aplicamos as melhores práticas de revisão de código (você também pode ler sobre elas em nosso blog ) para que o código mais eficiente chegue à produção.
Outra ferramenta que nos permite monitorar o desempenho de cada parte individual do código é o LifeProf: ele nos permite traçar o perfil automaticamente de todas as solicitações. Todas essas ferramentas (e mais) podem ser encontradas em nosso repositório Github.
Você está usando ORM ou interação direta de armazenamento? Por quê?
Já mencionei que temos nossa própria estrutura. Usamos nossa própria implementação ORM.
Como é organizada a interação dos módulos do projeto? De aula para aula ou algo mais complicado?
Boa pergunta. Cada módulo possui um ponto de entrada (controlador frontal), que fornece uma saída API unificada e inteligível - para outros módulos ou outros recursos. Não divulgamos toda a implementação interna para o resto do projeto, deixamos apenas o que queremos dar de fora.
Quais pãezinhos específicos do banco de dados são usados usando ORM?
Não entendi totalmente a pergunta, mas tentarei responder.
Já disse que nosso banco de dados principal é o MySQL, a maioria dos dados estão armazenados nele. Também usamos Exasol, Presto, Tarantool e Aerospike para tarefas específicas. Ou seja, temos um grande conjunto de armazenamentos para cada tarefa. Não nos limitamos na escolha de uma ferramenta: se o uso da tecnologia é lucrativo, nós a usamos. O MySQL é fundamental para nosso aplicativo e usamos uma variedade de fragmentações de replicação para manter a carga com eficiência.
Como funciona o teste de desenvolvedor? Para aumentar tudo localmente no docker você mesmo, ou é algo mais complicado em servidores virtuais?
Outra situação onde não posso responder exatamente.
Não usamos Docker ao desenvolver em PHP (mas os administradores o usam), temos um ambiente de desenvolvimento comum. Nossa equipe de plataforma está envolvida, entre outras coisas, em manter nosso ambiente de desenvolvimento em funcionamento para o desenvolvimento, e lá executamos todos os testes, implementamos recursos que iremos implementar na produção. Ou seja, temos um ambiente pré-configurado.
Ainda não entendo o que está em uso no ML: PHP, Python, algo mais?
Costumávamos usar Python para a estrutura de ML, mas agora eles mudaram para o Spark: isso aumentou muito o desempenho.
Como você equilibra a carga em 600 servidores? Eu entendi corretamente que este é um monorepa em cada servidor, no docker?
Monorepa em cada servidor, nós o balanceamos de uma forma bastante padrão - usando Nginx.
Você usa geradores de código? Para quais tarefas?
Nós o usamos com bastante frequência. No desenvolvimento, quando você precisa gerar modelos de acordo com alguma descrição nos configs, ou se existe uma classe que deve implementar funcionalidade de acordo com um template específico.
Como funciona a replicação de banco de dados para MySQL?
Só posso responder superficialmente.
Não é segredo que temos data centers na Europa e nos EUA, e é necessário manter a consistência dos dados entre eles. Usamos a replicação entre os repositórios principais para manter as informações atualizadas em cada local. Devido ao fato de que pode haver um grande atraso de replicação entre os data centers, usamos vários tipos de caches para as tarefas em que a relevância dos dados não é crítica.
Como os engenheiros do Badoo oferecem suporte à comunidade PHP de língua russa? Conferências, encontros, blog, encontros informais?
O Badoo acolhe e participa ativamente de um grande número de eventos especializados. Isso está inserido na cultura da empresa e na cultura de nossos engenheiros. Os desenvolvedores compartilham constantemente as melhores práticas e conhecimento em encontros internos e externos, reuniões e conferências.
Temos o Badoo PHP Meetup: duas vezes por ano, em nosso escritório em Moscou. As últimas reuniões contaram com a presença de cerca de 250 participantes. Meu colega Vladimir Yants, a quem já mencionei, está desenvolvendo reuniões informais em Moscou - BeerPHP Moscou. Ele já tem seguidores em São Petersburgo, Saratov e outras cidades. O formato, é claro, é emprestado de encontros similares do BeerJS, mas ainda é muito legal: em um ambiente informal, comunique-se com pessoas que pensam como você, colegas e apenas caras da indústria.
Os engenheiros do Badoo atuam regularmente no comitê de programação da única conferência PHP na Rússia, a PHP Rússia. Este ano a sua parte online tornou-se internacional e gratuita para todos os participantes graças à nossa empresa.
Também temos blogs no Habré e no Medium , onde compartilhamos todos os desenvolvimentos (não só em PHP).
Você toma Juns ou é o meio mínimo?
Como eu disse, você precisa deixar um pedido. Durante a entrevista, ficará claro se você agora tem conhecimento e experiência suficientes para começar a trabalhar na empresa, ou se deve obter experiência e conhecimento relevantes em outro lugar e depois retornar, como eu fiz.
Você está planejando um escritório nos Estados Unidos?
Temos um escritório nos EUA, onde o Bumble está hospedado - em Austin, Texas. Mas não há equipe de engenharia lá e ainda não se sabe se vamos expandir.
, soft/hard- ?
Já disse que todas as vagas abertas estão em nosso site tech.badoo.com . Aconselho a ninguém que não tenha vergonha, não tenha medo, observe os requisitos e deixe as inscrições.
É difícil dizer quais expectativas específicas uma empresa pode ter de um candidato. Eu diria: se, lendo a descrição, houver a sensação de que você não é adequado para esta vaga, você precisa se inscrever 100%. Experiência ou conhecimento relevante pode ser aprendido com a pessoa por meio de várias rodadas de entrevistas. Em minha opinião, você precisa fazer um pedido em qualquer caso.
De habilidades difíceis - é claro, você precisa ter experiência e compreensão de como PHP e MySQL funcionam: essas são as principais tecnologias que usamos, nossa pilha quando se trata de desenvolvimento de back-end. Outros departamentos têm sua própria pilha.
Softskills é um tópico amplo. Na minha opinião, muito desenvolvimento não envolve escrever código, mas sim se comunicar com as pessoas. É muito importante fazer as perguntas certas. Se você souber fazer isso, o problema está 50% resolvido. Sempre há problemas de mal-entendidos, mas quanto menos, melhor para você, para a empresa e para o produto. Ou seja, a capacidade de se comunicar bem, você definitivamente precisa trabalhar em equipe. Também é importante que as pessoas saibam como assumir a responsabilidade de concluir o projeto (recurso, parte da funcionalidade).
O que aconteceu antes
- Ilona Papava, Engenheira de Software Sênior do Facebook - como conseguir um estágio, obter uma oferta e tudo sobre trabalhar em uma empresa
- Boris Yangel, engenheiro de ML da Yandex - como não se juntar às fileiras de especialistas idiotas se você é um Cientista de Dados
- Alexander Kaloshin, EO LastBackend - como lançar uma startup, entrar no mercado chinês e obter 15 milhões de investimentos.
- , Vue.js core team member, GoogleDevExpret — GitLab, Vue Staff-engineer.
- , DeviceLock — .
- , RUVDS — . 1. 2.
- , - . — .
- , Senior Digital Analyst McKinsey Digital Labs — Google, .
- «» , Duke Nukem 3D, SiN, Blood — , .
- , - 12- — ,
- , GameAcademy — .
