O problema nao podia estar mais claro. Era algo tao trivial, cotidiano. Fomos logo codificar. Afinal, porque perder tempo analisando algo que se vive no dia a dia? Era melhor aplicar a forca intelectual na resolucao.Mas a analise nao seria a premissa da solucao? Bem, e sabido que todos analisam tudo antes de codificar (?), mas sera que esta verdade se repete quando o problema e trivial? Quando desconhecemos o problema, tomamos um de dois caminhos: ou estudamos ou encontramos o cara que sabe das coisas, o analista de negocios, de processos, o expert no assunto. Tempo para nos mesmos decifrarmos a correcao? Dificil...Mas o caso era outro: era muito simples. De imediato, surge a abstracao, a forma com que esperamos levar a solucao/problema para a maquina e virtualizar a resposta. Pensamos em objetos, nos orientamos a solucoes e por fim materializamos uma ideia na forma de codigos e telas. Tudo pronto, uma formulacao matematica pode resumir todo um pensamento. No entanto, orientamos o nosso pensamento proporcionalmente a complexidade do fato.Isto significa que imaginamos solucoes simples para problemas simples.Eureka! Isto e maravilhoso.Mas como julgamos a simplicidade de um problema? E possivel imaginar uma solucao simples para um problema que acaso imaginamos ser simples. Mas se o problema nao era tao simples assim, nossa solucao podera ser falha, ou seja, havera re-trabalho.Vamos partir do ponto que, o bom seria solucoes simples para qualquer tipo de problema. Pronto, desta forma nos orientamos que a resolucao devera caminhar para uma unica estrada. Agora vamos nos ater ao julgamento do problema.Sem querer pensar em Hume ou Descartes, o caso e que, constantemente, alternamos nossas decisoes com base em conhecimentos adquiridos, ora empiricamente, ora racionalmente. Nossas decisoes oriundas do pensamento racional, sao aquelas em que agimos segundo um conceito adquirido num processo de busca intencional. Por exemplo, deverei usar o lambda para resolver isto porque, num dado momento, me houve uma necessidade parecida, precisei aprender lambda e, a partir dai, julgo ou sei os casos em que posso utiliza-lo. Este julgamento depende do quanto aprendi sobre lambda.Quando algo e natural ao meu desenvolvimento, sem custo de aprendizado, julgo sua utilizacao conforme meu aprendizado ambiental, nao necessariamente advindo de um fator externo ao meu meio.Semana passada, no Coding Dojo Niteroi, foi levada uma proposta de problema bastante interessante: o caso do mijao. O problema era, quando um homem adentrasse em em banheiro publico, ele procuraria o banheiro mais distante da porta; o proximo cara, ficaria o mais distante deste homem; e o proximo, so utilizaria um mictorio caso houvesse a distancia de pelo menos um mictorio entre os caras da direita e da esquerda.Simples assim.Pelo menos eu faco isto todo os dias, chego e se o banheiro esta vazio, vou logo para o mais longe da porta. Onde trabalho tem tres mictorios. Se ja tem alguem, vou para longe dele, respeitando a zona de respingo. Se tem alguem no meio, espero.E muito natural, tanto que eu nem saberia explicar quem ou mesmo se alguem me ensinou. E parte do meu meio de criacao. Assim, fomos direto ao codigo