3 pontos por GN⁺ 2024-05-06 | 1 comentários | Compartilhar no WhatsApp

A simplicidade é uma vantagem, mas infelizmente a complexidade ainda vende melhor

Por que a complexidade vende melhor?

  • A complexidade indica esforço
    • Artigos com ideias difíceis e detalhes técnicos remetem a suor e lágrimas
    • Um sistema com mais componentes e funções parece exigir mais esforço do que um sistema com menos componentes
    • Como um resultado complexo é visto como exigindo mais esforço, ele parece mais difícil de fazer e mais valioso
    • O esforço que acompanha a complexidade é frequentemente avaliado como de maior qualidade
  • A complexidade indica proficiência
    • Um sistema complexo com muitas peças em movimento sugere que o projetista é hábil tanto com cada peça quanto em integrá-las
    • Um artigo difícil de entender, cheio de jargão técnico e provas, demonstra expertise no tema
    • Se uma pessoa comum tem dificuldade em entender uma ideia ou sistema complexos, o criador provavelmente é um especialista
  • A complexidade indica inovação
    • Um artigo que inventa uma arquitetura de modelo completamente nova é visto como mais novo do que um que aplica uma rede existente
    • Um sistema com componentes criados do zero é percebido como mais criativo do que um sistema que reutiliza componentes existentes
    • Trabalhos que se baseiam em trabalho prévio ou reutilizam-no não parecem muito inovadores
  • A complexidade significa mais funcionalidades
    • Um sistema com componentes que podem ser combinados e alinhados sugere flexibilidade para cobrir qualquer base
    • Como sistemas complexos possuem mais blocos do que sistemas simples, são vistos como mais adaptáveis e mais capazes de responder a mudanças

Por que a simplicidade é uma vantagem

  • Ideias e funcionalidades simples são fáceis de entender e usar
    • Isso aumenta a adoção e cria impacto
    • Também é fácil de comunicar e receber feedback
    • Em contrapartida, um sistema complexo é difícil de explicar e gerenciar, e o usuário pode ter dificuldade para entender o que e como fazer
  • Sistemas simples são fáceis de construir e escalar
    • Quanto menos componentes, mais fácil é implementar
    • Ao usar tecnologia padrão pronta, é mais fácil encontrar pessoas qualificadas para implementar e manter
    • Um sistema simples é mais fácil de entender e testar porque tem menos complexidade, código e interações dentro do sistema
    • Em contrapartida, sistemas desnecessariamente complexos exigem mais tempo e recursos, o que leva à ineficiência e desperdício
  • Sistemas simples têm custo operacional mais baixo
    • A implantação de sistema não é a linha de chegada, é a linha de largada
    • A maior parte do esforço acontece quando o sistema está em produção, e manter o sistema simples permite reduzir os custos de manutenção e estender a vida útil
  • No machine learning, técnicas simples muitas vezes não têm desempenho pior do que técnicas mais sofisticadas
    • Em dados tabulares de tamanho médio, modelos baseados em árvore superam redes neurais profundas
    • Em problemas de grafos combinatórios, algoritmos gananciosos superam redes neurais de grafos
    • A média simples mostra desempenho igual ou melhor do que otimizadores complexos em problemas de aprendizado multitarefa
    • Em 32 artigos, métodos simples superaram os métodos complexos em precisão de previsão
    • Em recomendação e busca, o produto interno é melhor do que a filtragem colaborativa neural

O problema de recompensar a complexidade

  • Incentiva as pessoas a tornarem as coisas inutilmente complexas
    • Usar ou construir um método ou sistema simples parece mais fácil, então é avaliado com menor valor
    • Como resultado, as pessoas manipulam para obter mais recompensa, e a solução mais simples deixa de ser a mais óbvia
  • Promove uma mentalidade de “não foi inventado aqui”, em vez de poupar tempo e esforço reutilizando componentes existentes, as pessoas preferem reconstruir desde o início
    • Isso desperdiça tempo e recursos e frequentemente acarreta resultados piores

Como devemos pensar sobre complexidade?

  • A meta deve ser resolver problemas complexos com a solução o mais simples possível
    • Devemos focar na complexidade do problema, não na complexidade da solução
    • Uma solução simples mostra uma visão mais profunda do problema e capacidade de evitar uma solução mais complexa e cara
  • Em vez de uma solução complexa que resolve tudo, devemos considerar várias soluções focadas
    • Uma solução “faz-tudo” geralmente não é tão flexível e reutilizável quanto esperado
    • Como ela existe para vários casos de uso e stakeholders, tende a ficar “fortemente acoplada” e exige mais ajustes em planejamento e migração
    • Em contrapartida, é mais fácil operar e descomissionar sistemas de propósito único

Opinião da GN+

  • Este texto explica de forma convincente por que a complexidade é preferida e quais são as vantagens da simplicidade. Achei interessante o ponto de que a complexidade é preferida porque sugere proficiência, inovação e recursos.
  • Mas é difícil dizer que a solução simples é melhor em todos os casos. Dependendo da natureza do problema, pode ser necessário algum grau de complexidade. Equilibrar simplicidade e complexidade provavelmente será importante.
  • No campo de machine learning, foi interessante ver exemplos em que um modelo simples tem desempenho melhor. Parece uma boa prática comparar com métodos simples existentes ao desenvolver um novo modelo.
  • Precisamos tomar cuidado para não enfatizar demais a complexidade ao avaliar performance organizacional. Em vez disso, é melhor focar na dificuldade do problema e na efetividade da solução.
  • Ao projetar arquitetura, pode ser uma boa ideia considerar múltiplos sistemas simples de propósito único, em vez de um sistema complexo e “faz-tudo”.

1 comentários

 
GN⁺ 2024-05-06
Comentário do Hacker News

Resumo:

  • A prática de empilhar iterativamente um MVP (produto mínimo viável) também pode ser uma causa de complexidade.
  • Sistemas que oferecem recompensas maiores à medida que os problemas ficam mais complexos podem acabar gerando complexidade desnecessária.
  • Pela diferença entre consumidores avançados e consumidores aspiracionais, atender aos desejos desses últimos pode ser uma escolha racional para as empresas.
  • Software complexo e cheio de bugs acaba sendo preferido justamente porque é possível se esconder atrás disso.
  • As pessoas crescem desde pequenas com a mentalidade de que “quanto mais, melhor”.
  • Como engenheiros, tendemos a achar mais atraente o que é desafiador do que uma solução simples.
  • Existe uma psicologia paradoxal de preferir o simples e, ao mesmo tempo, evitar aquilo que parece simples.
  • É fácil criticar retrospectivamente uma solução complexa, mas essa crítica fica oca sem conhecer as restrições e requisitos da época.
  • O princípio de “tão simples quanto possível, mas não simples demais” é sempre correto, mas sua implementação não é fácil.
  • No início de projetos, embora algo seja simples, muitas vezes, à medida que os requisitos crescem, é inevitável que se torne complexo.