/ Software Development

O que é POG?

Programação Orientada a Gambiarra, e esse já texto poderia acabar aqui :P
Mas, quando se trata de desenvolvimento de softwares, sabemos que devemos sempre ter métricas e definições claras e objetivas a fim de não criar ambiguidades ou más interpretações, mesmo quando se trata apenas de papo de desenvolvedores. Assim sendo, o que é exatamente uma “Programação Orientada a Gambiarra”?

Segundo o dicionário Aurélio online, gambiarra é:
1 - Renque de luzes entre as bambolinas do palco;
2 - Extensão elétrica, com fio comprido, que permite levar luz a sítios afastados.
bcf
Sei que a primeira vista o termo não parece ter nada a ver com o universo de desenvolvimento de software, e de fato é estranho imaginar desenvolvedores falando sobre bambolinas de palco ou extensões elétricas de fio comprido para sítios, a não ser quando estamos em meu sítio claro (em meus sonhos apenas...rs), mas acredite, o termo é bem comum nesse universo.

Quando nos referimos a POG em ambiente de desenvolvimento de software, na maioria das vezes queremos dizer que algum componente, código ou solução está sendo aplicado de forma indevida, sendo muitas vezes utilizado com finalidade para a qual ele não foi criado. Essa prática tende a gerar mais problemas do que soluções, sobretudo a longo prazo, então se você é desenvolvedor fuja dos POGs como se não houvesse amanhã!
forest

De onde nascem os POGs?

Imagine que você tem um software para apresentar em 30 dias, usando tecnologias que você ama e domina, e tendo uma boa equipe para trabalhar. Você cria um cronograma, planeja os testes, faz documentação e começa a desenvolver. Tudo parece perfeito até que no dia 15 o prazo cai de 30 para 20 dias, restando apenas 5 dias para concluir o software. Seu gerente de projetos viaja para Bahamas sem deixar contato algum; você e sua equipe são obrigados a trabalhar com uma nova e terrível tecnologia que ninguém no mundo parece conhecer, e conflitos internos fazem com que você ganhe uma nova e totalmente apática equipe. E é nesse cenário catastrófico que vários e vários POGs ganham vida.

Claro que não imagino que tudo isso aconteça de uma vez só, mas o cenário descrito acima traz os terrenos mais férteis para o crescimento e evolução dos POGs.

  • falta de domínio da tecnologia utilizada;
  • prazos extremamente curtos;
  • mudanças abruptas do projeto e/ou equipe;
  • requisitos surgindo e desaparecendo de forma caótica,
  • mau planejamento do projeto;
  • equipes desmotivadas...

... são alguns dos fatores que mais criam POGs e, por consequência, softwares instáveis e de má qualidade.

Mas meu colega faz POGs o dia todo!

Calma, muita calma nessa hora! Primeiro não é de bom tom dizer isso de um colega (pode machucar os sentimentos dele, ainda mais se ele se importar com seus códigos como meus colegas e eu... :/). Além disso, quando estamos olhando códigos de outros desenvolvedores, tendemos a ser muito crítico, por vários motivos: leves alterações de estilos, highlights diferentes, linhas de pensamentos distintas, entre outros fatores que causam estranheza à nossa percepção. Mas, se além de tudo isso você encontrar algo incomum no código de seu colega, algo que pareça um POG, não perca tempo e chame-o para conversar, talvez seja algo que fuja ao seu conhecimento ou ao dele. Assim, vocês poderão trocar conhecimentos e garantir um melhor entendimento sobre o código. E se for um POG de fato, exterminem ele imediatamente!
kill

Preciso fazer POG, mas é temporário, pode ser?

Absolutamente não. Não se deixe seduzir por esses POGs “temporários”, eles são os piores. Quando decisões como essas são tomadas, além criar um código com gambiarras, cria-se também uma dívida técnica que apenas cresce com o passar do tempo *(dívida técnica é um assunto que pretendemos trazer mais profundamente no futuro... mas, em suma, o termo se refere a uma dívida que uma equipe de desenvolvimento aceita ao optar por uma solução fácil de implementar no curto prazo, no entanto causa impactos negativos a longo prazo).

Em momentos como esse, vale a pena uma rápida pesquisa para verificar alternativas mais elegantes. Na área de desenvolvimento há muitas maneiras de fazer uma mesma coisa, e é sempre bom procurar por maneiras elegantes e que causem menos impacto com o passar do tempo.

Claro que quando estamos com o problema em nossas mãos, o cliente no telefone e o prazo vencendo, fica difícil pensar em fazer pesquisa ou código elegante, mas isso lhe poupará tempo no futuro e o seu “eu” de amanhã não ficará tão chateado com você.
flat-800x800-075-f

Mas num tem outro jeito

Todo desenvolvedor já deve ter usado essa frase ao menos uma vez na vida. Mas antes de jogar a toalha e se render à gambiarra, lembre-se que os arquitetos, engenheiros e desenvolvedores que criaram a tecnologia qual você está utilizando pensaram em diversas possibilidades de uso, e se você usa tecnologias já consagradas e consolidadas no mercado, me arrisco a dizer ao menos 95% das possibilidades de desenvolvimento com essa tecnologia foi pensada. Claro que existe aqueles 5%, mas seria muita ingenuidade de qualquer desenvolvedor assumir que está nessa faixa sem fazer uma verificação mais detalhada antes.

Normalmente não atingimos os limites das tecnologias e plataformas nas quais desenvolvemos, e nos mantemos relativamente distantes dos casos não pensados pelos seus criadores. Contudo, quando somos especialistas em uma determinada área, essa distância fica de fato menor, e com o passar do tempo passamos a trabalhar no limite pensado pelos criadores, ainda mais se a plataforma ou tecnologia não passa por atualizações. Nesse ponto é que se encaixa de fato o título dessa seção e uma pequena reflexão: Quando atingimos os limites de nossa tecnologia, os POGs passam a ser mais aceitos?

Particularmente POGs nunca são boas alternativas (sério, nunca mesmo), contudo você pode ser o Einstein do desenvolvimento de software, trabalhando no limite do que é possível em sua tecnologia e eu estou aqui dizendo para você desistir da teoria da relatividade. Enfim, eu não posso fazer essa escolha por você, mas posso dizer que gambiarras são horríveis e que talvez seja a hora de, se possível, trocar de tecnologia (imagina Einstein com DeLorean :P).
2171_02969_REV

Conclusão

Agora que sabemos o que são, onde nascem, e que são horríveis, posso dizer sem medo: nunca chegue perto dos POGs, mesmo daqueles temporários, apesar de parecer por vezes uma solução prática e rápida, eles são nocivos para o seu desenvolvimento e tendem a causar mais problemas do que soluções a longo prazo. Além disso, na maioria dos casos, há uma maneira elegante e eficaz de fugir de uma gambiarra, e vale sempre a pena procurar essa solução.

Então diz aí, exterminou algum POG hoje? Como ele era e o que você fez? Comenta aí, estamos sempre a fim de conhecer novos exterminadores de POGs :)

O que é POG?
Share this