Eu sou, um programador Troll

Ao ler esse artigo, eu espero dois tipos de reações distintas. A primeira será de se identificar com esse artigo, e achar que foi escrito pensando em você. A outra reação, será apenas de me odiar e desejar que eu morra pela monstruosidade que é esse artigo.

Então vamos lá…

TL;DR: Eu sou um Desenvolvedor Troll!

1-Eu recuso o gerenciamento de projetos, títulos, padrões e tudo mais relacionado, se for da minha vontade.

2-Eu aceitarei boas práticas e “regras” da programação apenas quando necessário, quanto realmente necessário.

3-Eu não tenho nenhum tipo de remorso ou vergonha em fazer o contrário do que as práticas padrões dizem, por que eu sou o mestre do código da minha aplicação e nenhum livro irá ditar como eu o faço.

Por favor, parem de inventar títulos sem sentido!

Antes de entrarmos em coisas mais sérias, explicando as frases acima, eu preciso falar sobre algumas coisas na ordem inversa. Vamos chegar em mais detalhes depois, mas por enquanto, vamos falar sobre um dos efeitos mais visíveis. Não se preocupe, você já vai entender.

Recentemente, a comunidade de desenvolvedores (eu só posso falar sobre a WEB, é onde eu atuo) está tendo esse comportamento doentio que eu não consigo tolerar.

Você já deve ter visto os seguinte termos monstruosos:

  • Developer Advocate (Será que ganhar carteira na OAB?)
  • Software Evangelist (De qual igreja?)
  • Full-stack Developer (Cuidado pra ninguem te “push-ar”)
  • T-shaped Developer (Pregado na cruz? [Desculpas se essa foi muito pesada])

Você reagiu bem a esses termos quando ficou sabendo que eles existiam? Bom, você não deveria! Esses termos são completamente vazios e sem sentido algum.

Empresas, ao invés de colorarem isso nos anúncios de vagas, por que vocês não deixam de ser preguiçosos e descrevem corretamente as atribuições da vaga?

Eu tenho que pesquisar no google agora todo vez que leio uma das novas monstruosidades que estão espalhando por ai, qual o novo termo desse mês?

Recuse o Establishment

“The Establishment generally denotes a dominant group or elite that holds power or authority in a nation or organization” — Wiki-Freaking-Pedia

Side-topic: Sim Universidades/Faculdades, Wikipedia é uma fonte muito válida. Ela é construída por pessoas, muitas pessoas e tem muito menos chance de estar errada que algum livro medíocre que só tem reconhecimento por ser publicado por uma grande editora.

OK, voltando ao assunto…

  • Eu não tenho que usar Scrum, XP, agile, ou nenhum outro dos 999 termos relacionados a processos de desenvolvimento de software.
  • Eu não tenho que decorar todos os design patterns.
  • Eu não tenho que seguir nenhuma regra.
  • Eu não tenho que escrever testes unitários.
  • Eu não tenho.

E por outro lado…

  • Eu talvez use Extreme Go-Horse Programming se eu quiser.
  • Eu talvez escreva código procedural em uma linguagem de programação orientada a objetos.
  • Eu talvez recuse javascript em uma aplicação e renderize conteúdo estático do lado do servidor.
  • Eu talvez não documente meu código.
  • Eu talvez use anti-patterns
  • Eu talvez faça código que pareça anarquia se comparado ao seu software linha-de-produção robotizada.
  • Eu talvez.

E isso não quiser dizer que meu código será uma porcaria, ou difícil de manter, ou custe mais que o seu. É simplesmente uma maneira de resolver problemas diferente da sua.

Talvez você ache as linhas que escrevi nesse artigo muito, muito perigosas. Mas, elas realmente são?

Na sua perspectiva, Eu posso estar trollando seu estilo de programação dogmático. E você talvez pense em mim como alguém completamente equivocado, quicá alucinado…

Regras são um boilerplate a serem implementadas, com sabores que combinem com o problema,

  • Scrum não é uma metodologia, é um framework.
  • Testes são ferramentas, e não a sua aplicação.
  • Design Patterns são exemplos de como você pode resolver problemas, não receitas (mesmo que muitas vezes são vendidas como receitas, em algumas vezes, como receitas mágicas)

Acha que sou louco? continue lendo…

Suas práticas talvez seja, boas, mas algumas vezes, elas não combinam comigo

Não importa se você está as usando a 20 anos e sendo produtivo dessa forma.

A intenção desse artigo é lhe mostrar que desenvolvimento não é uma religião, você não precisa seguir nenhuma regra a menos que você entenda e veja que ela será de fato benéfica ao seu projeto.

Pra dizer verdade, nenhuma regra (que a grande massa acaba por considerar regra), na verdade nasceu como uma regra. É a grande massa do Ctrl+c / Ctrl+v em blogs e mídia sobre programação sem valor que existem por ai que te venderam toda essa bagagem como regra.

  • SOLID é um conjunto de princípios.
  • REST é um Design.
  • DDD é uma abordagem.

Mas de alguma forma, acabamos por colocar essas ideas em algum altar e as glorificar diariamente, repetidamente. Elas tem abundante valor , mas devem ser usadas sempre, sempre com extremo cuidado.

Da proxima vez que se sentar na frente de um computador para programar, faça a você mesmo a seguinte questão:

Como eu posso alcançar o objetivo em mãos, usando o mínimo de esforço, técnicas e ferramentas, e obter um resultado final aceitável??

Sua resposta a essa pergunta pode ser qualquer coisa. Desde o uso de um framework ou biblioteca hipster que vai te ajudar a chegar ao resultado final em 20 minutos. Ou um projeto de 1 ano com gerentes de projeto, e uma equipe de 20 pessoas desenvolvendo um framework customizado.

O que importa mesmo é a honestidade de não colocar complexidade inútil onde nenhuma complexidade deveria existir.

Você ainda pode usar tudo que falei e mais um pouco, que não mencionei em seus projetos, simplesmente não o faça por ser bonito ou por ser padrão, o faça quando precisar, e entenda de fato com honestidade se você precisa…

Para de Complicar o que não precisa! Apenas Pare!

Então mais uma vez, eu sou um Programador Troll

Eu irei continuar a Trollar seus valores, se eu ver uma vaga que peça um programador fullstack, irei enviar meu currículo com a headline “programador troll” só pra confundir o RH.

Eu uso o que quero, quando vejo necessário, e não irei fazer nada por que um livro de 600 páginas disse ser o melhor, pois o que é melhor pra mim decido eu.

Obrigado.

P.S. Após o Feedback do William Correa, constatei que eu falhei miseravelmente em te encorajar a conhecer tudo que está a sua disposição, esse artigo serve pra te mostrar que é possível viver na maioria dos casos sem as abordagens apresentadas, mas não deve servir de forma alguma como desculpa para não aprendê-las.
Você precisa conhecer todo esse universo, pra então decidir quanto e onde você pode recusá-lo.

/whoami

Oi, eu sou o Diego Hernandes, sou Co-Fundador do CODECASTS e CTO da Kino Contabilidade Online.
Se você gostou desse artigo, talvez queira me acompanhar em outras redes sociais, como Facebook, Github e Twitter.