Programar constrói sociedade?
Ler em inglêsEu estava lendo sobre o princípio S do acrônimo SOLID outro dia quando uma afirmação de Robert C. Martin me atingiu: “A melhor estrutura para um sistema de software é fortemente influenciada pela estrutura social da organização” [1].
Imediatamente uma pergunta que me acompanha desde a graduação voltou (à vida) na minha mente: programar é uma ação de construção de sociedade? Tenho certeza de que nem toda programação constrói sociedade.
Meus projetos pessoais de aprendizado, por exemplo, não afetam diretamente ninguém, já que não estão em produção. Logo, é desnecessário dizer que nosso foco está na programação que constrói sistemas que afetam o comportamento de outras pessoas (ou grupos).
Por exemplo: pensemos na equipe que desenhou e implantou o botão de curtir do Facebook. Eles engendraram não apenas uma funcionalidade que mudou o jogo no mercado de redes sociais, mas uma funcionalidade “social” que mudou a própria sociedade, já que passou a afetar as ações, emoções, comportamentos, pensamentos e assim por diante de (bilhões de) usuários do Facebook.
O próprio princípio SOLID é, de certo modo, um framework de construção de sociedade. Em outras palavras, é um blueprint para alcançar relações ótimas e desejáveis entre classes, estruturas de dados, funções e outros componentes. Blocos de construção da engenharia de software.
É um tipo de framework de construção de sociedade, pois o próprio Uncle Bob nos mostra que o arranjo desses blocos de construção está diretamente correlacionado com a estrutura social da organização por trás do código. Um bom software pode refletir diretamente a estrutura social a partir da perspectiva do SOLID. E acrescento: a estrutura e a dinâmica social também se refletem no código/software após sua implantação. Alguns sistemas se tornam tão grandes e distribuídos pela sociedade que passam a ser dimensões de sistemas sociais por si mesmos.
MAGMA (Meta, Apple, Google, Microsoft, Amazon), por exemplo, sua rede de serviços-sistemas afeta mais pessoas do que nações-estado por si só. Documentários contemporâneos famosos como “Coded Bias” e “The Social Dilemma” são obras-primas de informação sobre isso: em seu núcleo nos mostram como o código reflete a sociedade e como a sociedade é influenciada pelo código em termos do que os indivíduos são capazes de fazer a partir ou por meio de estruturas codificadas. É uma via de mão dupla, sem dúvida.
Há algum tempo (1999), Lawrence Lessig argumentou que o código é o regulador equivalente de nossa era, como a lei. Se olharmos pela perspectiva da filosofia política, as leis são normas sociais codificadas em dispositivos escritos e aplicadas pela organização social que legitimamente detém o monopólio da força (o Estado) e, por esse meio, as leis regem a vida coletiva, estabelecendo a arquitetura geral da sociedade.
É a tecnologia implantada pelos governos para assegurar que a vida social corra de uma maneira ou de outra. As sociedades contemporâneas estão sendo construídas por seu código computacional? Não é exatamente uma pergunta nova.
Estamos enfrentando isso coletivamente a partir de uma variedade de perspectivas, seja justiça algorítmica, ética em IA, formulação de políticas de tecnologia digital e outras. Ainda assim, não poderia deixar de mencionar o artigo provocativo escrito pelo cientista da computação e cientista político Randy Connolly [2].
Nele, Connolly argumenta que a ciência da computação está se tornando tão intensamente interconectada com a vida social e política que até sua dimensão acadêmica poderia aprender com o corpus teórico e metodológico das ciências sociais.
Seu argumento mostra que, como a vida social é plural demais e as metodologias das ciências sociais também são multidiversas para dar conta do pluralismo da realidade social, a ciência da computação talvez deva ser metodologicamente mais diversa e conduzir suas buscas com mais consciência sobre seu papel na construção da sociedade.
Vamos ter algum tipo de fusão entre essas duas ciências aparentemente distantes no futuro próximo? Seria benéfico para ambos os domínios da ciência e para as próprias sociedades ter mais retroalimentação advinda das colaborações entre esses campos do conhecimento científico?
Robert C. Martin nos mostra pela perspectiva do princípio SOLID que arquiteturas de software conscientes de suas dependências organizacionais e sociais são arquiteturas melhores. Então, uma programação consciente nos levaria a sistemas sociais mais conscientes? Ou a programação consciente reflete diretamente uma sociedade consciente?
De uma perspectiva de negócios, a consciência do aspecto social da programação pode nos levar a soluções de produtos melhores, pois pode fortalecer a relação entre soluções, necessidades sociais e a desejabilidade dos efeitos sociais.
[1] Martin, R. C. “Clean Architecture: A Craftsman’s Guide to Software Structure and Design” Prentice Hall, 2018. p. 59
[2] Connoly, R. “Why Computing Belongs Within the Social Sciences” Communications of the ACM, August 2020, Vol. 63 No. 8, Pages 54-59