paint-brush
Teoria do Windows quebrado no desenvolvimento de software: por que os detalhes são importantespor@aferreira
1,690 leituras
1,690 leituras

Teoria do Windows quebrado no desenvolvimento de software: por que os detalhes são importantes

por André Ferreira, MSc10m2023/02/27
Read on Terminal Reader

Muito longo; Para ler

A Teoria das Janelas Quebradas sugere que a desordem ambiental encoraja o comportamento criminoso, anti-social ou de desordem civil. Este artigo oferece uma reflexão e tenta incentivar a mudança fazendo com que os leitores entendam como suas ações impactam os ambientes em que participam. Alguns problemas no mundo do desenvolvimento de software podem parecer irrelevantes, mas podem ter sérios efeitos colaterais e custos para as pessoas e para a sociedade.
featured image - Teoria do Windows quebrado no desenvolvimento de software: por que os detalhes são importantes
André Ferreira, MSc HackerNoon profile picture
0-item


Embora alguns problemas no mundo do desenvolvimento de software possam parecer irrelevantes, eles podem ter sérios efeitos colaterais e custos para as pessoas e para a sociedade. Este artigo oferece uma reflexão e tenta incentivar a mudança, fazendo com que os leitores entendam como suas ações impactam os ambientes em que participam e como até mesmo algumas pequenas coisas acabam custando fortunas.

Janelas quebradas

Quando jovem, antes do meu primeiro computador, eu sempre andava de bicicleta. Em frente à minha casa, havia uma pequena floresta com algumas trilhas estreitas onde eu pedalava regularmente.


Muitas vezes eu fantasiava que minha bicicleta BMX era uma Fórmula 1 e que eu estava competindo com Nigel Mansell, Alain Prost ou Ayrton Senna. Então, perto da linha de chegada, eu realizava ultrapassagens supremas e conquistava a vitória por pouco.


No outro extremo da floresta, havia um antigo armazém. Tinha pequenas janelas no topo perto do telhado para permitir a entrada de luz. No entanto, eram altas o suficiente para que alguém pudesse espiar por dentro.


Nunca esqueci a primeira vez que parei para descansar e contemplar o edifício. Lembro-me de pensar: “Estranho! Por que não está perto de uma estrada?... Alguém jogou pedras e quebrou algumas janelas... Por que não foram consertadas? Parece misterioso, mas sombrio. É melhor eu ficar longe, algo parece estranho”. Eu teria então pedalado e nunca mais me aventurado naquela área novamente.


Os anos se passaram e eventualmente a floresta foi cortada por uma estrada e, lentamente, algumas novas construções surgiram ao longo dela. Mas, pelo menos por algum tempo, o antigo armazém resistiu. No entanto, a cada ano que passava, mais janelas eram forçadas a ceder às pedras atiradas contra elas.


Para ser justo, quem quebrou as janelas não teria sido assombrado pelo remorso. Alguns já estavam quebrados e não consertados, então quem se importaria com mais alguns? Afinal, os custos de substituição seriam os mesmos, pois todos precisavam de conserto.


Como tal, as velhas janelas do armazém apresentavam uma oportunidade de treinar a pontaria e comemorar quando a assistência à demolição prematura foi bem-sucedida (outra janela quebrou), como observei alguns rapazes mais velhos fazendo uma vez.


Para mim e alguns outros colegas, a estrada permitiu um caminho mais curto para a escola. No entanto, todos preferíamos o percurso mais antigo e ligeiramente mais longo, porque era um caminho conhecido e permitia-nos evitar o edifício degradado que nos causava uma estranha inquietação. Era algo menos para pensar ou se preocupar.


Compartilho esta história, de uma época anterior aos telefones celulares, na tentativa de transportá-lo para sua própria infância e tentar resgatar sentimentos semelhantes que você pode ter experimentado quando criança ao observar um prédio ou área degradada e apresentar o Teoria das janelas quebradas .


Em poucas palavras, a teoria das janelas quebradas sugere que a desordem ambiental encoraja o comportamento criminoso, anti-social ou de desordem civil. Nenhuma janela quebrada significa menos probabilidade de desordem, favorecendo a tranquilidade e a legalidade. Como nas janelas quebradas do antigo armazém, quando já há desordem abundante, é mais fácil empilhar mais.


Eu me deparei com a teoria das janelas quebradas, muitas luas atrás, enquanto lia o Pragmatic Programmer . Se você é novo no mundo do desenvolvimento de software, vale a pena ler.


A sabedoria da teoria das janelas quebradas muitas vezes vem à minha mente. Certamente criminologistas e especialistas em comportamento teriam muito mais a dizer sobre isso, mas para mim, é uma ilustração gravada de como o ambiente influencia o comportamento humano.


E embora alguns estudiosos mais recentes afirmem que a teoria não existe mais, mesmo sem ler seus artigos ou reivindicações, eu já contestaria: “Desculpas. Eu entendo que você é um especialista, mas na minha experiência é válido”.


Se você gosta do programa de TV “Bing Bang”, sabe que até mesmo os especialistas podem estar errados e ser provados errados até mesmo por amigos.


Espero que você tenha entendido que as janelas quebradas nesta velha história de armazém convidavam a comportamentos anti-sociais que também levavam os transeuntes, como se guiados por uma premonição automatizada de problemas, a dar passos para longe dele e removê-lo da mente.

Tecnologia e crime

Para que você não pense que estou muito velho, permita-me usar o desafio TikTok Kia como outro exemplo (que, a ser executado, também pode incluir a quebra da janela do veículo).


Para quem não conhece, trata-se de um vídeo partilhado naquela plataforma que deu origem a uma série de roubos de viaturas a Kia e Hyundai, na sua maioria por adolescentes, que resultaram em danos materiais, luto, perda de vidas e outros atos nefastos consequências, todas negativas… excluindo os ganhos do TikTok e maior notoriedade da plataforma.


Sendo uma decisão de design intencional ou infeliz por esses fabricantes de automóveis, foi, no entanto, uma fragilidade do sistema, que foi explorada com sucesso por meio de um cabo USB comum.


Uma imagem de uma fábrica de automóveis


O adulto, ou pelo menos a coisa responsável a fazer, teria sido divulgar essa vulnerabilidade para ambas as marcas e esperar que tomassem medidas para corrigi-la. Claro, isso significaria que os autores do vídeo provavelmente nunca se tornariam famosos, nem se divertiriam ao fazê-lo.


É interessante para mim que os jovens de hoje prefiram ser influenciadores, mesmo que como embaixadores do mal, em vez de bombeiros, médicos ou astronautas. Bom trabalho mídia de massa! (minha tentativa de sarcasmo para aqueles que têm dificuldade em entender o sarcasmo).


Portanto, neste exemplo, podemos reconhecer que, mesmo que não intencionalmente, uma janela quebrada (e um cabo USB) pode levar a consequências mais dramáticas do que apenas vidro quebrado.


Desde então, ambas as empresas tomaram medidas para tentar minimizar e combater o comportamento criminoso, ou seja, consertar a janela quebrada, mas não antes de sofrer danos à reputação e perdas financeiras.

Design de desenvolvimento de software: o exemplo de cabeçalho de referência HTTP

Um exemplo do mundo do software que tem sido uma janela quebrada por muitos anos é o cabeçalho HTTP Referer, um erro ortográfico da palavra referrer. Isso me causou problemas, talvez para você e para centenas, senão milhares de pessoas também.


Como eu, você provavelmente zombou (faça comentários rudes e zombeteiros, geralmente em voz alta) dos autores também. Você também pode ter procurado de quem foi a culpa e potencialmente também concluído que, mesmo depois de tantos anos, que a desculpa de estar muito ocupado ou que “eu vou consertar isso”... é muito humano, como você tem por com certeza já ouvi raciocínio semelhante antes, para outras janelas quebradas.


Quem se importa com outras pessoas perdendo tempo quando é fácil ensinar que você precisa fazer algo errado, porque essa é a maneira certa de fazer? Ou, aqui está um pensamento engraçado, por que não mudamos o dicionário? Então não será mais um erro.


Abra o editor de texto de sua preferência e escreva uma frase com a versão incorreta com o dicionário em inglês. A palavra é sinalizada como um erro de digitação?

Os resultados podem te surpreender.


Uma janela quebrada, deixada sem conserto, leva a mais janelas quebradas, mas se nem mesmo os especialistas se importam com isso, por que o resto de nós deveria? Por que não quebrar mais janelas? Certamente um dia, tudo deve ser consertado.


Aqui está uma possível razão! Envolve números, tão fáceis de errar, mas vamos tentar.


Vamos usar o salário médio do programador nos EUA em 2021, que foi de $ 93.000 de acordo com esta fonte . Vamos supor 40 horas por semana e 52 semanas de trabalho para obter o valor por hora de $ 44,71 (aparentemente, os americanos não gostam muito de férias).


Dado que, só nos EUA, existem 4,3 milhões de programadores de acordo com esta fonte . Mesmo se pegarmos apenas 5% deles (escolhi o valor arbitrariamente), obteríamos 215.000 programadores que, de uma forma ou de outra, encontraram o erro de digitação e tiveram que tomar medidas para entendê-lo e resolvê-lo.


Se cada um desses programadores perdesse apenas uma hora em média, lidando com os efeitos colaterais e entendendo por que está lá em primeiro lugar, o custo de seu primeiro encontro teria sido de 9,6 milhões de dólares . Se fosse 30% (1 290 000 pessoas) o valor seria de 57,7 milhões de dólares . Novamente: apenas nos EUA .


Mesmo se você selecionar outra porcentagem arbitrária, o desperdício ainda será imenso.


Uma imagem de uma pessoa segurando dinheiro em ambas as mãos como se estivesse contando


E lembre-se de que não considerei que os problemas detectados no início de um ciclo de desenvolvimento custam significativamente menos do que os detectados na produção. Também não acrescentei ajustes de inflação, nem considerei diferentes países ou alunos e professores que se dedicam a isso, nem os de pessoas que têm sites e não são considerados programadores, nem os que se aposentaram, nem também, os que ainda têm para aprendê-lo.


Agora, extrapole esse valor para incluir o mundo. Quanto dinheiro, quanto valor, quanta vida, você acredita que já se perdeu e se perderá?


Anseio pelo dia em que uma alma gentil compartilhará em algum lugar: “A propósito, nós consertamos e o modo antigo será obsoleto na versão X”. Porque, para mim, a menos que as pessoas responsáveis pelo erro fácil sejam tão desprezíveis que devam ser lembradas por esse erro de digitação, a melhor hora para corrigi-lo foi ontem. (Conhece alguém da Apache Foundation ou que trabalha com Nginx? Por favor! Chame-os!)


“Comece com o fim em mente”, isso inclui o que você fez ou não fez, para os outros.


No entanto, este é apenas um exemplo do mundo do software, não um unicórnio, temos mais.

Maturidade corporativa e janelas quebradas

Em minha experiência, quanto maior a maturidade, a experiência das partes interessadas e a longevidade do software, maior a probabilidade de janelas quebradas persistirem por períodos mais longos ou nunca serem resolvidas.


E não. Não fico atrás nem ao lado daqueles que têm satisfação em liberar cedo e com frequência, porque isso se traduz regularmente em menos qualidade e cuidado. Saber que você está lançando principalmente janelas quebradas, recursos completos impensados, não é ser ágil, é ser desleixado.


E sim, estou ciente de que muitos motivos irão surgir e contrariar a afirmação acima, mas acredito que nenhum deles resistirá a uma mudança no clima trazida por um adversário cibernético que decide lucrar. Mais claramente: as bases de código das empresas iniciantes estão regularmente maduras para o crime, em outras palavras, são frutas fáceis de colher para os criminosos.


Mas em relação às organizações amadurecidas, as forças mais fortes por trás da realidade da maturidade abraçando janelas quebradas são o baixo retorno sobre o investimento e outras prioridades prementes que ditam e reforçam a necessidade de atenção dos recursos disponíveis.


Além disso, as organizações estabelecidas estão sujeitas a regulamentos e conformidade que as impedem de assumir certos riscos que, se materializados, teriam um amplo impacto social. É também por isso que essas empresas preferem incubar startups, permitindo que atinjam determinados nichos, e esperar até que as regulamentações e atividades estejam mais estáveis, antes de realmente adquirir.


Uma imagem de vários dossiês empilhados


A sociedade não favorece os que fracassam, celebramos os vencedores! Portanto, é humano ficar na defensiva ao cometer erros ou falhar. Exigimos que todos, exceto nós, nunca percam um pênalti ou uma cobrança de falta. Além disso, os programadores definitivamente não são gentis uns com os outros, mas esse não é um problema isolado deles.


Portanto, não é inesperado que uma equipe, ou um indivíduo, responda com raciocínios como: “não é realmente um bug”, “não é realmente um defeito”, foi uma decisão de design”, “nunca pensamos que poderia ser usado assim ”, “ninguém jamais faria isso”, “não faz mal a ninguém”, “está funcionando como deveria”, etc.


E quando as janelas quebradas não são consertadas, pelo menos em breve, de uma forma nerd bem-humorada, os programadores as chamam de: “ um recurso ”.


Parece bobo, não é? Vamos ver o que pode estar acontecendo.


Se nos sentarmos, confortavelmente, tentando resistir aos nossos próprios preconceitos, talvez mais de nós possamos observar o mesmo: um bando de humanos que ganham a vida resolvendo problemas, podem com certeza e facilmente reconhecer janelas quebradas. E como alguns nunca serão consertados, os indivíduos procurarão maneiras de parar de se preocupar e removê-los de suas mentes.


Porque, como tantas outras coisas na vida que não podem ser controladas individualmente ou diretamente, essas pesam sobre você se você continuar gastando energia pensando nelas.

Conclusão

Quando é então que esse comportamento comum que carrega negatividade e é indesejável se torna inaceitável? É apenas quando as pessoas batem e a morte ocorre?


Se assim for, bem, então há algumas coisas que nunca serão consertadas… vamos continuar perdendo, ou mais precisamente, deixar que outros continuem perdendo.


Entre o estilhaçar do vidro que afetou apenas o dono do armazém, aos donos das viaturas, as pessoas que as roubaram, e por último aos outros programadores, abordar os detalhes, mesmo que pequenos, fará a diferença.


Espero que da próxima vez que você fizer algo errado, considere consertá-lo imediatamente ou permitir que a pessoa que o fez o corrija.


E, por favor, pare de jogar lixo porque os outros também.


E se forem especialistas, desafie-os! Eles são humanos, cometem erros e podem nem ter percebido. Se eles reagirem como idiotas, responda: “de nada”.


Se eu tivesse multas a pagar, por todos os erros de digitação e outras bobagens que fiz até agora na minha vida…


Mas eu sempre tento fazer uma coisa : consertá-los, uma vez que estou ciente deles. Você deveria também!


Pequenas coisas, elas importam. E se não exatamente eles, o que sua presença significa.


Não deixe “janelas quebradas” (projetos ruins, decisões erradas ou código ruim) sem conserto. - O programador pragmático por Dave Thomas e Andy Hunt

(isso inclui os pequenos)