[Developer World] As 3 leis da Robotica e o Desenvolvimento de Software
As 3 leis da Robotica e o Desenvolvimento de Software: "
"
No caminho profissional de qualquer desenvolvedor nos encontramos em situações onde não sabemos bem exatamente como prosseguir, devemos ou não duplicar o código, quando usar uma boa prática, como entender a demanda e traduzi-la em software, como interpretar os conceitos abstratos do cliente em Domain do DDD, etc.
Os dilemas diários que vivenciamos nos levam a uma falta de norte, já vi muitas pessoas me fazerem a mesma pergunta. O que leva a uma regra ou teorema a ser considerado melhor ou uma evolução na cadeia produtiva?
Para descobrirmos o que devemos fazer para maximizar recompensas ou minimizar riscos, devemos não apenas considerar as recompensas ou os riscos, mas também a probabilidade do fato acontecer ou não, e analisar geometricamente à proporção que ambas possuem juntas.
Art of Thinking – Antoine Arnault - 1664
Segundo os antropólogos e neurocientistas, o cérebro humano sempre trabalha, buscando incessantemente minimizar riscos e depois maximizar recompensas, este comportamento é que faz algumas pessoas não praticarem esportes radicais, por exemplo.
Quando isso acontece devemos reavaliar nossa balança de avaliação. Lembre-se sempre da frase do Arnault que já era sábia desde o século 16.
Agora que já contextualizamos o processo de raciocínio primitivo vou falar da audácia que os humanos buscam em querer fazer uma nova natureza. Geralmente pior, mas é a nossa tentativa. O passo mais audaz está em conseguir construir um ser humano robótico. Ao tentar construir um ser humano baseado em eletrônica o homem tentou mudar um pouco o processo de raciocínio primitivo criando as 3 leis da robótica de Asimov.
As 3 leis da robótica são:
- Robos não devem fazer mal a humanos, nem por ação nem por inação
- Robos devem obedecer aos humanos, exceto viole a 1ª lei
- Robos devem se auto-proteger, exceto viole as 1ª e 2ª leis
Os maiores problemas dessas 3 leis está com a natureza booleana da eletrônica digital, contra a natureza humanamente subjetiva encontrada nas palavras (obedecer, proteger, viole, fazer mal), que torna a construção do seu algoritmo muito complexo além de buscar entender o como interpretar conceitos, que não são aprendidos.
O que isso tem a ver com desenvolvimento de software?
As 3 leis da robótica não são plenamente aplicáveis a um aparato mecânico/eletrônico mas são um belo exemplo de como se processa o pensamento de um desenvolvedor que constrói seu algoritmo baseado naquilo que ele pressupõe ser o que o cliente quer.
A arte de entender o ser humano e buscar interpretar seu significado vai além dos nossos meros 80 anos de profissão. Os médicos lidam com isso a mais de 3000 anos, tentando entender que uma “dor DE barriga” é diferente de “dor NA barriga”, dor de cabeça pode ser desde uma pequena cefaléia até um aneurisma, como diferenciar comportamentos tão distintos?
Faça a seguinte pergunta a si mesmo, se o ultimo software que desenvolveu fosse solicitado por outra pessoa, o resultado seria o mesmo? Você projetaria o mesmo software?
Certamente que não.
A partir de hoje coloque na sua caixa de ferramentas mental que desenvolver software está mais ligado a diagnóstico do que a medicamentos, aprender uma nova tecnologia, uma nova metodologia, está aumentando sua capacidade de resolver um problema, mas nada disso adianta se você não aumentar sua capacidade de entender os problemas.
Na minha história profissional eu já fracassei muitas vezes nos projetos, por não ter entendido completamente qual seria o problema do cliente, por mais que eu soubesse muito sobre desenvolvimento de software, dominasse as tecnologias e empregasse as metodologias mais eficientes da época.
Todo software começa na cabeça do seu cliente/solicitante e termina quando ele enxerga funcionando aquilo que ele sonhou. Desenvolver software sob encomenda é igual a um pintor que desenha um auto-retrato de uma pessoa.
Software não é produto. Software não é posse sua. Software é primeiro SOFT depois é WARE.
Se sua empresa criou um produto/serviço baseado em software entenda que o software não é o produto em si, pois o produto/serviço é o que o cliente consome. Software é apenas o motor da empresa. Ainda precisa de freio, engrenagem, volante, marcha, faróis, etc.
Espero que a partir de hoje enxerguem seu trabalho como mais humano e menos tecnológico, comecem sempre pelo lado humano de quem demanda, depois vai para o lado tecnológico de quem entrega.
Comentários
Postar um comentário