Atitudes que tento manter:
- Confiança absoluta de que causa e efeito funciona e nada é mágico. Nada está acontecendo que é realmente estranho, apenas coisas que eu não entendo.
- Confiança absoluta de que, se eu continuar pressionando, resolverei o problema (isso pode envolver levá-lo a alguém mais qualificado, aprender, pedir ajuda, trabalho duro, etc.).
- Resmungar sobre como uma instalação, programa ou cenário é mal projetado ou realmente estúpido simplesmente não ajuda, então não faça isso. (Acho isso difícil, resmungar é divertido).
Essas são atitudes que são úteis para mim - elas me impedem de levantar os braços no ar, declarar algo "bizarro" e depois desistir, ou ficar infeliz porque parece "insolúvel".
Maneiras de pensar na solução de problemas:
- Os sistemas têm muitas partes, se estiverem conectados juntos ou configurados aleatoriamente, eles não funcionarão como desejado. Existem uma ou duas configurações muito específicas que funcionarão - de todas as milhões de maneiras de empilhar tijolos e metais, apenas algumas são pontes e apenas uma ou duas são pontes suficientes. A causa pode ser um caractere em um arquivo de texto ou um servidor com falha, mas todas as partes precisam estar corretas para que tudo esteja certo. Eu preciso estar disposto a ser completo e meticuloso, se necessário. Os sistemas não podem "o show deve continuar".
- Você começa com um sistema inteiro como um mapa, imagina uma nuvem de probabilidade flutuando sobre o mapa representando "onde está o problema" e seu trabalho é usar a experiência e encontrar testes para afastar a probabilidade de algumas áreas e em direção a outras; para condensá-lo até pontos que são locais com problemas de alta probabilidade e atacá-los. Isso volta ao ponto de causa e efeito - o problema está no sistema, não é mágico. É um problema que existe, portanto deve existir em algum lugar.
- Qualquer coisa pode ser configurada da maneira que alguém quiser. A única maneira de definir um comportamento como "OK" e outro como "um problema" é porque o que alguém está recebendo não é o que deseja. Você deve entender o que eles querem, o que estão recebendo de forma clara e específica.
O processo de solução de problemas:
- Qual é o problema. Certifique-se de vê-lo acontecendo e possa reproduzi-lo você mesmo, para que não haja falhas de comunicação. Muitas vezes, os problemas já passaram por várias pessoas em nosso serviço de assistência quando eles chegaram até mim, mas ninguém pode me explicar qual é realmente o problema.
- É uma bissecção recursiva mais uma vez - divida e conquiste, pesquisa binária - você cria um teste que prova se o problema é esse lado do teste ou esse lado, e faz o teste para que ele elimine o máximo possível. Repita até resolver.
- Não saiba se você pode evitá-lo - é melhor bloquear a conta do banco de dados e provar que o problema ainda acontece quando o banco de dados não está envolvido do que gastar horas aprendendo como o banco de dados é usado.
- É muito fácil me encontrar pensando "não sei o que fazer a seguir". Observe quando isso acontece e volte a apresentar testes que localizam o problema.
A Internet não está funcionando? Verifique o problema, encontre um site que eles não possam acessar. Testes rápidos envolvem a conexão à Internet (funcionando), isso carrega para mim (não). Testes rápidos apontam para o site. Ao ver o problema acontecer, afastei a probabilidade rapidamente do PC, navegador, DNS, firewall do escritório de contas de usuário etc.
Então o site não carrega, e agora? Ainda não é corrigível, então procure lugares para transformar o problema em um menor. O servidor está ligado? Ping? o DNS funciona? Sim. O serviço atende na porta 80? Não. O serviço está sendo executado? Não. Começa? Não. Dá erros no log de eventos / arquivos de log? Sim! O que eles dizem?
Trata-se de solução de problemas eficiente e rápida, pois concentra-se incansavelmente em restringir o escopo do problema. Se eu aceitasse o relatório de que a Internet não está funcionando, eu seria equivocado ao pensar que era uma falha de conexão. Se eu aceitasse meu primeiro avistamento de que ele não carrega, eu perderia tempo no computador deles, pensando que era um erro.
Esculpir pedaços de "coisas que não podem ser" tão grandes quanto possível.
Entenda o sistema. Quanto mais conhecimento geral eu tiver sobre um sistema, mais fácil ele fica. Onde eu tenho um entendimento fraco, os problemas são mais intimidadores, mais difíceis, mais lentos e mais propensos a acabar com uma solução alternativa do que uma correção, ou com uma grande e lenta correção lenta (reinstalar) do que uma pequena e precisa correção cirúrgica.