<?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:blogger='http://schemas.google.com/blogger/2008' 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-2393797019373926980</id><updated>2024-11-21T03:53:56.332-03:00</updated><title type='text'>Micos de Realejo</title><subtitle type='html'>Engenharia de Software por praticantes da arte</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>55</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-1310988572361924882</id><published>2011-09-29T11:15:00.000-03:00</published><updated>2011-09-29T11:15:14.579-03:00</updated><title type='text'>Personal trainers para programadores</title><content type='html'>Hoje li um &lt;a href=&quot;http://www.newyorker.com/reporting/2011/10/03/111003fa_fact_gawande?currentPage=all&quot;&gt;artigo fantástico no New Yorker&lt;/a&gt; sobre um cirurgião que contratou outro cirurgião para observá-lo enquanto fazia cirurgias e sugerir melhorias. Me fez pensar se não poderíamos fazer o mesmo com o desenvolvimento de software: ser observado no ato da programação para encontrar formas de aprimorarmos nossas técnicas.&lt;br /&gt;
&lt;br /&gt;
Quando a Guta e eu estávamos em Waterloo, trabalhamos em um centro da universidade chamado TRACE (&lt;i&gt;Teaching Resources and Continuing Education&lt;/i&gt;, que hoje se chama &lt;a href=&quot;http://cte.uwaterloo.ca/&quot;&gt;CTE&lt;/a&gt;). O objetivo desse centro era promover workshops e outros tipos de atividade para melhorar a qualidade do ensino. Uma das coisas que a gente fazia era observar professores em sala de aula. Qualquer professor podia requisitar esse serviço. Um de nós assistia a uma aula inteira do professor e submetia um relatório avaliando o seu desempenho. O professor podia até ser filmado se quisesse.&lt;br /&gt;
&lt;br /&gt;
Nós éramos treinados para observar as coisas certas. O relatório tinha de mencionar tanto o que o professor fez certo quanto os pontos nos quais ele podia melhorar. Eram itens como &quot;do fundo da sala não conseguíamos ouvir as perguntas que os colegas da frente faziam; seria bom você repetir a pergunta para a classe inteira,&quot; ou &quot;você passou 15 minutos apenas escrevendo no quadro e discursando sobre o tema e a turma ficou dispersa; tente envolver a turma a cada 2 ou 3 minutos com alguma pergunta para prender a sua atenção.&quot;&lt;br /&gt;
&lt;br /&gt;
Por que não fazer o mesmo com programadores? Imagine programar durante algumas horas com alguém te observando. Seu personal trainer poderia fazer observações como:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;método&lt;/b&gt;: &quot;você gastou 20 minutos &amp;nbsp;resolvendo um bug que teria sido encontrado com um teste de unidade simples; tente escrever os testes antes do código, ou no mínimo depois de terminar cada classe, ao invés de deixar para testar só quando o programa está pronto para executar&quot;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ferramentas&lt;/b&gt;: &quot;você muda de janela com frequencia para usar o talk do gmail, e acaba se distraindo com emails novos que chegaram; existe um plugin do gtalk para o Eclipse, por que não usá-lo?&quot;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;design&lt;/b&gt;: &quot;sua classe me parece ter duas responsabilidades distintas; não seria bom dividí-la em duas?&quot;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ergonomia&lt;/b&gt;: &quot;sua postura é boa inicialmente mas à medida em que o tempo passa sua vista parece ficar cansada e você se inclina para ficar cada vez mais próximo da tela; use um cronômetro de software para lembrá-lo de fazer um pequeno intervalo a cada 30 minutos, assim você voltará à postura adequada&quot;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Esses são só alguns exemplos. Há muitas outras possibilidades. Um personal trainer não precisa ser um excelente programador, precisa apenar saber os pontos aos quais deve estar atento. Nós não éramos &amp;nbsp; professores melhores do que os que observávamos, mas lemos bastante sobre técnicas de ensino e tínhamos um checklist de itens a observar, boa parte deles tirado do excelente livro &lt;i&gt;&lt;a href=&quot;http://www.amazon.com/Tools-Teaching-Barbara-Gross-Davis/dp/0787965677/ref=dp_ob_title_bk&quot;&gt;Tools for Teaching&lt;/a&gt;&lt;/i&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Muitos de nós fazemos revisões de código, que já é uma forma de ter seu trabalho avaliado por outros programadores. No entanto, o revisor só tem a oportunidade de avaliar o produto final do seu trabalho. O personal trainer vai além, observando-o enquanto trabalha e sugerindo idéias para tornar o seu trabalho melhor e mais eficiente.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
E aí, alguém quer tentar?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/1310988572361924882/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2011/09/personal-trainers-para-programadores.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/1310988572361924882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/1310988572361924882'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2011/09/personal-trainers-para-programadores.html' title='Personal trainers para programadores'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-8177080748535567072</id><published>2011-09-27T08:34:00.001-03:00</published><updated>2011-09-27T08:34:27.376-03:00</updated><title type='text'>Desvendando a burocracia</title><content type='html'>Outro dia estava conversando com um colega de outra equipe, uma equipe recém-formada na empresa, que me assegurou que iam conduzir a equipe &quot;como uma startup&quot;. Que iam ser ágeis, lançar iterações frequentes, e que não iam ficar amarrados às burocracias da empresa. Eu achei a iniciativa louvável mas fiquei com a pulga atrás da orelha. Será que dá mesmo para conduzir uma equipe como uma startup dentro de uma empresa grande?&lt;br /&gt;
&lt;br /&gt;
Quando pensamos em startups versus grandes empresas, vem a imagem de um bando de magrelas esfomeados, vestindo camisetas com dizeres engraçados, trabalhando como loucos e lançando produtos inovadores e sensacionais, contra um exército de gordos engravatados preenchendo formulários. É um fato da vida que à medida em que empresas crescem, elas se tornam menos flexíveis. Os acordos informais que funcionavam tão bem quando eram três magrelas já não funcionam com trezentos, e as coisas precisam se tornar formais. O que era bom senso é cada vez mais tornado regra na forma de políticas internas. É a ossificação dos processos.&lt;br /&gt;
&lt;br /&gt;
Daí os desenvolvedores mais antigos se reunem no café para lamentar como tudo piorou desde os velhos tempos. Só que se esquecem que a agilidade de uma startup vem com um preço: a dívida. Mais especificamente, a &lt;a href=&quot;http://martinfowler.com/bliki/TechnicalDebt.html&quot;&gt;divida técnica&lt;/a&gt;, que é aquela que você adquire quando faz as coisas rápido ao invés de fazer direito.&lt;br /&gt;
&lt;br /&gt;
Sim, dá pra lançar uma nova rede social para corredores de kart em duas semanas. Uma startup precisa mostrar resultados o mais rapido possível, pois precisam começar a pagar as contas atrasadas do provedor de internet. Assim, não se preocupam que um dia o sistema terá de ser traduzido em quarenta línguas, que terá de comportar milhares de usuários, que poderão ser processados por algum cliente mal-amado, que o código terá de ser lido e mantido pelas dezenas de novos funcionários que farão fila na porta quando o sucesso chegar. Todas essas preocupações ficam para depois em troca da rapidez - essa é a dívida técnica. Quando chega &amp;nbsp;a hora de pagar a dívida, ela precisa ser paga com juros, pois o sistema já está em execução e as mudanças precisam ser profundas pois não foram contempladas no design inicial.&lt;br /&gt;
&lt;br /&gt;
Uma empresa grande não precisa fazer esses &quot;empréstimos&quot;. Pode se dar ao luxo de contemplar todas as facetas do sistema enquanto ele está sendo desenvolvido. Por isso há tantos processos, checklists e burocracia aparente. Seu sistema precisa ser vistoriado e aprovado por especialistas em segurança, analisado para determinar o consumo de recursos e a escalabilidade, testado para medir a usabilidade, revisado por advogados para evitar desastres, e tantas outras coisas que tomam seu tempo, dão trabalho e parecem querer impedí-lo de lançar seu lindo produto. O que está acontecendo é que você está evitando contrair uma dívida que pagará com juros depois. Você até pode rodar sua equipe como uma startup dentro de uma grande empresa, mas não deve.&lt;br /&gt;
&lt;br /&gt;
Os processos aparentemente burocráticos não existem para piorar a agilidade de ninguém, mas sim para garantir que o que precisa ser feito é feito. Só que nem todos os processos são assim: na sua empresa certamente existe alguma regra que, na sua opinião, só piora a sua vida. Será que a burocracia é inevitável e que não há o que fazer a não ser continuar a ler &lt;i&gt;Dilbert&lt;/i&gt; e a se identificar com ele? Não.&lt;br /&gt;
&lt;br /&gt;
Toda vez que você avistar uma placa proibindo ou prevenindo, pense que ela com certeza foi motivada por algum evento real:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWq4PXYRu2uK02ZGZxiLsJNTgJErJOtBKIir9RJA5wIG-DUmbTXywNc_pnT8OFSlclBCM-bqnXWc0FR1RK3Z7Cv2vfLAfjPeR_pgxVvURCR2RL5b8SmbRxTDHd2x_d3dD54UYJDZSwIftZ/s1600/funny_signs_05.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;229&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWq4PXYRu2uK02ZGZxiLsJNTgJErJOtBKIir9RJA5wIG-DUmbTXywNc_pnT8OFSlclBCM-bqnXWc0FR1RK3Z7Cv2vfLAfjPeR_pgxVvURCR2RL5b8SmbRxTDHd2x_d3dD54UYJDZSwIftZ/s320/funny_signs_05.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Coitado do pinguim. Da mesma forma, muitas das políticas implantadas nas empresas existem porque alguém, algum dia, fez algo que não deveria e a empresa não quer que esse algo se repita, então cria uma regra nova. Só que os tempos mudam e essas regras continuam lá. O que você pode fazer é olhar para cada regra burocrática da sua empresa e pensar, por que será que implementaram isso? será que o que era verdade naquela ocasião continua sendo verdade? será que hoje não há outra forma de se evitar o problema? será que o custo em tempo perdido devido à regra não é maior do que os danos causados pelo problema que ela existe para evitar? Responda a essas perguntas, junte os dados, proponha alternativas, leve para os responsáveis, e seja um super-herói para os seus colegas.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/8177080748535567072/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2011/09/desvendando-burocracia.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/8177080748535567072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/8177080748535567072'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2011/09/desvendando-burocracia.html' title='Desvendando a burocracia'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWq4PXYRu2uK02ZGZxiLsJNTgJErJOtBKIir9RJA5wIG-DUmbTXywNc_pnT8OFSlclBCM-bqnXWc0FR1RK3Z7Cv2vfLAfjPeR_pgxVvURCR2RL5b8SmbRxTDHd2x_d3dD54UYJDZSwIftZ/s72-c/funny_signs_05.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-1901163061768402611</id><published>2011-04-15T10:58:00.001-03:00</published><updated>2011-04-15T11:02:49.734-03:00</updated><title type='text'>Palestra do Prof. John Hopcroft hoje na UFMG</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;Hoje às 14:30h acontecerá na UFMG uma palestra do &lt;a href=&quot;http://en.wikipedia.org/wiki/John_Hopcroft&quot;&gt;Prof. John Hopcroft&lt;/a&gt;, professor da Cornell University e ganhador do Turing Award, o prêmio de maior prestígio na Ciência da Computação. A palestra se chama&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;&lt;i&gt;&quot;Computer Science Theory to Support Research in the&amp;nbsp; Information Age&quot;.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;O evento será transmitido ao vivo através desse endereço:&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;a href=&quot;http://video.rnp.br/portal/InfosEvento.do?_EntityIdentifierEvento=rnp3K79UoeaZKXXUForNMUGx9PLWzTXS0CHyNkw79b4dp4.&amp;amp;&quot; style=&quot;color: #1c51a8;&quot; target=&quot;_blank&quot;&gt;http://video.rnp.br/portal/&lt;wbr&gt;&lt;/wbr&gt;InfosEvento.do?_&lt;wbr&gt;&lt;/wbr&gt;EntityIdentifierEvento=&lt;wbr&gt;&lt;/wbr&gt;rnp3K79UoeaZKXXUForNMUGx9PLWzT&lt;wbr&gt;&lt;/wbr&gt;XS0CHyNkw79b4dp4.&amp;amp;&lt;/a&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;Espero que o servidor tenha capacidade suficiente para aguentar todos os leitores do Micos de Realejo!&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/1901163061768402611/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2011/04/palestra-do-prof-john-hopcroft-hoje-na.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/1901163061768402611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/1901163061768402611'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2011/04/palestra-do-prof-john-hopcroft-hoje-na.html' title='Palestra do Prof. John Hopcroft hoje na UFMG'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-2541809305897958021</id><published>2011-04-14T10:22:00.000-03:00</published><updated>2011-04-14T10:22:06.894-03:00</updated><title type='text'>Complexidade inerente</title><content type='html'>Outro dia eu aprendi o termo &lt;i&gt;&lt;a href=&quot;http://partialobjects.com/2011/03/199/&quot;&gt;physics envy&lt;/a&gt;&lt;/i&gt; - inveja da física - o desejo de se poder reduzir qualquer problema a três leis fundamentais. Me identifiquei imediatamente com isso. Toda vez que me deparo com um programa complicado eu me sinto incomodado e quero achar uma solução mais simples do que aquela.&lt;br /&gt;
&lt;br /&gt;
Às vezes essa solução não existe. O domínio do problema em si pode ser complexo e resistir a todas as tentativas de simplificação. Um bom exemplo é o corpo humano. Faltam décadas, talvez séculos, para que a medicina consiga entender razoavelmente bem como funciona um ser humano. O número de variáveis envolvidas e de interdependências entre elas é descomunal.&lt;br /&gt;
&lt;br /&gt;
Como a medicina lida, hoje, com essa complexidade? Ignorando a complexidade e encontrando variáveis com grande influência sobre o objetivo buscado. Por exemplo, vamos supor que um médico queira reduzir a chance de seus pacientes sofrerem de doenças cardiovasculares. A verdade é que sabe-se muito pouco sobre essas doenças: por que algumas pessoas as tem e outras não, quando elas acontecem, o que as causa. É uma combinação complexa de genética, estilo de vida e psicologia. Ao invés de desistir frente à complexidade, o jeito é procurar variáveis significativas. Por exemplo, percebe-se que a taxa de colesterol parece ter uma relação forte com a incidência dessas doenças. Portanto, uma forma de atacar o problema é fazendo diminuir essa taxa. Não entendemos bem se fazer essa redução artificialmente impacta outras variáveis importantes, mas parece que fazê-lo traz um resultado positivo, então isso é feito. A complexidade do problema é reduzida a poucas variáveis. Ele não é resolvido - afinal de contas, as pessoas continuam tendo doenças cardiovasculares - mas ele é atenuado.&lt;br /&gt;
&lt;br /&gt;
O que isso tem a ver com software? Tudo. Muitas vezes temos de desenvolver sistemas para resolver problemas em domínios que, como o corpo humano, parecem inerentemente complexos. Outras vezes essa complexidade chega de fininho na forma de problemas cuja solução começou simples e elegante, mas com o tempo os requisitos mudam e aparecem os remendos daqui e dali. Mesmo que feitos com todo o cuidado e critério, eles aumentam a complexidade do sistema. Um dia essa complexidade fica tão imensa que ninguém mais consegue entender bem a solução.&lt;br /&gt;
&lt;br /&gt;
O que fazer para reduzir a complexidade dos sistemas? Bom, de modo geral, uma solução ótima para um problema é tão complexa quanto o problema. No entanto, o segredo é fazer como a medicina: procurar um conjunto pequeno de variáveis que possa levar a uma solução sub-ótima, porém muito mais simples. De modo geral, acrescentar variáveis aumenta a complexidade da solução linearmente, mas melhora a qualidade da solução apenas logaritmicamente.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiv3_raiGS16vtrvYF3edd5hFS6b-WO_rm4D_vjKB4KrDHr1l6zCOtFSk0KUk3rmnApsw8fE5WSjHBNlTvIdhk7F7ulDDs0nbB2uPJ2M2CaW9axPBpnQexWc3nGheY9g2BRXZu31o_lqAl/s1600/Screen+shot+2011-04-13+at+5.46.46+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiv3_raiGS16vtrvYF3edd5hFS6b-WO_rm4D_vjKB4KrDHr1l6zCOtFSk0KUk3rmnApsw8fE5WSjHBNlTvIdhk7F7ulDDs0nbB2uPJ2M2CaW9axPBpnQexWc3nGheY9g2BRXZu31o_lqAl/s1600/Screen+shot+2011-04-13+at+5.46.46+PM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
O importante, então, é encontrar o menor conjunto de variáveis que juntas darão um resultado aceitável. Em um sistema que evoluiu e sofreu degradação, isso envolve dar um passo atrás e pensar novamente em qual é o problema que o sistema tenta resolver. Pode ser que variáveis que não eram importantes quando o sistema foi concebido agora sejam, e que algumas das variáveis originais tenham perdido a importância.&lt;br /&gt;
&lt;br /&gt;
Assim, quando você sentir que seu sistema está ficando complicado demais, pare um pouco e pense: qual é o preço de simplificarmos o problema? Estamos dispostos a paga-lo?&lt;br /&gt;
&lt;br /&gt;
Eu tenho inveja dos físicos e pago qualquer preço pra simplificar minha vida.</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/2541809305897958021/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2011/04/complexidade-inerente.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/2541809305897958021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/2541809305897958021'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2011/04/complexidade-inerente.html' title='Complexidade inerente'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiv3_raiGS16vtrvYF3edd5hFS6b-WO_rm4D_vjKB4KrDHr1l6zCOtFSk0KUk3rmnApsw8fE5WSjHBNlTvIdhk7F7ulDDs0nbB2uPJ2M2CaW9axPBpnQexWc3nGheY9g2BRXZu31o_lqAl/s72-c/Screen+shot+2011-04-13+at+5.46.46+PM.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-7477269423607174056</id><published>2011-03-27T22:21:00.000-03:00</published><updated>2011-03-27T22:21:44.155-03:00</updated><title type='text'>Diretrizes curriculares</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;O Conselho Nacional de Educação (CNE) colocou em consulta pública à sociedade (sim! todos podem opinar) as diretrizes curriculares dos cursos de graduação da área de computação. São eles: Ciência da Computação, Sistemas de Informação, Engenharia de Computação, Engenharia de Software e Licenciatura em Computação. O documento que está disponível para consulta no site &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: x-small;&quot;&gt;&lt;a href=&quot;http://formularios.mec.gov.br/consulta-diretrizes-curriculares&quot;&gt;http://formularios.mec.gov.br/consulta-diretrizes-curriculares&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;foi produzido por uma comissão em inúmeras discussões entre professores do Brasil, através dos grupos de trabalho da comissão de educação da Sociedade Brasileira de Computação (SBC) e encontros nos diversos eventos da área de computação. Acredito que este documento representa hoje um avanço na direção de estabelecermos diretrizes para os currículos da área. Acredito principalmente que a inclusão da ES como curso de graduação abrirá as portas para a criação de mais cursos e currículos de qualidade, culminando com a formação de recursos humanos capacitados. Existem hoje 5 cursos de graduacao em ES no país. Todos possuem curriculos bem diferentes. Existem varios cursos de SI que possuem uma ênfase em ES. As diretrizes estabelecidas definem as habilidades e competências esperadas para os diferentes tipos de profissionais egressos.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;Portanto, use sua experiência profissional para contribuir com as diretrizes elaboradas. Apresente suas sugestões bem fundamentadas com justificativas.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;A data limite é 31/03/2011.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/7477269423607174056/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2011/03/diretrizes-curriculares.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/7477269423607174056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/7477269423607174056'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2011/03/diretrizes-curriculares.html' title='Diretrizes curriculares'/><author><name>Guta</name><uri>http://www.blogger.com/profile/04397852981510865116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZH-ex5AkKqs8W_liLUkhmhxPKE08DVbnEzfjgbhvOqaibMhGDss743Ba6Ullp4Cfw0WUeXEytU3Nv3UQCqBtAPzyR68XcqrF5Xn9YvEY7PK5OHKV7MczxRWuoxNQ-i1M/s220/DSC_0535.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-2849275260564267176</id><published>2011-03-24T10:10:00.000-03:00</published><updated>2011-03-24T10:10:22.837-03:00</updated><title type='text'>É melhor ter um mapa</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLNasdTukKXYJvYu4aVBduqIGal9TUjBIfxK4Zue9gCE7ciJwBP5c8QS4EYiRmgwxpH4gt-18HznB9868r6zI445t3wneMvOAdAsY132sBrMjERFZOyrSBRATAsnCvk5KPshSUk8xw2Egq/s1600/meme-805749.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLNasdTukKXYJvYu4aVBduqIGal9TUjBIfxK4Zue9gCE7ciJwBP5c8QS4EYiRmgwxpH4gt-18HznB9868r6zI445t3wneMvOAdAsY132sBrMjERFZOyrSBRATAsnCvk5KPshSUk8xw2Egq/s320/meme-805749.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;http://pt.wikipedia.org/wiki/Conhecimento_t%C3%A1cito&quot;&gt;Conhecimento tácito&lt;/a&gt; é tudo aquilo que está na cabeça das pessoas mas não está escrito em lugar algum, ou que é difícil de colocar em palavras. É como receita pra fazer arroz, não tem nenhuma que explica tudo que você precisa saber. Se você tentar seguir, ele sai todo empapado.&lt;br /&gt;
&lt;br /&gt;
Isso é uma das grandes pragas de qualquer projeto de software. Pense bem: toda empresa tem alguém que, se for embora hoje, deixa pra trás um punhado de coisas que ninguém mais sabe. Daí pra descobrir tudo é uma eternidade e muita dor de cabeça.&amp;nbsp;Faça o seguinte exercício mental. Seu projeto está aí, seguindo em frente tranquilamente. Imagine que você quebrou as mãos e alguém entrou agora em seu projeto para te substituir. O que essa pessoa vai ler? Por onde vai começar? Quanto tempo ela vai levar para saber tudo que você sabe sobre o seu projeto?&lt;br /&gt;
&lt;br /&gt;
A solução, é claro, é documentação. Nunca trabalhei em um projeto que eu considerasse bem documentado. Talvez em uma empresa que siga processos rígidos, com certificação CMMI ou equivalentes, a coisa seja diferente, mas nunca trabalhei em uma empresa assim. Se tem uma coisa que nunca é suficiente, é documentação.&lt;br /&gt;
&lt;br /&gt;
Meu amigo Ademir gosta de dizer que não confia em documentação, só em código. Eu discordo. Aprender lendo código é difícil, cansativo e doloroso. É preciso algo que te mostre uma visão do todo, que explique como as várias partes se compõe. Entrar em um projeto novo é explorar um território desconhecido. Para não se perder tempo demais vagando sem rumo, é preciso um mapa.&lt;br /&gt;
&lt;br /&gt;
A desconfiança do Ademir não é sem fundamento. Em última instância, a verdade está no código. É muito fácil deixar documentos ficarem desatualizados em relação ao código. Como dizem os exploradores, &lt;i&gt;se o mapa e o terreno forem diferentes, acredite no terreno&lt;/i&gt;. O código é o terreno. Mesmo assim, mesmo sendo meio errado e impreciso, é melhor ter um mapa.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas não gosta de escrever documentação porque é difícil. Muitas das coisas que sabemos são difíceis de explicar de forma clara, difíceis de colocar em palavras, mas é preciso tentar. Não basta escrever código claro e bem escrito. Todo mundo precisa de um mapa.</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/2849275260564267176/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2011/03/e-melhor-ter-um-mapa.html#comment-form' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/2849275260564267176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/2849275260564267176'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2011/03/e-melhor-ter-um-mapa.html' title='É melhor ter um mapa'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLNasdTukKXYJvYu4aVBduqIGal9TUjBIfxK4Zue9gCE7ciJwBP5c8QS4EYiRmgwxpH4gt-18HznB9868r6zI445t3wneMvOAdAsY132sBrMjERFZOyrSBRATAsnCvk5KPshSUk8xw2Egq/s72-c/meme-805749.jpg" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-1291201889781182073</id><published>2011-03-17T22:23:00.000-03:00</published><updated>2011-03-17T22:23:44.438-03:00</updated><title type='text'>De volta</title><content type='html'>Depois de meses fora do ar, eis que o &quot;Micos&quot; ressurge das cinzas. Pouco antes do meu desaparecimento, eu mudei de projeto. Meu trabalho atual é bem diferente de tudo que já tinha feito antes, o que quer dizer que tenho um punhado de experiências novas para compartilhar com vocês.&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;O site também está com um novo look e até um mascote, que ainda não foi batizado. Se alguém tiver alguma sugestão de nome apropriado, me conte :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Z9GZNJBE_VmhPb521p9Qve3wEoxeRbuxMqB0uXyhytxzlrcgKHAoLxJlDu3hIrD6xY0IzUGfudOaNg0ctFdYahTXXFSJGOMXzv4G6IZVtHO8hj33XqNd0Prz7xuyKGTUBABCUTtu73dd/s1600/monkey_small.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Z9GZNJBE_VmhPb521p9Qve3wEoxeRbuxMqB0uXyhytxzlrcgKHAoLxJlDu3hIrD6xY0IzUGfudOaNg0ctFdYahTXXFSJGOMXzv4G6IZVtHO8hj33XqNd0Prz7xuyKGTUBABCUTtu73dd/s1600/monkey_small.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Não, não fui eu quem desenhou, não tenho essa capacidade. Na verdade eu encomendei de um artista usando o &lt;a href=&quot;http://fiverr.com/&quot;&gt;fiverr.com&lt;/a&gt;, onde pessoas prestam serviços por 5 dólares. Tem também uma versão brasileira, o &lt;a href=&quot;http://www.dezreal.com.br/&quot;&gt;www.dezreal.com.br&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/1291201889781182073/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2011/03/de-volta.html#comment-form' title='5 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/1291201889781182073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/1291201889781182073'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2011/03/de-volta.html' title='De volta'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Z9GZNJBE_VmhPb521p9Qve3wEoxeRbuxMqB0uXyhytxzlrcgKHAoLxJlDu3hIrD6xY0IzUGfudOaNg0ctFdYahTXXFSJGOMXzv4G6IZVtHO8hj33XqNd0Prz7xuyKGTUBABCUTtu73dd/s72-c/monkey_small.png" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-3440192355686870188</id><published>2010-08-30T15:05:00.000-03:00</published><updated>2010-08-30T15:05:28.890-03:00</updated><title type='text'>A Escassez Relevante</title><content type='html'>Um dos blogs que leio regularmente é o &lt;a href=&quot;http://www.marginalrevolution.com/&quot;&gt;Marginal Revolution&lt;/a&gt;, do economista Tyler Cowen. No blog e em um dos livros dele,&lt;i&gt; &lt;/i&gt;&lt;a href=&quot;http://www.amazon.com/Discover-Your-Inner-Economist-Incentives/dp/B0013VZI84/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1283189371&amp;amp;sr=8-1&quot;&gt;&lt;i&gt;Discover Your Inner Economist&lt;/i&gt;&lt;/a&gt;, ele diz que todo bom economista ataca um problema perguntando, &quot;qual é a escassez relevante que impede um resultado melhor?&quot; &amp;nbsp;Essa é uma pergunta profunda e importante para o desenvolvimento de software, mas como esse não é um blog de economistas, deixem-me explicar melhor.&lt;br /&gt;
&lt;br /&gt;
Todo esforço humano é motivado por alguma escassez. Plantamos porque não há comida em abundância para todos na natureza. Construímos casas porque não há abrigos em abundância. Abrimos restaurantes porque para muitos falta tempo, habilidade ou vontade para cozinhar. Guardamos dinheiro em bancos porque falta segurança em nossas casas para deixar nosso dinheiro lá, ou para o carregarmos conosco. Cada solução útil que existe ataca alguma escassez. Essa é a &lt;i&gt;escassez relevante&lt;/i&gt; ao problema.&lt;br /&gt;
&lt;br /&gt;
Quando falamos de projeto de software, qualquer gerente pode te falar sobre escassez: falta tempo, falta dinheiro e faltam bons desenvolvedores. Agora, e quando falamos sobre um &lt;i&gt;produto&lt;/i&gt; de software? O que é a escassez relevante para um sistema?&lt;br /&gt;
&lt;br /&gt;
Ora, falar sobre a &quot;escassez relevante&quot; é apenas uma forma concreta de se determinar qual é o problema que um sistema resolve (releia &lt;a href=&quot;http://micosderealejo.blogspot.com/2009/10/mesa-errada.html&quot;&gt;A Mesa Errada&lt;/a&gt; para entender mais sobre a importância de se resolver o problema certo). Se todo esforço humano é motivado por alguma escassez, então todo sistema de software bem sucedido também deve atacar alguma escassez.&lt;br /&gt;
&lt;br /&gt;
Na maioria dos casos, a escassez que o software ataca é a escassez de &lt;i&gt;tempo&lt;/i&gt;. O Microsoft Word existe porque é mais rápido escrever um texto com ele do que com um lápis ou uma máquina de escrever. O Excel existe porque é mais rápido fazer contas com ele do que com uma calculadora. E-mail existe porque é mais rápido se comunicar com ele do que usando os correios. Diminuir o tempo necessário para se executar uma tarefa é um dos grande motivadores por trás dos primórdios da indústria de software.&lt;br /&gt;
&lt;br /&gt;
Outra grande escassez, essa atacada mais recentemente, é a de informação. A Google inteira se baseia nessa escassez, seja ela genérica (google.com) ou específica (google maps). Grande parte da internet ataca esse problema.&lt;br /&gt;
&lt;br /&gt;
Às vezes, no entanto, a escassez relevante não é tão óbvia. Façamos um pequeno exercício. Qual a escassez relevante em cada um dos sistemas abaixo?&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Twitter&lt;/li&gt;
&lt;li&gt;Google Wave&lt;/li&gt;
&lt;li&gt;Orkut&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
No caso do Twitter, desconfio que a escassez relevante seja a &lt;i&gt;atenção&lt;/i&gt;. É preciso ter alguns minutos livres para se concentrar e ler um artigo como esse, mas bastam alguns segundos para se ler várias mensagens de 140 caracteres. O mesmo vale para se escrever: poucos tem a paciência de escrever um texto, mas qualquer pessoa consegue pensar em algo para se dizer em uma frase. O twitter não faz nada que não fosse possível fazer antes dele, mas ataca uma escassez diferente.&lt;br /&gt;
&lt;br /&gt;
Colocar o Google Wave nesse exercício é um truque pra ver se vocês estão prestando atenção. É um produto que não foi bem sucedido, talvez porque, apesar de tecnologicamente avançado, não atacasse nenhuma escassez relevante.&lt;br /&gt;
&lt;br /&gt;
E o orkut? É um produto bem sucedido, mas qual o problema que ele resolve?&amp;nbsp;Com certeza ele existe, mas deixo a solução desse problema como exercício para o leitor. Eu é que não vou me arriscar a responder.</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/3440192355686870188/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2010/08/escassez-relevante.html#comment-form' title='5 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/3440192355686870188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/3440192355686870188'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2010/08/escassez-relevante.html' title='A Escassez Relevante'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-7340799798542499460</id><published>2010-08-27T15:04:00.000-03:00</published><updated>2010-08-27T15:04:19.252-03:00</updated><title type='text'>Palestras na UFV</title><content type='html'>Ontem estive na Universidade Federal de Viçosa para ministrar duas palestras:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;i&gt;Terminei, e daí? Optando entre a carreira acadêmica e a indústria de software&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Desenvolvimento de aplicativos web usando Google Web Toolkit e Google App Engine.&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;Tudo como parte da &lt;a href=&quot;http://www.nobugs.com.br/semanainfo/programacao&quot;&gt;semana de informática&lt;/a&gt;. Foi muito divertido e eu ainda pude conhecer o bonito campus da Universidade e bater um papo com os professores do depto. de Informática.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Muito obrigado ao pessoal da UFV por me receber tão calorosamente!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/7340799798542499460/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2010/08/palestras-na-ufv.html#comment-form' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/7340799798542499460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/7340799798542499460'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2010/08/palestras-na-ufv.html' title='Palestras na UFV'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-7886228948566030248</id><published>2010-08-19T09:22:00.000-03:00</published><updated>2010-08-19T09:22:32.129-03:00</updated><title type='text'>Custos perdidos</title><content type='html'>Eu gosto de ler livros populares sobre economia, estilo &lt;a href=&quot;http://www.submarino.com.br/produto/1/1978106/freakonomics:+o+lado+oculto+e+inesperado+de+tudo+que+nos+afeta&quot;&gt;&lt;i&gt;Freakonomics&lt;/i&gt;&lt;/a&gt;. Assim vou aprendendo alguns conceitos que acho interessantes. Um dos conceitos de economia que acho mais relevantes não só para o trabalho mas para a vida em geral é o de &lt;i&gt;sunk costs&lt;/i&gt; (em portugês, &quot;custos perdidos&quot;, &quot;custos irrecuperáveis&quot; ou &quot;custos enterrados&quot;).&lt;br /&gt;
&lt;br /&gt;
Custos perdidos são aqueles que você já teve com um projeto qualquer e que não tem como recuperar. O importante sobre custos perdidos é que você não deve levá-los em conta para tomar decisões sobre o futuro. Afinal de contas, o que passou, passou. O que vale é o que se tem hoje e o que vem pela frente.&lt;br /&gt;
&lt;br /&gt;
Por exemplo, suponha que você tenha uma caixinha de &lt;a href=&quot;http://pt.wikipedia.org/wiki/A%C3%A7afr%C3%A3o&quot;&gt;açafrão&lt;/a&gt; legítimo, a especiaria mais cara do mundo, mais cara que o ouro. Você deve fazer uma &lt;a href=&quot;http://pt.wikipedia.org/wiki/Paella&quot;&gt;&lt;i&gt;paella&lt;/i&gt;&lt;/a&gt;? Você vai ao supermercado e descobre que vai te custar 100 reais pra comprar os outros ingredientes. E aí, faz a paella ou não? Pois para tomar essa decisão, você só deve considerar o custo dos ingredientes restantes e o valor que você atribui à paella. Não importa se pelo açafrão você pagou 10 reais, 100 reais, 500 reais, ou se você ganhou de presente da sua vó. Mas se eu não fizer a paella, vou desperdiçar o açafrão! Vai sim, mas vai estar 100 reais menos pobre.&lt;br /&gt;
&lt;br /&gt;
E o que isso tem a ver com desenvolvimento de software? Tudo. Projetos de software são cheios de surpresas: atrasam, precisam de mais máquinas do se imaginava, de mais pessoas, de mais dinheiro. À medida em que o projeto caminha, mais precisa fica nossa estimativa, como mostra a figura abaixo:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRzLPZES1H8UBx_ZTcaRrEM3t5gYc_M-3Npei4oSFhAEFp6XYBwEi915SScfpQTBS8CvvKA0-dDHdlv2bXwaYywdnvtQcEyspYmNI4wBiJPLb6hf2ppwEDiX0_Mjnj2BMbnSNJiRRvgZ6/s1600/3070_fig10.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;257&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRzLPZES1H8UBx_ZTcaRrEM3t5gYc_M-3Npei4oSFhAEFp6XYBwEi915SScfpQTBS8CvvKA0-dDHdlv2bXwaYywdnvtQcEyspYmNI4wBiJPLb6hf2ppwEDiX0_Mjnj2BMbnSNJiRRvgZ6/s400/3070_fig10.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
O que fazer quando percebemos que erramos nossa estimativa inicial e que tudo vai ser mais caro ou demorado do que se esperava? Nessa hora, é preciso decidir se devemos cancelar ou não o projeto. Para tomar essa decisão, não importa o quanto tempo e dinheiro já foram gastos com o projeto. O que importa é o quanto &lt;i&gt;ainda vai&lt;/i&gt; ser gasto. Ou seja, o que devemos nos perguntar é, &quot;acho que vou gastar X tempo ou dinheiro para terminar esse projeto. Eu tenho X tempo ou dinheiro? quero investir X nesse projeto?&quot; &lt;br /&gt;
&lt;br /&gt;
Essa é a ação racional a ser tomar.&lt;br /&gt;
&lt;br /&gt;
Infelizmente (ou não), as pessoas não são racionais. Seres humanos têm aversão a perdas, e jogar fora algo que já se conquistou é dificílimo, mesmo que não fazê-lo seja irracional. Um exemplo clássico disso é o do ingresso de cinema. Imagine as seguintes situações:&lt;br /&gt;
&lt;blockquote&gt;&lt;b&gt;Situação A:&lt;/b&gt;&amp;nbsp;Você compra ingressos para o cinema pela internet, por 20 reais. Só que quando chega ao cinema, descobre que o bolso está furado e que perdeu os ingressos. Você tem 20 reais no outro bolso. Você vai ao cinema?&lt;/blockquote&gt;&lt;blockquote&gt;&lt;b&gt;Situação B&lt;/b&gt;: Você vai ao cinema. O ingresso custa 20 reais. Só que quando você enfia a mão no bolso, você descobre que o bolso está furado e que perdeu uma nota de 20 reais. No outro bolso, você tem outra nota de 20 reais. Você vai ao cinema?&lt;/blockquote&gt;Se você é como a maioria das pessoas, você se sente mais confortável em ir ao cinema na situação B do que na situação A, apesar do resultado das duas situações serem idênticos, ou seja, você está 40 reais mais pobre e foi ao cinema, ou 20 reais mais pobre e não foi ao cinema. O fato de comprar de novo ingressos que você &lt;i&gt;já comprou&lt;/i&gt; é dificílimo para a maioria. Um ótimo livro que trata desse tipo de comportamento é &lt;i&gt;&lt;a href=&quot;http://www.submarino.com.br/busca?q=ariely&amp;amp;dep=+&amp;amp;x=0&amp;amp;y=0&quot;&gt;Previsivelmente Irracional&lt;/a&gt;&lt;/i&gt;, de Dan Ariely.&lt;br /&gt;
&lt;br /&gt;
Você mesmo deve ser assim. Quantas vezes você continou assistindo a um filme muito ruim só porque já tinha assistido metade? Quantas vezes ficou em um lugar desagradável porque &quot;já vim até aqui mesmo&quot;? Quantas vezes comeu comida ruim só porque sua mãe ensinou que não se deixa comida no prato? Se você não comer, ninguém vai comer o resto do seu prato, então já era - custo perdido. Melhor não comer.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0zNVz7U0IhAqjfQmNgAcOs8IAtfHBlCT3PpVUkPZT7SB4LYCOHOo4CXP3P5P4tBwy2DqmZSs-BVO7QB0n_lefJqRMd3s7i3thbwYLn6iJFXWA6DjnT_cqj0yjqWKaNm84S3OgVKIA1-Yq/s1600/sad-crying-nerd.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0zNVz7U0IhAqjfQmNgAcOs8IAtfHBlCT3PpVUkPZT7SB4LYCOHOo4CXP3P5P4tBwy2DqmZSs-BVO7QB0n_lefJqRMd3s7i3thbwYLn6iJFXWA6DjnT_cqj0yjqWKaNm84S3OgVKIA1-Yq/s1600/sad-crying-nerd.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;E daí? E daí que, mesmo sabendo que você não deve levar custos perdidos em conta para tomar decisões, você precisa se lembrar que as pessoas &lt;i&gt;levam&lt;/i&gt;&amp;nbsp;os custos perdidos em conta. Todos ficam tristes e aborrecidos quando seu tempo e esforço são inúteis. Já dizia meu querido orientador Don Cowan, &quot;não se apaixone pelo seu trabalho, você pode ter de jogá-lo fora.&quot; Se já é doloroso jogar fora seu próprio trabalho, imagine se outra pessoa é quem decide jogá-lo fora. A reação natural é de raiva, revolta, desgosto.&amp;nbsp;Se você trabalha em uma equipe e decide cancelar um projeto, lembre-se que é preciso valorizar e compensar o esforço que já foi feito.&amp;nbsp;Então, muito cuidado quando for você o responsável por essa decisão.&lt;br /&gt;
&lt;br /&gt;
Resumindo:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;se for tomar uma decisão para você mesmo, não leve em conta os custos perdidos;&lt;/li&gt;
&lt;li&gt;se for tomar uma decisão para sua equipe, lembre-se que os outros (mas não você, claro) são irracionais e não vão entender bem esse lance de &quot;custos perdidos&quot;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/7886228948566030248/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2010/08/custos-perdidos.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/7886228948566030248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/7886228948566030248'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2010/08/custos-perdidos.html' title='Custos perdidos'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDRzLPZES1H8UBx_ZTcaRrEM3t5gYc_M-3Npei4oSFhAEFp6XYBwEi915SScfpQTBS8CvvKA0-dDHdlv2bXwaYywdnvtQcEyspYmNI4wBiJPLb6hf2ppwEDiX0_Mjnj2BMbnSNJiRRvgZ6/s72-c/3070_fig10.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-7212204783662077318</id><published>2010-08-17T15:34:00.000-03:00</published><updated>2010-08-17T15:34:52.590-03:00</updated><title type='text'>O ambiente de trabalho e a produtividade</title><content type='html'>Sem querer, o artigo mais polêmico desse blog até hoje foi um em que falei mal de &lt;a href=&quot;http://micosderealejo.blogspot.com/2010/05/condicoes-de-trabalho.html&quot;&gt;móveis&lt;/a&gt;. Um dos fatos que achei mais curiosos sobre a reação dos leitores foi que muitas pessoas parecem não se importar com a qualidade do espaço físico em que trabalham. De fato, existem muitos fatores importantes ao se escolher um emprego - o respeito, a autonomia, os desafios, as possibilidades de crescimento, entre outras. Hoje, no entanto, gostaria de refletir sobre a importância do espaço onde trabalhamos.&lt;br /&gt;
&lt;br /&gt;
Todos nós prezamos pelo conforto dos nossos lares. Gastamos quantidades imensas de tempo e dinheiro para fazer de nossas casas lugares agradáveis de se passar o tempo, bonitas, serenas e confortáveis. No entanto, a maioria de nós passa muito menos horas acordados dentro de nossas casas do que passamos no trabalho. Por que, então, não fazemos o mesmo com o local onde trabalhamos? Por que passar o dia em lugares apertados, barulhentos, estéreis, iluminados de forma desagradável? Eu não entendo.&lt;br /&gt;
&lt;br /&gt;
O tratado mais interessante sobre espaço físico que já li está no livro&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/Peopleware-Productive-Projects-Teams-Second/dp/0932633439/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1282047881&amp;amp;sr=8-1&quot;&gt;Peopleware: productive projects and teams&lt;/a&gt;, um clássico do Tom DeMarco e Timothy Lister. O livro trata da produtividade de profissionais da área de informática e dedica um dos seus seis capítulos inteiramente aos efeitos do espaço físico na produtividade. Vou resumir aqui algumas das conclusões do livro a ainda incluir outros estudos. Vamos por partes.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. Espaço de trabalho&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
O Peopleware cita um &lt;a href=&quot;http://domino.watson.ibm.com/tchjr/journalindex.nsf/0/fb3c49ab2d463e1c85256bfa00685aec?OpenDocument&quot;&gt;estudo muito interessante&lt;/a&gt; feito pela IBM em 1978, motivado pela construção de seu novo campus em Santa Teresa, Califórnia. Durante o estudo, observaram o trabalho no dia-a-dia de inúmeros profissionais da IBM e chegaram à conclusão que profissionais dessa área precisam de, no mínimo, 9 m&lt;sup&gt;2&lt;/sup&gt; de espaço individual por trabalhador, sendo que 3 desses 9 m&lt;sup&gt;2&lt;/sup&gt; devem ser de área de trabalho - ou seja, mesas. Valores inferiores a esses levavam à reduções na produtividade devido ao barulho, interrupções e dificuldade em se manejar materiais. Essas reduções levariam a perdas maiores do que o custo de se manter o espaço adicional.&lt;br /&gt;
&lt;br /&gt;
E que custo é esse? Não sei dizer o preço vigente de aluguéis de escritórios pelo Brasil, mas em uma rápida busca descobri que em São Paulo o metro quadrado de salas está por volta de R$ 50,00 por mês. Ou seja, se hoje a empresa tem 4 m&lt;sup&gt;2&lt;/sup&gt; por desenvolvedor, o custo para se passar para os 9 m&lt;sup&gt;2&lt;/sup&gt; recomendados pela IBM seria de R$ 250,00 por mês, por desenvolvedor. O custo de se mobiliar esse espaço com os 3 m&lt;sup&gt;2&lt;/sup&gt; de mesa de boa qualidade é bem menor do que esse se considerarmos a amortização com o tempo. Se a produtividade média aumentar em 10%, é um investimento que vale a pena. Mas será que a produtividade aumentaria em 10%? Vamos continuar.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. Ruído e interrupções&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
O trabalho intelectual exige concentração. A maior produtividade do desenvolvedor vem quando ele entra no estado chamado de &lt;a href=&quot;http://en.wikipedia.org/wiki/Flow_(psychology)&quot;&gt;fluxo&lt;/a&gt;, em que está totalmente absorvido pela sua atividade e não vê o tempo passar. Você já teve desses dias, não teve? Aquele dia em que se sentou na frente do computador e quando viu, já eram duas horas da manhã. Esse é o estado de fluxo.&lt;br /&gt;
&lt;br /&gt;
Um indivíduo leva entre 10 e 15 minutos para entrar nesse estado. Isso implica que, a cada interrupção, o estado de fluxo é quebrado e é difícil retomar a atividade anterior. Para se produzir mais, é preciso minimizar as interrupções. Em uma &lt;a href=&quot;http://bigthink.com/ideas/18522&quot;&gt;entrevista recente&lt;/a&gt;, Jason Fried, fundador da &lt;a href=&quot;http://37signals.com/&quot;&gt;37signals&lt;/a&gt;, declarou que lá se faz de tudo para minimizar interrupções - evita-se usar o telefone quando possível e prefere-se usar e-mail. Também alocam longos blocos de tempo para o trabalho produtivo em que as pessoas evitam interromper quem está trabalhando.&lt;br /&gt;
&lt;br /&gt;
Os estudos citados no Peopleware confirmam essa necessidade. Trabalhadores que consideram seu ambiente silencioso cometem, em média, menos erros que os que o consideram barulhento. Quanto maior a densidade de pessoas, maior o ruído e mais frequentes as interrupções. Como é possível trabalhar quando a todo instante um telefone toca, ou alguém está contando algum caso, ou há uma discussão intensa acontecendo a dois metros de distância?&lt;br /&gt;
&lt;br /&gt;
Ora, quando mais apertado o espaço de trabalho, maior o ruído percebido. Um &lt;a href=&quot;http://www.news.cornell.edu/releases/Jan01/noisy.offices.ssl.html&quot;&gt;estudo interessante&lt;/a&gt; da Cornell University demonstrou que níveis de ruído altos trazem diversos prejuízos à saúde e ao desempenho, &lt;i&gt;mesmo quando as pessoas expostas ao ruído não acham que o ruído está atrapalhando&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
O que as pessoas fazem hoje para escapar do ruído é refugiar-se em seus headphones, ouvindo música alta para fugir das interrupções, o que também não é bom para a concentração.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3. Iluminação&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
A maioria dos ambientes de trabalho hoje em dia, especialmente os ambientes de empresas de informática, é &lt;a href=&quot;http://en.wikipedia.org/wiki/Over-illumination&quot;&gt;iluminado em excesso&lt;/a&gt;. É provável que nada tenha contribuído mais para a desumanização dos espaços interiores do que o advento da luz fluorescente longa. Por ser de baixo custo, ela permeia os interiores com um espectro desagradável e que ainda pode causar dores de cabeça, fadiga e stress. O fato é que a maioria dos ambientes pode ser iluminado durante o dia apenas com a luz natural que vem das janelas e algumas luzes indiretas.&lt;br /&gt;
&lt;br /&gt;
Eu não entendo porque praticamente se aboliu o uso da luz natural, que é mais saudável e agradável. Se você não acredita em mim, experimente ir ao escritório em um fim de semana, desligar as luzes e abrir todas as persianas. Depois tente trabalhar durante algumas horas e me diga se não se sente melhor. Se você ainda não acredita, pergunte a qualquer arquiteto ou decorador. Você não usa essas luzes fluorescentes compridas na sua casa e há um bom motivo para isso. Não use no trabalho também.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Resumindo&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
O trabalho produtivo precisa de:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;espaço&lt;/li&gt;
&lt;li&gt;silêncio&lt;/li&gt;
&lt;li&gt;iluminação adequada&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;O custo para se ter isso não é alto e é mais do que justificado em ganhos de produtividade e na satisfação e saúde dos trabalhadores. Mais do que isso, no entanto, trabalhar em um local agradável é uma necessidade humana. Todos somos atraídos pelo que é bonito, estético, confortável. O grande arquiteto Christopher Alexander (aquele que inspirou a gang dos quatro a criar os padrões de projeto) chama espaços com essas características de &lt;i&gt;orgânicos&lt;/i&gt; - espaços que mesclam as necessidades do indivíduo com as necessidades coletivas, que exibem personalidades que harmonizam com a natureza.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Trabalho é vida e todos queremos viver bem. Cuide de seu ambiente de trabalho como sua casa, porque assim ele é.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Se você quer ler mais sobre o assunto, &lt;a href=&quot;http://discuss.joelonsoftware.com/default.asp?joel.3.1378.17&quot;&gt;essa página&lt;/a&gt; tem um bom apanhado de links.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/7212204783662077318/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2010/08/o-ambiente-de-trabalho-e-produtividade.html#comment-form' title='6 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/7212204783662077318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/7212204783662077318'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2010/08/o-ambiente-de-trabalho-e-produtividade.html' title='O ambiente de trabalho e a produtividade'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-6605352704184734884</id><published>2010-06-21T11:01:00.000-03:00</published><updated>2010-06-21T11:01:20.811-03:00</updated><title type='text'>A Complexidade da Privacidade Online</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 18px;&quot;&gt;O artigo de hoje é de autoria do colega Daniel Balparda, que é um entusiasta dos temas de segurança e privacidade em sistemas. Vamos a ele!&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 18px;&quot;&gt;-----------------------------------------------&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 18px;&quot;&gt;Trabalho diariamente com dados sensíveis de usuários e já trabalhei com segurança de dados, então um fato curioso ocorrido comigo me chamou a atenção e me despertou a vontade de compartilhá-lo.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Wardriving&quot; style=&quot;color: #074d8f;&quot; target=&quot;_blank&quot;&gt;Wardriving&lt;/a&gt;&lt;/i&gt;&amp;nbsp;é uma atividade usada normalmente para mapear dados de redes sem fio, mas está mais associada à quebra de privacidade (se tanto!) de quem possui tais redes sem fio abertas, mas não de quem coleta os dados. Consiste em dirigir (ou pedalar ou andar) portando um dispositivo que consiga ler dados de GPS e dados de redes sem fio para que seja feito um mapa associando redes sem fio à sua posição geográfica. Encontrei um exemplo interessante de como uma atividade como esta pode vazar dados privados de forma subliminar.&lt;br /&gt;
&lt;br /&gt;
Os&amp;nbsp;&lt;i&gt;&quot;smartphones&quot;&lt;/i&gt;&amp;nbsp;Android, da Google, têm um programinha (&lt;a href=&quot;http://code.google.com/p/wardrive-android/&quot; style=&quot;color: #074d8f;&quot; target=&quot;_blank&quot;&gt;Wardrive&lt;/a&gt;) que coleta dados de redes e depois faz o upload&amp;nbsp;&lt;a href=&quot;http://wardrivedb.appspot.com/&quot; style=&quot;color: #074d8f;&quot; target=&quot;_blank&quot;&gt;para um mapa online&lt;/a&gt;, onde os dados coletados por usuários no mundo todo são anonimizados e coletados para consulta.&amp;nbsp;Resolvi olhar o mapa na minha região e me deparo com uma linha de pontos de rede,&amp;nbsp;que como os farelos de pão de&amp;nbsp;&lt;i&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Hansel_and_Gretel&quot; style=&quot;color: #074d8f;&quot; target=&quot;_blank&quot;&gt;João e Maria&lt;/a&gt;&lt;/i&gt;, levam diretamente à minha casa.&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgn9FwGtJ9X3t1OWDNJcY7HFs0JiELSM3chYJG9aMbeJWOKryTy3zJs9rxzoZ29UaZrrMjLJIR97StHum6O8fJixsz50OXteiOz8miJNX29S8mfmsa6n_qTz6hZu_17lwMGMhUjf3bocBku/s1600/wardrivedb.appspot.com.2010.06.21.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgn9FwGtJ9X3t1OWDNJcY7HFs0JiELSM3chYJG9aMbeJWOKryTy3zJs9rxzoZ29UaZrrMjLJIR97StHum6O8fJixsz50OXteiOz8miJNX29S8mfmsa6n_qTz6hZu_17lwMGMhUjf3bocBku/s400/wardrivedb.appspot.com.2010.06.21.jpeg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 18px;&quot;&gt;&lt;br /&gt;
A explicação foi trivial depois que eu forcei a memória e me lembrei o que aconteceu.&amp;nbsp;Uma vez, quase um ano atrás, um colega de trabalho foi à minha casa, e resolveu testar&amp;nbsp;seu programa de wardriving no caminho. Como são pouquíssimos dispositivos Android&amp;nbsp;na minha cidade, e pelo visto menos pessoas ainda usando o programa em questão,&amp;nbsp;ficou o rastro deste dia no mapa como os únicos dados da região até hoje. Um ano depois, ainda constavam como os únicos e mostram o caminho exato entre o centro&amp;nbsp;da cidade e a porta da minha casa.&lt;br /&gt;
&lt;br /&gt;
Claro, minha privacidade não está grandemente ameaçada (os dados não são muito&amp;nbsp;precisos e meu endereço pode ser descoberto de 1001 outras formas), mas achei&amp;nbsp;o exemplo bem curioso. Um mapa silenciosamente aponta para a minha casa,&amp;nbsp;em um site obscuro, que eu desconhecia, por mais de ano, e por nenhuma ação&amp;nbsp;ou culpa minha.&lt;br /&gt;
&lt;br /&gt;
Comecei a coletar e fazer upload de algumas outras rotas de&amp;nbsp;&lt;i&gt;&quot;wardrive&quot;&lt;/i&gt;&amp;nbsp;na minha região para mascarar este efeito, então em breve o mapa vai mudar. Nada como mascarar&amp;nbsp;dados com mais dados...&amp;nbsp; ;-)&lt;br /&gt;
&lt;br /&gt;
Estão aparecendo diversas pesquisas indicando que anonimizar verdadeiramente qualquer coisa online é um problema muito maior do que se cria inicialmente. Basta pensar que somos hoje em torno de 6 bilhões de pessoas no mundo. Se considerarmos 2 bilhões de usuários únicos online hoje, isto significa que quaisquer 31 bits significativos de informação seriam suficientes para identificar um usuário hoje.&amp;nbsp;Não é muito! Dois exemplos recentes de pesquisas na área que me vem à cabeça são:&lt;br /&gt;
&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 18px;&quot;&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;O conjunto de todos os dados disponibilizados por um browser ao navegar&amp;nbsp;(meu sistema operacional, browser, versão, resolução, fuso-horário, quais fontes&amp;nbsp;estão instaladas no meu sistema, quais plugins eu instalei, etc)&amp;nbsp;&lt;a href=&quot;https://panopticlick.eff.org/&quot; style=&quot;color: #074d8f;&quot; target=&quot;_blank&quot;&gt;pode ser suficiente para identificar um browser unicamente ou quase unicamente no mundo&lt;/a&gt;. Pense um pouco: se você já baixou&amp;nbsp;plugins para seu browser e já configurou fontes extras além das que vêm instaladas&amp;nbsp;no seu sistema operacional, sua configuração provavelmente já é única! Estes&amp;nbsp;dados podem ser coletados e trocados de site em site para rastrear sua presença&amp;nbsp;online. Basta um site ligar sua identidade de browser à sua identidade real que&amp;nbsp;é fim de jogo: eles sabem quando você aparece e sabem quem você é.&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Através de links visitados para suas comunidades em redes virtuais&amp;nbsp;&lt;a href=&quot;http://33bits.org/2010/02/18/cookies-supercookies-and-ubercookies-stealing-the-identity-of-web-visitors/&quot; style=&quot;color: #074d8f;&quot; target=&quot;_blank&quot;&gt;é possível triangular e encontrar a identidade de um usuário em redes sociais&lt;/a&gt;&amp;nbsp;fazendo apenas&amp;nbsp;perguntas para o browser. O usuário não vê nada. Explicando rapidamente, o browser&amp;nbsp;normalmente troca a cor de links visitados (o mais usual é azul para links não visitados&amp;nbsp;e roxo para links visitados nos últimos meses). Um site maldoso não teria usualmente&amp;nbsp;acesso aos cookies de redes sociais, mas ele pode gerar de forma escondida uma lista&amp;nbsp;de links para, digamos, as 1000 comunidades mais populares do&amp;nbsp;&lt;a href=&quot;http://www.orkut.com/&quot; style=&quot;color: #074d8f;&quot; target=&quot;_blank&quot;&gt;Orkut&lt;/a&gt;. Ao servir esta&amp;nbsp;lista (mesmo que escondida) para o usuário o browser irá muito prestativamente colorir os&amp;nbsp;links já visitados com a cor diferente. Ora, a cor exibida&amp;nbsp;&lt;i&gt;de facto&lt;/i&gt;&amp;nbsp;pode ser consultada&amp;nbsp;pelo programa e reportada de volta ao site malicioso. Mais uma vez, o conjunto de&amp;nbsp;comunidades populares escolhidas por um usuário dentre 1000 pode muito facilmente&amp;nbsp;ser único. Game over. Você foi identificado.&lt;/li&gt;
&lt;/ol&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 18px;&quot;&gt;Para quem não viu, os links acima valem 10 min do seu tempo, creio.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/6605352704184734884/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2010/06/complexidade-da-privacidade-online.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/6605352704184734884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/6605352704184734884'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2010/06/complexidade-da-privacidade-online.html' title='A Complexidade da Privacidade Online'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgn9FwGtJ9X3t1OWDNJcY7HFs0JiELSM3chYJG9aMbeJWOKryTy3zJs9rxzoZ29UaZrrMjLJIR97StHum6O8fJixsz50OXteiOz8miJNX29S8mfmsa6n_qTz6hZu_17lwMGMhUjf3bocBku/s72-c/wardrivedb.appspot.com.2010.06.21.jpeg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-3202851807029367448</id><published>2010-05-20T01:25:00.008-03:00</published><updated>2010-05-20T01:46:31.625-03:00</updated><title type='text'>Configurando sua mesa de trabalho</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;Eu fui forçada a aprender como configurar meu ambiente de trabalho.&amp;nbsp;Claro, isso só aconteceu depois que eu já tinha sofrido minha primeira&amp;nbsp;lesão. O profissional de computação sofre uma pressão grande nos&amp;nbsp;diversos tipos de atividades em que se envolve. Isso gera tensão extra&amp;nbsp;nos músculos que, quando posicionados de forma inadequada por&amp;nbsp;longas horas, podem sofrer impactos irreparáveis em sua coluna,&amp;nbsp;músculos, e articulações.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;Só quando eu comecei a sentir dores&amp;nbsp;horríveis no meu braço direito foi que eu percebi que algo estava&amp;nbsp;errado. Eu tinha 10 anos de profissão nessa época. Passava horas&amp;nbsp;trabalhando no computador sem nem perceber. Mas claro, na hora de&amp;nbsp;finalizar o doutorado, quando eu mais precisava da minha saúde 100%, eu&amp;nbsp;comecei a sentir muitas dores.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt; &lt;br /&gt;
Nossa &lt;a href=&quot;http://micosderealejo.blogspot.com/2010/04/resultados-da-pesquisa-sobre-salarios.html&quot;&gt;pesquisa neste blog sobre o mercado de trabalho&lt;/a&gt; não me deixa&amp;nbsp;mentir. Os profissioanis da área que passam longas horas na frente do&amp;nbsp;computador são jovens. E quando a gente é jovem achamos que podemos&amp;nbsp;tudo. Mas juventude a gente só tem uma vez e eu posso dizer que&amp;nbsp;consegui preservar a minha. :)&lt;br /&gt;
&lt;br /&gt;
Li muitos livros sobre LER, ergonomia de cadeiras, mesas, teclados e&amp;nbsp;mouses, sobre ginástica laboral, fui a vários fisioterapeutas,&amp;nbsp;massagistas, fiz yoga, (hoje eu faço Tai Chi Chuan), passei a fazer&amp;nbsp;exercícios específicos para movimentar partes do corpo que mais sentem&amp;nbsp;com estas longas jornadas, parava 5 minutos a cada hora, mas&amp;nbsp;principalmente investi no meu novo ambiente de trabalho com a&amp;nbsp;ergonomia correta.&lt;br /&gt;
&lt;br /&gt;
Algumas coisas que eu recomendo fortemente:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;&lt;b&gt;Leia sobre ergonomia&lt;/b&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;&lt;a href=&quot;http://ergo.human.cornell.edu/CUEHinfo.html&quot; style=&quot;color: #1c51a8;&quot; target=&quot;_blank&quot;&gt;http://ergo.human.cornell.edu/&lt;wbr&gt;&lt;/wbr&gt;CUEHinfo.html&lt;/a&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;&lt;b&gt;A escolha da cadeira&lt;/b&gt;: leia e pesquise a que for correta para você,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;suporte no contorno completo da sua lombar é muito importante.&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;&lt;b&gt;Posicione a cadeira na altura adequada&lt;/b&gt;: seus pés devem ficar com a&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;planta toda encostando no chão. Seus joelhos devem fazer um ângulo de&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;90 graus com suas pernas. suas coxas devem estar paralelas ao chão.&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;&lt;b&gt;O teclado deve ficar posicionado apontando ligeiramente para baixo:&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt; Isso faz uma diferença enorme no tanto de esforço desnecessário que&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;colocamos no nosso pulso. Eu comprei uma bandeja que me permite&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;ajustar a altura do teclado e também o ângulo dele e provavelmente foi&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;um investimento excelente. Não precisei trocar minha mesa, instalei a&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;bandeja na própria mesa. A bandeja é essa:&amp;nbsp;&lt;a href=&quot;http://www.fellowes.com/ca/site/products/ProductDetails.aspx?culture=en&amp;amp;Id=8036001&quot; style=&quot;color: #1c51a8;&quot; target=&quot;_blank&quot;&gt;http://www.fellowes.com/ca/&lt;wbr&gt;&lt;/wbr&gt;site/products/ProductDetails.&lt;wbr&gt;&lt;/wbr&gt;aspx?culture=en&amp;amp;Id=8036001&lt;/a&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;&lt;b&gt;Veja esta página para saber a posição ideal para se digitar&lt;/b&gt;: &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;&lt;a href=&quot;http://ergo.human.cornell.edu/AHTutorials/typingposture.html&quot; style=&quot;color: #1c51a8;&quot; target=&quot;_blank&quot;&gt;http://ergo.human.cornell.edu/&lt;wbr&gt;&lt;/wbr&gt;AHTutorials/typingposture.html&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Times;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate;&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Times;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;&lt;b&gt;Eu uso uma&amp;nbsp;&lt;/b&gt;&lt;i&gt;&lt;b&gt;trackball&lt;/b&gt;&lt;/i&gt;&lt;b&gt; ao invés de mouse que facilita muito os movimentos&lt;/b&gt;. Neste&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;caso o pulso, que foi minha área de maior problema, fica parado sem&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;precisar fazer o movimento esquerda-direita que danifica os tecidos. A&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;&lt;i&gt;trackball&lt;/i&gt; grande preenche o espaço curvo natural da mão sobre o&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;mouse e posso usar qualquer dos dedos para movimentá-la dividindo o&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;estress sobre os músculos. Essa &lt;i&gt;trackball&lt;/i&gt; me durou uns 7 anos e me senti&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;completamente aleijada quando precisei usar um mouse por uma semana&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;&amp;nbsp;quando ela estragou. Logo repus&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;o anterior com um outro do mesmo modelo. Ele é fantástico.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;Esta página tem diversas reviews sobre &lt;i&gt;trackballs&lt;/i&gt;: &lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;&lt;a href=&quot;http://www.trackballmouse.org/&quot; style=&quot;color: #1c51a8;&quot; target=&quot;_blank&quot;&gt;http://www.trackballmouse.org/&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt;. Eu uso o Logitech trackman marble mouse.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif;&quot;&gt; Pense na melhor configuração da sua mesa de trabalho. Sua saúde e&amp;nbsp;juventude vão agradecer.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 18px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/3202851807029367448/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2010/05/configurando-sua-mesa-de-trabalho.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/3202851807029367448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/3202851807029367448'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2010/05/configurando-sua-mesa-de-trabalho.html' title='Configurando sua mesa de trabalho'/><author><name>Guta</name><uri>http://www.blogger.com/profile/04397852981510865116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZH-ex5AkKqs8W_liLUkhmhxPKE08DVbnEzfjgbhvOqaibMhGDss743Ba6Ullp4Cfw0WUeXEytU3Nv3UQCqBtAPzyR68XcqrF5Xn9YvEY7PK5OHKV7MczxRWuoxNQ-i1M/s220/DSC_0535.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-40148647077723231</id><published>2010-05-14T16:19:00.000-03:00</published><updated>2010-05-14T16:19:14.134-03:00</updated><title type='text'>Condições de trabalho</title><content type='html'>Estava agora folheando a revista &quot;BHTI&quot;, que fala do mercado de TI em Belo Horizonte, quando me deparei com a reportagem &quot;Turnover: quem dá mais?&quot; que é interessante mas que contém uma foto mais interessante ainda, mostrando o ambiente de trabalho da empresa &lt;a href=&quot;http://www.sydle.com/&quot;&gt;Sydle&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
O artigo está online, assim como a foto, confiram:&lt;br /&gt;
&lt;a href=&quot;http://www.bhtimagazine.com.br/index.php?option=com_flexicontent&amp;amp;view=items&amp;amp;cid=903:carreira&amp;amp;id=169:turnover-quem-da-mais&amp;amp;Itemid=101&quot;&gt;http://www.bhtimagazine.com.br/index.php?option=com_flexicontent&amp;amp;view=items&amp;amp;cid=903:carreira&amp;amp;id=169:turnover-quem-da-mais&amp;amp;Itemid=101&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.bhtimagazine.com.br/images/stories/ed03/victorxavier.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;335&quot; src=&quot;http://www.bhtimagazine.com.br/images/stories/ed03/victorxavier.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Motivado pelo que vi, escrevi a seguinte carta para a seção &quot;espaço do leitor&quot;:&lt;br /&gt;
&lt;blockquote&gt;&lt;i&gt;A foto da página 17 do número 03/01 mostra o gerente de RH da Sydle, com a legenda indicando que &quot;a empresa desenvolve intenso trabalho na gestão de pessoas&quot;.&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;Ao observar a foto de forma mais analítica, vemos uma pista para o mistério da falta de mão-de-obra especializada no mercado de TI. Dezenas de pessoas em um espaço aberto estéril, espremidas em mesas pequenas, sentadas em cadeiras de baixa qualidade, sem espaço algum para seus pertences pessoais.&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;Se você fosse um vestibulando, você se sentiria motivado a seguir carreira de TI ao ver nessa foto as condições de trabalho dos profissionais da área? Nem eu.&lt;/i&gt;&lt;/blockquote&gt;Vamos ver se publicam.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/40148647077723231/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2010/05/condicoes-de-trabalho.html#comment-form' title='45 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/40148647077723231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/40148647077723231'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2010/05/condicoes-de-trabalho.html' title='Condições de trabalho'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><thr:total>45</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-6115144037866240801</id><published>2010-04-28T09:57:00.001-03:00</published><updated>2010-04-28T10:03:49.056-03:00</updated><title type='text'>Fábricas de software</title><content type='html'>Eu adorei esse texto do Fabio Akita: &lt;a href=&quot;http://info.abril.com.br/noticias/rede/gestao20/software/fabrica-de-software-e-uma-besteira/&quot;&gt;Fábrica de Software é uma besteira&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Vejam bem, eu não acho que fábricas de software sejam uma besteira. A idéia de se fazer software sob medida para clientes é um excelente modelo de negócios, pois a maioria das empresas não quer investir em um departamento de TI próprio.&lt;br /&gt;
&lt;br /&gt;
O problema, como aponta o Fábio, é a palavra &quot;fábrica.&quot; O conceito de linha de produção não se aplica a um trabalho criativo e complexo como o desenvolvimento de software.&amp;nbsp;O modelo de fábrica de software é assim: tem-se um conjunto pequeno de analistas que controla todo o processo criativo e uma horda de micos de realejo que recebem tarefas mastigadas e especificadas detalhadamente e &quot;só&quot; precisam implementá-las. A idéia é reduzir ao máximo os custos, pagando salários altos às poucas cabeças pensantes e baixos aos programadores. Como os salários dos programadores são baixos, as fábricas em geral contratam programadores inexperientes ou aqueles que estão fora do mercado por não conseguirem coisa melhor.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;As fábricas em geral usam processos ricos em documentação como o RUP e se orientam pelos modelos de maturidade como CMM e MPS-BR. Elas estão certas em usar esses processos, pois só assim conseguem o grau de controle necessário para garantir que o programador inexperiente vá implementar o que o analista idealizou.&lt;/div&gt;&lt;br /&gt;
O resultado é que ninguém quer ser programador de fábrica de software, e eu não os culpo. O papel do programador é tal que há poucas oportunidades de crescimento, aperfeiçoamento ou aprendizado. As condições de trabalho são precárias devido ao foco em manter baixos os custos. Os programadores excelentes não querem carregar o piano para os programadores inexperientes, e fogem de lá.&lt;br /&gt;
&lt;br /&gt;
O pior, no entanto, é que o programador é considerado um recurso fungível&amp;nbsp;(essa palavra eu roubei do do excelente livro&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/Slack-Getting-Burnout-Busywork-Efficiency/dp/0767907698/ref=sr_1_3?ie=UTF8&amp;amp;s=books&amp;amp;qid=1272383159&amp;amp;sr=8-3&quot;&gt;Slack&lt;/a&gt;&amp;nbsp;do Tom DeMarco). O Michaelis define&amp;nbsp;&lt;a href=&quot;http://michaelis.uol.com.br/moderno/portugues/index.php?lingua=portugues-portugues&amp;amp;palavra=fung%EDvel&quot;&gt;fungível&lt;/a&gt;&amp;nbsp;como aquilo que &quot;pode ser substituído por outro da mesma espécie, qualidade e quantidade, como o dinheiro, os cereais, o vinho etc.&quot; &amp;nbsp;Ou seja, se eu tirar uma nota de 20 reais da carteira e te der &amp;nbsp;em troca de uma nota de 20 reais da sua carteira, não há perda de valor ou qualidade. O dinheiro é um bem fungível - duas notas de mesma denominação tem o mesmo valor.&lt;br /&gt;
&lt;br /&gt;
Ninguém quer ser fungível. É um desrespeito à individualidade de cada um ser tratado como uma peça rapidamente substituível. O pior é que tratar programadores como recursos fungíveis nem funciona, como postula a&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Brooks&#39;s_law&quot;&gt;Lei de Brooks&lt;/a&gt;&amp;nbsp;e como já discursaram vários autores, incluindo o Tom DeMarco em &lt;a href=&quot;http://www.google.com/products/catalog?q=peopleware&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;cid=8732329471760615040&amp;amp;ei=UC3YS-i8I4K0uAfD_qC4Bw&amp;amp;sa=X&amp;amp;oi=product_catalog_result&amp;amp;ct=result&amp;amp;resnum=3&amp;amp;ved=0CCMQ8wIwAg#ps-sellers&quot;&gt;Peopleware&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Há alguns anos atrás eu prestei uma consultoria a uma fábrica de software onde o membro mais antigo dentre os 60 programadores estava lá a uma ano e meio, e o tempo médio de permanência de um programador era de 6 meses. Ninguém achava que isso fosse um problema grave, pois havia um fluxo constante de currículos de novos programadores para eles contratarem e substituirem os que saiam.&amp;nbsp;Se na sua empresa se referem a você como &quot;o recurso,&quot; corra léguas.&lt;br /&gt;
&lt;br /&gt;
Eu gostei muito da sugestão do Fábio de se trocar o conceito para &quot;atelier de software&quot;. Isso me faz pensar em um local onde se misturam artesãos experientes e aprendizes, que trabalham juntos em todas as etapas do processo, dando aos aprendizes a oportunidade de crescerem e se tornarem mestres. Quem sabe isso não dá mais certo?</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/6115144037866240801/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2010/04/fabricas-de-software.html#comment-form' title='7 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/6115144037866240801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/6115144037866240801'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2010/04/fabricas-de-software.html' title='Fábricas de software'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-6374440407633798747</id><published>2010-04-27T09:19:00.000-03:00</published><updated>2010-04-27T09:19:04.182-03:00</updated><title type='text'>Resultados da pesquisa sobre salários de programadores - parte 3 - experiência</title><content type='html'>Na última postagem vimos que há uma correlação direta entre escolaridade e salário. Hoje vamos ver que o mesmo não acontece com o tempo de experiência. O gráfico abaixo mostra que os salários estão espalhados por todo o espectro e que ter mais experiência não significa necessariamente ter um salário mais alto.&lt;br /&gt;
&lt;br /&gt;
Por que será? Eu tenho algumas teorias. Primeiro, lembrem-se que a pesquisa era para profissionais que atuam com programação. Acontece que no Brasil é difícil seguir uma carreira longa atuando como programador. Programadores experientes acabam se transformando em &quot;analistas&quot; que não programam, ou então são levados a atuar na área gerencial.&lt;br /&gt;
&lt;br /&gt;
É uma pena. A programação é uma atividade difícil que leva muitos anos para se aprender a fazer bem feito. Quando os programadores estão começando a ficar realmente bons, são obrigados a mudar de carreira pelas &quot;forças de mercado&quot;. Eu já entrevistei dezenas de candidatos ao cargo de engenheiro de software e posso afirmar que é raríssimo encontrar um programador no Brasil com mais de 10 anos de experiência de mercado, e quem dirá com 20, 30 ou 40 anos de experiência. Esses profissionais existem em qualquer outra área, mas não na programação.&lt;br /&gt;
&lt;br /&gt;
Olhem o gráfico novamente. A vasta maioria dos pesquisados tem 6 anos ou menos de experiência. É muito pouco para haver uma variação significativa de salário. Dentro dessa faixa de experiência, é mais provável que outras variáveis tenham uma influência muito maior sobre os salários, como a escolaridade, região, tipo de atividade, e assim por diante.&lt;br /&gt;
&lt;br /&gt;
Onde estão os programadores com 20 anos de experiência? Deixem-me fazer uma pesquisa pessoal. No final desse ano completarei 20 anos de formado. Na minha turma formaram-se 25 cientistas da computação. Quantos deles ainda trabalham com programação? Não tenho certeza, pois perdi o contato com muitos deles. De cabeça, só consigo pensar em um: eu. Só que eu não passei esses 20 anos programando, não tenho 20 anos de experiência. Acredito que deva haver pelo menos 2 ou 3 outros na minha turma que ainda programam, mas não mais do que isso. Em outubro haverá minha reunião de turma, e aí saberei ao certo. Prometo contar pra vocês.&lt;br /&gt;
&lt;br /&gt;
E isso tudo quer dizer que então não há esperança para quem quer seguir carreira de programação? Há sim. À medida em que a indústria amadurece, as empresas percebem cada vez mais o valor dos programadores experientes. Na América do Norte já é comum existir planos de carreira puramente técnicos para aqueles que não querem transitar para o ramo gerencial. Aqui também isso é cada vez mais frequente, principalmente em empresas cujo ramo principal de atividade é a informática. Se você gosta de desenvolvimento de software, pode seguir em frente que você só vai ter de parar quando quiser.&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://public.tableausoftware.com/javascripts/api/viz_v1.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;object class=&quot;tableauViz&quot; height=&quot;629&quot; style=&quot;display: none;&quot; width=&quot;654&quot;&gt;&lt;param name=&quot;name&quot; value=&quot;Pesquisasalarial-programadores/Dashboard3&quot; /&gt;&lt;param name=&quot;toolbar&quot; value=&quot;yes&quot; /&gt;&lt;/object&gt;&lt;br /&gt;
&lt;noscript&gt;Experiência X Salário&lt;br /&gt;
&lt;a href=&quot;http://public.tableausoftware.com/views/Pesquisasalarial-programadores/Dashboard3&quot;&gt;&lt;img alt=&quot;Experiencia X Salario&quot; height=&quot;100%&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwOOYIWHLGZgCb3SjwlglPhemyQWI0JC2KrBmx3bJNsUATjuy-qg7FEegX5AP1EpQs9dvQh1DLWso1kBuPnEdtQ-hvbqw9wckm5t7JaI84A09X6FfKZHohhTGqt0cSlJGK8wkupkV5_Km3/s1600/Dashboard_3.png&quot; /&gt;&lt;/a&gt;&lt;/noscript&gt;&lt;br /&gt;
&lt;div style=&quot;color: black; font: normal 8pt verdana,helvetica,arial,sans-serif; height: 22px; margin-top: -6px; padding: 0px 10px 0px 0px; width: 654px;&quot;&gt;&lt;div style=&quot;padding-left: 538px;&quot;&gt;&lt;a href=&quot;http://www.tableausoftware.com/public?ref=http://public.tableausoftware.com/views/Pesquisasalarial-programadores/Dashboard3&quot; target=&quot;_blank&quot;&gt;Powered by Tableau&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/6374440407633798747/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2010/04/resultados-da-pesquisa-sobre-salarios.html#comment-form' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/6374440407633798747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/6374440407633798747'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2010/04/resultados-da-pesquisa-sobre-salarios.html' title='Resultados da pesquisa sobre salários de programadores - parte 3 - experiência'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwOOYIWHLGZgCb3SjwlglPhemyQWI0JC2KrBmx3bJNsUATjuy-qg7FEegX5AP1EpQs9dvQh1DLWso1kBuPnEdtQ-hvbqw9wckm5t7JaI84A09X6FfKZHohhTGqt0cSlJGK8wkupkV5_Km3/s72-c/Dashboard_3.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-5947956090888438878</id><published>2010-03-24T22:44:00.002-03:00</published><updated>2010-03-25T09:56:55.010-03:00</updated><title type='text'>Resultados da pesquisa sobre salários de programadores - parte 2 - escolaridade</title><content type='html'>Hoje vamos ver os resultados de escolaridade. O gráfico abaixo mostra o maior grau alcançado por cada participante. Como podemos ver, a grande maioria dos participantes tem graduação em alguma área relacionada à computação. Apenas um dos participantes tinha doutorado e, portanto, não aparece nos resultados. Aliás, isso reforça minha triste suspeita de que há muito poucos doutores no Brasil envolvidos em atividades de programação.&lt;br /&gt;
&lt;br /&gt;
Mais interessante é o gráfico de salários médios. Como podemos ver, o salário médio cresce de acordo com a escolaridade. Parece bom, mas isso nos leva a uma pergunta: quanto vale, por exemplo, um mestrado?&lt;br /&gt;
&lt;br /&gt;
Para responder a essa pergunta, vamos considerar apenas a região Sudeste para reduzirmos os efeitos regionais. A média salarial do graduado no Sudeste é de R$ 3.586,00. Já a média salarial do mestre é de R$ 5.107,00. A diferença é de R$ 1.521,00. Suponhamos que essa diferença se mantenha constante ao longo da carreira. Se o programador obtém o mestrado aos 25 anos e trabalha até os 60 anos, são 35 anos * 12 meses * R$ 1.521,00 = R$ 638.820,00. Ou seja, vale a pena fazer o mestrado, mesmo que você tenha de fazer um empréstimo no banco para pagar.&lt;br /&gt;
&lt;br /&gt;
É claro que não podemos ter certeza que há uma relação causal entre escolaridade e salário - pode ser que haja algum terceiro fator que ao mesmo tempo leva a pessoa a buscar um grau maior de escolaridade e a ter um emprego melhor. Não é garantido que fazer um mestrado ou uma pós vá melhorar seu salário.&lt;br /&gt;
&lt;br /&gt;
Aliás, eu sempre digo isso quando faço em universidades minha palestra sobre o que fazer depois de se formar: um diploma ou outro título te ajuda a conseguir um emprego, mas não te ajuda a ficar nele. Não leva mais do que três meses para um empregador perceber se o diploma é só um pedaço de papel ou se tem valor real.&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://public.tableausoftware.com/javascripts/api/viz_v1.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;object class=&quot;tableauViz&quot; height=&quot;629&quot; style=&quot;display: none;&quot; width=&quot;654&quot;&gt;&lt;param name=&quot;name&quot; value=&quot;Pesquisasalarial-programadores/Dashboard2&quot; /&gt;&lt;param name=&quot;toolbar&quot; value=&quot;yes&quot; /&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;noscript&gt;Escolaridade&lt;br /&gt;
&lt;a href=&quot;http://micosderealejo.blogspot.com/2010/03/resultados-da-pesquisa-sobre-salarios_24.html&quot;&gt;&lt;img alt=&quot;Escolaridade &quot; height=&quot;100%&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVGQxg2ItOEoAypDjDF28PBUSJpq8g8yR3lUXjdY9aZONeoAqXihVeGBmqcUlzDC0youaVbIIK9mfzEJau3SxzfugfJUM5w2h8XWQwUxeTYlGIDROeC703WgH6RW1yeaZ-PJAZZvpmvrzZ/s320/Dashboard_2.png&quot; /&gt;&lt;/a&gt;&lt;/noscript&gt;&lt;br /&gt;
&lt;div style=&quot;color: black; font: normal 8pt verdana,helvetica,arial,sans-serif; height: 22px; margin-top: -6px; padding: 0px 10px 0px 0px; width: 654px;&quot;&gt;&lt;div style=&quot;padding-left: 538px;&quot;&gt;&lt;a href=&quot;http://www.tableausoftware.com/public?ref=http://public.tableausoftware.com/views/Pesquisasalarial-programadores/Dashboard2&quot; target=&quot;_blank&quot;&gt;Powered by Tableau&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/5947956090888438878/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2010/03/resultados-da-pesquisa-sobre-salarios_24.html#comment-form' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/5947956090888438878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/5947956090888438878'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2010/03/resultados-da-pesquisa-sobre-salarios_24.html' title='Resultados da pesquisa sobre salários de programadores - parte 2 - escolaridade'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVGQxg2ItOEoAypDjDF28PBUSJpq8g8yR3lUXjdY9aZONeoAqXihVeGBmqcUlzDC0youaVbIIK9mfzEJau3SxzfugfJUM5w2h8XWQwUxeTYlGIDROeC703WgH6RW1yeaZ-PJAZZvpmvrzZ/s72-c/Dashboard_2.png" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-5192056775624017478</id><published>2010-03-23T08:57:00.003-03:00</published><updated>2010-03-23T09:01:33.054-03:00</updated><title type='text'>Para que serve o teste de software?</title><content type='html'>No final de janeiro eu fui a Melbourne (na &lt;a href=&quot;http://maps.google.com.br/maps?f=q&amp;amp;source=s_q&amp;amp;hl=pt-BR&amp;amp;geocode=&amp;amp;q=melbourne,+fl&amp;amp;sll=-14.179186,-50.449219&amp;amp;sspn=132.670047,223.066406&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Melbourne,+Brevard,+Fl%C3%B3rida,+United+States&amp;amp;ll=28.08652,-80.606689&amp;amp;spn=5.024323,6.970825&amp;amp;z=8&quot;&gt;Florida&lt;/a&gt;, não na &lt;a href=&quot;http://maps.google.com.br/maps?f=q&amp;amp;source=s_q&amp;amp;hl=pt-BR&amp;amp;geocode=&amp;amp;q=melbourne&amp;amp;sll=28.08652,-80.606689&amp;amp;sspn=5.024323,6.970825&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Melbourne+Victoria,+Australia&amp;amp;ll=-33.468108,141.503906&amp;amp;spn=37.620916,55.766602&amp;amp;z=5&quot;&gt;Austrália&lt;/a&gt;) participar do &lt;i&gt;&lt;a href=&quot;http://www.wtst.org/&quot;&gt;Workshop on Teaching Software Testing&lt;/a&gt;&lt;/i&gt;, onde professores acadêmicos, instrutores de cursos em empresas e testadores praticantes da indústria se reuniram para trocar suas experiências sobre ensino de teste. O tema de discussão este ano era o teste com base no código. Éramos 22 participantes dos Estados Unidos, Canada e eu do Brasil. Seguem alguns pontos que foram abordados nas discussões e que eu achei relevantes.&lt;br /&gt;
&lt;br /&gt;
A maioria dos programadores e principalmente estudantes norte-americanos dos programas de graduação em Engenharia de Software não acham que precisam testar seus programas com rigor - aqui rigor não significa nem formalismo matemático, nem exaustão, uma vez que é impossível, mas sim uma forma sistemática do programador testar seus programas munido de técnicas apropriadas. A maioria dos programadores dá um tiro no próprio pé fazendo alguns poucos testes aleatórios. Por mais que a universidade tente mostrar a necessidade e que o teste seja também papel do desenvolvedor/programador, os alunos só se convencem disso quando vão para o mercado.&lt;br /&gt;
&lt;br /&gt;
As experiências no ensino de desenvolvimento dirigido por testes (TDD) são frustrantes. A maior parte dos alunos não utiliza a metodologia pois TDD não pode ser considerada um técnica por si só. E uma vez que é apenas uma metodologia, é dificil para os professores exigirem dos alunos a aplicação da mesma. Mesmo sabendo que serão penalizados, os alunos não aplicam o TDD e só criam os casos de teste após terem escrito o código. Estou falando de TDD quando o assunto é teste, mas sabemos que as grandes contribuições de TDD estão na evolução de um bom projeto, no entendimento maior do problema em questão antes da codificação. Desta forma, os alunos que imaginam que só precisam criar casos de teste e que tanto faz antes como depois do código perdem o melhor da metodologia. São os profissionais com essa atitude que chegam ao mercado. &amp;nbsp;Se TDD fosse aplicado desde as primeiras disciplinas de programação, talvez assim os alunos percebessem a&lt;br /&gt;
vantagem da abordagem. Algumas universidades americanas vão investir neste caminho.&lt;br /&gt;
&lt;br /&gt;
No passado, teste servia o propósito limitado de detectar erros nos programas. Através da quatidade de erros encontrados no programa era possível derivar dos testes um indicador da qualidade do programa. Esse era o tempo em que os programas eram monolíticos ou compostos de pequenos módulos. Hoje em dia cada componente utilizado é de uma complexidade grande e possui suas próprias características intrínsecas. Princípios de ocultação de informacao e interfaces bem definidas foram aplicados e a engenharia de software se orgulha destes avanços. No entanto, o comportamento de um determinado módulo ou componente precisa ser descoberto pelo programador que usa este módulo ou componente, e a maneira de descobrir este comportamento é através de testes. Muitas vezes a documentação é escassa ou descreve bem o que se espera que o componente faça, mas na verdade o comportamento dele é um pouco diferente. Este propósito do teste de descobrir ou certificar o comportamento dos componentes é completamente diferente do propósito de detectar defeitos. Quais técnicas de teste devem ser usadas neste caso?&lt;br /&gt;
&lt;br /&gt;
Produzir casos de teste relevantes continua sendo o problema mais difícil de se resolver em testes, principalmente no teste considerando o código. Como &lt;a href=&quot;http://micosderealejo.blogspot.com/2009/11/pare-de-escrever-testes-inuteis.html&quot;&gt;o Torsten disse anteriormente&lt;/a&gt;, se o foco de teste passa a ser a cobertura no sentido que passei por aqui, é melhor projetar os casos de teste antes de escrever o código e com base na sua especificação. Mas será que usaríamos os mesmos casos de teste para testar as três versões de código abaixo da função fatorial? (exemplos de código fornecidos por &amp;nbsp;&lt;a href=&quot;http://www.nawwar.net/blog/&quot;&gt;Nawwar Kabbani&lt;/a&gt; - participante do workshop.)&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;public intfactorial (intn) {&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; if(n == 0)&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; else&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return * factorial(n –1);&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;}&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;public int factorial (int n) {&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; if (n == 0) return 1;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; else if (n == 1) return 1;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; else if (n == 2) return 2;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; else if (n == 3) return 6;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; else if (n == 4) return 24;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; else if (n == 5) return 120;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; else if (n == 6) return 720;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; else if (n == 7) return 5040;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; else if (n == 8) return &amp;nbsp;40320;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; else if (n == 9) return &amp;nbsp;362880;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; else if (n == 10) return 3628801; // this one looks odd!&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; else if (n == 11) return 39916800;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; else if (n == 12) return 479001600;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; else return -1; // or throw an exception..&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;}&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;private static final int FACTORIAL_CACHE[] = new &amp;nbsp;int[]&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;{1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880,&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;362801, 39916800, 479001600};&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;public int factorial (int n) {&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; return FACTORIAL_CACHE[n];&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;}&lt;/div&gt;&lt;br /&gt;
Com certeza, vendo os três códigos conseguimos pensar em casos de testes que gostaríamos de fazer. Alguns com base na definição do fatorial, outros com base no código que foi apresentado. No último caso a cobertura não vai ajudar em nada.&lt;br /&gt;
&lt;br /&gt;
Para terminar, eu recomendo fortemente o &lt;a href=&quot;http://www.gotest.biz/ebts2010/programacao.html&quot;&gt;mini curso do Doug Hoffman &lt;/a&gt;que participará do Encontro Brasileiro de Testes de Software (&lt;a href=&quot;http://www.gotest.biz/ebts2010/&quot;&gt;IV EBTS&lt;/a&gt;) , ele na minha opiniao é um grande praticante com muitas estórias de sucesso sobre testes de software para contar. Seu objetivo é coletar várias estórias para compor um livro que possa ajudar a comprovar os diversos propósitos de testes e sua necessidade para a sobrevivência dos programadores.</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/5192056775624017478/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2010/03/para-que-serve-o-teste-de-software.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/5192056775624017478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/5192056775624017478'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2010/03/para-que-serve-o-teste-de-software.html' title='Para que serve o teste de software?'/><author><name>Guta</name><uri>http://www.blogger.com/profile/04397852981510865116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZH-ex5AkKqs8W_liLUkhmhxPKE08DVbnEzfjgbhvOqaibMhGDss743Ba6Ullp4Cfw0WUeXEytU3Nv3UQCqBtAPzyR68XcqrF5Xn9YvEY7PK5OHKV7MczxRWuoxNQ-i1M/s220/DSC_0535.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-5616690379785703080</id><published>2010-03-19T16:11:00.002-03:00</published><updated>2010-03-19T16:18:31.998-03:00</updated><title type='text'>Resultados da pesquisa sobre salários de programadores - parte 1 - dados agregados por estado</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: 13px;&quot;&gt;Custou, mas começou a sair. Foram 247 respostas distintas (na verdade já são 270, mas eram 247 quando fiz o corte, depois eu atualizo com os novos dados). Nossos agradecimentos a todos que responderam.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;Hoje vamos ver os dados agregados por estado. Para criar a visualização, usei a fantástica, sensacional ferramenta gratuita Tableau Public. Não tenho palavras pra dizer o quanto essa ferramenta é legal. Ela permite criar visualizações interativas que você pode incluir no seu site.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;O mais importante ao investigar os resultados da pesquisa é saber que não se trata de uma amostragem aleatória e, portanto, não se pode tirar conclusões generalizáveis. Como se pode ver pelo gráfico abaixo, predominaram as respostas vindas de Minas Gerais, o lar do Micos, e da Paraíba, graças ao Guilherme Germoglio que espalhou a notícia. Naturalmente, não podemos dizer que esses dois estados concentram a maioria dos programadores do Brasil.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;Dentre os que declararam o local onde trabalham, excluí para esse gráfico todos os que trabalham fora do Brasil e os residentes do Piauí e do Pará, pois cada estado contribuiu com uma única resposta.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;O gráfico nos mostra alguns dados interessantes: tanto a média salarial quanto o nível de experiência dos programadores do Nordeste está bem abaixo da média dos de outras regiões. Por outro lado, o nível de satisfação médio é bastante uniforme em todos os estados. Nota-se uma discrepância na média salarial do Distrito Federal, muito acima da média nacional.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px;&quot;&gt;Experimentem brincar com o gráfico abaixo selecionando, por exemplo, apenas os programadores que tem graduação, ou apenas aqueles com 3 anos ou menos de experiência.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;script src=&quot;http://public.tableausoftware.com/javascripts/api/viz_v1.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;object class=&quot;tableauViz&quot; height=&quot;632&quot; style=&quot;display: none;&quot; width=&quot;654&quot;&gt;&lt;param name=&quot;name&quot; value=&quot;Pesquisasalarial-programadores/Dashboard1&quot; /&gt;&lt;param name=&quot;toolbar&quot; value=&quot;yes&quot; /&gt;&lt;/object&gt;&lt;br /&gt;
&lt;noscript&gt;&lt;br /&gt;
&lt;a href=&quot;http://micosderealejo.blogspot.com/2010/03/resultados-da-pesquisa-sobre-salarios_19.html&quot;&gt;&lt;img alt=&quot;Dashboard 1 &quot; height=&quot;100%&quot; src=&quot;http://public.tableausoftware.com/static/images/Pesquisasalarial-programadores-Dashboard1_rss.png&quot; /&gt;&lt;/a&gt;&lt;/noscript&gt;&lt;br /&gt;
&lt;div style=&quot;color: black; font: normal 8pt verdana,helvetica,arial,sans-serif; height: 22px; margin-top: -6px; padding: 0px 10px 0px 0px; width: 654px;&quot;&gt;&lt;div style=&quot;padding-left: 538px;&quot;&gt;&lt;a href=&quot;http://www.tableausoftware.com/public?ref=http://public.tableausoftware.com/views/Pesquisasalarial-programadores/Dashboard1&quot; target=&quot;_blank&quot;&gt;Powered by Tableau&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
Semana que vem tem mais.</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/5616690379785703080/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2010/03/resultados-da-pesquisa-sobre-salarios_19.html#comment-form' title='27 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/5616690379785703080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/5616690379785703080'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2010/03/resultados-da-pesquisa-sobre-salarios_19.html' title='Resultados da pesquisa sobre salários de programadores - parte 1 - dados agregados por estado'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><thr:total>27</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-3298357115304168376</id><published>2010-03-08T09:04:00.000-03:00</published><updated>2010-03-08T09:04:38.035-03:00</updated><title type='text'>Feliz Dia Internacional da Mulher</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCqtlQky-f-Whv-6uvPfjP8WcR56JYSWxv2pmdWtgJgdlSX332XxkP2Padw-TAW9nd76BZh-trSChv6G4yaCox7rWa0NUHBAbGJFg6sg6fe9JaSpymKdJUHLj6CPEzkRtF6kO9D3SNF3H8/s1600-h/ComputerEngineerBarbie.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCqtlQky-f-Whv-6uvPfjP8WcR56JYSWxv2pmdWtgJgdlSX332XxkP2Padw-TAW9nd76BZh-trSChv6G4yaCox7rWa0NUHBAbGJFg6sg6fe9JaSpymKdJUHLj6CPEzkRtF6kO9D3SNF3H8/s200/ComputerEngineerBarbie.jpg&quot; width=&quot;177&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Hoje é Dia Internacional da Mulher. Eu já fui defensor ávido e batalhador pelo crescimento do número de mulheres na computação, mas um dia fiquei tão frustrado que &lt;a href=&quot;http://tpnelson2.blogspot.com/2008/09/mulheres-na-informtica-desisto.html&quot;&gt;desisti publicamente&lt;/a&gt;. Só que semana passada a Guta me mostrou uma apresentação super legal da Pamela Fox, do Google, chamada &lt;i&gt;&lt;a href=&quot;http://www.scribd.com/doc/27710281/I%E2%80%99m-a-Barbie-Girl-in-a-CS-World&quot;&gt;I&#39;m a Barbie Girl in a CS World&lt;/a&gt;&lt;/i&gt;. Ela fala sobre a experiência dela de ser mulher na computação. Vale a pena conferir. Me fez crer que ainda há esperança.&lt;br /&gt;
&lt;br /&gt;
A Guta achou o link para a apresentação no meio de uma discussão que está acontecendo na lista da Sociedade Brasileira de Computação (sbc-l) sobre a &lt;a href=&quot;http://shop.mattel.com/product/index.jsp?productId=4032107&quot;&gt;nova boneca Barbie&lt;/a&gt; que foi lançada, cuja profissão é Engenheira de Computação. Tem gente que achou bom, tem gente que achou ruim. Eu, pessoalmente, achei a boneca de muito bom gosto e vou comprar duas, uma pra cada uma das minhas filhas.</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/3298357115304168376/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2010/03/feliz-dia-internacional-da-mulher.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/3298357115304168376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/3298357115304168376'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2010/03/feliz-dia-internacional-da-mulher.html' title='Feliz Dia Internacional da Mulher'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCqtlQky-f-Whv-6uvPfjP8WcR56JYSWxv2pmdWtgJgdlSX332XxkP2Padw-TAW9nd76BZh-trSChv6G4yaCox7rWa0NUHBAbGJFg6sg6fe9JaSpymKdJUHLj6CPEzkRtF6kO9D3SNF3H8/s72-c/ComputerEngineerBarbie.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-59404823041236026</id><published>2010-03-02T13:34:00.000-03:00</published><updated>2010-03-02T13:34:24.644-03:00</updated><title type='text'>Pesquisa sobre remuneração de programadores</title><content type='html'>Olá caros leitores,&lt;br /&gt;
&lt;br /&gt;
A equipe do Micos de Realejo está escrevendo um grande post sobre o estado atual da remuneração na indústria de software. No entanto, estamos sentindo falta de dados concretos e contamos assim com a colaboração dos leitores.&lt;br /&gt;
&lt;br /&gt;
Elaboramos uma pesquisa curta que deve levar cerca de 3 minutos para responder. A pesquisa é destinada apenas àqueles que de alguma forma trabalham com programação.&lt;br /&gt;
&lt;br /&gt;
A pesquisa é totalmente anônima, todas as questões são opcionais e dados individuais não serão divulgados. Divulgaremos apenas resultados agregados.&lt;br /&gt;
&lt;br /&gt;
Por favor divulguem para seus colegas para que possamos obter uma quantidade significativa de dados para análise.&lt;br /&gt;
&lt;br /&gt;
O link para a pesquisa é:&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-family: arial, sans-serif; font-size: 15px;&quot;&gt;&lt;a href=&quot;http://bit.ly/9FpAPV&quot; style=&quot;color: #1c51a8;&quot; target=&quot;_blank&quot;&gt;http://bit.ly/9FpAPV&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Obrigado,&lt;br /&gt;
Torsten</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/59404823041236026/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2010/03/pesquisa-sobre-remuneracao-de.html#comment-form' title='8 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/59404823041236026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/59404823041236026'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2010/03/pesquisa-sobre-remuneracao-de.html' title='Pesquisa sobre remuneração de programadores'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-7734607782694646062</id><published>2010-02-24T10:16:00.003-03:00</published><updated>2010-02-24T10:32:30.901-03:00</updated><title type='text'>Complexidade</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  ;font-family:arial, sans-serif;font-size:small;&quot;&gt;&lt;p&gt;Relendo o excelente artigo &lt;a href=&quot;http://www.drive.com.au/Editorial/ArticleDetail.aspx?ArticleID=56781&amp;amp;vf=26&quot;&gt;Anatomy of a Crash&lt;/a&gt;, fiquei impressionado de novo não só com a rapidez com que uma batida é tratada, mas também com a complexidade do sistema todo. O texto narra a reconstrução de uma batida simulada como parte de um estudo em segurança de veículos:&lt;span style=&quot;white-space: normal; -webkit-user-modify: read-only; &quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; font-weight: bold; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;0 milliseconds&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - An external object touches the driver&#39;s door.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;1 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - The car&#39;s door pressure sensor detects a pressure wave.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;2 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - An acceleration sensor in the C-pillar behind the rear door also detects a crash event.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;2.5 ms &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;- A sensor in the car&#39;s centre detects crash vibrations.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;5 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - Car&#39;s crash computer checks for insignificant crash events, such as a shopping trolley impact or incidental contact. It is still working out the severity of the crash. Door intrusion structure begins to absorb energy.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;6.5 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - Door pressure sensor registers peak pressures.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;7 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - Crash computer confirms a serious crash and calculates its actions.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;8 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - Computer sends a &quot;fire&quot; signal to side airbag. Meanwhile, B-pillar begins to crumple inwards and energy begins to transfer into cross-car load path beneath the occupant.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;8.5 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - Side airbag system fires.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;15 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - Roof begins to absorb part of the impact. Airbag bursts through seat foam and begins to fill.All over in the blink of an eye&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;17 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - Cross-car load path and structure under rear seat reach maximum load.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;Airbag covers occupant&#39;s chest and begins to push the shoulder away from impact zone.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;20 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - Door and B-pillar begin to push on front seat. Airbag begins to push occupant&#39;s chest away from the impact.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;27 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - Impact velocity has halved from 50 km/h to 23.5 km/h. A &quot;pusher block&quot; in the seat moves occupant&#39;s pelvis away from impact zone. Airbag starts controlled deflation.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;30 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - The Falcon has absorbed all crash energy. Airbag remains in place. For a brief moment, occupant experiences maximum force equal to 12 times the force of gravity.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;45 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - Occupant and airbag move together with deforming side structure.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;50 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - Crash computer unlocks car&#39;s doors. Passenger safety cell begins to rebound, pushing doors away from occupant.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;70 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - Airbag continues to deflate. Occupant moves back towards middle of car.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;Engineers classify crash as &quot;complete&quot;.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;150-300 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - Occupant becomes aware of collision.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;Imagine um site moderno, que tem código rodando no browser e código no servidor (números inventados de cabeça mas não totalmente irreais):&lt;/span&gt;&lt;span style=&quot;white-space: normal; -webkit-user-modify: read-only; &quot;&gt;&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;0 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - usuário digita o endereço de uma página do seu site&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;1 &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - o código do cliente determina o que fazer com a URL e dispara uma chamada ao servidor solicitando dados&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;16 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-style: italic; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;front-end&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;do&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; site recebe o pedido, determina que parte do site deve ser executada a partir da URL e &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;dos&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; dados da requisição HTTP&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;17 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - serviço responsável por tratar a parte do site que o usuário quer &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;recebe&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; o pedido, decodifica parâmetros e dispara chamadas remotas a dezenas de &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-style: italic; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;back-ends&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;20 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - cada &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-style: italic; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;back-end&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; envolvido no serviço recebe uma requisição e acessa alguma forma de banco de dados para buscar as informações necessárias&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;25 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - serviço recebe os dados de volta e calcula resposta a ser enviada de volta para o cliente, empacota tudo em algum objeto e retorna&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;40 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - browser recebe resposta HTTP, chama &lt;i&gt;callback&lt;/i&gt; do cliente para tratar os dados&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;42 ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - cliente preenche interface com os dados recebidos, montando a árvore DOM para a próxima interação&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 17px; &quot;&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-weight: bold; font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;45-150ms&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt; - enquanto imagens carregam, usuário começa a ler o texto que já está disponível, possivelmente tomando a próxima ação (se o usuário está no &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;IE6&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.833333em;&quot;&gt;, a primeira requisição provavelmente só foi disparada pro servidor agora...)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;Essa descrição é propositadamente superficial. Alguns dos detalhes omitidos são autenticação, serialização e desserialização de pedidos e respostas, &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-style: italic; font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;caching &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;em vários níveis do sistema, &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-style: italic; font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;sharding&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt; e balanceamento de carga, &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-style: italic; font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;logging&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;, validação de entrada no cliente e no servidor, o modelo ou esquema de armazenamento de dados para acesso eficiente, bordinhas redondas e degradês em todos os browsers, monitoramento, XSS, XSRF, &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-style: italic; font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;cookies&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;, injeção de dependências, internacionalização, e as pilhas&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot;color: rgb(0, 0, 0);   font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt; do&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot;color: rgb(0, 0, 0);   font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt; sistema operacional e de rede de todas as máquinas envolvidas no processo. Além disso, cada &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-style: italic; font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;front-end&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt; e &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-style: italic; font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;back-end &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;envolvido tem suas próprias camadas de complexidade, ou abstração. Ah, e tem um &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-style: italic; font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;bug&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt; aqui e outro ali.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;A grande vantagem pra quem trabalha na engenharia de software sobre outros tipos de engenharia em termos de confiança no sistema é que se tem a oportunidade de testar exatamente o código que vai rodar em produção durante o desenvolvimento. Nós podemos inflar o &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-style: italic; font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;airbag&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt; que vai ser instalado no próximo carro da linha de produção, acender cada fósforo que vai entrar na próxima caixinha. O perigo de confiar totalmente nisso é que a soma da compreensão das partes não é a compreensão do todo.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;E quando tudo falhar em produção, teremos aquela grande imagem cheia de detalhes para depurar; analisando várias partes descobriremos que aquele &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-style: italic; font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;airbag&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt; que nós sabíamos que funcionava não foi inflado. Onde no meio de tantas interações ficou faltando o disparo do &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-style: italic; font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;airbag&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt; &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;praquele&lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt; usuário que teve uma batida a um ângulo de 23ᵒ, trafegando a 45km/h com 2 passageiros numa tarde de sábado de um ano bissexto?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;Só não se sente intimidado por um site moderno, ou pelos &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-style: italic; font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;bugs &lt;/span&gt;&lt;span x=&quot;y&quot;   style=&quot; color: rgb(0, 0, 0);  font-family:verdana, arial, sans-serif;font-size:0.916667em;&quot;&gt;que podem aparecer nele, quem não sabe como ele funciona.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/7734607782694646062/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2010/02/complexidade.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/7734607782694646062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/7734607782694646062'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2010/02/complexidade.html' title='Complexidade'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/18363371609610808642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-1559659710485789231</id><published>2010-02-02T13:58:00.000-02:00</published><updated>2010-02-02T13:58:55.840-02:00</updated><title type='text'>20 lições importantes</title><content type='html'>Recentemente a Guta me disse que eu estava muito ranzinza nesse blog e que faltava humildade. Reclamei do Joel, reclamei do artigo sobre manutenção, disse que meu artigo era melhor que o do Stroustrup... ela tem razão e não quero que esse blog seja um lugar para se falar mal dos outros. Assim, começo o ano de 2010 falando muito bem de um artigo que li durante as férias: &lt;a href=&quot;http://www.dcs-media.com/Archive/20-20-top-20-programming-lessons-ive-learned-in-20-years-FH&quot;&gt;Top 20 programming lessons I&#39;ve learned in 20 years&lt;/a&gt;. O autor é Jonathan Danylko. Eu concordo com tudo!&lt;br /&gt;
&lt;br /&gt;
Segue abaixo então minha tradução livre do artigo. Aliás, livre até demais: eu mantive as 20 lições intactas, mas os comentários são meus.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;b&gt;Decida quanto tempo você quer gastar com um problema antes de começar.&lt;/b&gt; Ao invés de ficar pelejando por uma semana com um problema que deveria levar um dia pra resolver, como eu fiz na semana passada, decida antecipadamente quanto tempo você vai dedicar a ele. Pode ser uma semana, um dia, uma hora, 30 minutos, não importa. Se você não conseguir resolver o problema no tempo em que você se permitiu trabalhar nele, procure ajuda ou repense suas prioridades ao invés de tentar ser o super-programador.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Uma linguagem é uma linguagem é uma linguagem&lt;/b&gt;. Um sábio professor uma vez me disse que o problema que o seu programador mais júnior está tendo com a namorada tem mais impacto no sucesso do seu projeto do que a linguagem de programação que você escolher. Ele tinha razão. Escolha uma linguagem que te dê conforto, e pronto.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Não exagere nos design patterns&lt;/b&gt;. Pense duas vezes antes de usá-las - se houver uma solução mais simples, use-a.&amp;nbsp;&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Faça backups do seu trabalho diariamente&lt;/b&gt;.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Você não é o melhor programador. Conforme-se com isso&lt;/b&gt;. Sempre tem alguém melhor que você. &amp;nbsp;Aprenda com eles ao invés de tentar ser melhor.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Aprenda a aprender mais&lt;/b&gt;. Se você não está gastando pelo menos 50% do seu tempo aprendendo, sua produtividade está piorando. Sim, parece um paradoxo, mas não é.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Mudanças são constantes&lt;/b&gt;. O que você sabe hoje não vai ser tão importante amanhã. Diversifique seus conhecimentos.&amp;nbsp;&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Apoie os menos experientes&lt;/b&gt;. Ajudar os programadores da sua equipe a se tornarem melhores é o melhor investimento a longo prazo que você pode fazer.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Simplifique seu algoritmo&lt;/b&gt;. Quando terminar, volte atrás e veja o que você pode fazer para tornar seu código mais simples e fácil de ler. O futuro agradece.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Documente seu código&lt;/b&gt;. De novo, o futuro agradece. Aliás, quem provavelmente mais agradecerá será você mesmo.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Teste, teste, teste&lt;/b&gt;.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Celebre cada sucesso&lt;/b&gt;. Não espere uma data longínqua para se dar os parabéns. Programar é cansativo. Comemore cada passo a frente e cada bug removido, da maneira que preferir. Só não comemore comendo chocolate, como eu faço.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Faça revisões de código&lt;/b&gt;. No Google cada linha de código que é escrita é revisada por pelo menos um outro programador. Nenhuma outra atividade é tão importante para se garantir a qualidade dos sistemas. Mesmo que você não chegue a esse extremo, peça a seus colegas que revisem as partes importantes e ofereça-se para fazer o mesmo.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Estude seu código antigo&lt;/b&gt;. Leia código que você escreveu quando ainda não era tudo isso e maravilhe-se com o quanto você aprendeu desde então.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Tenha senso de humor&lt;/b&gt;. Ha ha.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Evite trabalhar com programadores possessivos ou prepotentes&lt;/b&gt;. O possessivo é aquele que não permite que ninguém altere ou critique seu código; ele pode arruinar seu projeto. O prepotente é aquele que tem sempre a última palavra; ele vai prejudicar sua auto-estima.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Nenhum projeto é simples&lt;/b&gt;. Nenhum. Não existe nada de qualidade em computação que possa ser feito &quot;rapidinho, em dois dias&quot;.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Cuidado com o excesso de confiança&lt;/b&gt;. Enquanto não estiver funcionando e aprovado, nunca está 90% completo. Os 10% que faltam em geral levam o mesmo tempo que você gastou com os 90%.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Software nunca está pronto&lt;/b&gt;.&amp;nbsp;Leia o post&amp;nbsp;&lt;a href=&quot;http://micosderealejo.blogspot.com/2009/10/persistir-ou-jogar-tudo-fora.html&quot;&gt;Persistir ou jogar tudo fora?&lt;/a&gt;&amp;nbsp;&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Paciência é uma virtude&lt;/b&gt;. Saiba esperar a hora certa de implementar; antes tente entender seu problema. Quando as coisas derem errado, procure entender por que ao invés de sair tentando qualquer coisa.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/1559659710485789231/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2010/02/20-licoes-importantes.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/1559659710485789231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/1559659710485789231'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2010/02/20-licoes-importantes.html' title='20 lições importantes'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-1443555961277413765</id><published>2009-12-23T09:10:00.000-02:00</published><updated>2009-12-23T09:10:19.973-02:00</updated><title type='text'>Bjarne Stroustrup também lê o &quot;Micos&quot;</title><content type='html'>&lt;a href=&quot;http://itmanagement.earthweb.com/img/2008/12/bjarne-stroustrup.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;http://itmanagement.earthweb.com/img/2008/12/bjarne-stroustrup.jpg&quot; width=&quot;193&quot; /&gt;&lt;/a&gt;Lembram-se dos posts recentes sobre o &lt;a href=&quot;http://micosderealejo.blogspot.com/2009/10/do-desencontro-entre-universidade-e.html&quot;&gt;desencontro&lt;/a&gt; entre &lt;a href=&quot;http://micosderealejo.blogspot.com/2009/10/do-desencontro-entre-universidade-e_28.html&quot;&gt;universidade&lt;/a&gt; e &lt;a href=&quot;http://micosderealejo.blogspot.com/2009/10/do-desencontro-entre-universidade-e_29.html&quot;&gt;indústria&lt;/a&gt;? Pois parece que o criador do C++, &lt;a href=&quot;http://en.wikipedia.org/wiki/Bjarne_Stroustrup&quot;&gt;Bjarne Stroustrup&lt;/a&gt;, também leu e resolveu escrever a sua versão, que aparece na Communications of the ACM de Janeiro 2010. O artigo se chama &quot;&lt;a href=&quot;http://cacm.acm.org/magazines/2010/1/55760-what-should-we-teach-new-software-developers-why/fulltext&quot;&gt;What should we teach new software developers? Why?&lt;/a&gt;&quot; (obrigado &lt;a href=&quot;http://osum.sun.com/profile/GuilhermeGermoglio&quot;&gt;Guilherme&lt;/a&gt; pelo share no Reader).&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Se você se interessa pelo tema, leia o artigo agora ou durante o feriado. É bem legal e mais bem escrito que os meus, apesar dos meus serem mais precisos e menos genéricos em suas colocações, modéstia a parte.&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Um bom Natal para todos!&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/1443555961277413765/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2009/12/bjarne-stroustrup-tambem-le-o-micos.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/1443555961277413765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/1443555961277413765'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2009/12/bjarne-stroustrup-tambem-le-o-micos.html' title='Bjarne Stroustrup também lê o &quot;Micos&quot;'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2393797019373926980.post-5662751665253867525</id><published>2009-12-17T13:19:00.001-02:00</published><updated>2009-12-17T13:20:14.377-02:00</updated><title type='text'>Papai Noel, me dê usuários no Natal</title><content type='html'>Sim, Dezembro é um mês lento para os miquinhos que só conseguem sonhar com sonecas debaixo de coqueiros em praias tropicais. Enquanto isso não acontece, vamos falar sobre aqueles que são ao mesmo tempo a bênção e a maldição de todo sistema: os usuários.&lt;br /&gt;
&lt;br /&gt;
Ter usuários é uma benção. Se você não tem usuários, todo seu esforço foi em vão, inútil, jogado fora. Todo sistema quer ter usuários pra provar pra si mesmo que merece existir. Não ter usuários resulta em aposentadoria precoce.&lt;br /&gt;
&lt;br /&gt;
Ao mesmo tempo, ter usuários é uma maldição terrível. A partir do instante em que o primeiro deles clica o primeiro botão no seu sistema novinho em folha e recém-lançado, seus problemas começam. Os problemas são:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. Dados&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Enquanto não há dados de ninguém no seu sistema além das coisas engraçadinhas que você colocou lá nos seus testes, você pode mudar e desmudar o que quiser. Quando aparece a primeira informação de verdade, você passa a ter problemas. Não é mais possível fazer aquelas pequenas ou grandes mudanças sem pensar no efeito das mudanças sobre os dados que estão lá. Infelizmente o efeito é muitas vezes devastador: além de mudar seu sistema, você precisa transformar os dados existentes em dados que tem as propriedades novas que você quer. Tudo isso, é claro, enquanto seus usuários não param de jogar dados que você não quer pra dentro do seu banco de dados.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;A solução&lt;/i&gt;: ao projetar seu sistema, antecipe as dificuldades de migração de dados e crie mecanismos para fazê-la facilmente. Por exemplo, garanta que sua camada de modelo é capaz de duplicar toda escrita em dois canais diferentes e ler de ambos também. Assim, você conseguirá fazer uma transição suave durante a qual tudo é escrito nas duas bases de dados. Quando isso estiver funcionando, você pode desligar a escrita na base antiga e ir copiando os dados para a base nova, enquanto o sistema continua funcionando e lendo das duas bases.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. Comportamentos&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Seus usuários vão se esforçar pra aprender a usar seu sistema. Como não desistiram, presumo que seu sistema seja bom. Acontece que se você mudar qualquer coisa que atrapalhe o esforço que eles investiram no aprendizado, eles vão te odiar, mesmo que a mudança tenha sido pra melhor. Aliás, não importa o que você faça, alguém sempre vai odiar.&lt;br /&gt;
&lt;br /&gt;
Imagine que seus usuários tinham um limite ridiculamente pequeno de dados que podiam guardar no seu site. Imagine agora que de um dia pro outro você acabe com os limites e permita uso ilimitado. Toda funcionalidade permaneceu inalterada. Eu aposto o dinheiro que você quiser que algum infeliz vai reclamar e dizer que preferia quando tinha limites, pois forçava ele a se organizar melhor. A vida é assim.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;A solução&lt;/i&gt;: como eu queria ter uma solução pra esse problema... o máximo que se pode fazer é tornar cada &amp;nbsp;atualização a menor possível. Se você quer fazer várias atualizações, contenha-se e faça uma de cada vez para dar aos usuários o tempo pra se acostumarem com a nova forma de se usar o sistema. Se você quer fazer mudanças radicais, permita que os usuários retornem ao modo antigo de ser, pelo menos durante um tempo.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3. Comunicação&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Você mudava qualquer coisa e só tinha de virar pro lado e avisar pro seu colega que a mudança estava pronta. Agora não é mais tão simples assim. Os usuários não entendem quando coisas mudam sem explicações. Toda vez que alguma coisa relevante mudar (tipo toda semana) você vai ter de dar um jeito de explicar aos usuários. O problema é que é difícil ser ouvido. Ninguém quer ler seu blog e ninguém lê as mensagens que você coloca na página de login. Se você deixa um espaço na página principal do seu sistema pra avisos importantes, os usuários logo desenvolvem cegueira seletiva e param de ver o que está lá.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;A solução&lt;/i&gt;: se quiser mesmo comunicar com seu usuário, varie. A regra básica é colocar seu comunicado o mais próximo possível do local em que o usuário vai usar o que está escrito. Se é uma funcionalidade nova, coloque um &quot;novo!&quot; discreto ao lado do botão ou seja o que for. Um balão estilo estória em quadrinhos apontando para a novidade também é uma boa. Deixe que o comunicado seja uma surpresa. Outra coisa importante é deixar que o usuário retire o comunicado da tela e que ele não apareça mais.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh92BhqBjlPli9jzXvYxqBqX0S2kz7xZPjc3NGMw092UTGZRxGVGbKo5dlzqJNvtrtuJPNgetUbqgbaobB0U75Nxg-X1DzzKqHCj4-SpUJ2J-A9uhvCQD9AWBrVMHRT3u1R9iw-FV66Z-vS/s1600-h/christmasmonkey.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh92BhqBjlPli9jzXvYxqBqX0S2kz7xZPjc3NGMw092UTGZRxGVGbKo5dlzqJNvtrtuJPNgetUbqgbaobB0U75Nxg-X1DzzKqHCj4-SpUJ2J-A9uhvCQD9AWBrVMHRT3u1R9iw-FV66Z-vS/s200/christmasmonkey.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Há outros problemas, é claro, mas esses ficam pra outros posts. Os micos de realejo vão dar uma parada para os feriados e férias, mas voltaremos no final de Janeiro a todo vapor.&lt;br /&gt;
&lt;br /&gt;
Boas festas!</content><link rel='replies' type='application/atom+xml' href='http://micosderealejo.blogspot.com/feeds/5662751665253867525/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://micosderealejo.blogspot.com/2009/12/papai-noel-me-de-usuarios-no-natal.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/5662751665253867525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2393797019373926980/posts/default/5662751665253867525'/><link rel='alternate' type='text/html' href='http://micosderealejo.blogspot.com/2009/12/papai-noel-me-de-usuarios-no-natal.html' title='Papai Noel, me dê usuários no Natal'/><author><name>Torsten</name><uri>http://www.blogger.com/profile/04063982691637744480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglgzYMHYo-xokHP_PNNcUA3TKwpq2u6oe9sFJyz4V4E3EeEvnfLLH5rvW3aZIN1P-5ffqhqegdaw9HyFG1keRJ-c8a_bwC61n6D9n4fMeKwwYG2qKy_PYWNxqBRftEVJc/s220/eu.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh92BhqBjlPli9jzXvYxqBqX0S2kz7xZPjc3NGMw092UTGZRxGVGbKo5dlzqJNvtrtuJPNgetUbqgbaobB0U75Nxg-X1DzzKqHCj4-SpUJ2J-A9uhvCQD9AWBrVMHRT3u1R9iw-FV66Z-vS/s72-c/christmasmonkey.jpg" height="72" width="72"/><thr:total>1</thr:total></entry></feed>