<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8574689877073763896</id><updated>2012-02-16T11:26:16.603-08:00</updated><title type='text'>Programar é Arte</title><subtitle type='html'>Pensamentos de um cara comum.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://programarearte.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8574689877073763896/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://programarearte.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Roger Almeida</name><uri>http://www.blogger.com/profile/04001314244467950275</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_nbdK4uJewbE/S7Syn6cArpI/AAAAAAAAIe8/GbXG5JIZFQ4/S220/eu.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8574689877073763896.post-9180154887670151917</id><published>2008-12-30T07:26:00.000-08:00</published><updated>2008-12-31T04:34:56.449-08:00</updated><title type='text'>Teste de Software - part I</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:Wingdings;  panose-1:5 0 0 0 0 0 0 0 0 0;  mso-font-charset:2;  mso-generic-font-family:auto;  mso-font-pitch:variable;  mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face  {font-family:Verdana;  panose-1:2 11 6 4 3 5 4 4 2 4;  mso-font-charset:0;  mso-generic-font-family:swiss;  mso-font-pitch:variable;  mso-font-signature:536871559 0 0 0 415 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-parent:"";  margin:0cm;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:12.0pt;  font-family:"Times New Roman";  mso-fareast-font-family:"Times New Roman";} a:link, span.MsoHyperlink  {color:blue;  text-decoration:underline;  text-underline:single;} a:visited, span.MsoHyperlinkFollowed  {color:purple;  text-decoration:underline;  text-underline:single;} @page Section1  {size:612.0pt 792.0pt;  margin:70.85pt 3.0cm 70.85pt 3.0cm;  mso-header-margin:35.4pt;  mso-footer-margin:35.4pt;  mso-paper-source:0;} div.Section1  {page:Section1;}  /* List Definitions */  @list l0  {mso-list-id:122045155;  mso-list-template-ids:1551432466;} @list l0:level1  {mso-level-number-format:bullet;  mso-level-text:;  mso-level-tab-stop:36.0pt;  mso-level-number-position:left;  text-indent:-18.0pt;  mso-ansi-font-size:10.0pt;  font-family:Symbol;} @list l1  {mso-list-id:1134982172;  mso-list-template-ids:1009269668;} @list l1:level1  {mso-level-number-format:bullet;  mso-level-text:;  mso-level-tab-stop:36.0pt;  mso-level-number-position:left;  text-indent:-18.0pt;  mso-ansi-font-size:10.0pt;  font-family:Symbol;} ol  {margin-bottom:0cm;} ul  {margin-bottom:0cm;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Tabela normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin:0cm;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(102, 102, 102);font-family:Verdana;" &gt;Me lembro que no início da minha carreira a minha visão sobre testes de software era quase que totalmente a inversa da que eu tenho hoje.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="color: rgb(102, 102, 102);font-family:Verdana;" &gt;Me lembro de algumas conversas que eu tinha com um analista que trabalhava comigo, eu disse coisas do tipo: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul style="margin-top: 0cm;font-family:arial;"  type="disc"&gt;&lt;li class="MsoNormal" style="color: rgb(102, 102, 102);"&gt;&lt;i&gt;&lt;span style="font-family:Verdana;"&gt;... o que menos gosto de      fazer é testar&lt;/span&gt;&lt;/i&gt;&lt;span style="font-family:Verdana;"&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(102, 102, 102);"&gt;&lt;i&gt;&lt;span style="font-family:Verdana;"&gt;... na verdade eu não      deveria testar, fui eu que escrevi o código estou "viciado"      nele, outra pessoa é que deveria testar a aplicação...&lt;/span&gt;&lt;/i&gt;&lt;span style="font-family:Verdana;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;u3:p&gt;&lt;/u3:p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="color: rgb(102, 102, 102);font-family:Verdana;" &gt;&lt;u3:p&gt;&lt;/u3:p&gt;Alguns desses conceitos mudaram muito ao longo da minha carreira...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="color: rgb(102, 102, 102);font-family:Verdana;" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="color: rgb(102, 102, 102);font-family:Verdana;" &gt;Basicamente teste de software serve como uma forma de validar que a aplicação está fazendo o que ela deve fazer de maneira aceitável.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="color: rgb(102, 102, 102);font-family:Verdana;" &gt;O cliente/usuário precisa testar a aplicação antes de aceitá-la senão, ele pode estar comprando gato por lebre e nós desenvolvedores devemos testar a aplicação antes de entregá-la para garantir que não estamos entregando um emissor de &lt;i&gt;null pointers&lt;/i&gt; ou coisa que valha para o cliente.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(102, 102, 102);font-family:Verdana;" &gt;Apesar de as vezes quando eu penso em testes ainda surgir em mim um pequeno sentimento de tristeza o tempo me mostrou que se arriscar a entregar algo sem testar antes é dar tiro no pé.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(102, 102, 102);font-family:Verdana;" &gt;No princípio &lt;s&gt;era o verbo&lt;/s&gt; eu testava executando as aplicações e clicando nas telas, mudando arquivos manualmente ou executando comandos &lt;i&gt;SQL&lt;/i&gt;s para preparar o ambiente para a aplicação executar e, baseado nas minhas deduções eu validava se a aplicação estava se comportando como o esperado ou não. Isso me fez gostar menos ainda de testes, o &lt;b&gt;esforço para testar era demasiadamente grande&lt;/b&gt; e se a aplicação fosse alterada e eu tivesse de testar novamente, com certeza não testava com a mesma ênfase que a primeira vez o que aumentava em muito o risco de entregar um código cheio de bugs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(102, 102, 102);font-family:Verdana;" &gt;Era preciso automatizar os testes e eu aprendi a fazer isso com os &lt;a href="http://en.wikipedia.org/wiki/XUnit"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;xUnit frameworks&lt;/span&gt;&lt;/a&gt;. Com eles eu podia escrever um código para testar meu código, depois era simplesmente executar o "código de teste" que ele visualmente me mostrava se tudo estava ocorrendo bem ou não. Nada mais de ler arquivos de log, consultar base de dados, ou whatever para saber se tudo estava certo ou não, bastava ficar olhando uma barra, se verde OK se vermelha problemas. Mas novos problemas surgiram eu escrevia o codigo de teste e executava ele naquele dia e tudo funcionava bem, mas no dia seguinte ele nao funcionava mais. :O Alguém havia alterado a base de dados! Um novo problema surgiu, como eu ia controlar o ambiente? Eu precisava garantir que alguns registros estivem na base de dados com um estado inicial controlado. Bom a melhor saida que eu encontrei foi escrever na classe de teste codigo para garantir o estado inicial da base de dados para rodar cada teste. Imagine o inferno em forma de teste, era basicamente isso que eu tinha, um monte de codigo que dava inserts e updates em base de dados e depois executava um monte de deletes. Isso funcionou (quer dizer, me enganou) por um tempo. Mas logo veio outro problema, aplicações que dependem de outras aplicações... E na maioria das vezes eu não podia controlar o comportamento das outras aplicações logo não podia criar um teste para minha aplicação que pudesse ser repetido facilmente... O caos estava novamente presente. Entregar o código sem testar? Jamais! Há uma saída, não é fácil, mas há. &lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:Verdana;font-size:13;"  &gt;Dividir para conquistar&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:Verdana;" &gt; Primeiramente eu errava em querer testar tudo de uma vez, desde a posição da combo na tela, logica ao clicar no botao ok, conexão com a base de dados, etc... tudo de uma vez só. Após algumas leituras e muitas conversas com outros profissionais aprendi algumas coisas, uma delas é: Dividir para conquistar. Não adianta escrever um código para testar todos os possíveis problemas de uma aplicação. &lt;b&gt;Isole os tipos de problemas em tipos de testes diferentes.&lt;/b&gt; Alguns dos tipos de problemas que uma aplicação pode apresentar são:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style="color: rgb(102, 102, 102);"&gt;&lt;span style="font-family:Verdana;"&gt;Erros na regra de negócio&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(102, 102, 102);"&gt;&lt;span style="font-family:Verdana;"&gt;Erro de conexão (base de dados, disco rígido,      outras máquinas)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(102, 102, 102);"&gt;&lt;span style="font-family:Verdana;"&gt;Não suportar o volume de dados/usuários.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(102, 102, 102);"&gt;&lt;span style="font-family:Verdana;"&gt;Demorar demais para executar tarefas.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(102, 102, 102);"&gt;&lt;span style="font-family:Verdana;"&gt;Não funcionar integradamente com os outros      sistemas.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="color: rgb(102, 102, 102);"&gt;&lt;span style="font-family:Verdana;"&gt;Entre outros&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(102, 102, 102);font-family:Verdana;" &gt;Escrever um teste para validar todos esses problemas é inviável, o teste vai demorar demais para executar o que vai dificultar sua execução, e tudo que dificulta a o dia-a-dia de um desenvolvedor costuma ser cortado.&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;Mas não escrever nenhum teste também é terrível, então comece pelo simples, divida seus testes.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;b&gt;Testes unitários&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Testam apenas o código da aplicação, não é preciso conectar na base de dados, acessar arquivos, levantar servidor ou qualquer coisa do tipo. Testam cada parte (classe em liguagens OO) da aplicação individualmente. Com eles podemos testar todas as regras de negócio da aplicação (Isto se não houver o cenário de regra de negócio na base de dados, dai são outros 500).&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;Tendo os testes unitários já garantimos que grande parte da aplicação tenha testes automatizados. Além disso o código que tem teste teoricamente está fazendo o que deveria fazer.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt; &lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Teste de integração&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Testam a comunicação da aplicação com outros ambientes como base de dados, arquivos no disco, outras máquinas, etc...&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;Esses testes são muito importantes, comigo geralmente eles evidencia erros em comandos SQLs ou má formatação de arquivos textos, etc...&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;Mas esses testes dependem de configurar o ambiente antes o que os torna pesados.&lt;/span&gt; &lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Teste de carga&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;Como o próprio nome diz, testam como a aplicação se comporta com grande volume de dados/usuários.&lt;/span&gt; &lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Teste de performance&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;Testam se a aplicação está executando seus processos dentro de um SLA aceitável.&lt;/span&gt; &lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;b&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Teste de aceitação&lt;/span&gt;&lt;/b&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Testam a aplicação do pontos de vista do usuário, simulando a interação do mesmo com a aplicação.&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Nos próximos posts falarei sobre cada um dos itens acima e tentarei mostrar pequenas receitas para cada um deles.&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8574689877073763896-9180154887670151917?l=programarearte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programarearte.blogspot.com/feeds/9180154887670151917/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8574689877073763896&amp;postID=9180154887670151917' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8574689877073763896/posts/default/9180154887670151917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8574689877073763896/posts/default/9180154887670151917'/><link rel='alternate' type='text/html' href='http://programarearte.blogspot.com/2008/12/teste-de-software-part-i.html' title='Teste de Software - part I'/><author><name>Roger Almeida</name><uri>http://www.blogger.com/profile/04001314244467950275</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_nbdK4uJewbE/S7Syn6cArpI/AAAAAAAAIe8/GbXG5JIZFQ4/S220/eu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8574689877073763896.post-8744055617452954</id><published>2008-10-08T15:20:00.000-07:00</published><updated>2008-10-08T15:26:47.889-07:00</updated><title type='text'>Um projeto por vez</title><content type='html'>Hoje aprendi algo muito importante. So consigo trabalhar em um trabalho por vez.&lt;br /&gt;Caso me pecam para parar um projeto e ir para outro, quando voltar para o primeiro projeto devo deletar tudo que eu fiz e fazer denovo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8574689877073763896-8744055617452954?l=programarearte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programarearte.blogspot.com/feeds/8744055617452954/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8574689877073763896&amp;postID=8744055617452954' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8574689877073763896/posts/default/8744055617452954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8574689877073763896/posts/default/8744055617452954'/><link rel='alternate' type='text/html' href='http://programarearte.blogspot.com/2008/10/um-projeto-por-vez.html' title='Um projeto por vez'/><author><name>Roger Almeida</name><uri>http://www.blogger.com/profile/04001314244467950275</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_nbdK4uJewbE/S7Syn6cArpI/AAAAAAAAIe8/GbXG5JIZFQ4/S220/eu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8574689877073763896.post-862888950155268201</id><published>2007-05-11T21:35:00.000-07:00</published><updated>2007-06-09T18:17:26.344-07:00</updated><title type='text'>Programador a moda antiga.</title><content type='html'>Desenvolvedor? Eu quero é ser PROGRAMADOR!&lt;br /&gt;Engraçado como o termo programador virou pejorativo no atual momento do mercado de informática.&lt;br /&gt;Mas isso se deve a um padrão errado de que deveria existir o arquiteto o analista e o programador, o arquiteto monta a solução da tecnologia, o analista conversa com o arquiteto e o cliente, bola os diagramas e da a solução pronta para o programador só escrever código. Não acredito nesse padrão por alguns motivos, o programador não sabe ao certo o que o analista sabe, e as faculdades estão lançando analistas que não sabem programar no mercado. É verdade isso, hoje o aluno entra na faculdade e no primeiro ano tem de aprender lóigica de programação e sintaxe de lingaguem além, das estruturas de desvio de código. No segundo ano ele começa a fazer algum código útil, no terceiro ele arranja estágio para dar suporte em alguma empresa, no quarto ele larga tudo para fazer um TCC e depois ele vai caçar um trampo para mexer só com UML por que programar que é bom ele não sabe nada.&lt;br /&gt;Engraçado que a maior prova de que esse modelo é falido é o fato de ter surgido a figura do Analista Programador, esse é o cara que sabe UML e Design Patterns mas também programa, ou seja, é a volta as origens, o programador a moda antiga.&lt;br /&gt;Para a coisa funcionar é preciso fazer os programadores serem programadores de verdade, não só implementadores de diagramas, com isso eles assumem maior responsabilidade pela entrega das funcionalidades. Mas para isso é preciso uma coisa, bons programadores, não esse material que as faculdades estão lançando no mercado. Programadores de verdade.&lt;br /&gt;Programador de verdade dorme lendo especificação de linguagem, e toma café da manhã fazem algoritimos nessa linguagem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8574689877073763896-862888950155268201?l=programarearte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programarearte.blogspot.com/feeds/862888950155268201/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8574689877073763896&amp;postID=862888950155268201' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8574689877073763896/posts/default/862888950155268201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8574689877073763896/posts/default/862888950155268201'/><link rel='alternate' type='text/html' href='http://programarearte.blogspot.com/2007/05/programador-moda-antiga.html' title='Programador a moda antiga.'/><author><name>Roger Almeida</name><uri>http://www.blogger.com/profile/04001314244467950275</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_nbdK4uJewbE/S7Syn6cArpI/AAAAAAAAIe8/GbXG5JIZFQ4/S220/eu.jpg'/></author><thr:total>0</thr:total></entry></feed>
