Cinco armadilhas para evitar ao terceirizar o desenvolvimento de software

Se você não tomar cuidado, o que começa como um esforço para economizar tempo e dinheiro pode rapidamente se transformar em uma grande dor de cabeça.

A indústria de terceirização de TI obteve US$ 62 bilhões em receita em 2018 e se tornou um negócio verdadeiramente global; é tão provável que você terceirize o trabalho para a Ucrânia ou o Canadá como você é para a Índia ou o Brasil. Não é apenas útil para startups e empresas não-tecnológicas. Grandes empresas como Slack, GitHub, Alibaba e WhatsApp, aproveitaram com sucesso os benefícios do desenvolvimento de terceirização em seus dias iniciais para alcançar seus patamares atuais de sucesso.

 

A terceirização tem o potencial de melhorar a eficiência do seu negócio, reduzir o tempo de comercialização da sua aplicação e resultar em uma redução significativa de custos, mas apenas se for feita corretamente. Há riscos significativos envolvidos no desenvolvimento de terceirização também. Isso pode afetar negativamente o resultado final do seu negócio e fazer com que os projetos desabarem antes que você tenha a chance de lançar.

 

Elaborando uma estratégia eficaz de terceirização

 

Embora o desenvolvimento de terceirização tenha seu conjunto de benefícios, ele pode rapidamente se tornar prejudicial às metas do negócio se não for configurado e gerenciado de forma organizada. Sejamos realistas, encontrar uma empresa de desenvolvimento confiável para fazer parceria com você em seus esforços de desenvolvimento pode ser uma tarefa complicada. A tarefa se torna ainda mais complexa se o desenvolvimento de terceirização da empresa não for uma empresa de tecnologia. 

 

Tendo trabalhado extensivamente com empresas de terceirização no passado e, posteriormente, co-fundador de uma empresa de desenvolvimento de software personalizado, aqui está meu guia para o desenvolvimento de software de terceirização e terceirização.

 

Armadilhas comuns no desenvolvimento de terceirização e como evitá-las

 

1. Barreiras de comunicação

 

O maior benefício do desenvolvimento de terceirização, ganhando acesso a um pool global de talentos, também cria uma das principais armadilhas — questões na comunicação. Você precisará superar diferentes fusos horários, idiomas e convenções culturais. Estabelecer canais regulares de comunicação com a equipe terceirizada torna-se de fundamental importância para garantir o sucesso do projeto. 

 

Vivek Kumar, o fundador e CEO da Qlicket, experimentou em primeira mão as desvantagens dos canais de comunicação ruins quando terceirizou o desenvolvimento de seu quiosque de feedback de funcionários. Ele mencionou em uma pesquisa recente que os desenvolvedores pararam de responder um dia do nada e não conseguiram entregar a tarefa. "Seja na forma de realocar um fundador, realizar chamadas frequentes de check-in, ou algum outro método, transparência e comunicações frequentes são necessidades para terceirização de pequenasempresas", disse ele à Clutch. Co. Ele agora acredita firmemente na importância de se comunicar e se envolver com empreiteiros remotos.

 

Comunicação eficaz é uma habilidade, enquanto o inglês é apenas uma língua. Ao se comunicar com desenvolvedores terceirizados, a compreensão dos requisitos do projeto e a clareza sobre os entregadores são os fatores mais importantes.

 

O uso de ferramentas de colaboração, como Jira e Asana, o engajamento regular com a equipe remota via comunicação de vídeo ou áudio e reuniões de stand-up em intervalos regulares, são as melhores práticas para estabelecer canais de comunicação com a equipe de desenvolvimento terceirizada. 

 

2. Falha na compreensão do escopo do projeto

 

Antes de terceirizar o desenvolvimento para uma equipe remota, a clareza sobre os requisitos e entregas que você espera, o cronograma esperado para entregar e o escopo geral do projeto, é essencial para uma terceirização bem-sucedida. 

 

A não comunicação desses detalhes pode resultar em arrepio de escopo e desalinhamento na visão do produto. Sem resolver esses problemas, os engenheiros de software continuarão trabalhando em silos e haverá uma lacuna crescente entre suas expectativas e os entregadores reais.

 

As bases devem ser estabelecidas por você e os recursos que você deseja incorporar no aplicativo precisam ser claramente documentados. Um documento de especificação de requisitos de software(SRS)pode ser um excelente ponto de partida que dá à equipe de desenvolvimento insights claros sobre os requisitos. 

 

Para empresas não-tecnológicas, elaborar esse tipo de documento pode parecer assustador. Recomendo o uso de um modelo SRS que possa ajudar no processo de documentação. 

 

O documento SRS ajuda você a organizar os requisitos essenciais do projeto que você deseja que a equipe de desenvolvimento terceirizada esteja ciente de quando eles começam. A equipe de dev então faz seu próprio trabalho adicionando mais detalhes sobre ele. Essa colaboração permite que ambos os lados construam um plano comum, um projeto compartilhado que é estabelecido antes de qualquer trabalho de produção real começar. 

 

Por exemplo, se o aplicativo a ser desenvolvido precisar de uma página de inscrição, o documento SRS inicial só listará as opções de inscrição que precisam ser incorporadas. Através da colaboração com seu fornecedor de software, seria prudente adicionar detalhes adicionais: por exemplo, especificar as especificações funcionais para cada elemento na página de inscrição, as verificações de validação que precisam estar no local e uma lista de possíveis cenários que precisam ser cobertos. 

 

A clareza na documentação é o primeiro passo para garantir que suas expectativas e entregas que a empresa terceirizada fornece estejam em sincronia entre si.

 

3. Desafios de qualidade de código

 

Determinar se a equipe de desenvolvimento terceirizada está aderindo aos padrões de qualidade enquanto codifica seu aplicativo é um desafio que se torna amplificado quando você trabalha ou dirige uma empresa não-tecnológica sem conhecimento significativo de codificação. Qualidade de código é um termo ambíguo porque não há definições estritas para código de alta qualidade e baixa qualidade. 

 

A qualidade do código é uma coleção de atributos que precisam ser comunicados com a equipe de desenvolvimento terceirizado. Na minha experiência, um bom código precisa ter duas qualidades fundamentais: clareza e manutenção. 

 

Código bem documentado e bem testado que segue as melhores práticas de formatação e convenções de codificação da linguagem de programação em que o aplicativo está sendo escrito é crucial para o sucesso a longo prazo e a execução sem bugs (ou tão perto de bugs como qualquer um pode razoavelmente esperar. Você não pode esmagá-los "todos.)

 

Manter a qualidade do código ao terceirizar o desenvolvimento para equipes offshore requer comunicação de expectativas, estabelecendo os benchmarks de qualidade com antecedência e briefings regulares com a equipe para se manter no topo dos esforços de desenvolvimento. 

 

A equipe para a sua terceirização deve ter verificações para garantir a consistência na qualidade do código. Antes de assinar em uma empresa, pergunte se eles tomam medidas como revisão de código (tanto peer-to-peer quanto com gerenciamento), testes unitários, bem como testes funcionais. Essas precauções ajudarão a garantir que eles desenvolveram uma aplicação robusta antes de liberá-la para você. 

 

Um processo de garantia de qualidade estabelecido com testes completos de aplicação — incluindo testes de regressão sempre que quaisquer alterações são feitas no código e uso de ferramentas de gerenciamento de projetos para registro de problemas e gerenciamento de backlogs — são alguns dos fundamentos que recomendo que você procure ao escolher onde terceirizar seu trabalho. 

 

4. Ambiguidade das partes interessadas

 

A falta de propriedade do projeto é uma das maiores desvantagens da terceirização. Se o parceiro de terceirização que você escolher emprega programadores em uma base contratual e não em tempo integral, a propriedade real do projeto se torna arriscada. O vai-e-vem dos recursos do seu projeto pode resultar em inconsistência nos resultados, pois não há nenhum líder de projeto ou equipe consistente que seja responsável pelo trabalho e apresente durante todo o processo.

 

Ao terceirizar o desenvolvimento de um projeto de software, certifique-se de entender quem estará trabalhando nele e tente garantir que pelo menos alguns dos gerentes de projeto permaneçam consistentes durante todo o processo. Essas são as pessoas que você pode responsabilizar, e que devem estar presentes em threads de e-mail, chamadas de vídeo e outros check-ins regulares. 

 

Acho muito útil ter um analista de negócios ou gerente de projeto como um dos principais interessados na equipe. Essa pessoa pode atuar como um facilitador entre você e os desenvolvedores, documentando as especificações funcionais e quebrando os requisitos para os desenvolvedores.

 

Um desenvolvedor que não apenas escreve o código, mas também é investido em fornecer uma experiência de usuário estelar para seus clientes é outro ativo que você deve procurar ao selecionar um parceiro de terceirização. Encontrar uma empresa que possa se tornar potenciais stakeholders em seu projeto e que estejam comprometidos em encontrar as soluções certas em vez de implementar correções rápidas é a chave para uma terceirização bem-sucedida.

 

5. Brechas ao assinar o contrato

 

Nos primeiros dias de uma startup, distribuir enormes quantias de dinheiro para honorários advocatícios não parece uma opção viável. Mas um contrato vagamente enquadrado, ou que se inclina em favor do contratante, pode resultar em brechas que podem ser exploradas pela empresa terceirizada e resultar em severas perdas monetárias. 

 

Yoav Achiam, o co-fundador da GuardianEYE, sabe o preço de um contrato de terceirização mal escrito. Em um artigo sobre dicas para assinar um contrato de terceirização,ele fala sobre tudo o que deu errado quando assinou um contrato com a própria empresa terceirizada. "O contrato não incluía um compromisso de tempo, layout da mão de obra atribuída, penalidades se os prazos não fossem cumpridos, nem reforço positivo se o desenvolvimento fosse mais rápido do que o esperado", escreveu. Não é surpresa que as coisas logo foram ladeira abaixo a partir daí.

 

O velho ditado "Obtê-lo porescrito" também é vital no desenvolvimento de software. Um contrato devidamente redigido funciona como um roteiro para os contratados terceirizados seguirem e o protege de suportar o peso das perdas no caso de as coisas tomarem um rumo errado. 

 

Melhores práticas ao assinar um contrato de terceirização

 

A elaboração de um contrato apertado que esteja livre de quaisquer brechas legais ajuda a garantir que você não perca nenhuma das questões vitais durante o desenvolvimento da aplicação. Aqui estão as coisas que você deve ter em mente ao elaborar um contrato com a agência de terceirização. 

 

Delineie os entregadores, bem como os prazos: O contrato precisa declarar claramente as entregas esperadas na forma de listas de recursos ou histórias de usuários e o cronograma estimado de que o contratante seria capaz de concluir o trabalho. Uma agência de terceirização que segue a metodologia de desenvolvimento ágil e divide os requisitos em sprints pode ajudar a dar uma visão precisa do progresso do desenvolvimento.

Contatos baseados em recursos ao longo dos tempos: Em vez de contratos que delineiam o desenvolvimento e a implantação baseados no tempo, ter um contrato baseado em recursos que prioriza um aplicativo bem escrito e completamente testado sobre um em que os desenvolvedores são motivados a simplesmente aderir aos cronogramas. Dividir os entregadores em sprints de nível de tarefa ajuda a garantir a propriedade e a responsabilização na empresa para a sua terceirização.

Pagamentos baseados em marcos: Dividir o projeto em marcos distintos e definir o cronograma de pagamento de acordo com a realização desses marcos simplifica a estrutura de pagamentos. Planeje acompanhamentos regulares para alcançar marcos e agendar reuniões de stand up com a equipe. Ter um cronograma de pagamento baseado em marcos traz muita clareza ao contrato e facilita a resolução de quaisquer conflitos no pagamento.

Garantias de código instilando: A aceitação de aplicativos sem garantia de código é um grande não- não. O contrato que você assina deve especificar que o código que você recebe está livre de qualquer malware e especificar o período de teste de aceitação. Um período de 5 a 10 dias é um prazo razoável dentro do qual quaisquer bugs encontrados dentro da aplicação precisam ser corrigidos às custas do contratante. O contrato também deve especificar como as submissões de hospedagem web ou loja de aplicativos seriam gerenciadas

 

Contratos de suporte de manutenção: Qualquer empresa terceirizada que valha seu sal não o deixaria pendurado no ar sem contratos de apoio. Um contrato de suporte de manutenção deve declarar claramente a duração para a qual a equipe fornecerá suporte em softwares que construíram e entregaram. Especificar suporte no projeto também resulta em um senso de propriedade aprimorado para os desenvolvedores que trabalham na construção de seu aplicativo. Eles sabem que código desleixado significará mais trabalho para eles na estrada.

Direitos de propriedade intelectual: Como cliente, você tem os direitos completos do seu projeto, mas certifique-se de ter isso por escrito, incluindo a cláusula de direitos de propriedade intelectual no contrato. Isso vai salvá-lo de algumas grandes dores de cabeça se algum problema de violação de direitos aparecer no futuro. Também impediria o contratante de reutilizar o código escrito para sua aplicação ao trabalhar para um possível concorrente no futuro.

Acordo de confidencialidade: Um acordo de confidencialidade é uma cláusula de não divulgação que garante o sigilo das informações proprietárias que você compartilha com os contratantes. Ele garante que sua ideia de aplicativo não pode ser copiada ou compartilhada com outras pessoas. Os acordos de não divulgação e confidencialidade devem ser assinados não apenas com a agência de terceirização, mas com desenvolvedores individuais. Isso oferece alguma proteção contra codificadores que saem da empresa de terceirização e trabalham na sua própria ideia de negócio.

Cláusulas de indenização: Cláusulas indenizatórias são as disposições legais incluídas no contrato que trata da distribuição de responsabilidade de risco entre você e a agência terceirizada. Ele afirma quem arcaria com os honorários advocatícios e pagaria por quaisquer ações judiciais que surgirem no pedido que está sendo desenvolvido.

Cláusula de rescisão: Embora você espere que as coisas devem correr bem, é sempre aconselhável estar preparado para os piores cenários. Certifique-se de incluir uma cláusula de rescisão em seu contrato que afirma claramente o curso de ação que será tomada quando as coisas derem ao sul e o projeto não chegar à conclusão.

Jurisdição para resolução de questões: A terceirização tornou o desenvolvimento de software um processo verdadeiramente global. Decidir a jurisdição em que qualquer disputa que surja seria resolvida e mencioná-la no contrato é necessário para determinar as leis sob as quais o contrato está coberto.

 

 

O Avance Network é uma comunidade fácil de usar que fornece segurança de primeira e não requer muito conhecimento técnico. Com uma conta, você pode proteger sua comunicação e seus dispositivos. O Avance Network não mantém registros de seus dados; portanto, você pode ter certeza de que tudo o que sai do seu dispositivo chega ao outro lado sem inspeção.


Strong

5178 ब्लॉग पदों

टिप्पणियाँ