Geleia de Menta

Blog/newsletter sobre tecnologia com perspectiva humana

Uma perspectiva materialista sobre o sentido do trabalho em tecnologia

Última atualização em:

Contents

Há algumas coisas realmente óbvias que sou obrigado a colocar aqui e desenvolver um pouco pois ainda que seja axiomático de tão lógico, afinal preciso estruturar meu raciocínio a partir de algum ponto.

Mas antes, uma pequena observação: não estou escrevendo este texto exclusivamente para pessoas que trabalham com tecnologia, então não liguem para algumas imprecisões que achei que deveria utilizar para que ficasse mais claro para quem não é da área.

Grande Obviedade Número 1: Oligarquia das Gigantes da Tecnologia

Não há para onde fugir, Google, Facebook, Microsoft e Amazon Web Services (AWS) sempre estão envolvidas em qualquer conversa sobre tecnologia que escape ao estritamente local e muitas vezes nem mesmo assim. Muito possivelmente a maioria das pessoas desconhece a imensidão da AWS, ela sozinha corresponde a pouco mais de 30% de todo o mercado de serviços web e junto com a Microsoft, provêem mais da metade de tudo o que usamos relacionado à internet12.

Dependender tanto assim de tão poucas empresas é por si mesmo algo preocupante, a mudança de políticas de preços, por exemplo, não que eu verdadeiramente acredite que alguém de fato entenda como os preços são calculados na AWS, aquilo é um labirinto cheio de armadilhas, mas vamos imaginar se a AWS aumentar os preços, mais de 30% de toda a internet é afetada, isso em teoria, porque na prática muito possivelmente toda a internet seria afetada já que há linguagens de programação que hospedam bibliotecas usadas por todos os desenvolvedores em servidores dessa empresa, assim como há casos de uso parcial dos seus serviços como no caso relativo a bancos de dados e armazenamento de imagens. Só que isso ainda é pensar pequeno, na prática todos nós possivelmente seríamos afetados de uma forma ou de outra, seja pelo banco, pelo serviço de straming ou até mesmo pelo dentista que pode usar um dos inúmeros serviços da AWS para manter um backup dos dados usados no sistema.

Entende o poder concentrado em tão poucas mãos?

Vamos além: Já reparou como quase todos os aplicativos que você usa no celular e boa parte dos sites pela internet são tão parecidos? a onipresença de uma barra numa cor de destaque, quase sempre com um ícone de lupa para indicar o recurso de buscar algo no site/serviço/app e 3 tiras ou pontinhos no canto dessa mesma barra, na imensa maioria das vezes do lado oposto ao da lupa que abre uma barra lateral? É tudo sempre igual, sempre o mesmo padrão, muito frequentemente as mesmas cores, teóricos da conspiração poderiam supor que todos os designers do mundo foram cooptados por uma grande corporação a estampar de forma subliminar os padrões dessa mesma corporação em tudo o que for possível, bem… isso não está muito longe da realidade.

Vamos com o exemplo do Material Design embora existam outros como o Fluent Design que é da Microsoft, criado em 2014 pelo Google para os seus serviços mas que hoje dominam a estética de quase todos os sites e aplicativos, e o mais curioso, o Material Design se estende a quase tudo, incluindo papéis de parede de pokémons. No caso dos aplicativos que usamos no celular e a sites, a coisa é um pouco mais complicada do que a simples vontade de usar tal padrão, na imensa maioria das vezes os programadores estão trabalhando sozinhos (equipe de 1 pessoa só é mais comum do que pessoas de fora da área conseguem imaginar) e a framework da moda ou a que a pessoa programadora está mais habituada a utilizar já vem com o tal Material Design implementado por padrão. Especificamente sobre frameworks falarei melhor um pouco mais à frente, no momento, vamos nos concentrar no design, já que toda a usabilidade está relacionada a este fator.

Então vamos imaginar a equipe de 1 pessoa só no seu difícil exercício de fazer o que antigamente era o trabalho de equipe num prazo quase sempre bem menor do que dado a uma única equipe. Tudo na construção de seu perfil profissional tão bem confundido e misturado com sua própria personalidade o levam a acreditar que o “hábito” de trabalhar assim é prova de seu conhecimento técnico e competência, um grande afago no ego num meio onde o culto à personalidade se dá pela estética que existe envolta de demonstrações de conhecimento técnico, esse é o seu meio de validação pessoal. Mas parando de desviar do assunto, ele não é designer, não tem tempo para planejar como será a interação do usuário com o aplicativo a ser desenvolvido, na verdade, muito mal há tempo de planejamento, há padrões seguros a seguir que são muito pouco adaptado às circunstâncias, obviamente se recorre ao que se têm à mão, no máximo ao que é fácil de adicionar ao projeto e em todo o caso, o que está praticamente pronto, só faltando o mínimo de ajustes. Nem preciso dizer que não há muitas escolhas na realidade.

A Foice E O Martelo

Admito, esta parte do texto pode ser um pouco maçante mas peço paciência, preciso que olhe com alguma atenção para algumas etapas do processo de escrever um software.

Iniciar um projeto de software tem algo de ritualístico (vamos imaginar que já tem o ambiente configurado):

  1. Inicia o projeto ~> normalmente basta 1 comando próprio da framework a ser utilizada ou através do editor que, se devidamente configurado, basta alguns cliques e escrever o nome. Essa fase já vai criar o projeto quase completo, já que em frameworks robustas, a programação se resume essencialmente em configurar.
  2. Configura um repositório, em nível local isso é quase sempre automático, mas remotamente é diferente, se for Open Source quase certeza de usar o Github, que foi comprado pela Microsoft um tempo atrás por 7.5 bilhões de dólares em 20183. Outro repositório remoto muito famoso é o Gitlab, que uns anos atrás sofreu um acidente que se resume a: alguém deletou sem querer quase todos os repositórios dos clientes e eles recuperaram com um backup guardado em servidores da AWS e da Microsoft, sendo que na época usaram um documento no Google Docs para informar a quem estivesse interessado sobre o andamento da recuperação4, então mesmo se fugir para concorrentes, ao fundo está sob o domínio das mesmas empresas.
  3. Finalmente começar a programar.

Agora que o ritual foi explicado, olhemos as ferramentas: Um dos editores de texto mais usados para programar hoje é o VS Code, que é da Microsoft, esse editor e o Atom são “irmãos”, ambos usam o Electron como base de sua interface gráfica, ele na realidade é uma adaptação do Chromium5, que todos nós estamos cansados de saber que é do Google, basicamente o “motor” que executa o código em javascript (pensemos como um navegador reduzido ao básico quase a nível extremo). Por usar javascript para tudo o que compõe sua interface e inclusive plugins, o npm (o principal lugar onde se coloca pacotes dessa linguagem para uso em qualquer projeto) se torna fundamental para qualquer usuário, ainda que vá trabalhar com outras linguagens, os recursos que precisa no editor usam o que está nos servidores do npm, sua disponibilidade é necessária para praticamente todos os sites e muitos aplicativos, não apenas Atom e VSCode, e o npm é do Github, que por sua vez foi adquirido pela Microsoft.

Como falamos antes sobre aplicativos para smartphones (não preciso lembrar quem é o dono do Android mas vou colocar assim mesmo: Google) e sites, vamos continuar nessa linha e olhar para as frameworks, que até agora não dei uma definição porque ainda não tinha me parecido se encaixar bem na argumentação, mas cai bem aqui: Certa vez me disseram que “a framework é a expressão máxima do trabalho de um desenvolvedor”, o contexto na época o intuito foi dizer algo como “para ser considerado um programador de verdade, você tem de fazer tudo através de frameworks”. Na realidade framework é apenas um conjunto de bibliotecas, enfim, trechos de código quase sempre úteis a todos os projetos, mas que em grandes frameworks como React e Angular, que junto com Vue são os que, de forma perceptiva (é complicado falar em estatísticas nesse caso), são os mais usados hoje, eles meio que dominam o projeto reduzindo o programador à simples tarefa de programar configurando, no caso do Vue, ainda é possível escapar disso, no caso do React e Angular, é mais complicado se quer mesmo usa-los. E reparem que coisa interessante, o React é do Facebook e o Angular é do Google.

Essa coisa de programar configurando é algo que ouvi pela primeira vez anos atrás num evento da quase inexistente comunidade Ruby, embora já tenha sido uma comunidade muito coesa envolta de sua framework de desenvolvimento web: Ruby on Rails, até o ponto que a linguagem e a framework pareciam se confundir, então, num evento que fui lembro do palestrante dizer que foi a primeira ou uma das primeiras frameworks a funcionarem assim, e como funciona? ela dá um projeto “pronto”, não é nem um esqueleto, todas que seguem esse padrão dão um projeto “pronto” que só está entre aspas porque ainda é sempre necessário configurar coisinhas relativas a banco de dados e pormenores do tipo, mas se não inserir nenhuma linha de código, em algumas como Django (feita em Python) vai ter pelo menos uma página de admin pronta de verdade. Lembro de como a produtividade foi ressaltada em todas as vezes que ouvi falar disso, afinal configurar os gerenciadores de qualquer coisa, como costumo chamar, é algo bem repetitivo e portanto, mecânico, as reais diferenças estão em pequenas especificações do projeto ou de exigências de clientes, quase sempre é isso o que faz com que projetos demorem.

Embora seja de fato um grande acelerador da produtividade, por baixo disso vemos algo que me faz farejar uma oportunidade de precarização, afinal todos já ouviram a frase mais ou menos no deboche do “site feito pelo sobrinho”, as primeiras vezes que ouvi isso foi como uma crítica ao Laravel, framework em PHP quando PHP ocupava quase o mesmo status de críticas que javascript recebe hoje (programadores são muito emotivos e apegados com as linguagens que usam, é como se todo o mundo deles estivesse limitado ao trabalho e comunidades então é muito no ame ou odeie a relação que existe com quem é de uma comunidade diferente). Enfim, sinto isso como um potencializador da precarização do trabalho, mais de uma vez amigos já compararam o trabalho ao de um pedreiro, talvez no sentido original, ligado a pedras: construir coisas encaixando pedras. Na minha opinião há um abismo enorme entre programar partindo de apenas você, um editor de texto, um compilador/interpretador e algo para fazer debug e programar configurando, se os desbravadores cientistas da computação dos anos 70 para trás precisavam criar tudo manualmente adaptando para o contexto de uso tudo o que aprenderam e desenvolveram a nível de pesquisa sobre estrutura de dados e algoritmos, fazendo cálculos para saber quanto cada variável iria ocupar de espaço na memória RAM, hoje não há tempo para algo tão minucioso, detalhista e especializado, estamos num contexto de produção massiva de alto desempenho, imagina quanto todos teriam de estudar hoje para fazer metade do que cada framework faz? cuidar de implementar cada um dos muitos protocolos de rede, padrões de segurança que normalmente nem sequer se estuda na faculdade.

Quem olha de fora imagina que há uma formação toda estruturada para se trabalhar como programador, que na real, é bem diferente de ser um cientista da computação ou um bacharel em sistemas da informação, é um trabalho exclusivamente técnico, é um trabalho de consumidor de tecnologias desenvolvidas por cientistas e bacharéis, e como já deu para perceber, esta mão de obra se concentra onde de fato está a o ponto de origem que determina o rumo das coisas, as empresas já citadas que mantém não apenas seus próprios projetos de frameworks que dominam o desenvolvimento, os padrões de design, como também são as principais patrocinadoras de linguagens de programação e outras frameworks e bibliotecas e demais ferramentas necessárias ao desenvolvimento de softwares.

Tem uma coisa que eu realmente gostaria de deixar claro: não estou dizendo que o trabalho de programador é fácil ou que exige saber pouco, apenas que se tem de fato pouco contato direto com a ciência da computação, a framework é uma camada de abstração sobre todo esse saber acumulado, ainda assim não é simples de produzir softwares, cada uma exige certa curva de aprendizado, com o tempo elas ficam cada vez mais completas e isso amplia a complexidade da coisa: React/React Native e Flutter (ainda não falei mas essa é também do Google), ambos compilam o projeto para web, android, ios, só que tudo é imediatista, padrões mudam rápido, recursos mudam rápido, versões também. Há uma sensação de obsolescência que desespera qualquer um que se veja obrigado a ficar correndo atrás de toda novidade que aparece e que anuncia ser o “futuro”. Eu sei, tudo meio surtado. O que isso tudo diz na prática é que se passa tempo demais estudando como usar a framework, usa programação? Sim, mas tudo em nível básico, hoje estudar programação é mais sinônimo de estudar uma framework do que uma linguagem, e isso se confunde a tal ponto que vagas para desenvolvimento web que dizem buscar profissionais que trabalham com, sei lá… chutar aqui… Python, na realidade querem dizer Django, se dizem querer quem entende de javascript, podem estar falando de React/React Native, Angular, Vue ou sei lá mais qual apareceu no ano passado e que promete ser a do “futuro”. Enfim, não é que programadores que trabalham assim não entendem de computação, apenas todo o estímulo e tudo o que é sistematicamente exigido deles é ficar na posição de usuários/consumidores de tecnologia.

Consegue imaginar tamanho poder?

Programadores são então apenas usuários, quase à deriva nessa correnteza, mas a ainda estamos pensando pequeno pois a própria ciência da computação está de alguma forma presa aos recursos dessas mesmas empresas de sempre.

Vamos olhar rapidamente para a chamada “ciência de dados”6, que na prática é basicamente estatística com algumas coisas a mais, Microsoft, AWS e Google concentram os principais serviços voltados para realizar o processamento e armazenamento necessários, e se formos direcionar nossos olhos para a pesquisa em inteligência artificial, as duas principais frameworks de deep learning (quase que a “nata” das pesquisas em IA atualmente) usam ou o Tensorflow (do Google) ou o PyTorch (do Facebook e que no meio acadêmico tem se mostrado mais popular por ser mais maleável), e o que isso quer dizer na prática? Basta ter um pouco de imaginação: se eles concentram os meios de produzir as frameworks, eles decidem os rumos do seu desenvolvimento, obviamente mais ligado aos seus próprios interesses do que a qualquer outra coisa, o que me faz perguntar…. E se o hype de deep learning passar? Também é relevante questionar: E se a médio prazo alguma dessas gigantes cair igual ocorreu com o Yahoo?

Pensar sobre tudo isso me dá a sensação de estar caminhando sobre o fio de uma navalha presa no topo de um arranha-céu. Hoje li esse texto The Open-Source Software bubble that is and the blogging bubble that was que me fez pensar bastante na fragilidade das coisas, já que só saber não é o bastante, ter consciência de que tudo isso que é Open Source mantido pelas “gigantes”, com tanto dinheiro “doado” para o que não é mantido diretamente por elas são apenas elementos que compõem estratégias de mercado que podem ser modificadas a qualquer momento, e estamos falando sobre como quase tudo o que envolve o uso da internet é potencialmente afetado, mas que invariavelmente afeta a todos nós, até mesmo suas compras no supermercado, pense em toda a cadeia produtiva e como ela depende de internet e serviços online, até mesmo as provedoras de internet como dependem de servidores e serviços de outras empresas, é um enorme emaranhado de relações comerciais que abrangem todo o espectro da vida e economia atual.

Para piorar, fora do simples investimento, temos uma enorme massa de pessoas direcionadas pelas circunstâncias a não ter conhecimento sobre quase nada a não ser o gesto mecânico ainda que cada vez mais complexo e cheio de camadas que é construir softwares em produção, esse mito do desenvolvedor polivalente, a equipe de 1 pessoa só, está inteiramente preso a essas ferramentas porque todo o seu trabalho, e nesse caso bem específico, praticamente todas as relações humanas que têm e a cultura em sua volta, então inteiramente dependentes da estratégia dessas empresas. O simples programador é o público alvo dessa estratégia, é através dele que os investimentos vão ter retorno, que a “marca” da elite que define tudo sobre os rumos da tecnologia estarão presentes, ele está imerso nisso enquanto por todos os lados só sente a pressão de se provar, tendo de estudar todo dia coisas novas que aparecem afinal, tudo muda muito rápido, uma ferramenta nova pode se tornar o padrão para os projetos em meses ou até semanas, a velocidade com que tudo acontece impede de refletir e enxergar o que verdadeiramente importa: que na realidade ele trabalha para essas empresas.

Muitos programadores criam blogs, canais no youtube, organizam eventos, criam cursos online, muitas vezes gratuitos para o conteúdo básico, se orgulham de seus projetos no Github (passam as noites de folga, fins de semana e feriados escrevendo código e colocando lá, muitas vezes também buscando contribuir de alguma forma para as ferramentas que tanto precisa para trabalhar), enfim, toda sua vida é dominada por servir de suporte dessas empresas, a outros programadores em igual condição, contribuir para a popularização das ferramentas dessas empresas através de diversas formas de publicidade, ser o intermediário entre o cliente que lhe contrata e essas empresas, enfim, sua vida é tanto dependente quanto condicionada a servir, é um ciclo fechado.

Bem… Termino aqui sem saídas ou respostas, essa nunca foi minha intenção e só escrevi porque não aguento mais pensar nisso e precisava colocar pra fora.


Se chegou até o final deste texto, espero que tenha gostado. Mas para continuar este projeto de divulgação crítica e política da ciência da computação e outros assuntos ligados à tecnologia sem todo o misticismo comum à publicidade, sua ajuda é muito importante. Faz um PIX 😊
pix copia e cola: 00020126430014BR.GOV.BCB.PIX0121geleiadementa@tuta.io5204000053039865802BR5925Lincoln de Macedo Santos 6009SAO PAULO61080540900062070503***630467FE

References


  1. _ https://www.srgresearch.com/articles/cloud-market-ends-2020-high-while-microsoft-continues-gain-ground-amazon 

  2. _ https://www.canalys.com/newsroom/global-cloud-market-Q121 

  3. _ https://news.microsoft.com/2018/06/04/microsoft-to-acquire-github-for-7-5-billion/ 

  4. _ https://www.theregister.com/2017/02/01/gitlab_data_loss/ (OBS.: S3 é um serviço da AWS e Azure é da Microsoft) 

  5. O Chromium é o “Chrome” original mas cada vez mais similar ao Chrome mas que é usado basicamente por quem usa Linux já que é quase inacessível a humanos normais e por onde se olha na página do projeto se vê um claro incentivo para baixar o Chrome. 

  6. _ https://www.forbes.com/sites/gilpress/2013/05/28/a-very-short-history-of-data-science/?sh=48bc6e8455cf