Sim, Um Bom Código é Essencial!

Alguma vez você já escreveu algum pedaço de código ou até mesmo um projeto inteiro e se envergonhou dele? Garanto com 100% de certeza que todos os desenvolvedores, sejam eles de qual ramo forem, já escreveram código do qual se envergonham. Se você não se evergonha é porque nunca revisou seus códigos escritos no passado.

Certa vez em um post de James Schorr, no blog do site RubyLearning (www.rubylearning.com), ele comparou o trabalho de um desenvolvedor com o de pessoas que trabalham com criação, mais precisamente, com o de um carpinteiro. Na comparação ele dizia o seguinte:

Compare o carpinteiro que produz um gabinete para um trabalhador fabril, e o mesmo trabalhador que aperta botões que fazem com que uma máquina produza gabinetes uns iguais aos outros sem parar. Enquanto ambos experimentam algum tipo de satisfação com seus trabalhos, somente o carpinteiro aproveita satisfação duradoura.

Porque? Basicamente porque a todo momento o carpinteiro tem a possibilidade de apromimorar seu trabalho e ver o quão bom ele está se tornando com o ganho de experiência, enquanto o trabalhador fabríl apenas aperta botões e deixa que máquinas executem seu trabalho, sem saber para onde está indo seu trabalho.

Para um desenvolvedor existem 3 estágios de aprendizado: Pré-desenvolvimento, desenvolvimento e pós-desenvolvimento. Desenvolvedores que se preocupam com a qualidade de seu código extraem o máximo de cada um desses estágios, mesmo antes de começarem a escrever qualquer linha de código.

Pré-desenvolvimento

Existem diversos pontos a serem abordados no pré-desenvolvimento, que no caso da CODELAND se aplicam na primeira semana de desenvolvimento, ou como nós chamamos, “semana de descobrimento”. Alguns principais foram tirados deste post (http://rubylearning.com/blog/2010/10/18/do-you-enjoy-your-code-quality/) do James Schorr e que se encaixam perfeitamente nas metodologias adotadas pelo SCRUM e por nossa equipe:

  • Capte todos os requirimentos e “stories” do cliente. Escute sempre opiniões de não-desenvolvedores, você pode ficar surpreso como eles enxergam o sistema diferente de um desenvolvedor;
  • Rejeite “deadlines” não realistas. Se você disser que pode entregar em 5 semanas sem qualidade, extenda algumas a mais e faça algo do qual irá se orgulhar de ter escrito;
  • Se você não saber responder o “porque” de uma feature e “o que” ela impacta, nem comece a responder “como” ela será feita;
  • Não comece a escrever código se estiver em um dia que precise fazer algo diferente a cada 10 ou 15 minutos, isso atrapalha o desenvolvimento e o raciocínio mais do que se pode imaginar.

Desenvolvimento

  • Não reinvente a roda, se existe algo pronto que funciona (quase) perfeitamente, use-o e contribua pra que melhore;
  • Antes de escrever qualquer linha de código tenha certeza de que você entendeu o que está para ser feito. Leve o tempo que for necessário;
  • Preocupe-se com os erros que o usuário pode cometer utilizando o software. Nunca confie que eles irão fazer exatamente o que o software mostra. Se possível peça para que não-desenvolvedores utilizem antes de finalizar o release da funcionalidade;
  • Evite adicionar tecnologias recem lançadas. Na maioria das vezes elas possuem bugs que podem prejudicar todo o andamento do projeto;
  • Pergunte quando tiver dúvidas. Até mesmo os mais brilhantes desenvolvedores podem aprender com o trabalho de outras pessoas e criar novos modos de escrever código.

Pós-desenvolvimento

  • Revise seu código, melhore velocidade, segurança, estabilidade e usabilidade;
  • Discuta com outros desenvolvedores se o que você fez é bom;
  • Revise códigos passados e compare com os de agora. Isso servirá para medir o quanto você progrediu.

Dicas

  • Gosta de ouvir música enquanto escreve código? Ótimo, então ouça, um desenvolvedor feliz escreve código melhor naturalmente do que um estressado;
  • Use a ferramenta que você melhor sabe utilizar, e não aquele que é apenas mais barata ou coisa assim;
  • Tenha intervalos de descanso. Utilize técnicas como o Pomodoro;
  • Descansee se alimente corretamente. Saúde é também sinônimo de produtividade;
  • Não consegue se focar na solução estando na frente do computador? Levante e caminhe, tome um pouco de ar, faça algo diferente, é incrível como achamos soluções para nossos problemas quando paramos de pensar nelas por alguns intantes;
  • Marque tempos de entrega realístas. Antes de dizer pro seu chefe ou cliente que faz em uma semana, adicione alguns dias, e faça algo realmente bom;
  • Conheça seus limites e deixe-os bem claros, “Não, eu não vou reeinvetar o Google”.

Esses são alguns dos pontos mais importantes quando se está desenvolvendo software para nós da CODELAND, e que sem dúvida garantem uma melhora significativa no ânimo das pessoas envolvidas, nos prazos de entrega e principalmente na qualidade dos serviços oferecidos. Temos certeza de que se pelo menos 50% do que foi sugerido aqui seja seguido, você como desenvolvedor já notará uma diferença significativa.