Planejamento de software (Keep It Simple Stupid)

by Luiz Paulo | dezembro 3, 2008 | 12 Comments »

Essa semana eu e parte de nossa equipe, passamos por uma situação complicada. Estamos desenvolvendo um projeto relativamente grande que precisa ser entregue até final do ano. Até aí nada de errado!
Esse projeto já está rolando há algum tempo e passou por todos os processos de desenvolvimento (ou quase todos).

Quando chegou a nossas mãos (desenvolvimento), encontramos uma documentação com várias e várias funcionalidades, só que uma delas nos chamou a atenção, pois estava bem complexa. Com definição de regras e sub-regras para chegar a um determinado objetivo. Até que um dia, tive uma dúvida e resolvi perguntar para o cliente, conversamos bastante até chegarmos a um consenso. Depois de 4 horas de reunião, percebemos que essa funcionalidade não precisava mais do que um cadastro "besta".

Me senti exatamente nessa situação:

Desenvolvimento de software

Depois de tanto trabalho, a funcionalidade pronta, etc. etc. tivemos que refazer (ainda bem que conseguimos recuperar boa parte do código)!

Com esse quadro, fica a questão. Quem errou?

Seria o cliente por não ter conseguido explicar exatamente o que precisava? Do pessoal que planejou/documentou que não soube dar a melhor solução? Ou do desenvolvimento que não gritou antes a respeito da complexidade?

Na minha opinião, o problema não está ligado diretamente a nenhuma das partes. Todos direta ou indiretamente erraram.
Depois de todo esse tempo de desenvolvimento, houve um amadurecimento da idéia, e com isso as coisas se tornaram muito mais simples.

Sim! Com certeza, se lá atrás quando foi planejado, tivessem ficado 5 minutos a mais discutindo, talvez chegassem a esse resultado mais simples, mas não aconteceu. E deu no que deu.

Existe toda aquela discussão de métodos ágeis ("...se estivesse utilizando Scrum isso não acontecia!"), zilhões de técnicas para processos melhores e menos burocráticos. Concordo que talvez não tivéssemos esse problema, independentemente de métodos e processos, precisamos levar em consideração o que comentei acima, nesse tempo houve um amadurecimento da idéia e os clientes perceberam que aquilo definido não era necessário.

Esquecemos do KISS "Keep It Simple Stupid", princípio básico para desenvolvimento.

Enfim, aprendi muito com isso! Acho que todos crescem com esse tipo de situação. Com certeza depois disso, na próxima teremos mais cautela ao definir uma coisa muito complexa, ou não... (rsrsrs)

Categorias: Artigo, Desenvolvimento web
Tags: , , , , ,

Palestra - A escola do século XXI (por Luli Radfahrer)

by Luiz Paulo | novembro 29, 2008 | 1 Comment »

Assisti essa semana uma palestra de Luli Radfahrer que aconteceu no descolagem#3 no dia 22 de novembro de 2008.
A palestra é simplesmente SENSACIONAL!

Os assuntos abordados nessa palestra são:

  • O Abismo da inclusão digital
  • Escolas
  • A função do professor
  • Comunidade (Continuidade de controle)
  • Educação como plataforma
  • Invenção e inovação

A palestra mostra a atual realidade da educação em nossa sociedade. Explica de forma brilhante o que as pessoas (principalmente professores) não enxergam. A forma errada com que a tecnologia é agregada na educação entre vários assuntos atuais e pertinentes a todos nós.
Parabenizo ao Luli, pois além de um ótimo palestrante concordo com sua visão.

Assistam!

Clique aqui para asista a palestra

Posts Relacionados

Categorias: Palestras, Tecnologia, Tendências
Tags: , , , , , , ,

Javascript - Último dia do mês

by Luiz Paulo | novembro 14, 2008 | 15 Comments »

Essa semana, eu precisei de uma solução em Javascript para encontrar o "último dia do mês" ou "quantidade de dias do mês" como preferir. Consultei o Google e encontrei algumas soluções, algumas delas mais simples e outras bem criativas.

Achei o assunto interessante e resolvi divulgar aqui para quem precisar utilizar.

Primeiro vou postar as soluções sérias para o pessoal que está pesquisando e precisa utilizar em seu código

Soluções simples

Exemplo longo (função):

function daysInMonth(month,year) {
	var m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	if (month != 2) return m[month - 1];
	if (year % 4 != 0) return m[1];
	if (year % 100 == 0 && year%400 != 0) return m[1];
 
	return m[1] + 1;
}

Exemplo curto (função):
Aqui está a grande sacada do javaScript, que interpreta o 0(zero) como "o dia antes do dia primeiro" que obviamente é o último dia do mês anterior.

function daysInMonth(month,year) {
	var dd = new Date(year, month, 0);
	return dd.getDate();
}

Exemplo curto (inline):

var lastDay = (new Date(year, month, 0)).getDate();

Soluções criativas

Não se assustem, mas as soluções citadas abaixo funcionam!

Solução utilizando Switch:

function getLastDayOfMonth(month,year)
{
	var day;
 
	switch(month)
	{
		case 1 :
		case 3 :
		case 5 :
		case 7 :
		case 8 :
		case 10:
		case 12:
			day = 31;
			break;
		case 4 :
		case 6 :
		case 9 :
		case 11:
		   	day = 30;
			break;
		case 2 :
			if( ( (year % 4 == 0) && ( year % 100 != 0) ) || (year % 400 == 0) )
				day = 29;
			else
				day = 28;
			break;
 
	}
	return day;
}

Essa é legal

function anoBissexto(anoCompleto) 
{
	if(!(anoCompleto%4) && (anoCompleto%100 || !(anoCompleto%400))) return true;
	return false;
}
function diasNoMes(mes,ano)
{
	var var_type=typeof mes;
	if(var_type != "number" && var_type != "string") return false;
	if(var_type == "number" && (mes > 11 || mes < 0) && !isInt(mes)) return false;
	var eng_args_allowed = "january-february-march-april-may-june-july-august-september-october-november-december";
	var bra_args_allowed = "janeiro-fevereiro-marçomarco-abril-maio-junho-julho-agosto-setembro-outubro-novembro-dezembro";
	var vet_eng_args_allowed = eng_args_allowed.split("-");
	var vet_bra_args_allowed = bra_args_allowed.split("-");
	var datahj = new Date();
	var anohj = datahj.getFullYear();
	var dias = [31,anoBissexto(ano)?29:28,31,30,31,30,31,31,30,31,30,31];
 
	if(var_type == "string")
	{
		indice_eng = keyPosMatch(vet_eng_args_allowed,mes);
		indice_bra = keyPosMatch(vet_bra_args_allowed,mes);
		if(indice_eng>=0) return dias[indice_eng];
		if(indice_bra>=0) return dias[indice_bra];
		return false;
	}
	else return dias[mes];
}

Façam bom proveito!

Categorias: Desenvolvimento web, JavaScript, Linguagens
Tags: , , , , ,

Traduzindo textos direto no gTalk

by Luiz Paulo | outubro 9, 2008 | 4 Comments »

Google Talkengine
Um recurso muito útil para quem precisa traduzir textos constantemente é a tradução de textos diretamente no Google Talk.

Já utilizo esse software há algum tempo como alternativa ao MSN além de muito (muito, muito...) mais leve e estável, as mensagens chegam quase que instantâneas, enquanto o MSN, dependendo do dia, você pode mandar uma mensagem e demorar horas. O serviço de voz também é muito bom.

Para utilizar esse recurso, basta adicionar um contato a seu Google Talk, e enviar as mensagens (Simples assim! )

Por exemplo, para traduzir de inglês para português:

Adicione como contato: en2pt@bot.talk.google.com

Envie mensagens em inglês e ele te responderá a tradução em português.

Legal, não!?

Testei esse recurso em en2pt e pt2en e funcionou perfeitamente. Não pesquisei se traduz de qualquer linguagem para qualquer linguagem, mas fica a dica!

Categorias: Artigo, Ferramentas, Java, Linguagens
Tags: , , , , ,

CheatSheet - PhotoShop

by Luiz Paulo | outubro 7, 2008 | No Comments »

O Cheat Sheet é um resumo de um assunto específico que pode ser utilizada como guia rápido. Nele você pode encontrar sintaxes, códigos, exemplos, conceitos e dicas.

Não podemos considerá-lo um manual completo pois é bem compacto, mas quebra bastante o galho! Além de úteis, normalmente são feitos com visual agradável, podendo ser impresso e facilmente colado no seu escritório.

Achei alguns cheatSheet sobre photoshop ótimos! Contém vários atalhos e ferramentas, vale apena conferir!

Baixe os cheatSheets de Photoshop e façam bom proveito!

Coletânea de atalhos sobre várias versões do PhotoShop

Coletânea sobre ferramentas e atalhos

Categorias: CheatSheet, Design
Tags: , , , , , , , , ,

« Posts anterioresPróximos posts »

 

Sobre

Foto Luiz Paulo

Sou desenvolvedor web desde 2000, atuei em grandes projetos web2.0. Atualmente trabalho na Automatos junto à equipe de site desenvolvendo projetos web2.0 e utilizando como server-side a linguagem java.

Para saber mais sobre mim, acesse Meus Links ›


Valid XHTML 1.0 Strict Valid CSS!

Luiz Paulo | tecnologia web