O que é Psicologia da Programação? Buzzword ou algo útil?
O desenvolvimento de um sistema deve atender as especificações, ser executado dentro do cronograma, ser de fácil modificação no futuro e funcionar de maneira eficiente. Essa é a ideia básica do desenvolvimento de sistemas no livro Psychology of Computer Programming (1971) de Gerald Weinberg. O livro é centrado na ideia de que programação é uma competência humana e uma atividade individual e social. Portanto, o aspecto humano deve ser considerado tanto quanto as tecnologias e ferramentas.
O livro de Weinberg tem pouco de psicologia moderna acadêmica, mas suas premissas são verdadeiras e atuais. Depois desse livro ainda tivemos duas series de workshops que proporcionaram diversos avanços no estudo da atividade de programar sob uma perspectiva psicológica/cognitiva:
- Workshop on Empirical Studies of Programmers (ESP) [1986–1999]
- Psychology of Programming Interest Group Workshop (PPIG) [1989-Atual]
Atualmente existem diversas revistas acadêmicas dedicadas ao estudo da interação homem-máquina que eventualmente publicam artigos de Psicologia da Programação(PP).
Logotipo do site da PPIG
Logo, a resposta para a pergunta do título se PP é só mais uma buzzword para vender livros e cursos é não! Primeiro porque o termo existe no mínimo desde 1986 (contando o início dos workshops formais) e segundo porque buzzwords são palavras da moda e PP não está na moda — infelizmente!
Mas afinal, o que é Psicologia da Programação?
De maneira resumida, PP é o campo de pesquisa que estuda os aspectos psicológicos da programação. Será bem difícil encontrar alguém que argumente que o estudo desses aspectos não é um tema relevante de pesquisa. Na verdade, o discurso nos últimos anos é de que programas (incluindo softwares, modelos de machine learning ou qualquer artefato que use programação) devem ser centrados no humano e não na tecnologia.
A psicologia possui uma pluralidade enorme de metodologias de pesquisa que vão servir melhor para determinadas investigações a depender do objeto de estudo. É possível estudar a percepção, opinião, atitudes, processos psicológicos básicos e outros aspectos psicológicos de vários temas dentro de programação. Ex.: A percepção a cerca do Node.js, Opinião sobre Scrum, Atitudes frente o TDD ou Aspectos cognitivos do Clean Code.
Contudo, PP não só se refere ao programador como objeto de investigação. Muitos estudos possuem foco na psicologia do usuário ou de outros profissionais envolvidos no processo de programação.
Photo by Nubelson Fernandes on Unsplash
A verdade é que PP tem um objeto de estudo muito relevante e que não vemos um movimento maior dessa disciplina por dois motivos. O primeiro é a necessidade de compreender bem de psicologia científica e de programação para produzir algo em PP. Não é necessário ser um full-stack developer sênior, mas é preciso compreender muito bem a atividade de programar. Por esse motivo não vemos propaganda de curso de PP a todo momento, não é um campo trivial.
Se você for ao site do PPIG e ler alguns dos estudos publicados (sobretudo os mais recentes) verá que são estudos profundos sobre aspectos específicos da atividade de programar com uma forte base teórica de psicologia. Já o segundo motivo para não haver mais estudos de PP disponíveis é simples: é difícil fazer estudos controlados com seres humanos, principalmente programadores.
Temos uma mina de ouro em PP, todas as atividades dentro de programação tem um aspecto psicológico subjacente que se for compreendido pode proporcionar melhorias no processo de programar. No entanto, essa mina de ouro revelou poucas pepitas de ouro até agora — poucas em relação ao seu potencial.
Qual a contribuição real da PP para a programação?
Vimos que PP é relevante e que é de difícil execução, mas algo valioso já foi produzido neste campo? A resposta é sim! Muito embora em 2008 o pesquisador Jorma Sajaniemi— sendo um entusiasta do campo — tenha feito a crítica de que os estudos até então estavam concentrados em programação de pequena escala e ainda sem muitas contribuições para engenharia de software complexos, o cenário mudou nos últimos anos.
Os temas em que a PP tem sido mais relevantes são as seguintes:
- Aprendizagem da programação;
- Características das linguagens de programação e a cognição humana;
- Metodologias de desenvolvimento de software;
- Psicologia do usuário;
- Psicologia da I.A.
Todas essas áreas oferecem direta e indiretamente contribuições para o avanço da programação. Para ter uma visão sobre a produção nos últimos 50 anos, há uma ótima revisão feita por Alan F. Blackwell, Marian Petre e Luke Church (necessita de e-mail acadêmico para acesso). Você também pode dar uma olhada nos estudos publicados nos workshops da PPIG.
Posso usar esses conhecimentos?
Se você chegou até aqui, provavelmente está convencido de que é uma área relevante. Todavia, talvez não esteja claro como isso pode ajudar programadores no dia-a-dia ou como outros profissionais da área (gestor de pessoas, P.O. ou uma função administrativa dentro de áreas de T.I.) podem usar a PP como ferramenta.
Primeiro preciso deixar claro que defendo a democratização da ciência de maneira responsável, isso quer dizer que todos devem ter a oportunidade de ter acesso às teorias de qualquer área do conhecimento enquanto devem ser responsáveis pelo uso que fazem desse conhecimento.
Dito isso, imagine se deparar com um problema corriqueiro do mundo da programação, como algum problema de DevOps, e já ter lido um estudo que trata desse problema por uma visão da psicologia. Mesmo que você não resolva o problema, terá a oportunidade de levar uma visão a mais para o debate. Creio que esse exemplo já seja é suficiente para demonstrar o uso real da PP. Sobretudo, quando buscamos a causa raiz do problema.
E o futuro?
Concluindo com os pés no chão que há um longo caminho pela frente, porém temos um campo muito fértil e pode evoluir exponencialmente caso alguns pesquisadores resolvam dedicar seus estudos ao tema. Eu já sou um deles. Tenho grandes esperanças no campo porque nunca conheci uma comunidade tão disposta a ajudar uns aos outros quanto a comunidade de tecnologia no Brasil!