Código Paranormal – Um fenômeno conhecido
Publicado em: segunda-feira, 14 de jan de 2019

É mais comum do que você imagina, pessoas considerarem programação algo quase mediúnico, cheio de eventuais efeitos e manifestações paranormais. O que é uma abominação, visto que se de fato fosse algo de outro mundo, o Stack Overflow poderia ser considerado um site paranormal!

Na prática se você não está vendo o que está acontecendo é porque talvez esteja procurando no lugar errado, e diferente de outros campos de estudo, há ferramentas suficientes para que você nunca mais se sinta levado pela tecnologia ao seu objetivo, em vez usar a a tecnologia para chegar ao seu objetivo.


Esse texto está sendo escrito com um novo formato de escrita, mais direta, mais informal e mais pessoal. Deixe seu comentário e me diga o que achou!


Otimismo demais, experiência de menos

O fato de um dev ignorar uma possibilidade, não a torna impossível. Muito menos um efeito paranormal, em geral essa sensação se dá pelo otimismo exagerado mas prioritariamente pela falta de experiência. E essa falta de experiência faz com que você ignore duas coisas importantíssimas:

  • A capacidade do usuário de percorrer caminhos que você nunca planejou.
  • A capacidade destrutiva de quem está de má fé.

Não importa muito qual dos dois cenários, a Programação Defensiva é um bom caminho para você reduzir esses problemas.

Dance conforme a música

Mas meu ponto vai além: Vai na compreensão dos erros que você está tomando no visual studio, na IDE, durante o desenvolvimento. Já vi muita gente, principalmente os recém chegados ao .NET oriundos do PHP, ignorando a existência de uma puta IDE, repleta de recursos fantásticos para você nunca mais passar perrengue na hora de entender o que está acontecendo.

Debugger, inspeção de variáveis, break points, análise de threads, isso tudo está disponível para você e se você não está usando, você está à deriva, programando da mesma forma como quem programa em linguagens de scripting. Se bem que há esses recursos nas principais IDE’s, mas talvez não seja nem tão simples, nem tão difundido seu uso.

Dessa forma, se caiu de para-quedas no universo .NET, entenda como as coisas funcionam por aqui. Há muito conceito útil e relevante para te ajudar. E não, essa ideia de que quem sabe programar, sabe programar em qualquer linguagem é uma falácia. Na prática, um bom programador na linguagem A, normalmente consegue se virar na linguagem B, não necessariamente ele é bom na linguagem B. Para ser bom, é preciso conhecer a linguagem com um certo nível de profundidade para saber o que é adequado lá. Dance conforme a música, afinal, não cabe fazer um sort comum, na mão, no c#, só porque você não faz ideia do que é Linq e Lambda expressions.

A melhor IDE do mercado sendo usada como um mero editor de código… Really?

Vejo pessoas rodando sua aplicação, via console, enviando requisições para uma API recém construída, torcendo para funcionar. Pera aí… não tem de torcer! Não precisa torcer. Ou está certo ou não está certo. E você tem a melhor IDE do mercado para dizer para você o que está de fato acontecendo. Não entra na minha cabeça que em 2019 você não esteja no controle da situação e seja submisso à tecnologia. Erga-se! Você está no comando!

Se você veio para o universo .NET, saiba que nossas ferramentas de desenvolvimento são caça-fantasmas! Elas nos trazem para o total controle e total informação sobre o que e como nosso código está sendo executado. (Se você ainda não fazia ideia disso, comente pedindo para que eu escreva ou faça um vídeo sobre isso).

Falta de lógica

Outro ponto que me chama a atenção é a capacidade de não usarem a razão e a lógica para determinar uma situação de erro ou insucesso, entenda:


Suponto que exista um método X em uma classe Y, que em um contexto/cenário funciona perfeitamente, a aplicação inteira depende daquilo, em toda a aplicação funciona. Mas em uma nova funcionalidade que você está criando, você resolveu usá-lo e por algum motivo não resultou no que você queria ou até mesmo apresentou um erro de execução.

Uma vez que você sabe que aquilo é usado em toda a aplicação, nas principais funcionalidades, e que você tem certeza de que uma falha ali pararia toda a aplicação, ou pelo menos as partes mais usadas, então é fácil chegar à seguinte conclusão:

  • Ou há algo que os outros consumidores do método estão fazendo e você está ignorando.
  • Ou há algo que os outros consumidores do método não estão fazendo e você está.
  • Ou o seu contexto, específico, tem uma condição excepcional (e isso é semelhante à opção 2).

A situação sobre o método é: O método FUNCIONA, mas NÃO NO TEU/MEU CASO.


Entendendo que isso, é o bastante para compreender que há uma diferença entre os cenários. Nos resta saber qual é a diferença, e de fato qual é o problema.

Outra questão crítica para quem está tentando passar de um problema, é não querer saber qual é o problema em si, e buscar apenas resolvê-lo, quase que decorando uma resposta para uma pergunta. Vou te dizer algo sobre isso: Se você não entender qual foi o problema, de fato, você não aprenderá. Pois uma resposta para um problema, não necessariamente faz sentido sem conhecer a natureza e o motivador do problema.

É por isso que os melhores resultados na compreensão da história humana, assunto que vemos bastante aqui no Brasil, são obtidos quando o processo de ensinar história leva em conta outros fatores multidisciplinares, como geografia, contexto político, economia, cultura. Essa riqueza de variáveis que compõem uma foto de um momento é facilmente entregue por filmes, histórias, contos, arte, e elementos que não necessariamente estão na frieza da história em si. O enredo que apresenta uma realidade diferente, em um momento diferente, em uma região diferente, permite a melhor compreensão de suas decisões. 

Voltando ao nosso problema, temos agora algumas hipóteses não confirmadas, mas que já eliminam muito esforço e muito achismo no caminho para a solução:

  • O que está causando o problema é um bug do novo consumidor, cujo reflexo só é percebido no método consumido.
  • O que está causando o problema é uma nova necessidade apresentada pelo novo consumidor (não prevista originalmente)
  • Faltou algum tratamento no método consumido, específico para o teu cenário (essa possibilidade é semelhante à anterior)

Note que até esse momento todas as conclusões obtidas são com base em uma simples conversa, se chega a essas conclusões em menos de 3 minutos. Isso elimina muito esforço para encontrar o problema, elimina muito achismo sobre a origem do problema. O resultado é que quando de fato pararmos para analisar o código, teremos quase que uma certeza, que provavelmente se confirmará, mas caso contrário, voltaremos um passo atrás, e identificaremos o que erramos. Quem assistiu House MD percebe que é o mesmo método, porém sem termos vidas em jogo, o que nos permite não correr riscos em função do tempo. Nós só precisamos poupar energia mesmo.

Dizer “Esse método não funciona!” é uma afirmação que não se sustenta por 30 segundos, pois é raso, impreciso e contém inverdade. Essa é uma análise que não ajuda na compreensão do problema, muito menos na solução. E isso é uma questão de mindset.

Antes de falar de mindset, e para concluir a questão sobre o método. Esse cenário de fato existiu, isso foi uma demanda de projeto que aconteceu agora no início de janeiro. E o problema era uma operação de consulta, sendo realizada antes do Update de entidades de cadastro, para garantir que os registros não tivessem o mesmo nome. Embora nome não fosse uma chave, tinha essa validação, que por sua vez, produzia 2 objetos no contexto do NHibernate (o objeto que veio do banco e o objeto que vinha da UI), causando conflito. O tempo total de resolução dessa questão não passou de 15 minutos.

Mindset é muito importante

Vou mostrar as atrocidades que já escutei.

SQL Server é um Access melhorado

Já vi gente dizendo: SQL Server não funciona! Não presta! É um Access melhorado!

Sério? Em pleno 2019, com 11.4% do Market Share você vem me dizer que não funciona? O que você tem, no seu projeto, na sua empresa, de tão especial que exclua instantaneamente SQL Server do seu pipe de decisão? Provavelmente nada! Você tem uma ideia mal concebida pré-2005, criou um fantasma e hoje perde dinheiro por uma crença pautada em um achismo sem nenhuma plausibilidade.

Javascript é sublinguagem

Já ouvi isso algumas vezes. Mas daí, um belo dia você acorda em 2019, pensando em usar JQuery no seu próximo projeto e percebe que você não pode ser mais considerado Full Stack, afinal, JQuery não mais satisfaz as demandas de projetos mais comuns nos grandes centros. Ou você quer concorrer a uma vaga, talvez ache que seu Javascrit Vanilla resolva, mas percebe que os requisitos são TypeScript e angular 6. É amigão, teu preconceito pode não ter lhe tirado do mercado, mas com toda certeza te tirou de muitas, mas muitas oportunidades de emprego.

Conclusão

Ceticismo e racionalidade é algo que você aprende. Para uns é mais natural do que para outros, mas enfim, você pode adquirir. Dessa forma você consegue ganhar algo que o mercado presa muito: Assertividade.

Vou concluir esse post com uma historinha, que ajuda a dar voz ao que quero dizer com esse post.

Era uma vez…

Um homem de 85 anos estava a fazer o seu checkup anual. O médico perguntou como ele se estava a sentir.

– Nunca me senti tão bem – respondeu. – A minha nova mulher tem 18 anos e está grávida, à espera de um filho meu! Qual é a sua opinião a respeito disto, Sr.Dr?
O médico reflectiu por um momento e disse:

– Deixe-me contar-lhe uma história. Eu conheço um homem que era um caçador fanático. Nunca perdeu uma estação de caça. Mas, um dia, por engano, colocou o seu guarda-chuva na mochila em vez da arma. Quando estava na floresta, um urso repentinamente apareceu à sua frente. Ele sacou o guarda-chuva da mochila, apontou para o urso e este caiu morto.

HA!HA!HA!HA! Isso é impossível – disse o velhinho. – Algum outro caçador deve ter atirado no urso!

Exactamente…


Ajude!

Gostou desse formato? Deixe sua opinião!

Embora eu particularmente não goste de publicar tutoriais, pois considero um tipo de conteúdo datado, devo começar a produzir material nesse formato. 

E preciso da sua opinião sobre que tipo de material faz sentido colocar aqui no site. 

Então eu preciso da sua ajuda com alguns pontos:

  • Opine sobre esse formato de post! Gostou, não gostou?
  • Opine sobre os tipos de tutoriais, assuntos, que acha que seriam legais ter aqui.

That’s all folks!

Luiz Carlos Faria

Mensagem do Autor

Espero que goste desse post. Não deixe de comentar e falar o que achou. 

Se acha que esse post pode ajudar alguém que você conheça, compartilhe!

 

Eventos passados

agosto 2020
julho 2020
Nenhum evento encontrado!
Carregar Mais

Publicidade

Assine

4 Comentários

  1. Barbosa

    Muito bom esse formato! Há tempos não via um material com tanta qualidade.

    Responder
    • Luiz Carlos Faria

      Obrigado pelo feedback Valter.
      Fico feliz que tenha gostado!

      Responder
  2. Alexsander Santiago

    Legal a postagem, nos traga mais conteúdo nessa pegada. Valeu!!!

    Responder
    • Luiz Carlos Faria

      Obrigado Alexsander!

      Responder

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Lives

Fique de olho nas lives

Fique de olho nas lives no meu canal do Youtube, no Canal .NET e nos Grupos do Facebook e Instagram.

Aceleradores

Existem diversas formas de viabilizar o suporte ao teu projeto. Seja com os treinamentos, consultoria, mentorias em grupo.

Agenda & Eventos

agosto

setembro 2020

outubro
DOM
SEG
TER
QUA
QUI
SEX
SAB
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
Eventos para setembro

1st

Sem Eventos
Eventos para setembro

2nd

Sem Eventos
Eventos para setembro

3rd

Sem Eventos
Eventos para setembro

4th

Sem Eventos
Eventos para setembro

5th

Sem Eventos
Eventos para setembro

6th

Sem Eventos
Eventos para setembro

7th

Sem Eventos
Eventos para setembro

8th

Sem Eventos
Eventos para setembro

9th

Sem Eventos
Eventos para setembro

10th

Sem Eventos
Eventos para setembro

11th

Sem Eventos
Eventos para setembro

12th

Sem Eventos
Eventos para setembro

13th

Sem Eventos
Eventos para setembro

14th

Sem Eventos
Eventos para setembro

15th

Sem Eventos
Eventos para setembro

16th

Sem Eventos
Eventos para setembro

17th

Sem Eventos
Eventos para setembro

18th

Sem Eventos
Eventos para setembro

19th

Sem Eventos
Eventos para setembro

20th

Sem Eventos
Eventos para setembro

21st

Sem Eventos
Eventos para setembro

22nd

Sem Eventos
Eventos para setembro

23rd

Sem Eventos
Eventos para setembro

24th

Sem Eventos
Eventos para setembro

25th

Sem Eventos
Eventos para setembro

26th

Sem Eventos
Eventos para setembro

27th

Sem Eventos
Eventos para setembro

28th

Sem Eventos
Eventos para setembro

29th

Sem Eventos
Eventos para setembro

30th

Sem Eventos
Share This