
Por uma estranha coincidência, meu
último artigo não ficou submerso e, de modo silencioso, nadava na superfície de Habr. Parece que as pessoas ainda têm interesse e, portanto, ainda podemos pensar um pouco mais sobre a irracionalidade de nossos pensamentos e ações. É precisamente a água em que nadamos todos os dias, confiamos em suas leis, tomamos decisões com base em sua disponibilidade e, ao mesmo tempo, não percebemos isso à queima-roupa.
Desta vez, precisarei da ajuda de 2 pesquisadores neste tópico.
Daniel Kahneman é psicólogo e economista, Prêmio Nobel de Economia. Sua pesquisa científica lançou dúvidas sobre o racionalismo humano, que já havia dominado a esfera econômica antes. E
Dan Arieli é professor de psicologia na Universidade Duke, que realizou muitas experiências com pessoas e publicou livros conhecidos sobre irracionalização. Ambos, quase todas as suas vidas conscientes, foram submetidos a estudar o comportamento humano, a aprender melhor por quais princípios nosso cérebro funciona e o que nos move. E agora podemos apenas ler seus livros e absorver toda essa vasta experiência. No entanto, darei links no final do artigo.
Daniel descreve o cérebro na forma de 2 sistemas. O Sistema 1 é rápido, instintivo, emocional e o Sistema 2 é mais lento, mais racional.
Sistema-1: Se traçarmos uma analogia com os computadores, provavelmente isso é cache + persistência. Cada solicitação passa primeiro por esse pedaço de memória, onde há muitas verificações prontas para serem disparadas a qualquer momento. Aqui as emoções são formadas, no contexto do qual ocorre o processamento adicional da solicitação. Se você tentar apresentar isso como código, pode ser algo como isto:
assert danger: throw FearEvent() if (enemyAround) throw FightOrRunDecisionEvent() throw MobilizeHardware() ... assert satisfaction: throw RelaxationEvent() throw DelightEvent() ...
Eu te disse, este é um código bastante engraçado e, curiosamente, é único, porque cada pessoa é escrita de forma diferente. O processamento pode parar aqui. Por exemplo, se eu quisesse coçar a orelha, pedalar uma bicicleta ou fazer uma avaliação para uma pessoa que é representante de algum estereótipo geralmente aceito, eu o farei na máquina, mas pensando no que acabei de fazer. O cérebro é o órgão que consome mais energia no corpo humano e as otimizações não podem ser evitadas; portanto, seu principal slogan e algoritmo são "seguir o caminho de menor resistência". Isso economiza muito recursos e, na grande maioria dos casos, simplifica a vida. No vasto, mas nem sempre. Então, nosso segundo amigo, Dan, conseguiu, que gosta de analisar essas reações automáticas de pessoas que parecem fazer um bom trabalho, economizando energia e tudo mais, mas que levam a situações bastante estúpidas se você as observar de um ponto de vista racional.
Sistema-2: esta é a parte racional. Algo como RAM + persistência. Se a solicitação chegou a esse nível, significa que a decisão não foi armazenada em cache e há algo em que pensar e realmente tomar uma decisão. Aqui, nossa memória de longo prazo desempenha um papel crucial. Tanto no nível físico (neurônios conectados um ao outro) quanto no nível lógico (um conjunto de imagens associativas com conexões), a memória de uma pessoa pode ser representada como um gráfico. Reflete nossa experiência básica de vida. Quando executamos o programa de tomada de decisão, em essência, é uma transição ao longo das bordas do gráfico em busca de uma solução ideal ou resposta a uma pergunta. Você pode representar esquematicamente esse processo na forma de iniciar vários encadeamentos, como no algoritmo de redução de mapa, onde, no estágio do mapa, os resultados mais adequados de diferentes áreas são coletados; em seguida, usando o reduz, o melhor é selecionado de onde poderíamos obter, levando em consideração muitos fatores, que são bem difíceis de entender.
Para resumir, o fluxo de execução sempre passa pelo Sistema-1 e, se um manipulador adequado for encontrado ou uma exceção for lançada, ele imediatamente será encerrado; caso contrário, vamos para o nível mais lento do Sistema-2, onde a situação é submetida a uma análise mais completa. Na prática, isso significa que nem sempre somos tão racionais quanto pensamos para nós mesmos. A grande maioria das reações ocorre automaticamente, sem atingir a parte racional. E esse processo está sujeito a muitos erros.
Eu realmente amo a revisão de código. Isso faz parte do desenvolvimento, que permite identificar problemas ocultos, obter uma avaliação da solução do problema por outra pessoa, configurando o processo de transferência de conhecimento e experiência dentro da equipe. Em algum momento, percebi que essa prática é uma espada de duas pontas. Por um lado, todas essas vantagens, por outro lado, são um golpe para o trabalho em equipe e as relações dentro da equipe, se você usar essa ferramenta unilateralmente. Digamos que nosso herói sem nome, Vasya, tenha uma tarefa e implemente alguma funcionalidade. Ele tenta usar todo o seu potencial e conhecimento para garantir que a implementação seja a melhor do ponto de vista dele. Acontece que se é assim ou não, depende das habilidades específicas desse programador em particular, mas aos seus olhos, essa implementação é quase idealizada no nível do sistema-1. Chegou a hora da revisão do código, um colega Petya aparece e divide essa imagem ideal, mesmo para o bem de todo o projeto, oferecendo uma solução ainda melhor. O resultado causa uma tempestade de protestos no infeliz Vasya. Afinal, tudo estava tão bom e sem nuvens, mas aqui está algum tipo de pessoa má ... por que ele está fazendo isso? tudo se foi! O sistema 1 está em pânico, o cérebro pode reagir com raiva, raiva ou pode ser desesperança, ansiedade, uma sensação de inutilidade do ser. Provavelmente, isso não acontecerá e ninguém verá isso, mas essas emoções serão direcionadas especificamente para a pessoa que fez a revisão. Apesar do fato de que inicialmente os comentários estavam relacionados exclusivamente ao código que nosso programador escreveu, e não a ele pessoalmente. No futuro, essas reações podem se acumular e escorregar na comunicação cotidiana, mas isso já está cheio de problemas no nível do trabalho em equipe.
As pessoas se olham e ao mundo através do prisma de distorções cognitivas que se acumulam com a experiência. É muito difícil distinguir o que realmente está acontecendo na realidade das
suposições que o cérebro calculou e substituiu na forma dos membros ausentes da equação.
Se Petya levasse em conta que Vasya não é apenas uma máquina racional que tritura fatos, ele provavelmente tentaria suavizar seus comentários e colocá-los na forma de perguntas que o levariam a pensar nas deficiências e a buscar uma solução melhor. Para equilibrar o equilíbrio de poder, incluo alguns pontos positivos em minha análise e explico por que ele gosta deles. I.e. Eu tentaria não provocar o Sistema-1 de Vasya para lançar uma exceção, mas chegar ao Sistema-2 da maneira mais calma possível. Se, ao mesmo tempo, Petya estiver tentando provar sua inclinação e total superioridade, é improvável que consiga atingir esse objetivo.
Por sua parte, Vasya seria bom ser capaz de se separar dos resultados de seu trabalho. Perceber que as perguntas de seu código não são um desdém para ele pessoalmente, que muitas vezes as pessoas cometem erros e sempre há espaço para crescer e aprender, e isso é normal. Que Petya, no final, faz o seu trabalho exatamente da mesma maneira e tenta fazer o melhor que pode. E, é claro, que Petya e Vasya têm um objetivo comum - criar um produto de qualidade e entregá-lo no prazo. Infelizmente, entender tudo isso no nível racional do Sistema-2 não garante que o Sistema-1 não caia em nada. Mas aqui, por incrível que pareça, o acoplamento cerebral joga em nossas mãos e, portanto, mesmo esse entendimento pode ajudar a lidar com a situação.
David e Dan divulgam o tópico com mais detalhes (não sobre o código de revisão, mas em geral); portanto, se houver interesse, recomendo vivamente os seguintes livros:
Pensando, rápido e devagarPrevisivelmente irracionalBem,
meu último artigo sobre Habré .
Obrigado pela atenção.