Sim, podemos afirmar que há benefícios voltados para sua redução da carga cognitiva em equipes de desenvolvimento. Além disso, essa afirmação não se restringe somente à Teoria de Carga Cognitiva, mais conhecida como CLT, do psicólogo australiano John Sweller.
Na área da tecnologia da informação, quando discutimos abstrações ou avaliamos determinado pacote ou extensão como atalho, ou mesmo ponto de partida, para nossa aplicação, estamos, ainda que inconscientemente, buscando reduzir a carga cognitiva da equipe de desenvolvimento. Geralmente, essa é toda a atenção dada ao tema durante o ciclo de vida de um projeto, mas talvez seja possível fazer mais.
Abstração e reuso são pilares consagrados da excelência em desenvolvimento de software. Porém, como uma abordagem que aplica a gestão eficiente da Carga Cognitiva no dia a dia de nossos times pode afetar a qualidade do código? E, sobretudo, o bem-estar das pessoas nas equipes? A intenção deste artigo é oferecer uma pequena introdução ao tema.
A teoria da carga cognitiva (CLT – Cognitive Load Theory)
Proposta no artigo Cognitive load during problem solving: Effects on learning, em 1988, pelo psicólogo John Sweller, um resumo sobre a Teoria da Carga Cognitiva pode considerar como sua principal preocupação a capacidade do indivíduo de realizar tarefas complexas, enquanto lida simultaneamente com um volume considerável de informações, e suas subsequentes interações, para extrair um resultado que faça sentido.
Em termos práticos a teoria explica sobre a nossa capacidade de aprendizado e como planejar para que o conhecimento seja absorvido e utilizado com eficiência.
A CLT assume que possuímos uma capacidade bem limitada em nossa memória de trabalho, por exemplo, a memória de curto prazo. Nos mesmos estudos conduzidos por Sweller, o número aproximado de novas informações que conseguimos administrar é sete. Aplica-se, inclusive, a distrações como música e atividades concorrentes, como conversas paralelas e nosso segundo monitor, com o e-mail ou chat aberto.
Inclusive, o número sete não é um absoluto. Podem acontecer situações onde não é possível lidar nem com isso e, em outros casos, é possível administrar um pouco mais.
Lidando com a sobrecarga cognitiva
O que a teoria de Sweller demonstra é que o “espaço disponível” em nossa memória de trabalho é pequeno e que, quando provocamos uma sobrecarga com muitas atividades paralelas, distrações ou estímulos, começamos a empacar na tarefa, esquecer parte das informações e o resultado é que não assimilamos nada, entregamos um trabalho ruim, ou talvez, nem finalizamos nenhuma atividade. Por outro lado, quando falamos da nossa memória de longo prazo, nossa capacidade beira o infinito.
Os mesmos estudos que comprovam a dificuldade de assimilarmos novos conceitos ao lidarmos com uma “sobrecarga” em nossa memória de trabalho, indicam que somos extremamente eficientes ao interagir com informações que já estão gravadas em nossas memórias de longo prazo.
O “truque” é sermos capazes de administrar a chegada e absorção de novas informações, transferindo o que importa para esse “arquivo de longa duração”, liberando assim o espaço que estava ocupado para ainda mais conhecimento.
A carga cognitiva e devs
A Teoria da Carga Cognitiva normalmente é aplicada no planejamento pedagógico, mas, felizmente, em TI, a CLT extrapola o conceito de aprendizado e é usada como estratégia de produtividade e bem-estar. Quando queremos planejar para administrar bem a carga cognitiva do time, a primeira lição que assimilamos e mandamos para a memória de longo prazo é “devemos evitar a sobrecarga cognitiva”. Mas como fazê-lo?
O código pode gerar sobrecarga cognitiva
Existem milhares de exemplos e, consequentemente, memes e piadas de como determinado código-fonte ganhou vida e se transformou em um emaranhado indecifrável, que nem a pessoa desenvolvedora original consegue entender.
Existem, também, excelentes soluções e paradigmas para ajudar a organizar e garantir a qualidade do código. Mas e se o método de desenvolvimento já considerasse o impacto cognitivo que o código provocaria em quem deve mantê-lo? O Cognitive Driven Development, conhecido como CDD, proposto por Alberto Souza, é uma estratégia que aplica a CLT com uma boa dose de pragmatismo. Em seu artigo no Blog da Zup, o autor explica que o CDD propõe abordar o desenvolvimento de código sob a perspectiva de sua complexidade e consequente sobrecarga cognitiva.
A ideia é criar e avaliar o código-fonte atribuindo uma pontuação de complexidade cognitiva, baseada em quão multifacetado esse código seria para o entendimento de uma pessoa desenvolvedora. Resultados preliminares já apontam que a adoção do CDD produz códigos-fonte que demandam menor esforço de manutenção e correção de eventuais erros de software.
O ciclo de vida de um software moderno gera sobrecarga cognitiva
No atual cenário de TI, profissionais precisam lidar com termos como boilerplate, setup do ambiente, CI/CD, DevOps, cyber security, privacidade, escalabilidade, testes unitários, teste integrados, antes mesmo de abrir seu editor de código favorito para começar a trabalhar.
Essa lista de termos, que é uma minúscula fração dos jargões da área, por si só, já provoca sobrecarga mesmo em veteranos. Padronização, reuso e automação são as estratégias mais consagradas para tornar essa complexidade toda mais administrável.
Porém, muitas vezes, “a emenda é pior que o soneto”. Pois, para manter o projeto, a pessoa desenvolvedora não consegue simplesmente baixar o repositório do git e começar a trabalhar. É comum que precise preparar seu ambiente, configurando diferentes aplicações como banco de dados, runtime e variáveis locais, containers, etc, para realizar uma simples tarefa de manutenção. E, quando quer começar um novo projeto, precisa replicar manualmente toda estrutura do projeto original, onde cada profissional no projeto precisa repetir esses passos. Isso, sem nem tocar em observabilidade e distribuição do software.
Assimilando as informações para uma breve conclusão
Quando tratamos de carga cognitiva estamos sempre bem perto de cair na armadilha de que “menos é mais”. Enquanto o verdadeiro ditado a ser seguido é “um passo de cada vez”. Em TI esses passos são dados em ambientes complexos, em constante expansão. Ser capaz de aprender o caminho desses passos é, muitas vezes, mais valioso do que a capacidade de percorrê-los mais de uma vez.
Ter em mente como a carga cognitiva de quem atua nos projetos é afetada pelos ritos, burocracia e pelo ambiente de trabalho permite traçar estratégias e aplicar mudanças que garantem resultados e contribuam para o bem-estar do time. Considerar a sobrecarga cognitiva das pessoas da sua equipe pode representar a diferença entre uma boa ou má entrega ou, inclusive, entrega nenhuma.
A StackSpot libera a memória de trabalho do seu time
A StackSpot surgiu para tirar parte dessa carga das mãos das pessoas desenvolvedoras sem subtrair sua autonomia e controle sobre o que está sendo produzido.
Com a StackSpot é possível preparar, usar e compartilhar configurações do ambiente, a arquitetura do software e até mesmo estratégias de automação, colocando-o (com foco na sua memória de curto prazo!) no ponto que importa para o seu trabalho.
Conheça as diversas aplicabilidades da StackSpot que podem ajudar sua equipe a se libertar da complexidade e ter mais autonomia para atuar onde importa.
Referências
SOUZA, Alberto. Blog da Zup Innovation. Julho de 2021. Cognitive-Driven Development (CDD): proposta de design orientado ao entendimento.
SWELLER, J. Cognitive Load during Problem Solving: Effects on Learning. Abril–Junho 1988. Cognitive Science, 12, p.257-285. Acesso em: 10 de Outubro de 2022.