[{"@context":"https:\/\/schema.org\/","@type":"BlogPosting","@id":"https:\/\/ivonascimento.com\/2015\/02\/10\/almocando-design-de-solucoes-com-o-seu-ze\/#BlogPosting","mainEntityOfPage":"https:\/\/ivonascimento.com\/2015\/02\/10\/almocando-design-de-solucoes-com-o-seu-ze\/","headline":"Almo\u00e7ando design de solu\u00e7\u00f5es com o seu Z\u00e9","name":"Almo\u00e7ando design de solu\u00e7\u00f5es com o seu Z\u00e9","description":"Almo\u00e7o inspirando uma reflex\u00e3o de c\u00f3digo, design e a exposi\u00e7\u00e3o das inten\u00e7\u00f5es atrav\u00e9s do pseudo-codigo. S\u00e3o 8 horas da manh\u00e3 e me desculpem se j\u00e1 estou pensando no almo\u00e7o, mas \u00e9 que tem um p\u00e9-sujo do lado do trabalho que faz um bife de f\u00edgado acebolado de comer em sil\u00eancio e ai j\u00e1 viu n\u00e9.. [&hellip;]","datePublished":"2015-02-10","dateModified":"2015-02-10","author":{"@type":"Person","@id":"https:\/\/ivonascimento.com\/author\/ivonascimento\/#Person","name":"Ivo Nascimento","url":"https:\/\/ivonascimento.com\/author\/ivonascimento\/","identifier":10240028,"image":{"@type":"ImageObject","@id":"https:\/\/secure.gravatar.com\/avatar\/2305ea1f48319271d323c5e1c0aadd4cc45d10c4927dd8b3af083facb8c6f75f?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2305ea1f48319271d323c5e1c0aadd4cc45d10c4927dd8b3af083facb8c6f75f?s=96&d=identicon&r=g","height":96,"width":96}},"publisher":{"@type":"Person","name":"Ivo Nascimento"},"image":{"@type":"ImageObject","@id":"https:\/\/i0.wp.com\/ivonascimento.com\/wp-content\/uploads\/2015\/02\/comendocomgula.jpg?fit=836%2C379&ssl=1","url":"https:\/\/i0.wp.com\/ivonascimento.com\/wp-content\/uploads\/2015\/02\/comendocomgula.jpg?fit=836%2C379&ssl=1","height":379,"width":836},"url":"https:\/\/ivonascimento.com\/2015\/02\/10\/almocando-design-de-solucoes-com-o-seu-ze\/","about":["texto de Bus\u00e3o"],"wordCount":975,"articleBody":"Almo\u00e7o inspirando uma reflex\u00e3o de c\u00f3digo, design e a exposi\u00e7\u00e3o das inten\u00e7\u00f5es atrav\u00e9s do pseudo-codigo.S\u00e3o 8 horas da manh\u00e3 e me desculpem se j\u00e1 estou pensando no almo\u00e7o, mas \u00e9 que tem um p\u00e9-sujo do lado do trabalho que faz um bife de f\u00edgado acebolado de comer em sil\u00eancio e ai j\u00e1 viu n\u00e9.. o ex-gordinho aqui n\u00e3o pode deixar passar.Pensando em almo\u00e7o foi que tive essa ideia que serve para demonstrar que a pratica de design de solu\u00e7\u00f5es e para qualquer momento. Ela \u00e9 importante para ir tomando consci\u00eancia dos recursos que voc\u00ea tem como arquiteto e das ciladas que voc\u00ea pode se meter ao presumir que algo \u00e9 trivial.Vamos ao problema: como podemos modelar o caixa de um restaurante?O cliente chega e faz o pedido. Normalmente inclui um prato e uma bebida. Come, toma seu cafezinho e pede a conta ou, paga a conta e toma o cafezinho ;).No modelo padaria do Z\u00e9, imaginei um daqueles espetos de pedido, uma caneta e uma por\u00e7\u00e3o de blocos de anota\u00e7\u00e3o. O gar\u00e7om rabisca os pre\u00e7os no papel e deixa com o cliente que quando termina seu almo\u00e7o se dirige ao caixa, apresenta o papel e em 2 minutos j passou o cart\u00e3o de d\u00e9bito.$total=14.5+3.5;echo \"total: {$total}\";Se o Z\u00e9 me pedir para automatizar seu restaurante sem mudar o sistema eu entrego uma calculadora na m\u00e3o dele e dou problema por resolvido. O que acha dessa abordagem? Certo ou errada?Outro caso \u00e9 aquele em que o filho do Z\u00e9 quer saber as entradas e sa\u00eddas e poder planilhar a coisa toda. Para isso os pedidos precisam ter seus itens descriminados para poder separar os lan\u00e7amentos. Aqui a coisa come\u00e7a a ficar interessante.Para manter a agilidade vou manter o sistema de blocos que os gar\u00e7ons utilizam para anotar os pedidos, s\u00f3 que agora eles devem descriminar com um A do lado do pre\u00e7o do almo\u00e7o e usar um B para bebida. Quando o cliente terminar de comer, nada muda. Ele vai at\u00e9 o caixa, o Z\u00e9 fecha a conta e espeta a nota. Agora ele pode revisar.setlocale(LC_MONETARY, 'pt_BR.UTF-8'); $comida\u00a0 = new money(14.50); $bebida  = new money(3.50); $total   = new money(0); $total-&gt;add($comida,$bebida); echo \"Total da conta {$total}\";Agora \u00e9 poss\u00edvel saber:a) quanto o restaurante faz com almo\u00e7o (valor total faturado &#8211; custo total de produ\u00e7\u00e3o).b) quanto faz com a bebida(valor total de compra- valor total de venda).c) d\u00e1 para saber se um dia foi lucrativo.d) qual dia foi mais lucrativo.e) que item \u00e9 mais lucrativo(comida ou bebida).f) saber se vale a pena abrir de terca-feira.Outro benef\u00edcio \u00e9 que antes o Z\u00e9 n\u00e3o podia fazer outra coisa por que ele precisava dessas informa\u00e7\u00f5es e para t\u00ea-las ele passava todo o dia acompanhando o que ocorria e isso requeria total aten\u00e7\u00e3o. Agra ele est\u00e1 livre para outras tarefas como melhorar seu relacionamento com os fornecedores, preparar novas receitas, falar com os clientes.O design da solu\u00e7\u00e3o captou a ess\u00eancia, ele registra o pedido do cliente baseado em um prato e uma bebida, exatamente como o Cliente(Z\u00e9) pediu, mas esse \u00e9 um dom\u00ednio de conhecimento onde todos temos um pezinho, frequentamos restaurantes por falta da comida da m\u00e3e, de comida caseira, j\u00e1 que ao menos em S\u00e3o Paulo a hist\u00f3ria aponta que a cidade foi planejada para voc\u00ea precisar de um carro e ent\u00e3o voc\u00ea n\u00e3o pode ir para casa comer, ou, voc\u00ea mora sozinho&#8230; um lobo solit\u00e1rio acostumado a comer hot pocket e lasanha de micro-ondas com refrigerante de laranja quente. De maneira que o pr\u00f3ximo passo \u00e9 um tanto quanto previs\u00edvel para todos n\u00f3s e podemos ir at\u00e9 o cliente questionar se n\u00e3o \u00e9 melhor tomar essa dire\u00e7\u00e3o no design, ou seja, se o conceito \u00e9 v\u00e1lido e ele quer ver funcionando.Designer: &#8220;Oi Z\u00e9, que tal se a gente fizer os lan\u00e7amentos de itens e permitir lan\u00e7ar quantos itens quiser, assim o cliente pode pedir um prato, uma bebida, depois mais outra, pedir um pedaco de pudim para a sobremesa e um caf\u00e9 para fechar. Se fizer assim o sistema d\u00e1 conta de lan\u00e7ar todos esses itens&#8221;.O cliente aceita e vamos para o refactoring, vamos a ele.$contaberta = true; $conta = new ItemCollection();while($contaAberta){  if ($clienteFezPedido()){  $conta-&gt;add(new item($description, new Money($value));  }}$valorTotaldaConta = new Money(0);foreach($conta as $item){   $descricaoItem = $item-&gt;getDescription();   $valorItem     = $item-&gt;getMoeny-&gt;getValue();   echo \"{$descricaoItem}: {$valorItem}\";   Total-&gt;add(item-&gt;getprice()); } echo \"O total \u00e9 {$total-&gt;getvalue()}\";Pratica constante, eu me pego modelando problemas do dia a dia quase sempre, ent\u00e3o, as vezes as pessoas me falam que cruzaram comigo na rua e eu estou com cara de bobo(algo que tenho o tempo todo, n\u00e3o s\u00f3 na rua) e que pare\u00e7o estar no mundo da lua(\u00e0s vezes \u00e9 algo bem mais trivial como o mundo do restaurante).Design \u00e9 pratica e cai na regra das 10 mil horas. Dez mil horas para conseguir ser excepcional em algo. Antes disso voc\u00ea \u00e9 um padwan sem sabre de luz com poderes da mente incipientes, incapaz de levitar algo maior ou mais pesado que uma ma\u00e7\u00e3.No final, ficam as seguintes ideias:Pratique design de solu\u00e7\u00f5esOu\u00e7a seu cliente, mesmo os imagin\u00e1riosEvolua mentalmente os modelosSaiba retroceder um modelo no tempo at\u00e9 a \u00faltima vers\u00e3o satisfat\u00f3ria e modele novamenteN\u00e3o ignore nenhum tipo de problema, nem os aparentemente triviaisCompartilhe isso:\t\t\t\tImprimir(abre em nova janela)\t\t\t\tImprimir\t\t\tTweet\t\t\t\tCompartilhar no WhatsApp(abre em nova janela)\t\t\t\tWhatsApp\t\t\t"},{"@context":"https:\/\/schema.org\/","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"2015","item":"https:\/\/ivonascimento.com\/2015\/#breadcrumbitem"},{"@type":"ListItem","position":2,"name":"02","item":"https:\/\/ivonascimento.com\/2015\/\/02\/#breadcrumbitem"},{"@type":"ListItem","position":3,"name":"10","item":"https:\/\/ivonascimento.com\/2015\/\/02\/\/10\/#breadcrumbitem"},{"@type":"ListItem","position":4,"name":"Almo\u00e7ando design de solu\u00e7\u00f5es com o seu Z\u00e9","item":"https:\/\/ivonascimento.com\/2015\/02\/10\/almocando-design-de-solucoes-com-o-seu-ze\/#breadcrumbitem"}]}]