O pessimismo como ferramenta de programação

O que é pessimismo?

Pessimismo é a tendência para ver e julgar as coisas pelo lado mais desfavorável. Mas como isso pode te ajudar a ser um programador(a) melhor?

Pessimistas planejam

Programação tem pouco a ver com sorte um muito a ver com planejamento. A dica de ouro antes de escrever a primeira linha de código é PLANEJAR! (Tem um post saindo sobre isso:  básico de planejamento para programação. EM BREVE). E nesse quesito os pessimistas tem vantagem!

Pessimistas vão sempre considerar os piores cenários e terão que pensar em soluções para cada um deles.

Pensando como um pessimista

Pessimistas trabalham com a Lei de Murphy: O que pode errado? Então dará errado! E no pior momento possível…
Melhor é precaver!
 
E quando adicionamos o comportamento dos usuários mediante ao nosso código é impossível prever qual será seu comportamento. Então tente imaginar todos cenários possíveis. Não usaremos nenhuma linguagem específica, apenas uma ideia geral de programação.
 

O caso do formulário

Vamos exemplificar pense em um código simples de preenchimento e envio formulário. Você consegue listar o que pode dar errado?
Esses são os ítens que consegui pensar:
  • O usuário não preenche todos os campos. E isso pode ocorrer por dois motivos:
    • O usuário esqueceu de preencher um campo. 
    • O usuário não quer preencher um campo.
  • O usuário preenche alguns campos de forma inadequada (Ex: Coloca texto no campo de telefone)
  • O formulário é utilizado em uma tentativa de SQL injection
  • O envio do formulário falha
  • O usuário não percebe que o formulário foi enviado e continua enviando repetidamente
  • Bots estão utilizando o seu formulário para enviar spam

Lembrou de mais algum? Coloque nos comentários !

Como podemos ver os problemas estão relacionados com diferentes frentes, tais como:

  • Comportamento do usuário: quais são os comportamentos possíveis (e não apenas os esperados)?
  • Segurança: quais são as vunerabilidades?
  • Funcionalidade: o que pode não funcionar ou quebrar? (Ex: servidor, API) 
  • Verificação / Checagem de dados: quais dados são vitais? O que acontece se eles não forem enviados e/ou recebidos?
Concentrando-se no que pode dar errado em cada uma dessas áreas você garantirá um código mais profissional e menos suscetível a bugs. Coloque sempre em seu checklist as questões de Comportamento do usuário, Segurança, Funcionalidade e Verificação de dados. 
Pode parecer trabalhoso pensar nessas questões e imaginar todos estes cenários. Porém trata-se de um exercício rotineiro que torna-se mais fácil e intuitivo com tempo e experiência.
Isso pode poupar tempo precioso e evitar retrabalho, inspecionar e debugar um código 
 

E quais seriam as soluções para os problemas levantados?

 

Você conseguiu elaborar possíveis soluções?

  1. Comportamento do usuário:
    1. Especifique no código quais são os campos obrigatórios e  quais são opcionais, deixe isso visível no formulário.
    2.  Dispare avisos ao submeter o formulário apontando são os campos obrigatórios não preenchidos.
    3. Alerte se o formulário foi enviado com sucesso ou se houve falha.
  2. Campos preenchidos erroneamente
    1. Especifique o tipo de cada campo (Ex: telefone, e-mail)
    2. Limite quais tipos de caracteres cada campo aceita.
    3. Dispare avisos ao usuário sobre campos preenchidos erroneamente.
  3. Tentativas de invasão ou SPAM
    1. Sanitize e escape todos os input de seu formulário
    2. Utilize o captcha para evitar a ação de bots.

Não deixe o pessimismo ir além do planejamento!

Eu gostaria de deixar um incentivo para você com um clichê: 

Muita coisa pode dar errado (E dará! mesmo com o seu planejamento). Mas mantenha uma atitude positiva quando estiver enfrentando algum bug ou falha. Uma mente calma vai te ajudar a chegar na solução com mais facilidade. Trabalhe e respire, as coisas vão melhorar. E você ainda cometerá outros erros, mas sempre pode aprender com eles e ensinar os outros. Talvez você até escreva um post sobre isso. 😏

Deixe uma resposta