Início > Geral > Investigação de Problemas

Investigação de Problemas

Sempre que leio um romance, tento identificar algo que possa ser aproveitado em meu cotidiano profissional. Mesmo em obras de ficção há uso de conhecimento prático ou pelo menos idéias que possam ser trabalhadas, refinadas e adaptadas, mas para encontrá-lo, não devemos ser leitores passivos. Somente leitores objetivos e atentos tiram proveito do que leem.

Analisando Romances Policiais

Gosto muito de literatura policial, principalmente dos clássicos de Edgar Allan Poe, Arthur Conan Doyle e Agatha Christie. Esse tipo de leitura contém a descrição de métodos e formas de raciocinar que poderiam ser utilizadas na investigação da causa de problemas em softwares. Sintetizei trechos de alguns livros dos autores citados, mas recomendo a leitura dessas histórias. No trecho a seguir, extraído do livro Um Estudo em Vermelho, o detetive Sherlock Holmes explica ao Doutor Watson como um pequeno indício pode remeter a algo maior de acordo com o contexto:

A partir de uma gota d’água, um pensador lógico poderia inferir a possibilidade de um Atlântico ou de um Niágara sem ter visto ou ouvido qualquer um deles

Em Cartas na Mesa, o detetive Hercule Poirot, principal personagem criado por Agatha Christie, ao ser questionado sobre seu método, explica:

Sou extremamente organizado. Gosto de todas as coisas em seus devidos lugares. Apenas encontrando e encadeando todos os elos é que podemos chegar à conclusão, que já conhecíamos, e rastrear os agentes envolvidos. Assim, o motivo aparentemente oculto se vislumbra

Auguste Dupin, personagem de Edgar Allan Poe e precursor de personagens mais conhecidos e que foram citados anteriormente fala sobre a profundidade da análise em uma conversa muito interessante com um inspetor de polícia em A Carta Roubada. O inspetor explicava detalhadamente como ele e sua equipe procederam à busca a uma carta subtraída de uma figura ilustre da corte francesa e que havia sido escondida, acreditava-se, na casa de certo ministro, que também era um poeta com talento mediano:

Temos muita experiência nesse tipo de investigação. Além disso, sabemos que estamos lidando com um poeta, portanto, trata-se de um tolo. Dedicamos uma semana a cada aposento da casa dele. Verificamos cada gaveta, cada armário e até o interior do forro das cadeiras. Através de um microscópio poderoso, garantimos que nenhuma peça da mobília possuía arranhões, o que denunciaria terem sido desmontadas para servirem de esconderijo. Todos os cômodos e todas as paredes foram medidas por dentro e por fora para garantir que não existissem câmaras secretas. Analisamos cada tijolo do muro exterior e a argamassa existente entre eles, mas não encontramos nenhuma fenda ou lasca. Abrimos cada envelope existente. Folheamos todos os livros da casa e verificamos o interior de suas capas

Dupin disse que o inspetor havia cometido algum erro de cálculo, pois nada passaria despercebido a uma análise tão minuciosa. Ele sugeriu que sua equipe procedesse novamente às buscas, mas com mais atenção. Após a reação negativa do inspetor, afirmou que encontraria a carta e a traria no dia seguinte mediante recompensa. A carta, segundo o inspetor, era de um papel duro utilizado em correspondências oficiais, possuía um lacre pequeno e vermelho e estava endereçada a uma figura famosa da corte francesa:

Em um porta papéis sobre a escrivaninha havia cartões de visita e uma carta suja, rasgada e amassada. A carta estava endereçada ao dono da casa e tinha um lacre azul. Notei que as bordas estavam mais gastas do que deveriam estar, como se tivessem sido viradas do avesso e redobradas nos mesmos lugares. Era a carta que eu procurava

O inspetor adaptava todos os casos a sua forma de agir, mas nunca agia conforme o caso e se aprofundava demais ou não chegava fundo o bastante em suas investigações. Aprofundando-se em detalhes, perdia a visão do todo. Não ponderava a respeito do nível de inteligência do seu adversário e tratava a todos como iguais ao aplicar seu método engenhoso, pois procurava a carta pensando em como ele mesmo a teria escondido, o que excluía lugares óbvios, como um porta papéis em cima de uma mesa. O ministro poeta era muito inteligente, mas o inspetor errou ao assumir que todo o poeta era tolo.

Conheça Seu Adversário

Partindo de idéias pré-concebidas, restringimos nossa capacidade de análise. Ao investigar a causa de um problema, precisamos considerar a maturidade profissional das pessoas que construíram o código suspeito. Esses são os adversários que estamos enfrentando. Considerar a maturidade de outra pessoa não é pré-concepção, mas apenas uma forma de adequarmos nosso método de investigação ao nível dela.

Se o programador tiver pouca experiência ou pouca capacidade técnica, nos veremos no meio de um emaranhado de código pouco inteligível. Logo constatamos a necessidade de refazer e não apenas remendar código. Assim, não perdemos tempo investigando problemas, pois o próprio código é o problema.

Quando o programador é experiente, disciplinado, inteligente, aplica design patterns, faz testes unitários, comenta adequadamente o código se necessário, escolhe bons nomes para classes, métodos e variáveis, produz código coeso e pouco acoplado, devemos começar a investigação a partir do lugar mais óbvio: o teste unitário! A seguir, vamos identificando os componentes de sua arquitetura até que isolamos a parte que contém o problema e a corrigimos.

Conclusão

Não estou afirmando que um programador deve ser uma espécie de detetive de código. Isso sim seria romancear. Posso até mesmo estar escrevendo um monte de baboseiras, pois assumir que alguém é bom ou mau programador analisando apenas uma fração do seu trabalho pode ser um grande erro. Devemos levar em conta também o estado emocional, pressão, motivação e diversos outros fatores que influenciam o cotidiano de um programador. Mesmo assim, o que expus é válido, pois a experimentação é necessária para enriquecermos nosso método.

Anúncios
Categorias:Geral
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: