POG – Programação Orientada a Gambiarras

Se você identifica alguma coisa do texto abaixo é porque algum dia já precisou usar POG em seus projetos rsrs…

ERRO! PASSEI POR AKI!!.
Maker sobre POG.
Esta é a solução ótima, não temos tempo para isso. Faça a solução boa! O maior inimigo do bom é o ótimo.
Líder de Projeto sobre POG
É só fazer do jeito que eu to falando que entregamos na data correta.
Diretor TI POG sobre projeto com tempo recorde!
A culpa é do Hardware!
desenvolvedor de software sobre POG
A culpa é do Software!
técnico de manutenção de hardware sobre POG
A culpa é da rede!
vendedor de PC
POG atrai POG na razão direta de suas merdas e na razão inversa do quadrado de sua clareza.
Isaac Newton sobre POG
ACCEPTING DUPLICATE KEYS
ABAPeiro sobre POG
java.lang.NullPointerException
Java sobre POG
System.NullReferenceException – Object reference not set to an instance of an object
.Net sobre POG
Se compilou é porque funciona.
Você ao fazer POG
O que essa parte desse código faz?
Professor de POG sobre seu programa em POG copiado do colega
Ctrl-C Ctrl-V
Você sobre o código que funciona em POG de seu colega
“QUERY NOSSA QUE ESTAIS NO BANCO,
RODE RÁPIDO MINHA CONSULTA,
ASSIM NO CONSOLE QUANTO NA APLICAÇÃO
QUE RETORNE NOSSA CONSULTA
AMÉM!”
Reza do DBA POG
“Homem de preto, o que é que você faz? Eu faço código que assusta satanás!”
POGramador em treinamento do BOPE
“Não fui eu!!”
Estagiário apavorado sobre POG
“Ih, cara, é porque não tá indentado certo.”
Programador sobre o trabalho que dá falha de segmentação.
Isso é um reflexo da explosão de dados de 3 anos atras
Nagato Yuki sobre POG
Relaxa e goza!
Martha Suplicy pedindo calma aos usuários do Sistema Aéreo Brasileiro, desenvolvido sem as práticas POG
Olha eu aqui!!!
BUG sobre seu programa em POG
Segmentation fault.
GCC sobre POG
Seu Programa executou uma operação ilegal e será finalizado. Lamentamos o inconveniente.
Windows sobre POG
Falha Catastrófica.
Delphi sobre POG
Eu juro, o compilador estava de sacanagem comigo!
Programador justificando o uso de POG

É só digitar 4 8 15 16 23 42 a cada 108 minutos que o programa vai continuar rodando!
Programador POG da fundação Hanso, que criou a Iniciativa Dharma na Série Lost
Se der erro me liga!
Programador POG indo embora as 18:00hs, dizendo ao Gerente de TI, antes de rodar a folha de pagamento
Mudou a cor da grama, usuário morre de fome!
Comentário pertinente do Gerente de TI POG sobre mudanças no sistema
Existem mil maneiras de preparar um POG, invente uma!
Neston sobre POG
Se funcionou contra os aliens no Independence Day, vai funcionar com você!
Will Smith sobre POG

Deu certo? Deixa! Funcionou? Não mexa!
Bill Gates sobre POG, durante o desenvolvimento do Windows ME e do Windows Vista
Se ninguém reclamou é porque está funcionando!
Estagiário, às 18:00 da Sexta
As maiorias dos bugs são causadas por compiladores gerando código inválido.
Professor ensinando aos alunos as desculpas POG (essa eu ouvi de verdade)
Na Rússia, o POG programa você!
Programador russo, sobre POG
Você disse http://www.programei.org// ?
Google, sobre POG

PPOG (Princípios da Programação Orientada a Gambiarras)

  • Se funciona, então tá certo – Acoplado ou não, txt ou sql, mil funções ou 10, design patterns… Nada disso tem valor para o usuário, que só precisa de um software funcional. O termo “escalável” é falacioso.
  • My Way – Programador esperto, se é esperto mesmo é adepto do My Way. Se você está com dúvidas, faça do seu jeito pois se der merda é você quem vai se foder (e como).
  • Murphy ou Lei de Murphy ou Lady Murphy – Para lidar com Murphy e seu exército só com POG. Murphy é sagaz e ligeiro, tá só esperando você dar mole. Nada mais rápido do que uma gambiarrazinha pra acertar o que Murphy destrói.
  • Deixe o amanhã para amanhã – Muitos programadores atrasam projetos alegando que a demora de uma implementação para seguirem regras de design patterns ou comentários que ajudarão a outros entender melhor o código. Deixe o amanhã para o otário programador seguinte.
  • Comentários são para amadores – Um desenvolvedor deve ser treinado para ser fluente na linguagem de programação usada sem precisar de comentários, independente da consequente ruína de sua vida social. Isso também é conhecido como sétimo sentido.
  • Eficiência primeiro – Evite escrever em várias linhas o que pode ser feito em uma.
  • Fé em Deus – A informática é levianamente definida como ciência exata, quando esta é na verdade uma ciência holística. Vários casos reais de divina Providência foram testemunhados em ambientes fiéis aos princípios ruins, assim o mal foi exorcizado, e a paz instalou-se graças a fé dos gambiarrizadores. Vale dizer que: há mais mistérios entre o teclado e o monitor do que julga a sua vã filosofia.
  • 1337 h4x0r5 dud3 lol – Quanto mais ilegível, mais respeitado o código é. Consequentemente menos alterado ele é, e mais estável o sistema fica, garantindo a empregabilidade do gambiarrizador.
  • A ocasião faz o ladrão – Em determinados momentos não conseguimos escapar dela.
  • Capacidade de Abstração – Este conceito se baseia em focar-se no problema e desconsiderar conceitos e dados deios para atingir o objetivo, ou seja, o Programador deve abstrair tudo que lhe faça perder tempo como regras de negócio desnecessárias ou tratamentos de erros.
  • Conclusão Hipotética Universal Técnica Explicativa (aka. C.H.U.T.E) – Quando nenhum dos outros conceitos se aplica, utiliza-se este até funcionar ou desistir.
  • Criatividade acima de tudo – Uma pessoa criativa não é aquela que consegue chegar a diversos lugares, mas sim, aquela que chega no mesmo lugar por diversas maneiras. Portanto, o POGer não é nada mais do que um programador criativo, que faz a mesma coisa que outros, adotando técnicas não convencionais.
  • Simplicidade acima de tudo – Se o programa funciona sem o Tratamento de Exceções e a verificação de campos preenchidos pelo usuário porque complicá-lo ?
  • Faca nos dentes – O famoso “Vai fazendo ai!”

Controle de Versionamento

O POGer, por definição, evita o uso soluções padrão e no controle de versão isto não é diferente. Porque utilizar CVS, SVN e Git enquanto você pode utilizar o bom e velho .zip ? Ferramentas mais sofísticadas que Winzip, ou Winrar são para iniciantes. POGer bom tira conflito na hora do merge só no olho.

A técnica para se manter a ordem dos arquivos é a seguinte. Cria-se o arquivo backup.zip com todo o código fonte do projeto. Durante o tempo de vida do projeto, independente de qual seja este tempo de vida, 2 ou 3 backups são suficientes. Para isto, crie os arquivos backup1.zip e backup_ultimo.zip. Se as coisas ficarem (um pouco) fora de controle crie arquivos backup_ultimo_ultimo.zip e, se necessário vá incrementando com a palavra “ultimo” a cada novo backup. Se as coisas ficarem realmente feias o próximo arquivo deve se chamar backup_ultimo_ultimo_agora_eh_verdade.zip. Não se esqueça de sempre aumentar o nome do arquivo a cada novo backup. Isto facilita encontrar a última versão.

Algoritmos probabilísticos

Meu programa não tem bugs, apenas desenvolve funcionalidades aleatórias

Algoritmos probabilísticos possuem comportamene randômico, ou seja, para uma coisa que entra (ui!), qualquer coisa que sair como resultado está ok. A metodologia POG está diratemente ligada com o meio científico, pois tarefas muito complicadas encontradas neste meio não podem ser resolvidas com algoritmos determinísticos triviais e, portanto, os Algoritmos Probabilísticos entram em cena. O resultado disto é o amplo uso de técnicas que geram saídas randômicas e principalmente Gambi Design Patterns, vide Simulador Network Simulator.

Desta forma, resultados de artigos científicos levam em consideração apenas as saídas favoráveis. Se o algoritmo não está dando “aquele resultado ótimo”, rode até que aquela flagzinha ser ativada.

Máquina de Estados OG

Tipos de Erros POG

Acesso danado: ocorre quando você não tem permissão no local, muito comum no Linux, pois o Windows nem conhece a palavra “permissão”.

  • Resolução do problema: Dê permissão total à todos.

Estouro de Time-out: ocorre quando o desenvolvedor que não possui habilidades no uso de POGs cria aplicações que são lentas e, desta forma, “estoura” o tempo estipulado para o processamento:

  • Resolução do Problema: Aumente o tempo de Time-out para que este tenda ao infinito.

Documentação de projetos POG

Apesar do comprovado sucesso das metodologias POG, certos gerentes de projeto ainda recorrem a práticas desnecessárias e onerantes, como documentação de projeto. Entra em cena a esperteza de certos programadores e analistas POG.

Documento de Requisitos – Após as primeiras reuniões com o cliente, o vendedor usa os requisitos como entrada para um programa gerador de lero-lero. Assim nasce o documento de requisitos. Ele converte a linguagem coloquial do cliente para uma terminologia que ninguém entende. O cliente assina sem entender, os gerentes passam para os analistas sem ler, e esses fazem o MOG do sistema baseados no lero-lero.

Por fim, o cliente pede 150 funcionalidades a mais, os gerentes aceitam e não cobram, o prazo estoura e a culpa é do desenvolvedor.

UML – Forma que os analistas POG acharam de usar os desenhos de escola dos filhos para representar um sistema (vide Use Cases).

Documentação Orientada à Politicagem – A documentação tá lá pros analistas tirarem os seus da reta e colocarem a culpa no programador quando o projeto falhar. Ou então, caso tenha sucesso, levarem todo o crédito.

Prazos de um projeto POG

A grande vantagem da metodologia POG é entregar produtos com qualidade acima da média, mas também em prazos curtos. Existem vários tipos de prazo, cada um com seus prós e contras.

Prazo Jack Bauer

Gerente de TI: “São 150 funcionalidades no sistema. Você tem 24hs…”

Prazo Suicida

Gerente de TI: “O sistema precisa estar pronto agora!” Então, o programador POG, tendo assistido Constantine, corta os pulsos. O tempo para, e ele implementa o sistema. Lógico, que, como suicida, ele tem que implementar através de ssh direto do inferno. Deus, vendo o autossacríficio do cara, sente pena e manda ele de volta. O sistema fica pronto em alguns segundos.

Prazo Sanfona

Programador:”Devo gastar 24 horas para esse projeto”
Líder Técnico:”O Programador faz isso em 2 horas”
Prazo dado pelo Gerente de Projetos: “40 horas sendo uma previsão inicial”
Tempo realmente gasto: 160 horas

Prazo Capitão Nascimento

Gerente de TI: “Quanto tempo você precisa 0101?”
Programador:”Oito horas.”
Gerente de TI: “Oito horas?!? 0101 o Senhor é um fanfarrão! O Senhor tem oito segundos!”
Programador:”Mas, senhor..!
Gerente de TI: “Mas senhor é o caralho, o senhor tá com nojinho?”
Programador:”Não senhor..”
Gerente de TI: “Então senta o dedo nesse teclado e começa a programar!”

Ciclo de vida de um projeto POG

O ciclo de vida dos projetos POG se resumem às fases:

  1. Entusiasmo
  2. Desilusão
  3. Pânico
  4. Busca dos culpados
  5. Punição dos inocentes
  6. Honra e glória aos não participantes (no final quem não tem nada a ver com o projeto é que salva)
  7. Os inocentes que não foram mandados embora, assumem a manutenção do Sistema.

Certificações

Pessoal

POG Basic Certification

A primeira certificação pessoal a ser tirada pelo programador orientado a gambiarra é POG Basic Certification. Essa certificação demonstra que o programador executou a sua primeira gambiarra com sucesso, e a primeira gambiarra você jamais esquece. Ele a partir desse momento está apto a desenvolver novas gambiarras com a mesma inteligência e vigor que executou a primeira, sem culpa e com respaldo da certificação adquirida e que jamais será retirada dele.

POG Master Certification

Senhor de todas as faculdades gambiarrísticas, é um profissional altamente capacitado ao desenvolvimento de software, as gambiarras saem de seu cérebro ja inconscientemente, é tão natural quanto respirar ou peidar. Capaz de feitos como DOG NEVER HUNGRY TECHNIQUE, o meu cachorro aprendeu a viver sem comer depois disso e FRIEND NEVER SLEEP TECHNIQUE, ou seja, o amigo de um POGer sempre está acordado e disposto a acompanha-lo, mesmo nas horas mais obscuras da madrugada. Isto é fato, amigos de POGuentos não dormem regularmente, são capazes de suportar vários dias acordados ( na noite em algum bar, após o trabalho falando de POG ), e em alguns casos até semanas sem dormir mais que 4 horas por noite.

POG Overlord Certification
Nível de sapiência em POG lendário, onde apenas UM caso foi registrado até o presente momento. Tal indivíduo teve uma luz de como gambiarrar em busca de uma solução (cujo problema vem de um sistema extremamente MOG/POG, feito por POGers sem experiência) tão incrível que causou colapso nervoso em seu chefe.

POG Overlord Exam

  • Problema

Inserir em uma tabela de um módulo que não existe no ERP da empresa os dados referentes ao departamento pessoal, oriundo de outro sistema da empresa, o qual não conversam entre si. Esses dados serão acessados tanto pelos módulos existentes quanto pelos módulos não existentes (tenha Fé).

  • Solução digna do título de Overlord

Tendo os dados que serão necessários para a inserção no ERP, em Excel (!!!), o POGer edita as coluna, deixando apenas as que são NOT NULL no BD (caso esteja faltando alguma informação NOT NULL, tal clausula é modificada no BD) e salva em CSV, tomando o cuidado de acrescentar uma coluna no começo com “insert into nome_tabela (campos) values (“, entre os dados colunas com as informações “??” e no final uma coluna com “);”.
Após tal feito, o POGer deverá abrir o CSV no bloco de notas e substituir o “;” do CVS pelas aspas simples e deixar os inserts no padrão SQL.

Agora vem a parte bruta. O POGer deverá inserir esses dados na tabela X, que irá gerar um ID (não usando uma sequence, mas uma tabela), pegar os dados inseridos mais o ID gerado e inserir em uma outra tabela, Y. Como fazer isso?

Simples, basta criar uma tabela Z, inserir os dados. Depois inserir novamente, só que agora na tabela X (onde será gerado o ID). Depois, nosso intrépido POGer deverá comparar a tabela X e Z pelos nomes (com o LIKE) e pegar os dados que são idênticos entre elas… e salvar como CSV!!!

Novamente, irá no bloco de notas, editando os dados para deixar no padrão insert do SQL e depois inserir os dados, FINALMENTE, na tabela Y.

Após o término de tal gambiarra, nosso POGer obteve, por divina providência, o certificado POG de Overlord.

GambiGodnessPower Certification

Este nível de programação só é conseguido por o mais alto nível de gambiarrice. Ao se deparar com um problema impossível de ser resolvido, problema este que consome totalmente todas as forças mentais e a energia gambiKi corporal, neste momento o indivíduo recorre a todos os tipos de rezas e orações e pede por forças do além para resolver o dito problema. Se você chegar a este estado, e tiver feito todos os passos descritos aqui, você verá em seu sonho (dois dias depois quando você conseguir dormir), Moises trazendo as duas tabuas da gambiarra sagrada, neste momento você se tornará um GambiGodnessPower, onde nada mais será impossível para você. As pessoas notarão diferenças em você, principalmente quando você começar a flutuar (ao invés de andar) e usar telepatia para falar com elas. Infelizmente estes indivíduos não duram muito tempo na terra, pois logo que conseguem este nível de conhecimento, tranformam-se em força GambiKi (o primeiro foi wob wan kinoob) e passam a ser programadores mal remunerados do grande computador quantico do universo, dentro de um cilindro-cônico.

GambiGodnessPower Exam

  • Problema

Após você ter alcançado a certificação POG OverLord, você deve fazer um hyper POG que envie um pacote (com 1GB de payload) por sua interface cabeada (de preferência sem estar com o cabo conectado), e receber este pacote por sua interface sem-fio. a interface sem fio deve estar conectada de forma não autorizada na internet sem fio de um vizinho, e esta deve ser protegida com WAP2, RADIOS, Criptografia Quântica. O vizinho deve ter pelo menos 5 pós-doutorados em segurança da informação. O pacote ainda deve sair de sua interface cabeada, da uma volta no planeta, e em seguida chegar em sua placa de rede sem fio, com apenas um salto.

  • Resolução

comece usando a força GambiKi para ligar o computador, fume duas folhas de papel (de preferencia higienico), e em seguida, deixe a forma GambiKi fluir.

P.O.G.

Arquivo em alta definição, disponível para impressão. Somente utilize caso você tenha adquirido a devida certificação.

POGMM – POG Maturity Model

O POGMM fornece às organizações orientação sobre como ganhar controle do processo de desenvolvimento de gambiarra em software e como evoluir para um cultura de excelência na codificação adaptada completa e adaptável (CACA), sem que ninguém perceba e continue achando que o desenvolvimento está a mil maravilhas.

O objetivo principal nas transições desses níveis de maturidade é a realização de um processo discreto e imperceptível, para a construção de workarounds (gambiarras), como a fundação para melhoria contínua. Cada nível de maturidade possui um conjunto de práticas de gambiarras e gestão de CACAs, denominadas áreas-chave do processo de T.A.P.A (Técnicas Avançadas de Programação Adaptável).

O processo descreve os estágios de maturidade através dos quais organizações passam enquanto envoluem no ciclo de elaboração de gambiarras, identificação de mancadas e ações acobertadoras dentro de uma estratégia de melhoria do disfarce dos processos.

Este caminho de melhoria é definido por cinco níveis de maturidade:

  • Nível 1 – Inicial

Neste estágio as CACAs são codificadas, invariavelmente dão algum problema e, quando descoberta, ninguém tem um boa desculpa para aplicar.

  • Nível 2 – Repetitivo

Chegando a este nível, as soluções de workaround são permante e conscientemente introduzidas, com leves maquiagens, permitindo que em muitos casos passem despercebidas, minimizando o impacto de sua descoberta.

  • Nível 3 – Definido

Por meio da utilização de MOG, as gambiarras passam a ser bem conhecidas, podendo-se elencá-las por meio de patterns próprios. Na eventualidade de identificação de alguma dessas CACAs, as desculpas já estão bem fundamentadas com paradigmas específicos e explicações esdrúxulas.

  • Nível 4 – Gerenciado

O conhecimento de gambiarras fica claramente mapeado, permitindo a preparação antecipada de uma estratégia de justificativas para cada incidente com CACAs. A definição antecipada de responsáveis é possível, permitindo ocultar a sua autoria e colocar a culpa no “colega” que você mais detesta.

  • Nível 5 – Em otimização

Apesar do uso intenso da POG, quase a totalidade das CACAs passam despercebidas e, mesmo quando percebidas, é sempre possível e plausível classificá-la como acaso. “Como foi que isso foi para aí?” O índice de POG também não influencia no sucesso da aplicação, fazendo com que milagrosamente ela atinja seus objetivos com êxito.

Chavões POG

Vai programando aí que eu vou ver o que o cliente quer
Gerente sem-noção sobre POG

A culpa é do Ralph!
DEV sobre POG

Limpa o histórico e o cache e dá um [Control + F5] que funciona
Resposta padrão do Webmaster sobre POG

Já atualizou a versão do Windows?
Resposta padrão do suporte sobre POG

É so botar botar um @
Programador PHP sobre o erro que aconteceu sobre POG

A principio isso nao tem nada a ver com o erro, mas pode ser que tenha….algo a ver
Programador POG, sobre o erro no programa que nao sabe da onde veio

O que importa são os resultados™
Programadores do Google Adwords sobre POG

Travou? Tenta dar [Ctrl + Alt + Del]. Se não funcionar, desliga e liga de novo a máquina…
Resposta de um POG a outro sobre a execução de um LOOP do manual da POG

Na minha máquina funcionou.
Programador sobre POG

O importante é fazer funcionar.
Programador 100% pragmático sobre POG

Ontem tava funcionando!
MPOG sobre POG

É só colocar um DIV ali!
WebDesigner sobre POG

/* só testei até aki! */
Comentário de um programador Mancebo em um arquivo

Não se preocupe… quando você for implementar vai descobrir a melhor maneira!
Gerente sem-noção

Não me interessa se é restrição da ferramenta, dá um jeito e coloca isso funcionando até amanhã!
Gerente de Projeto falando ao programador

Simplesmente comentei e funcionou!
MPOG sobre Mestre da arte de POG dizendo como resolveu o problema

É facil, não vejo dificuldade em fazer isso!!
Gerente sem-noção definindo prazo junto com o programador

É só colocar um IF!!
Gerente sem-noção sugerindo a solução técnica

Tive que arrumar direto no banco – daí funcionou! Se o problema “voltar”, nos ligue novamente.
POGger sobre O Poder da Fé.

Como não faz?! Tem que implementar, acabamos de vender o produto com isto.
Gerente de vendas de uma empresa qualquer

É só gerar tudo de novo, provavelmente deu erro na especificação.
Programador com sua desculpa POG para o problema

O Código tá certo, deve ser problema na massa de dados.
Programador Experiente, com várias certificações em POG

Terminei, só falta testar.
Programador POG as 18h00 com a mochila nas costas falando pro chefe

É só reiniciar que funciona!
Programador POG logo de manhã com copo de café na mão

Dá um Build All que funciona!
Programador VB desesperado por não saber a procedência do erro

Bom, deixa estourar a bomba lá, aí quando vierem me pentelhar aqui eu vejo o que faço…
Programador para outro programador só esperando o problema voltar

A Função ficou com 3000 linhas porque é impossível deixar ela menor
Programador POG tentando se passar por expert

Se compila Funciona!
Programador POG, usando a técnica No_Exception

Eu fiz somente o que foi especificado!
Analista, usando a técnica In-Diana

Hmmm.. que estranho… Não era para acontecer isso…
Programador iniciante na empresa

Que lixo que fizeram!!! Olha isso!!
Programador POG falando sobre outro Programador POG

Quando eu cheguei já tava assim!!!
Gambizeiro querendo tirar o seu da reta!

É que 1GB de RAM é pouco! Tem que colocar mais memória!!!
POGramador sobre estouro de pilha

ah!!! Isto é um erro comum do Windows!
POGramador tentando ganhar tempo para corrigir seu código

Reza e cruza os dedos que vai funcionar!
POG Pai de Santo falando para um POGramador menos experimente…

Quando eu testei, funcionou!
POGramador demonstrando as gambiarras para seu Gerente Sem Noçao

Tá quebrado? Force. Se quebrar, precisava trocar mesmo…
POG sem noção e eu

Até ontém quando eu mexi estava tudo funcionando!
Resposta do POGramador ao ser questionado sobre a pane geral no sistema

Tem bug, mas não é no código!!
Estagiário justificando os erros no programa para o gerente

Claro que não! É essa lib/SO/compilador que está toda bugada!!
Estagiário-chefe apoiando justificativa do estagiário ao gerente

O Senhor já tentou reiniciar seu computador? Caso sim vou pedir que desligue seu modem e religue novamente…
Atendente da Brasil Telecom ou Velox utilizando técnicas de TelePOG para resolver o problema

Para ser POGger, tem de ser astuto, tem que saber onde o compilador quer te ferrar
POGger passando seus ensinamentos para estagiário!

Não se preocupe, nenhum sistema “entra redondo”. O importante agora é entrar em produção, depois consertamos os erros!
Gerente sem noção tentando acalmar desenvolvedor sobre projeto MOG com prazo estourado.

Deu erro…comenta!
Alunos no laboratório da facul.

É só um botão, o que pode dar errado?
Gerente sem-noção sobre nova funcionalidade

Siglas

  • GJSB – Golpe do João Sem Braço (Armless John’s Attack)
  • MTEDM – Manutenção Técnica com Elementos Disponíveis no Momento. Também chamado de Bacalhau.
  • MAS – Método dos Acochambramentos Sucessivos
  • CHUTE – Conclusão Hipotética Universal Técnica Explicativa
  • ATND – Artifício Técnico Não Documentado
  • RCP – Reparo de Cunho Provisório

Fonte: Desciclopédia

Artigos Relacionados:

Um comentário em “POG – Programação Orientada a Gambiarras

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *