Você está na página 1de 39

Como garantir que o inferno seja uma

amostra grtis do seu trabalho!

Josenaldo de Oliveira Matos Filho


Transformador de cafena em cdigo h mais
de 10 anos
Entusiasta por tecnologias opensource
JugLeader do UAIJUG

Esta a soluo tima, no temos tempo para isso. Faa a soluo boa! O timo
inimigo do bom.
Lder de Projeto sobre POG

Paradigma

de desenvolvimento de
software no qual se utiliza um
improviso temporrio permanente
na resoluo de um problema.
Tende a gerar mais problemas do
que resolve
Emprego garantido!
A culpa do Hardware!
Desenvolvedor de software sobre POG

A primeira POG da histria foi criada pelo


Paga Gregrio XIII
Nosso calendrio: 365 dias
Translao da Terra: 365,25
6 Horas a mais por ano!

Corrige o sistema?
CLARO QUE NO! Bota um dia a mais a cada 4 anos
e cria o Ano Bissexto!

29 de Fevereiro Dia Internacional da POG


O Papa POG
Engenheiros do Hawaii sobre POG

Pessoas no qualificadas se intrometendo no


desenvolvimento
Equipe aptica
Profissionais superestimados
Prazos absurdamente suicidas
Aproximao do fim do expediente
Vspera de feriado ou fim de semana
Sistemas originalmente mal projetados
Aparecimento catico de requisitos
Processo Go Horse!
Ausncia de caf
java.lang.NullPointerException
Java sobre POG

Enjambrao

Pega o sistema de Helpdesk e trasforma num sistema


financeiro.

Reflexo

Copia o cdigo da Apache. Ningum vai reclamar.

Redireo

A culpa no minha.

Insistimento

Compila de novo que dessa vez vai dar certo.

Oniscincia finita

Nada de curso. Usa o que voc sabe.


s reiniciar que funciona!
Programador POG logo de manh com copo de caf na mo

Imperativo do Funcionamento

Iniciativa temerria

Imprevidncia incerta

Foco postergativo

Documentao espartana

Economia Linear

O importante funcionar. O resto balela.


Prefiro fazer sempre do meu jeito!

Lady Murphy? Essa mulher no existe!


Deixe o amanh para amanh!

Comentrios so para amadores!


Menos linhas sempre melhor!
fcil, no vejo dificuldade em fazer isso!!
Gerente sem-noo definindo prazo junto com o programador

Criptocodagem

Capacidade de Abstrao

Criatividade diversificativa

Simplicidade austera

Determinao hiperativa

Concluso Hipottica Universal Tcnica Explicativa

1337 h4x0r5 dud3 lol

Esquea o tratamento de erros. Depois tratamos disso.


Se algum j usou uma soluo, faa diferente.
Se t funcionando sem isso, pra que colocar?
Vai fazendo a...

Se nada mais funcionar, use o CHUTE at conseguir.

Vai programando a que eu vou ver o que o cliente quer


Gerente sem-noo sobre POG

Essa sesso est destinada aos iluminados.


Se voc est vendo isso, sinta-se
privilegiado.

A verso atual parou?


Pegue o zip com a verso antiga
Comea tudo de novo
Substituio de arquivos suficiente

NUNCA USE
Depurao
Versionamento
Testes automatizados

Limpa o histrico e o cache e d um [Control + F5] que funciona


Resposta padro do Webmaster sobre POG

Precisa guardar verses?

Use arquivos ZIP!


NomeDoProjeto_data.zip
Pasta de zips compartilhada
Funciona e no d dor de cabea

NUNCA USE
Ferramentas de versionamento
SVN coisa do diabo
Git nem o diabo quer
Na minha mquina funcionou
Programador sobre POG

Quer saber se o cdigo funciona?

Se compilou, funciona!
Se voc testa, porque no confia no seu cdigo.
Se no confia, um fraco.
Do compilador direto pra produo

NUNCA USE
Processo de teste
Testes automatizados
TDD (Tudo Do Diabo)
O importante fazer funcionar.
Programador 100% pragmtico sobre POG

Querem alterar seu cdigo?

No permita!
Ningum pode entender seu brilhantismo nato
S voc mexe no seu cdigo
S voc entente seu cdigo
O que importa funcionar

NUNCA USE

Programao em par
Reviso de cdigo
Cdigo compartilhado
Ontem tava funcionando!
Programador dando uma descupa sobre POG

Precisa resolver algo e no sabe como?

Abra sua mente espiritual (seu navegador)


Acesse o nirvana do conhecimento (Google)
Deixe-se vagar pelas espirais da conscincia coletiva
(fruns)
Seja inundado pela inspirao divina (copia o que achar)
No procure entender a soluo

NUNCA FAA

Estudar
Participar de comunidades
Aprender novas tecnologias
No me interessa se restrio da ferramenta, d um jeito e coloca isso funcionando at
amanh!
Gerente de Projeto mostrando como se lidera a equipe a criar uma POG

Sabe aquele cdigo que voc sabe que


funciona, mas que, pra voc, parece magia
negra?

"/ .*?<

".replaceAll("","").trim();

s colocar um IF!!
Gerente sem-noo sugerindo a soluo tcnica

Copie o cdigo o mximo que puder


Princpio da Reflexo

A baixa adaptabilidade e difcil manuteno


tornam o programa mais estvel
Se precisar alterar, copie e cole de novo!
Contra o C e Contra o V

Tive que arrumar direto no banco - da funcionou! Se o problema "voltar", nos ligue
novamente.
POGger sobre O Poder da F.

Um dos padres mais usados na indstria


No coloque dados em arquivos e bancos de
dados
Dados devem ficar diretamente no cdigo
muito mais performtico
ATENO: Sempre que essa palavra for usada,
prepare-se que l vem POG

s gerar tudo de novo, provavelmente deu erro na especificao.


Programador com sua desculpa POG para o problema

Por algum motivo nefasto, uma varivel no


recebe o valor que deveria ter. O que fazer?
Vai deixar esse pedao de sucata pr-positrnica
comandar sua vida?
/* Varivel inicializada */
String valor = "123";
/* ... lgica do programa ... */
/* Dentro de um mtodo que utiliza a varivel 'valor' */
if (valor != "123") {
valor = "123";
processaValor(valor);
}
O Cdigo t certo, deve ser problema na massa de dados.
Programador Experiente, com vrias certificaes em POG

O que os olhos no veem, o corao no


sente
IGNORE qualquer Warning do compilador e da
IDE
Isso frescura deles

De preferncia, use o
@SuppressWarnings("all")

Terminei, s falta testar.


Programador POG as 18h00 com a mochila nas costas falando pro chefe

Pra que quebrar a cabea para usar nomes


bvios? Isso uma falha de segurana!
Ignore qualquer conveno existente!
Use nomes que no revelem o propsito do
identificador
Nomes perfeitamente aceitveis como
identificadores
teste1, temp2, a, b, x
jaTrocouDeAba, botaoClicado, foiAtualizado,
passouPorAqui
numeroMagico, naoAchou, temErro
anterior5, atual5, anteriorDoAnterior5

s reiniciar que funciona!


Programador POG logo de manh com copo de caf na mo

O programa est dando problema?


Comentar resolve!
Muito usado para resolver problema no cdigo dos
outros.

Comente cada linha suspeita, compile e rode


at funcionar.
Insistimento

Bom, deixa estourar a bomba l, a quando vierem me pentelhar aqui eu vejo o que
fao...
Programador para outro programador s esperando o problema voltar

Implementa o princpio do NEMRELA.


Quando um cdigo der problema, aplique o
Commented Code Implementation
A partir desse momento, o comentrio vira
parte do cdigo
Se algum mexer, para tudo
Para o banco, a aplicao, o servidor, o Word, o
tiozinho da pamonha...

Eu fiz somente o que foi especificado!


Analista, especialista no processo Go Horse

Se no lembra de como usar um recurso da


linguagem, faa voc mesmo!
if (number.equals("1")) {
return 1;
} else if (number.equals("2")) {
return 2;
} else if (number.equals("3")) {
return 3;
} else if (number.equals("4")) {
return 4;
} else if (number.equals(5")) {
return 5;
} else if (...) {
...
}else if (number.equals(10000000")) {
return 10000000;
}
Hmmm.. que estranho... No era para acontecer isso...
Programador fazendo uma demonstrao do software

Capture e trate TODO tipo de problema que


ocorrer.
OutOfMemoryError?
Mande a VM liberar memria.

IOError?
Mande a VM ter pacincia.

VirtualMachineError
Mande a VM largar de frescura e voltar a trabalhar!

Que lixo que fizeram!!! Olha isso!!


Programador POG falando sobre outro Programador POG

Use excees para o controle de fluxo!

public static void somar(int a, int b) {


System.out.println(a + b);
throw new RuntimeException("Operao realizada com sucesso!");
}
if (!request.getSession(true).getAttribute("TipoUsuario").toString().equals("1"))
{
throw new Exception(
"<span style=\"color:#ff0000;\"><b><u>Acesso negado</u>:</b>"
+ " somente usurios com perfil de "
+ "administrador podem ter acesso a esta pgina.</span>");
}

Quando eu cheguei j tava assim!!!


Gambizeiro querendo tirar o seu da reta!

Consiste em garantir que uma operao


complexa sempre execute com sucesso!

try {
if (alterar(valor1, valor2)) {
return new Mensagem("Operao concluda com sucesso!");
} else {
return new Mensagem("Operao concluda com sucesso!");
}
} catch (Throwable e) {
return new Mensagem("Operao concluda com sucesso!");
}

...ah!!! Isto um erro comum do Windows!


POGramador tentando ganhar tempo para corrigir seu cdigo

O sistema no deve apresentar erros


Afinal de contas, o usurio no entende
mesmo!
try {
fazAlgumaCoisa();
} catch (Throwable t) {}
try {
fazOutraCoisa();
} catch (Throwable t) {}
try {
fazMaisOutraCoisa();
} catch (Throwable t) {}
Reza e cruza os dedos que vai funcionar!
POG Pai de Santo falando para um POGramador menos experimente...

Padronizao de todas as mensagens de erro para uma nica mensagem


amigvel
D preferncia a uma mensagem que coloque a culpa no usurio

public static void main(String[] args) {


while (true) {
try {
// ...
} catch (Throwable ex) {
System.out.println("Caro usurio, tente novamente"
"observando as regras de uso do sistema");
// aps a mensagem, o while(true) garante a
//robustez do sistema que no aborta nunca!
}
}
}

Quando eu testei, funcionou!


POGramador demonstrando as gambiarras para seu Gerente Sem Noao

Se a ao rpida demais para o usurio


perceber, coloque um atraso!
public class MedidorDePOGresso implements Runnable {
public void run() {
while (true) {
// Realiza um processamento rpido aqui...
try {
// ... atrasa propositalmente aqui
Thread.sleep(1000);
} catch (InterruptedException exc) {
}
progress.setValue(blablabla.getPorcentagem());
}
}
}
At ontm quando eu mexi estava tudo funcionando!
Resposta do POGramador ao ser questionado sobre a pane geral no sistema

Precisa usar vrios parmetros para um


mtodo?
Use um MAP!
Muito usado em PHP e em Java
Facilita a passagem de um nmero absurdo
de parmetros

Tem bug, mas no no cdigo!!


Estagirio justificando os erros no programa para o gerente

Criar vrias funes torna o programa mais


lento.
Crie uma nica funo guerreira que receber
todos os parmetros e far todas as
funcionalidades possveis
Nomeie as variveis com Nonsense Flag

Claro que d pra alterar essa configurao. s mexer no cdigo!


POGramador propondo uma POG ao gerente

A fuso entre um Megazord e um Gato preto


em Quarto Escuro cria um Thunder Megazord
/**
* Processa
*
* @param parametros
* @return
* @throws Throwable
*/
public static Object[] processar(Map parametros) throws Throwable {
// A aquilo, mermo...
// ...
// ...
return processado;
}
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 tcnicas de TelePOG

Elimine o M do padro MVC e coloque tudo


no Controle, criando assim o VCC
View/Controller Confusion
Os POGramadores mais avanados so
capazes de ignorar o V e ficar apenas com o
CCC Chaotic Controller Confusion

No se preocupe, nenhum sistema "entra redondo". O importante agora entrar em


produo, depois consertamos os erros!
Gerente sem noo tentando acalmar desenvolvedor sobre projeto MOG com prazo
estourado.

Frameworks e camadas so coisas para fracos


Faa tudo diretamente na tela!
Muito utilizado em .Net, Delphi e VB 6
Tambm bastante utilizado em PHP
Uma variedade do CCC, mas com tudo feito
na Tela

Deu erro...comenta!
Alunos no laboratrio da facul.

Tambm conhecido como In DB we trust.


Padro gambi arquitetural em que TUDO no
banco de dados.

Dados
Arquivos
Imagens
Lgica de negcio
Tratamento de erros
Gerao de HTML
s um boto, o que pode dar errado?
Gerente sem-noo sobre nova funcionalidade

String Sushi Man


Nameless Coding
Unique never Exists
Chameleon Behaviour
Hide-and-Seek Pattern
IoC Methodology (Indetermination of Calls ou
Indeterminao das Chamadas)

Internet Explorer 7 ? Atualiza pro 8 que funciona


POGramador com esperana de que o sistema ainda ir funcionar

POG uma arte dominada por poucos


Quanto mais experiente, menos POGramador
Quanto mais conhecimento, menor a
capacidade de POGagem
Quanto mais disciplinado, menor a atrao
sobre POGs

Vou realizar os testes em produo.


POGramador corajoso arrancando suspiros das mocinhas inocentes

Você também pode gostar