• rss

Assine nosso feed

640k emails serão suficientes para o projeto

(4)

Category : Códigos, Sistemas, WTF

Uns dois anos atrás, contei um WTF de um dos personagens mais estranhos que já passou na minha vida de sysadmin/programador, o Canceroso. A idéia era desenvolver toda uma saga que se ilustraria as centenas de WTF’s que o Canceroso criou durante o ano, mas várias coisas mudaram de lá pra cá, e o projeto acabou morrendo por pura falta de tempo e organização da minha parte. Mas como o bem sempre vence o mal, o projeto será retomado. Até porque preciso escrever antes que minha memória comece a falhar. :P

Enfim, em algum ponto do projeto que o Canceroso desenvolvia, ele começou a projetar todo o sistema de envio de orçamentos para fornecedores, recebimento, entrada dos valores no sistema, escolha da melhor opção e envio do pedido de compra. Com o processo todo rabiscado no papel, ele me chamou para uma reunião e começou a verificar alguns requisitos:

“Então, só para saber, qual o limite que nós temos para criar emails no servidor?” – ele perguntou

“Acho que só podemos criar mais uns cinco” – respondi

“Ih, cara, pra isso aqui dar certo vou precisar de uns nove emails…”

“Como assim, pra quê tudo isso? Não é só usar o compras@empresa?”

“Então, da maneira que pensei, teria que ter o orcamento@empresa para enviar o orcamento às empresas, um receb_orcamento@empresa para que elas enviem o orçamento, um respond_orcamento@empresa para dar retorno às empresas, (…)” – Aqui, tomo a liberdade de cortar toda a explicação do sujeito.

“Mas… não faz sentido algum. Pra quê ter nove emails? O usuário vai ter que ficar acessando todos?”

“Não, eu vi umas classes em Java, o sistema vai enviar o email, e verificar essas contas que eu falei. Quando chegar o orçamento, ele vai automaticamente ler o email, pegar os dados, e jogar no banco de dados. Na verdade o usuário nem vai precisar acessar o email, vai tudo pelo sistema.

O estalo que meu cérebro pôde ser ouvido por kilômetros, assustando alguns animais. Havia tantas falhas óbvias no raciocínio dele que me perguntei por alguns momentos se ele estava falando sério. Na dúvida, resolvi questionar:

“Canceroso, simplesmente não faz muito sentido. Cada empresa, cada fornecedor, possui diferentes formas de enviar um orçamento, pode ser no corpo do email, em um pdf anexo, ou um doc do word, ou um arquivo texto, ou uma planilha, ou…. sei lá, milhões de possibilidades. E como você vai fazer para ler cada um dos orçamentos?”

“Não, isso é tranquilo, o sistema vai enviar automaticamente uma planilha para os fornecedores, cada item vai ser formatado corretamente, e aí quando ele enviar pra gente o sistema vai ler e jogar no banco de dados.”

“OK, mas e se acontecer dele salvar a planilha em um formato diferente do Excel? O sistema não vai ler?”

“Ele vai ter que salvar no formato definido”

“E se ele tiver que incluir dados extras, como promoções ou condições especiais?”

“Ele não vai poder colocar nada difente na planilha, ou vai dar erro. E nós vamos avisar isso pra eles”

“E se o fornecedor não tiver um email, somente fax?”

“Eles vão ter que ter um email.”

“E se eles enviarem em outro formato?”

“Simples, a gente não compra.”

“Então, basicamente, você está criando um sistema que além de exigir nove emails, exige também que os nossos fornecedores se adequem ao modelo de orçamento enviado, e que eles se adequem ao nosso modelo de pedido, ou eles não vão vender pra gente?”

“Sim, é isso mesmo. Mas essa é só a parte de compras, ainda tenho que fazer o processo de vendas, então é bem provável que você tenha que criar mais uns nove emails”

Felizmente, o sistema nunca saiu de uma página de entrada com login hard-coded em javascript. Durante meses me perguntei como seria se esse aborto da natureza tivesse realmente saído do papel…..

E continua indefinidamente…

(5)

Category : Códigos

Carlos tinha um  pequeno problema, que na verdade já era bem comum para qualquer um que trabalhe com desenvolvimento: prazo apertado, projeto mal brifado, e um designer que, de forma educada, não era exatamente o “lápis mais apontado do estojo”.

Felizmente uma versão prototipada do projeto (um site simples de pesquisa) ficou pronta para avaliação do cliente em tempo recorde, e obviamente várias mudanças foram solicitadas.

Entre a pressão do cliente, o prazo apertado e as várias mudanças que precisavam ser feitas, o designer simplesmente sumiu, e Carlos acabou tendo que cuidar das revisões de layout. Ao passar pela listagem de perguntas (que tinha um efeito simples, a cor de fundo mudava quando o mouse passava pelo título), Carlos encontrou algo estranho: embora o efeito para todas as linhas de perguntas fosse exatamente o mesmo, cada linha tinha uma classe css diferente. Eram mais ou menos 50 perguntas.

Ao olhar no arquivo .css, Carlos conseguiu entender porque esse arquivo era justamente o mais pesado de todo o projeto:

.linhas ul li.p01 a, .linhas ul li.p01 a:visited {
	display: block;
	height: 30px;
	width: 500px;
	padding-top: 4px;
	padding-right: 127px;
	padding-bottom: 5px;
	padding-left: 167px;
	font-size: 11px;
	color: #666;
	text-decoration: none;
	background-image: url(imagens/linha.jpg);
	background-repeat: no-repeat;
	background-position: 167px bottom;
 
}
 
.linhas ul li.p01 a:hover, .linhas ul li.p01 a:active {
	display: block;
	height: 30px;
	width: 500px;
	padding-top: 4px;
	padding-right: 127px;
	padding-bottom: 5px;
	padding-left: 167px;
	background-image: url(imagens/linha1.jpg);
	background-repeat: no-repeat;
	background-position: left bottom;
	font-size: 11px;
	color: #FFF;
	text-decoration: none;
 
}
 
.linhas ul li.p02 a, .linhas ul li.p02 a:visited {
	display: block;
	height: 30px;
	width: 500px;
	padding-top: 4px;
	padding-right: 127px;
	padding-bottom: 5px;
	padding-left: 167px;
	font-size: 11px;
	color: #666;
	text-decoration: none;
	background-image: url(imagens/linha.jpg);
	background-repeat: no-repeat;
	background-position: 167px bottom;
 
}
 
.linhas ul li.p02 a:hover, .linhas ul li.p02 a:active {
	display: block;
	height: 30px;
	width: 500px;
	padding-top: 4px;
	padding-right: 127px;
	padding-bottom: 5px;
	padding-left: 167px;
	background-image: url(imagens/linha2.jpg);
	background-repeat: no-repeat;
	background-position: left bottom;
	font-size: 11px;
	color: #FFF;
	text-decoration: none;
 
}
 
.linhas ul li.p03 a, .linhas ul li.p03 a:visited {
	display: block;
	height: 30px;
	width: 500px;
	padding-top: 4px;
	padding-right: 127px;
	padding-bottom: 5px;
	padding-left: 167px;
	font-size: 11px;
	color: #666;
	text-decoration: none;
	background-image: url(imagens/linha.jpg);
	background-repeat: no-repeat;
	background-position: 167px bottom;
 
}
 
.linhas ul li.p03 a:hover, .linhas ul li.p03 a:active {
	display: block;
	height: 30px;
	width: 500px;
	padding-top: 4px;
	padding-right: 127px;
	padding-bottom: 5px;
	padding-left: 167px;
	background-image: url(imagens/linha3.jpg);
	background-repeat: no-repeat;
	background-position: left bottom;
	font-size: 11px;
	color: #FFF;
	text-decoration: none;
 
}
 
(Muitas e muitas e muitas linhas parecidas com essas)
 
.linhas ul li.p50 a, .linhas ul li.p50 a:visited {
	display: block;
	height: 30px;
	width: 500px;
	padding-top: 4px;
	padding-right: 127px;
	padding-bottom: 5px;
	padding-left: 167px;
	font-size: 11px;
	color: #666;
	text-decoration: none;
	background-image: url(imagens/linha.jpg);
	background-repeat: no-repeat;
	background-position: 167px bottom;
 
}
 
.linhas ul li.p50 a:hover, .linhas ul li.p50 a:active {
	display: block;
	height: 30px;
	width: 500px;
	padding-top: 4px;
	padding-right: 127px;
	padding-bottom: 5px;
	padding-left: 167px;
	background-image: url(imagens/linha50.jpg);
	background-repeat: no-repeat;
	background-position: left bottom;
	font-size: 11px;
	color: #FFF;
	text-decoration: none;
}

Carlos simplesmente levantou, pegou um cigarro e um café, e foi ver a lua fora da agência. Aquela seria uma longa noite….