6 soluções para desafios que costumam assustar os desenvolvedores

OUT 30, 2023

Para muitas pessoas, o Halloween é a ocasião perfeita para se fantasiar e celebrar coisas assustadoras. O Google para Desenvolvedores entra nesse clima, analisando os desafios mais terríveis para desenvolvedores e engenheiros de software. Continue lendo para descobrir como superar esses terrores ocultos.

O cemitério de códigos

Uma codificação resiliente requer atualizações regulares e, quando se trata de resolver bugs, é muito mais fácil encontrá-los quando há menos linhas de código. Ao se deparar com código legado ou longo, considere simplificar e atualizar para torná-lo mais gerenciável, afinal, ninguém gosta de uma base de código antiga ou muito complexa. Aqui estão algumas práticas recomendadas.

Começar aos poucos: não tente atualizar toda a sua base de código de uma só vez. Comece atualizando partes pequenas e isoladas da base de código para minimizar o risco de introduzir novos bugs.

Usar um sistema de controle de versões: acompanhe suas alterações e reverta facilmente para uma versão anterior, se necessário.

Considerar uma ferramenta de refatoração: isso pode ajudar você a fazer alterações sem quebrar o código.

Testar minuciosamente: faça testes de suas alterações minuciosamente antes de implantá-las na produção. Isso inclui testar as alterações de modo isolado, bem como em conjunto com o resto da base de código. Confira mais dicas sobre a motivação para testar abaixo.

Documentar as alterações: inclua novas ferramentas, APIs atualizadas e todas as mudanças feitas para que outros desenvolvedores entendam o que você fez e por quê.

Testes assombrosos

Quando você quer criar e entregar rapidamente, é tentador evitar escrever testes para o código, uma vez que eles podem atrapalhar você no curto prazo. Mas cuidado, o código não testado voltará para puxar seu pé mais tarde. O teste é uma prática recomendada que pode economizar tempo, dinheiro e problemas no longo prazo. Mesmo sabendo que precisa realizar testes, isso não significa que você queira fazer isso. Use essas dicas para ajudar a facilitar a criação de testes.

Gamificação de testes: transforme a escrita de teste em um jogo. Desafie-se a escrever testes mais rápido do que seu colega de trabalho pode dizer "cobertura de código".

Programação em pares: escreva testes em conjunto com um colega. É como ter um colega de treino, o processo fica mais divertido e motivador.

Configurar a automação de testes: automatize os testes sempre que possível para ter maior eficiência e qualidade.

Um problema monstruoso: não poder escolher seu conjunto de tecnologias

Muitos desenvolvedores têm fortes preferências quando se trata de produtos, mas às vezes a tecnologia herdada ou as necessidades organizacionais podem limitar as escolhas. Isso pode ser frustrante, especialmente se impedir que você use as ferramentas mais recentes. Caso se depare com uma situação semelhante, vale a pena expressar suas recomendações à equipe. Saiba como fazer isso:

Solicitar uma mudança: se o atual conjunto de tecnologias não está funcionando, negocie uma mudança. Isso pode exigir documentação sobre uma série de eventos, mas você pode usar esses dados como base para sua argumentação.

Apresentar os benefícios: se estiver com tudo pronto para compartilhar suas preferências, explique como seu conjunto escolhido de tecnologias beneficia o projeto, da mesma forma que o código otimizado melhora o desempenho.

Demonstrar sua experiência: mostre como você conhece o conjunto de tecnologias de sua preferência, seja por meio de uma prova de conceito ou de uma apresentação.

Aprimorar suas habilidades: se você tiver que encarar um conjunto de tecnologias em que não tem conhecimento, considere isso uma oportunidade de aprendizado. É como explorar uma nova linguagem de codificação.

Compromisso é fundamental: primeiro, reconheça que todos os pontos acima ainda valem a pena, mas às vezes você precisa se comprometer. Pense nisso como trabalhar com código legado: não é o ideal, mas é factível. Então, se você não tiver outra opção, não desanime.

Sem sustos: envie seu código de forma mais inteligente

Pior do que passar o final da semana corrigindo códigos com bugs é fazer isso quando você tinha outros planos. Além de menos tempo para reagir aos problemas, o comprometimento do tempo pessoal e menos pessoas disponíveis para ajudar nas soluções, enviar código quando você não tem os recursos adequados é, no mínimo, arriscado. Aqui estão algumas práticas recomendadas para ajudar você a criar uma programação melhor e evitar os sustos de sábado e domingo.

Considerar o horário comercial e o impacto para o usuário: programe as implantações durante os horários fora de pico, quando menos usuários serão afetados. Para empresas B2B, as tardes de sexta-feira podem minimizar a interrupção para os clientes, mas, para empresas menores, as implantações de sexta-feira podem significar que você vai passar seu fim de semana corrigindo problemas críticos. Escolha um horário que funcione para você.

Automatizar os testes: implemente testes automatizados em seu processo de desenvolvimento para detectar problemas com antecedência.

Verificar se o ambiente de preparo está certo: teste minuciosamente as mudanças em um ambiente de preparo que espelhe a produção.

Preparar-se para a reversão: tenha um plano rápido de reversão para o caso de surgirem problemas.

Monitoramento e alertas: configure monitoramento e alertas para identificar problemas 100% do tempo.

Comunicação: assegure uma comunicação clara entre os membros da equipe em relação aos cronogramas e procedimentos de implantação.

Implementações programadas: se sua equipe não envia regularmente no fim da semana, considere as sextas-feiras como SOMENTE LEITURA. Ou, se necessário, programe as implantações de sexta-feira para a manhã ou início da tarde.

Plantão de fim de semana: considere um rodízio de plantão de fim de semana para resolver problemas críticos.

Revisão pós-implantação: analise e aprenda com os desafios de cada implantação para melhorar os processos.

Planejar minuciosamente: garanta que os processos de implantação estejam bem documentados e que a comunicação seja clara entre as equipes e as partes interessadas.

Avaliar os riscos: avalie o potencial impacto nos negócios e no usuário para determinar a frequência e o tempo de implantação.

Um verdadeiro pesadelo: invasão de hackers

Perceber a invasão de hackers é um evento assustador, mas mesmo os desenvolvedores mais experientes em tecnologia são vulneráveis a ataques. Antes que isso aconteça com você, lembre-se de implementar estas práticas recomendadas.

Manter seus sistemas e software atualizados: pense nisso como patches de vulnerabilidades em seu código.

Usar senhas fortes: assim como uma criptografia forte, use senhas robustas.

Usar autenticação de dois fatores: sempre adicione uma segunda camada de segurança.

Cuidado com os cibercriminosos: não caia em golpes. Tenha a mesma cautela que você tem com códigos não testados ao lidar com e-mails suspeitos.

Realizar auditorias de segurança: audite regularmente seus sistemas em busca de vulnerabilidades, como executar revisões de código, mas para sua segurança cibernética.

Plano de backup: assim como o controle de versões, mantenha backups. Eles são seu porto seguro caso algo assustador aconteça.

O horror: violações de dados de terceiros

As violações de dados são indiscutivelmente as ameaças mais aterrorizantes, embora plausíveis, para os desenvolvedores. Nenhuma empresa quer ser associada a elas, muito menos o desenvolvedor que escolheu o serviço ou a API para trabalhar. Aqui estão algumas dicas para minimizar problemas com fornecedores terceirizados a fim de ajudar você a evitar esse cenário.

Realizar a devida diligência em fornecedores terceirizados: antes de trabalhar com um fornecedor terceirizado, analise cuidadosamente as práticas e políticas de segurança da empresa. Pergunte sobre certificações de segurança, práticas de gerenciamento de vulnerabilidades e plano de resposta a incidentes.

Exigir que os fornecedores cumpram os requisitos de segurança: crie ou adicione em um contrato por escrito com cada fornecedor terceirizado a descrição dos requisitos de segurança que o fornecedor deve cumprir. Esse contrato precisa incluir requisitos para criptografia de dados, controle de acesso e relatórios de incidentes.

Monitorar a atividade dos fornecedores: garanta que os fornecedores cumpram os requisitos de segurança do contrato, revisando registros de auditoria e conduzindo avaliações de segurança. Conceda acesso apenas aos dados de que um fornecedor precisa para desempenhar as funções de trabalho para ajudar a minimizar o impacto de uma violação de dados se o fornecedor for comprometido.

Implementar controles fortes de segurança: em seus próprios sistemas, proteja os dados contra acesso não autorizado por meio de firewalls, sistemas de detecção de intrusões e criptografia de dados.

Cuidado com APIs de terceiros: verifique todos os riscos de segurança. Revise cuidadosamente a documentação da API para entender as permissões necessárias e garantir que a API use práticas fortes de segurança.

Usar práticas seguras de codificação: use validação de entrada, saída de escape e criptografia forte.

Manter o software atualizado: atualize sempre com o patch de segurança mais recente para ajudar a proteger contra vulnerabilidades conhecidas.

Superação dos medos

É fácil se assustar sabendo o que pode dar errado, mas, ao implementar essas práticas recomendadas, a chance de seu trabalho dar errado diminui significativamente.

Que outros desafios assustadores de desenvolvimento você já enfrentou? Compartilhe com a comunidade.