Mantenha a calma e faça a transição para uma nova equipe de desenvolvimento

Publicados: 2022-03-11

É comum que um produto de software faça a transição de uma equipe de desenvolvimento para outra durante sua vida útil. Diferentes estágios do produto podem exigir um tipo diferente de equipe de desenvolvimento: uma consultoria para construir a versão inicial, um desenvolvedor autônomo para mantê-la, uma equipe interna para dimensioná-la ou um designer profissional para adicionar alguns “ pop”.

Apesar da frequência com que isso ocorre, muitos fundadores e proprietários de produtos não técnicos se encontram despreparados e confusos quando chega a hora de trazer a próxima equipe. Isso geralmente resulta na incapacidade da nova equipe de progredir rapidamente, perda de tempo e frustração para todos os envolvidos.

Se isso soa como se fosse você, agora ou no futuro, então você deve estar um pouco preocupado. Felizmente, vamos percorrer as etapas que você pode seguir para se preparar para essa eventualidade e tornar a transição o mais suave possível.

Passando a tocha: integrando uma nova equipe de desenvolvimento

Neste artigo, fornecerei uma lista de verificação de itens que o ajudarão a se preparar para essa mudança. Você conhecerá seu produto em um nível mais íntimo e obterá mais controle sobre todos os vários serviços e tecnologias que o compõem, o que o capacitará a integrar uma nova equipe com confiança e relativa facilidade.

Passando a tocha para novos desenvolvedores? Certifique-se de que a nova equipe não se queime e você não perca tempo combatendo incêndios.

Passando a tocha para novos desenvolvedores? Certifique-se de que a nova equipe não seja queimada.
Tweet

Mas e se você não estiver substituindo toda a equipe? Você deveria se dar ao trabalho de ler isso?

Mesmo que alguns membros da equipe anterior permaneçam a bordo, eles podem não ter todas as respostas e informações necessárias para uma transição tranquila. Embora possam dar continuidade e auxiliar no processo de transferência de conhecimento da equipe antiga para a nova, contar com os membros da equipe titular não substitui o proprietário do produto assumindo o controle e facilitando a transferência. Além disso, deixar de assumir o comando pode causar atrito entre membros antigos e novos da equipe, ou sobrecarregar os membros antigos da equipe com tarefas desnecessárias, forçando-os a perder muito tempo se comunicando com novos membros da equipe e resolvendo vários problemas.

Ainda assim, se alguns membros da equipe permanecerem a bordo, eles podem ser um ativo inestimável em seus esforços de transição. Consulte-os, mantenha-os informados e tente aproveitar sua experiência sem inundá-los com muitas tarefas relacionadas à transição. Não espere que eles façam todo o trabalho pesado! Esse é o seu trabalho.

Então, sem mais delongas, vamos mergulhar!

Reunir Documentação

Desenvolvedores freelance são frequentemente solicitados a entrar em uma base de código existente que eles nunca viram antes. Isso é especialmente verdadeiro em relação aos engenheiros de software da Toptal. Nosso objetivo é sempre nos atualizar o mais rápido possível para que possamos começar a ter um impacto positivo para nossos clientes.

Ter acesso a documentação clara e completa sobre o projeto pode acelerar drasticamente o processo de integração e ajudar os desenvolvedores a evitar armadilhas que podem impedir o progresso.

Uma boa documentação precisa cobrir pelo menos os seguintes tópicos:

  • Configurando um ambiente de desenvolvimento - A primeira tarefa para qualquer recém-chegado é colocar o aplicativo em funcionamento em seus próprios computadores. O processo para fazer isso varia entre as tecnologias. Em geral, requer tarefas como obter o código-fonte, configurar o banco de dados, instalar dependências, configurar o ambiente com chaves e credenciais de API, importar dados de amostra e assim por diante. Os desenvolvedores têm uma boa ideia de tudo o que está envolvido nesse processo em seus respectivos campos e devem ser capazes de ajustar os detalhes de acordo.
  • Executando o conjunto de testes automatizado - Ver os testes de um aplicativo passarem garante que tudo foi configurado corretamente e que as alterações futuras não estão prejudicando nenhum dos recursos existentes.
  • Implantação nos servidores de teste e produção - A atualização do aplicativo ativo com as alterações mais recentes é um processo altamente roteirizado, e a ordem dessas operações deve ser descrita passo a passo, o mais detalhada possível.
  • Qualquer outra informação relevante para um desenvolvedor recém-integrado - Cada aplicativo tem seu próprio conjunto de peculiaridades. Anotá-los economiza muito esforço desperdiçado para depurar problemas com os quais a equipe anterior já descobriu como lidar.

Uma boa documentação é a base de qualquer transição bem-sucedida. Certifique-se de que sua nova equipe tenha tudo o que precisa para assumir o controle.

Uma boa documentação é a base de qualquer transição bem-sucedida. Certifique-se de que sua nova equipe tenha tudo o que precisa.
Tweet

A documentação deve ser escrita por um desenvolvedor que tenha experiência em primeira mão na configuração do aplicativo e na contribuição para a base de código.

Antes que qualquer transição ocorra, solicite que a equipe de desenvolvimento anterior facilite a transferência de conhecimento criando um recurso que aborde os tópicos acima!

Se escrever não é o seu forte, peça que gravem um ou mais screencasts demonstrando a configuração do ambiente de desenvolvimento, implantação, etc. Hoje existem até ferramentas como Vagrant e Docker que permitem que ambientes de desenvolvimento inteiros sejam empacotados e distribuídos para outros. Em essência, em vez de dar instruções a alguém sobre como construir um martelo, dê-lhe o próprio martelo.

O teste decisivo de quão abrangente e eficaz é a documentação de um projeto é a rapidez com que um novo desenvolvedor pode configurar seu ambiente de desenvolvimento e executar seu aplicativo.

Entenda seu produto

Ter uma boa documentação não o isenta da necessidade de conhecer os fundamentos da tecnologia do seu próprio produto. Como proprietário de um produto de software, é sua responsabilidade entender seu aplicativo da melhor maneira possível, mesmo que você não seja muito técnico.

Sem formação técnica? Não há desculpa para não entender corretamente os blocos de construção do seu projeto. Pode custar-lhe caro.

Sem formação técnica? Não há desculpa para não entender corretamente os blocos de construção do seu projeto. Pode custar-lhe caro.
Tweet

As seguintes perguntas são comuns, e você deve saber as respostas sem ter que procurá-las:

  • Qual pilha de tecnologia seu aplicativo usa? - Existem muitas estruturas de aplicativos comuns para back-end e front-end, e qualquer nova equipe de desenvolvimento deve ter familiaridade com as que seu aplicativo usa. Alguns exemplos de tecnologias web de back-end são Ruby on Rails, Node.js e Django. Alguns exemplos de tecnologias web front-end são React.js, Angular.js e Ember.js.
  • Onde está hospedado? - Diferentes hosts da Web têm diferentes processos de implantação, que exigem níveis variados de experiência. Nos últimos anos, as tecnologias de nuvem criaram várias novas opções de hospedagem, e você precisará identificar qual delas está usando e descrever por que foi escolhida em detrimento das outras.
  • Qual é o processo de desenvolvimento? - Sua equipe usa uma ferramenta específica de gerenciamento de controle de origem, como o Git? Em caso afirmativo, qual é o processo pelo qual um novo recurso é desenvolvido, testado, aprovado e implantado? O processo deve ser padronizado, devidamente documentado e fácil de replicar pelos recém-chegados.
  • Quais serviços de terceiros seu aplicativo usa? - Alguns aplicativos são criados em serviços de terceiros, como Shopify. Lembre-se de que a dependência de serviços de terceiros está aumentando gradualmente e, mesmo que você não use nenhum serviço extra no momento, seu projeto pode decidir empregar um serviço de terceiros mais tarde.
  • Em quais plataformas seu aplicativo pode ser executado? - Seu aplicativo é um aplicativo de desktop, aplicativo da web, site móvel responsivo, aplicativo nativo do iOS, aplicativo nativo do Android ou qualquer outra coisa? Ele está rodando em várias plataformas diferentes? Qual plataforma é sua prioridade em um determinado momento? Em qual plataforma seu produto é mais forte e mais fraco? Certifique-se de conhecer todos os detalhes das plataformas atuais do seu aplicativo e até mesmo para quais ele pode ser expandido.

Tomar posse

O processo de desenvolvimento de software de hoje utiliza uma infinidade de serviços e ferramentas de terceiros. Quer você saiba ou não, seu aplicativo não é exceção.

Durante o desenvolvimento, sua equipe anterior pode ter se inscrito em seu nome ou até mesmo usado suas próprias contas para obter acesso aos serviços necessários. A transição para uma nova equipe significa que você deve assumir a propriedade e estar no controle de cada um dos serviços e ferramentas de que seu aplicativo depende, para que você possa conceder acesso à sua nova equipe sem precisar passar por um intermediário ou perseguir o desenvolvedores originais.

Veja a seguir uma lista das várias ferramentas ou serviços externos que seu aplicativo pode usar:

  • Gerenciamento de controle de origem - GitHub, Bitbucket, Gitlab
  • Hospedagem na Web - Heroku, EngineYard, Digital Ocean, Bluehost, Amazon Web Services
  • Hospedagem de arquivos - Amazon Web Services (S3)
  • Provedor de DNS - GoDaddy, DNSimple, Hover
  • Serviços de desenvolvimento - NewRelic, FileStack, Segment, Bugsnag (e inúmeros outros)
  • Serviços de pagamento - Stripe, Braintree, PayPal
  • Serviços de blog - WordPress, Tumblr, Ghost
  • Soluções de comércio eletrônico - Shopify, Squarespace
  • Analytics / Rastreamento - Google Analytics, Mixpanel, Kissmetrics
  • Email Marketing: MailChimp, Contato Constante

Pergunte à sua equipe de desenvolvimento de saída quais são aplicáveis. Para quaisquer serviços pertencentes à equipe de desenvolvimento, peça que eles transfiram a propriedade para você. Se isso não for possível, peça a eles para ajudá-lo a criar uma nova conta própria e certifique-se de que o aplicativo use sua conta em vez da deles. Isso não deve exigir nada além de alterar algumas definições de configuração para seu aplicativo.

Desnecessário dizer, certifique-se de que cada contrato de desenvolvimento proteja seus interesses desde o primeiro dia e garanta uma transição suave, não importa o que aconteça.

Garantir acesso

Com uma sólida compreensão do ecossistema de seu aplicativo e propriedade sobre todas as várias ferramentas e serviços que seu aplicativo usa, agora você pode fornecer acesso total à equipe ou indivíduo que chega.

A maioria dos serviços permitirá que você adicione um colaborador à sua conta e conceda a ele um determinado nível de acesso. Não há problema em ser conservador aqui . muitos fundadores, especialmente empreendedores individuais, preferem dar a seus desenvolvedores acesso total de administrador aos seus serviços e fazer com que eles cuidem de tudo. Isso tem o efeito colateral negativo de mantê-lo fora do circuito, o que, como aprendemos, pode dificultar a transição no futuro.

Você deve conceder privilégios totais de administrador aos seus desenvolvedores? A decisão é sua, e a maioria das pessoas não tem problemas com essa abordagem. No entanto, você sempre precisa planejar com antecedência e garantir que sua decisão não afete negativamente uma nova equipe de desenvolvimento. Não fazer isso nos estágios iniciais do projeto pode ter consequências irritantes no futuro.

Gerenciando a transferência

Agora que você cobriu todas as suas bases, precisará gerenciar a transferência de uma equipe para outra. Aqui estão algumas dicas básicas para lidar com a equipe de entrada e saída.

Certifique-se de gerenciar adequadamente os aspectos técnicos e pessoais da entrega do seu projeto. Faça sua nova equipe se sentir em casa e não antagonize sua antiga equipe.

Certifique-se de gerenciar adequadamente os aspectos técnicos e pessoais da entrega do seu projeto. Faça sua nova equipe se sentir em casa.
Tweet

Equipe de entrada

  • Defina expectativas - A nova equipe deve saber quais são seus objetivos mais importantes para que possam se concentrar na direção certa. Gerenciar suas próprias expectativas sobre o que a nova equipe pode realizar imediatamente é igualmente importante.
  • Faça check-in com frequência - Não deixe o novo time afundar ou nadar. Você quer fazer check-in com frequência para ter certeza de que eles têm tudo o que precisam e não sentem que precisam se defender sozinhos. Tente fazer isso sem microgerenciamento. Certifique-se de que eles saibam que você está lá para apoiá-los e ajudá-los se precisarem, mas não os pressione desnecessariamente.
  • Seja paciente - Leva tempo para os desenvolvedores se acostumarem a uma nova base de código. Entenda que haverá algum tempo de aprendizado antes que a nova equipe possa igualar o ritmo da anterior.

Equipe de saída

  • Colete todo o código pendente - Certifique-se de que todo o código-fonte seja verificado no repositório principal e que você saiba o status do que foi ou não implantado. A nova equipe precisará saber exatamente onde pegar e começar a trabalhar. Eu mesmo passei por uma situação em que assumi uma equipe que implantou código sem colocá-lo no repositório principal. Isso levou a bugs, trabalho duplicado e dores de cabeça que poderiam ter sido facilmente evitadas se a equipe de saída deixasse o código-fonte em um estado consistente.
  • Atualize o nível de acesso deles - Se você se separou em bons termos, convém deixá-los com acesso ao seu código e/ou implantação. Muitas equipes ficam felizes em ajudar durante a fase de transição até que a nova equipe possa assumir totalmente. Caso contrário, considere fazer downgrade ou revogar o acesso para evitar problemas ou conflitos acidentais com a nova equipe.
  • Agradeça a eles por seu trabalho - As transições podem ser agitadas. Enquanto estiver ocupado lidando com a nova equipe, não se esqueça de agradecer à sua equipe de saída por sua contribuição ao seu projeto.

Conclusão

Qualquer transição na vida pode ser assustadora, trazendo a incerteza se vai dar certo ou não, o medo do desconhecido e assim por diante. A transição para uma nova equipe de desenvolvimento não é diferente, mas você pode e deve tomar medidas para facilitar. Na maioria dos casos, requer apenas um pouco de planejamento a longo prazo.

Ter uma maior compreensão técnica e não técnica do seu produto de software, do processo de desenvolvimento e de todas as coisas que entraram no processo ajudará a tornar qualquer transição de uma equipe para outra o mais simples e indolor possível.

O melhor de tudo é que sua nova equipe respeitará e agradecerá por estar no topo do seu jogo! É provável que você economize tempo e esforço, o que também significa que você economizará dinheiro. Além disso, quanto mais cedo a nova equipe perceber que insiste em altos padrões profissionais, melhor. As chances são de que eles continuem implementando essas práticas assim que assumirem o projeto, tornando a próxima transição suave também.

Então, vamos rever os pontos-chave que devem preceder qualquer transferência de propriedade do seu produto de software:

  • Colete ou crie o máximo de documentação possível sobre seu aplicativo, o ambiente de desenvolvimento e o processo de implantação.
  • Conheça o seu produto por dentro e por fora.
  • Mantenha o controle de todos os serviços e dependências de terceiros do seu aplicativo e tenha os nomes de usuário e senhas para tudo.
  • Esteja pronto para dar à sua nova equipe acesso a tudo o que eles precisam para começar a trabalhar.
  • Seja proativo e não deixe nada ao acaso ou para a equipe de desenvolvimento de saída.
Relacionado: Como não gerenciar sua equipe remota de desenvolvedores