<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <id>tag:www.destilando.com.br,2005:/posts/atom</id>
  <link type="text/html" href="http://www.destilando.com.br" rel="alternate"/>
  <link type="application/atom+xml" href="http://www.destilando.com.br/posts/atom" rel="self"/>
  <title>Destilando</title>
  <updated>2011-02-22T15:26:06Z</updated>
  <entry>
    <id>tag:www.destilando.com.br,2005:Post/5</id>
    <published>2011-02-22T15:26:06Z</published>
    <updated>2011-02-26T00:18:02Z</updated>
    <link type="text/html" href="http://www.destilando.com.br/posts/5" rel="alternate"/>
    <title>I don't believe in software architects!</title>
    <content type="html">&lt;p&gt;
        Let me guess... You would like to became a Software Architect, wouldn't you? I have seen a big push in the last 
        inside software community by people who would like to became software architects. 
    &lt;/p&gt;
    &lt;p&gt;
        A lot of them see this role as a step towards a career as a software developer. I would like to show that it 
        is actually an illness in the software development environment.
    &lt;/p&gt;

    &lt;h3&gt;
        Generally software architects aren't really software architects
    &lt;/h3&gt;

    &lt;div style="margin-left: 23px; margin-top: 10px;"&gt;
        &lt;p&gt;
            There is big confusion in the market and in the software community  about what the software architecture role is.
            I will not discuss  all the ins and outs of the role but you can find a good explanation about it 
            &lt;a href="http://elemarjr.net/2011/02/18/voc-no-ou-pode-no-ser-arquiteto-saiba-o-porqu-e-aceite-isso/"&gt;here&lt;/a&gt;, 
            in a blog post of Elemar J&#250;nior.
        &lt;/p&gt;
        
        &lt;p&gt;
            Nevertheless I can summarize by saying that the skills of a software architect are different from the skills of 
            a developer, and it isn't a next step. Generally enterprises get the best developer and "promote" him to the 
            position of software architect, this developer might never have seen an architectural pattern in his whole life. 
            It clearly shows the existing confusion.
        &lt;/p&gt;
    &lt;/div&gt;

    &lt;div class="image-right"&gt;
		&lt;a href="http://s3.amazonaws.com/destilando.images/original/visa.jpg?1298388113" target="blank"&gt;&lt;img src="http://s3.amazonaws.com/destilando.images/original/visa.jpg?1298388113" alt="VISA" /&gt;&lt;/a&gt;
	&lt;/div&gt;

    &lt;h3&gt;
        Much arrogance associated with the role exists
    &lt;/h3&gt;

    &lt;div style="margin-left: 23px; margin-top: 10px;"&gt;

        &lt;p&gt;
            Many roles that have major importance and responsibility suffer from the evil of arrogance, so it is with 
            presidents, professors and managers. 
        &lt;/p&gt;

        &lt;p&gt;
            Because of the characteristic rigidity or impossible mutability of 
            the architecture, architectural decisions are important decisions with a significant responsibilities attached.            
        &lt;/p&gt;
        
        &lt;div class="center-highlight"&gt;	
			&lt;div class="highlight" style="width: 500px;"&gt;
            It is always good to remember &lt;a href="http://en.wikipedia.org/wiki/Dee_Hock"&gt;Dee Hock&lt;/a&gt; at this time: 
            "Through the years, I have greatly feared and sought to keep at bay the four beasts that inevitably devour their 
            keeper -- Ego, Envy, Avarice, and Ambition".
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;p&gt;
            Anyone in a powerful role is vulnerable to the evil of arrogance. In Architecture Software particularly it 
            looks like a inherent aspect of the job. Of course there is no rule and I am sure that there exists 
            non-arrogant software architects, but all decentralization of power possible should be carried out.
        &lt;/p&gt;

    &lt;/div&gt;

    &lt;h3&gt;
        Generalists worth more than Specialists
    &lt;/h3&gt;

    &lt;div style="margin-left: 23px; margin-top: 10px;"&gt;    

        &lt;p&gt;
            Also it is obvious that it is so much better to have a team of developers that can also do integration testing, 
            than to have one or two testers in the team that will do all the integration testing of the team.
        &lt;/p&gt;        

        &lt;div style="float: left; border-style: solid; margin-right: 10px;"
			&lt;a href="http://s3.amazonaws.com/destilando.images/original/team.jpg?1298387882" target="blank"&gt;&lt;img src="http://s3.amazonaws.com/destilando.images/original/team.jpg?1298387882" alt="Team" /&gt;&lt;/a&gt; 
		&lt;/div&gt;

        &lt;p&gt;
            It is also clear that it is better to have a team of developers that is able to discuss possible architectures 
            and find out an emergent solution than to have a specialist Software Architect that will make all the decisions. 
        &lt;/p&gt;

        &lt;p&gt; 
            &lt;a href="http://martinfowler.com/"&gt;Martin Fowler&lt;/a&gt; have already said the architects in ThoughtWorks works to 
            increase the team's architecture skills than take their own decisions. It increase the team skills and solve 
            the bottleneck problem. Have look:
        &lt;/p&gt;

       &lt;br /&gt;&lt;br /&gt;

        &lt;div class="center-highlight"&gt;	
			&lt;div class="highlight" style="width: 500px;"&gt;
                In many ways, the most important activity of  Architectus Oryzus is to mentor the development team, to raise
                their level so that they can take on more complex issues. Improving the development team&#8217;s ability gives an 
                architect much greater leverage than being the sole decision maker and thus running the risk of being an 
                architectural bottleneck. This leads to the satisfying rule of thumb that an architect&#8217;s value is inversely 
                proportional to the number of decisions he or she makes.
            &lt;/div&gt;
	    &lt;/div&gt;


    &lt;/div&gt;

    &lt;h3&gt;
        The real value of software architect skills
    &lt;/h3&gt;

    &lt;div style="margin-left: 23px; margin-top: 10px;"&gt;

        &lt;div class="image-right"&gt;
			&lt;a href="http://s3.amazonaws.com/destilando.images/original/architecture_document.gif?1298387911" target="blank"&gt;&lt;img src="http://s3.amazonaws.com/destilando.images/original/architecture_document.gif?1298387911" alt="Architecture Document" /&gt;&lt;/a&gt; 
		&lt;/div&gt;

        &lt;p&gt;
            I have strong doubts about how useful some deliverables of the software architecture discipline are, some of 
            them are documents and diagrams with a high level vision of the system. I believe more in principles and values 
            that I believe can replace these deliverables like: 
        &lt;/p&gt;
        &lt;ul&gt;
            &lt;li&gt;
                &lt;b&gt;Effective communication&lt;/b&gt; between the teams is more important than documents and diagrams.
            &lt;/li&gt;
            &lt;li&gt;
                Architectural decisions should be done by teams, for me it is obvious that an &lt;b&gt;emergent decision&lt;/b&gt; 
                is more valuable than a decision made by only one holy holder of knowledge.(By the way I don't believe in 
                holders of knowledge, Jedis, and their kind )
            &lt;/li&gt;
        &lt;/ul&gt;
    &lt;/div&gt;

    &lt;h3&gt;
        All the successful software projects that I know was made by passionate developers
    &lt;/h3&gt;

    &lt;div style="margin-left: 23px; margin-top: 10px;"&gt;
        &lt;p&gt;
            Yes generally the good software releases with scalable and effective architecture that I know, are made by 
            teams with passionate developers without a software architect, not because there aren't architectural decisions 
            but because the architectural decisions are shared with the whole team and they can arrive at architectural 
            solutions faster and better than a software architect.
        &lt;/p&gt;        
    &lt;/div&gt;    

    &lt;p&gt;
        I'm sure there are some really good architects and good initiatives within the agile software communities such 
        as the emergent architecture and the evolution architecture, but in my experience they are people who I don't 
        believe, and I think this centralized model is more likely to fail than the decentralized model.
    &lt;/p&gt;
    &lt;p&gt; 
        Software architects are really needed in enterprises where 80% of the programmers are &lt;a href="http://c2.com/cgi/wiki?CowboyCoder"&gt;cowboy programmers&lt;/a&gt; using 
        the true &lt;a href="http://gohorseprocess.wordpress.com/extreme-go-horse-xgh/"&gt;XGH&lt;/a&gt;. These enterprises will have 
quality problems anyway, but it is better that the architectural 
        decisions are made by someone who really knows what he/she is doing. In this case and in an immature market 
        they are "a necessary evil", if you don't have a team of passionate programmers at least have a software architect 
        who will be able to define a reasonable solution.       
    &lt;/p&gt;</content>
    <author>
      <name>Raphael Molesim</name>
    </author>
  </entry>
  <entry>
    <id>tag:www.destilando.com.br,2005:Post/4</id>
    <published>2010-05-27T22:43:35Z</published>
    <updated>2011-02-26T00:18:02Z</updated>
    <link type="text/html" href="http://www.destilando.com.br/posts/4" rel="alternate"/>
    <title>Why should I refactor if refactoring is a waste?</title>
    <content type="html">                &lt;P&gt;
			This is my first post (of a sequence of 3) about &lt;a href="http://www.refactoring.com/" target="blank"&gt;refactoring&lt;/a&gt;. I want to demystify some points in refactoring that are not evident in the software community.
		&lt;/p&gt;		
		
		&lt;P&gt;
			The first step is to understand what is refactor. Put simply refactoring is everything that you do on code that becomes easier to understand and doesn't increase features or performance. This means if I change the code to ...
		&lt;/P&gt;

		&lt;div class="image-right"&gt;
			 &lt;a href="http://s3.amazonaws.com/destilando.images/original/refactoring.gif?1274991132" target="blank"&gt;&lt;img src="http://s3.amazonaws.com/destilando.images/original/refactoring.gif?1274991132" alt="Refactoring" /&gt;&lt;/a&gt;  
		&lt;/div&gt;

		&lt;ul&gt;
			&lt;li&gt;process faster&lt;/li&gt;
			&lt;li&gt;work in more cases&lt;/li&gt;
			&lt;li&gt;do something new&lt;/li&gt;
			&lt;li&gt;work as multi-threading&lt;/li&gt;
			&lt;li&gt;fix some bug&lt;/li&gt;
			&lt;li&gt;internationalizate the system &lt;/li&gt;
			&lt;li&gt;And bla bla bla that changes an external behavior or performance&lt;/li&gt;
		&lt;/ul&gt;

		&lt;P&gt;
			You are not doing refactoring, sorry if I disappointed you, but this isn't a refactoring. But if you are doing changes in the code that allow your code to be easier to understand, probably this is refactoring, for example:
		&lt;/P&gt;

		&lt;ul&gt;
			&lt;li&gt;rename a method to a name more meaningful&lt;/li&gt;
			&lt;li&gt;split a big complex method in various small simple methods&lt;/li&gt;
			&lt;li&gt;create a class to replace some code that are redundant in the code&lt;/li&gt;
			&lt;li&gt;move a redundant field in all sub classes to a super class&lt;/li&gt;
			&lt;li&gt;and bla bla bla that become the code easier to understand&lt;/li&gt;
		&lt;/ul&gt;

		&lt;div class="image-right"&gt;
			&lt;a href="http://s3.amazonaws.com/destilando.images/original/waste.jpg?1274992314" target="blank"&gt;&lt;img src="http://s3.amazonaws.com/destilando.images/original/waste.jpg?1274992314" alt="Waste" /&gt;&lt;/a&gt; 
		&lt;/div&gt;
		
		&lt;P&gt;
			But second &lt;a href="http://www.poppendieck.com/" target="blank"&gt;Lean&lt;/a&gt;, "anything you do that does not add value from the customer perspective is waste". When I'm doing some refactoring I'm not adding value to the software therefore this is a waste. 
		&lt;/P&gt;
		&lt;P&gt;
			So why should I refactor if refactoring is a waste?
		&lt;/P&gt;

		&lt;P&gt;
			I understand that this is not easy to accept, but I have three reasons that can make refactoring payable.
		&lt;/P&gt;

		&lt;h3&gt;
			1) Become more productive
		&lt;/h3&gt;
		&lt;div style="margin-left: 23px; margin-top: 10px;"&gt;			
			&lt;P&gt;
				So I think if you are reading from the begin of post until now you have already understood that refactoring is only "become the code easier to understand".				
			&lt;/P&gt;	
			
			&lt;p&gt;
				And ok, but how important is it to understand the code?
			&lt;/p&gt;

			&lt;p&gt;
				This is a old question on Software Engineering, there are many studies about this question, you can find some information &lt;a href="http://research.microsoft.com/apps/pubs/default.aspx?id=74240" target="blank"&gt;here&lt;/a&gt;, &lt;a href="http://blog.architexa.com/2010/05/no-you-are-not-dumb-programmers-do-spend-a-lot-of-time-understanding-code/" target="blank"&gt;here&lt;/a&gt;, &lt;a href="http://www.codinghorror.com/blog/2006/09/when-understanding-means-rewriting.html" target="blank"&gt;here&lt;/a&gt;, &lt;a href="http://www.technicat.com/writing/programming.html" target="blank"&gt;here&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/b/peterhal/archive/2006/01/04/509302.aspx" target="blank"&gt;here&lt;/a&gt;. However I want to highlight a &lt;a href="http://research.microsoft.com/apps/pubs/default.aspx?id=74240" target="blank"&gt;study&lt;/a&gt; conducted by &lt;a href="http://research.microsoft.com/en-us/default.aspx" target="blank"&gt;Microsoft Research&lt;/a&gt;, where we can find the following conclusion. 
			&lt;/p&gt;
			
			&lt;div class="center-highlight"&gt;	
				&lt;div class="highlight" style="width: 400px;"&gt;
					Understanding the rationale behind code is the biggest problem for developers. When trying to understand a piece of code, developers turn first to the code itself and, when that fails, to their social network.
				&lt;/div&gt;
			&lt;/div&gt;
			
			&lt;P&gt;
				Therefore we can see that understanding code is one of the most important tasks in software development. Given that maybe If you spend less time to understand the code, you would be more productive. In other words when you spend 15 minutes to understand the code it is more productivity to fix bugs and write new features, than in a code that you have to spend some hours and after that you still not sure about what is happening. 
			&lt;/P&gt;
		&lt;/div&gt;
		
		&lt;h3&gt;
			2) Become faster to respond to changes
		&lt;/h3&gt;
		&lt;div style="margin-left: 23px; margin-top: 10px;"&gt;
			&lt;P&gt;
				Refactoring will drive you to get a better software design, after all a software with a good design is a software easier to understand. With a good design your software is more flexible to changes.
			&lt;/P&gt;
		&lt;/div&gt;
		
		
		&lt;h3&gt;
		3) Change the enterprise culture to acquire mastery
		&lt;/h3&gt;
		
		&lt;div style="margin-left: 23px; margin-top: 10px;"&gt;
			&lt;P&gt;
				Did you ever hear "a winning team does not change" or "if it's not broken don't fix it"? This is a real obstacle to master, because the real master will not be satisfied with "the code works", the master always wants to be better, and this kind of resigned mind does not exists for the real masters and with refactoring should mess in working code, refactoring is this become something that works more clean, expressive and elegant. 
			&lt;/P&gt;
		&lt;/div&gt;
		
		&lt;P&gt;	
		          So If you are not interested in productivity, respond to changes and mastering professional culture I think that you can have serious problems with your enterprise.
		&lt;/P&gt;

                &lt;div class="center-highlight"&gt;
			&lt;div class="addendum"&gt;
				&lt;h4&gt;Addendum 1&lt;/h4&gt;
				&lt;p&gt;Despite the refactoring being considered a waste, there are some kinds of waste that are classified as necessary wastes. Refactoring is an necessary waste example, you can find more information about that in &lt;a href="http://www.infoq.com/news/2007/12/refactoring-is-waste" target="blank"&gt;"Refactoring is a Necessary Waste"&lt;/a&gt; and &lt;a href="http://www.leantechnologydevelopment.com/pdf/LearningToSeeWaste-Letter.pdf" target="blank"&gt;"Learning to See Waste in New Product Development"&lt;/a&gt;. &lt;/p&gt;
			&lt;/div&gt;
		&lt;/div&gt;</content>
    <author>
      <name>Raphael Molesim</name>
    </author>
  </entry>
  <entry>
    <id>tag:www.destilando.com.br,2005:Post/3</id>
    <published>2010-04-10T19:08:59Z</published>
    <updated>2011-02-26T00:18:02Z</updated>
    <link type="text/html" href="http://www.destilando.com.br/posts/3" rel="alternate"/>
    <title>Voltando a atividade... But with some news!</title>
    <content type="html">		&lt;div style="float: right; border-style: solid; margin-left: 10px;"&gt;
			&lt;a href="http://s3.amazonaws.com/destilando.images/original/Guinness_Pint.jpg?1270926014" target="blank"&gt;&lt;img src="http://s3.amazonaws.com/destilando.images/original/Guinness_Pint.jpg?1270926014" alt="Guinness Pint" width="97" height="180" /&gt;&lt;/a&gt;
		&lt;/div&gt;
		&lt;p&gt;
	    Faz muito tempo que n&#227;o posto nada por aqui, isso porque cerca de 1 m&#234;s atr&#225;s me mudei para Dublin na Irlanda (Sim, a terra da Guinness), pretendo ficar aqui por um ano se tudo der certo.
		&lt;/p&gt;
		&lt;p&gt;
			Vim para a Irlanda para aprender a me comunicar (ouvir/falar/escrever/ler) na l&#237;ngua inglesa DE VERDADE, por tanto a partir de now I will write all my posts in English, so I can practice more (If you find some grammar error, please notify me; I'm sure I will miss a lot).
		&lt;/p&gt;
		&lt;p&gt;
			I am studing in a english school in the center of Dublin called &lt;a href="http://www.ces-schools.com/" target="blank"&gt;CES&lt;/a&gt; (Centre of English Studies), I think this is an excellent school and I've easily seen the quality difference between anothers schools in Dublin. My course is only for 6 months and the another 6 months not are defined yet.
		&lt;/p&gt;
		&lt;div style="float: left; border-style: solid; margin-right: 10px;"&gt;
			&lt;a href="http://s3.amazonaws.com/destilando.images/original/Greystones-Cliffs.jpg?1270926102" target="blank"&gt;
				&lt;img src="http://s3.amazonaws.com/destilando.images/original/Greystones-Cliffs.jpg?1270926102" alt="Greystones Cliffs" width="207" height="155" /&gt;
			&lt;/a&gt;
		&lt;/div&gt;
		&lt;p&gt;
			The contact with people from others countries is a really nice experience. I'm knowing frenchs, indonesian, italians, belgians, saudi arabians, germans, spanish, south koreans and who can't miss: Irish people. I'm traveling for some beautiful places here in Ireland. So I've uploaded my photos in Picasa at &lt;a href="http://picasaweb.google.com/raphael.sm86" target="blank"&gt;this address&lt;/a&gt;. 
		&lt;/p&gt;
		&lt;p&gt;
			Now I'm looking for a job in Dublin. I've did some interviews with success and now I'm waiting for replys. About the technology user groups I've found some communities here like &lt;a href="http://www.rubyireland.com/" target="blank"&gt;Ruby Ireland&lt;/a&gt; and &lt;a href="http://dublinalt.net/" target="blank"&gt;ALT.NET Dublin&lt;/a&gt;.
		&lt;/p&gt;
		&lt;p&gt;
			So I will try to keep this blog updated, to comment relavant things and news!
		&lt;/p&gt;
		  &lt;div style="text-align: center"&gt;
		    &lt;a href="http://s3.amazonaws.com/destilando.images/original/Alt-Net.png?1270926148" target="blank" style="display: inline;"&gt;&lt;img src="http://s3.amazonaws.com/destilando.images/original/Alt-Net.png?1270926148" alt="ALT.NET" width="125" height="171" /&gt;&lt;/a&gt;
		    &lt;span style=" width: 100px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;
		    &lt;a href="http://s3.amazonaws.com/destilando.images/original/Ruby.jpg?1270926168" target="blank" style="display: inline;"&gt;&lt;img src="http://s3.amazonaws.com/destilando.images/original/Ruby.jpg?1270926168" alt="Ruby" width="134" height="154" /&gt;&lt;/a&gt;
		  &lt;/div&gt;</content>
    <author>
      <name>Raphael Molesim</name>
    </author>
  </entry>
  <entry>
    <id>tag:www.destilando.com.br,2005:Post/2</id>
    <published>2010-03-01T19:34:53Z</published>
    <updated>2011-02-26T00:18:01Z</updated>
    <link type="text/html" href="http://www.destilando.com.br/posts/2" rel="alternate"/>
    <title>Diagn&#243;stico do N&#237;vel de Excel&#234;ncia Comunicativa Nas Organiza&#231;&#245;es</title>
    <content type="html">		&lt;p&gt;
			Acabei de ler o relat&#243;rio final de pesquisa de p&#243;s-doutorado da Professora &lt;a href="http://sistemas3.usp.br/tycho/CurriculoLattesMostrar?codpes=5564072"&gt;Maria Schuler&lt;/a&gt; da ECA USP sobre o &lt;a href="http://www2.metodista.br/agenciarp/mariaschuler.pdf"&gt;Diagn&#243;stico do N&#237;vel de Excel&#234;ncia Comunicativa nas Organiza&#231;&#245;es&lt;/a&gt;. O relat&#243;rio fala sobre muita coisa interessante, mas vou dar destaque para o tema principal da pesquisa: Os N&#237;veis de Excel&#234;ncia Comunicativa nas Organiza&#231;&#245;es.
		&lt;/p&gt;
		&lt;p&gt;
			Em palavras simples a excel&#234;ncia comunicativa nas organiza&#231;&#245;es &#233; o melhor est&#225;gio de comunica&#231;&#227;o que se possa ter. E como ela &#233; um resultado dos indiv&#237;duos que formam organiza&#231;&#227;o para se alcan&#231;&#225;-la &#233; preciso compreender a Excel&#234;ncia Humana nas organiza&#231;&#245;es.
		&lt;/p&gt;
		&lt;p&gt;
			A Excel&#234;ncia Humana &#233; uma analise mais aprofundada das pesquisas sobre o desenvolvimento humano. Um famoso psic&#243;logo chamado Abraham Maslow, prop&#244;s uma hierarquia de necessidade, onde as necessidades do n&#237;vel mais baixo precisam ser satisfeita para antes se ter consci&#234;ncia das necessidades dos n&#237;veis mais altos. Representada pela imagem abaixo.
		&lt;/p&gt;
		
		&lt;div class="center-highlight"&gt;
			&lt;a href="http://s3.amazonaws.com/destilando.images/original/Hierarquia-Maslow.png?1267471433" target="blank"&gt;&lt;img src="http://s3.amazonaws.com/destilando.images/original/Hierarquia-Maslow.png?1267471433" alt="Hierarquia das Necessidades de Maslow" width="100%" /&gt;&lt;/a&gt;
		&lt;/div&gt;
		
		&lt;p&gt;
			O relat&#243;rio de p&#243;s-doutorado explora cada n&#237;vel como uma dimens&#227;o transdiciplinar onde existe uma an&#225;lise hol&#237;stica de v&#225;rias disciplinas em converg&#234;ncia. Assim deixa a vis&#227;o de n&#237;vel de necessidade para o conceito de dimens&#227;o transdiciplinar, onde alguns n&#237;veis s&#227;o re-estruturados e profundamente analisados. 
		&lt;/p&gt;
		&lt;p&gt;
			Esta an&#225;lise de cada nova dimens&#227;o ocorre levando em considera&#231;&#227;o quatro elementos: o indiv&#237;duo, a organiza&#231;&#227;o, o processo de aprendizagem organizacional e o desenvolvimento da comunica&#231;&#227;o organizacional.
		&lt;/p&gt;
		&lt;p&gt;
			Neste post vou citar apenas os aspectos da organiza&#231;&#227;o, pois acho interessante analisar o conceito da agilidade neste elemento. Segue abaixo o diagrama dos n&#237;veis de Excel&#234;ncia Humana.
		&lt;/p&gt;
		
		&lt;div class="center-highlight"&gt;
			&lt;a href="http://s3.amazonaws.com/destilando.images/original/Niveis-Excelencia-Humana.png?1267471265" target="blank"&gt;&lt;img src="http://s3.amazonaws.com/destilando.images/original/Niveis-Excelencia-Humana.png?1267471265" alt="N&#237;veis de Excel&#234;ncia Humana nas Organiza&#231;&#245;es" /&gt;&lt;/a&gt;
		&lt;/div&gt;
		
		&lt;p&gt;
			&lt;strong&gt;F&#237;sica&lt;/strong&gt;: &#233; a dimens&#227;o onde a organiza&#231;&#227;o est&#225; como foco em recursos materiais, todas as decis&#245;es tomadas s&#227;o em metas de curto prazo de r&#225;pido retorno financeiro.	
		&lt;/p&gt;
		&lt;p&gt;
			&lt;strong&gt;Emocional&lt;/strong&gt;: &#233; a dimens&#227;o onde a organiza&#231;&#227;o come&#231;a a enxergar que n&#227;o trabalhar com recursos e sim com pessoas, que estas pessoas t&#234;m emo&#231;&#245;es e o foco n&#227;o est&#225; em evitar emo&#231;&#245;es e sim ter pessoas que sabem administrar suas emo&#231;&#245;es e utiliz&#225;-las de forma produtiva, estabelecendo rela&#231;&#245;es de confian&#231;a e &#233;tica.
		&lt;/p&gt;
		&lt;p&gt;
			&lt;strong&gt;Mental&lt;/strong&gt;: &#233; a dimens&#227;o onde a organiza&#231;&#227;o come&#231;a a criar reais preocupa&#231;&#245;es com sobreviv&#234;ncia onde entram processos de planejamento di&#225;rio, os fluxos come&#231;am a ser racionais, l&#243;gicos, calcul&#225;veis, previs&#237;veis. E as decis&#245;es come&#231;am a ser menos centralizadas envolvendo um n&#250;mero mais de colaboradores.
		&lt;/p&gt;
		&lt;p&gt;
			&lt;strong&gt;Afetiva&lt;/strong&gt;: &#233; a dimens&#227;o onde a organiza&#231;&#227;o integra o maior n&#250;mero de colaboradores ao sucesso compartilhando os benef&#237;cios de forma justa e generosa, tamb&#233;m cria ambientes colaborativos, de forma a despertar uma consci&#234;ncia coletiva nos colaboradores.
		&lt;/p&gt;
		&lt;p&gt;
			&lt;strong&gt;Expressiva&lt;/strong&gt;: &#233; a dimens&#227;o onde a organiza&#231;&#227;o atingiu seus objetivos materiais e neste momento a &#233;tica come&#231;a a ser incorporada na natureza da organiza&#231;&#227;o valores com transpar&#234;ncia, legitimidade e justi&#231;a. Citando SCHULER: &#8220;Nesse momento do desenvolvimento, a preocupa&#231;&#227;o com a justi&#231;a dos atos transcende as normas estabelecidas ou as rela&#231;&#245;es de castigo ou premia&#231;&#227;o&#8221;.
		&lt;/p&gt;
		&lt;p&gt;
			&lt;strong&gt;Vision&#225;ria&lt;/strong&gt;: &#233; a dimens&#227;o onde a organiza&#231;&#227;o reconhece que os colaboradores que j&#225; s&#227;o respeitados, tratados e de forma diferenciada desde a transcend&#234;ncia do n&#237;vel afetivo, agora n&#227;o s&#227;o mais vistos como um par de m&#227;os, mas como pessoas que possuem c&#233;rebros e id&#233;ias. Agora a organiza&#231;&#227;o precisa que estes sejam criativos, para sobreviv&#234;ncia, resolu&#231;&#227;o de problemas, inova&#231;&#227;o e descoberta de conhecimento.
		&lt;/p&gt;
		&lt;p&gt;
			&lt;strong&gt;Integradora&lt;/strong&gt;: &#233; a dimens&#227;o onde a organiza&#231;&#227;o e colaboradores alinham miss&#227;o, vis&#227;o, voca&#231;&#245;es e o sentido de trabalhar; nesta dimens&#227;o o objetivo &#233; criar um grupo unido, consciente de sua responsabilidade com a sociedade e o meio ambiente. Neste ponto cada decis&#227;o de cada colaborador reverbera os valores e a miss&#227;o da empresa.
		&lt;/p&gt;
		&lt;p&gt;
			Bem o relat&#243;rio &#233; muito maior que este post, e eu fiz resumo porco muito simplificado de apenas um dos elementos estudados no trabalho, aconselho fortemente ler o trabalho dispon&#237;vel aqui, principalmente &#224;s analises em rela&#231;&#227;o ao elemento: O Indiv&#237;duo.
		&lt;/p&gt;
		&lt;p&gt;
			Agora pe&#231;o que preste aten&#231;&#227;o a dimens&#227;o mental, observem as palavras &#8220;processos de planejamento di&#225;rio&#8221;, &#8220;fluxos calcul&#225;veis e previs&#237;veis&#8221;, &#8220;decis&#245;es menos centralizadas&#8221; e &#8220;fluxos racionais&#8221;, isso lembra alguma coisa? Para mim lembra muito forte a id&#233;ias de agilidade.
		&lt;/p&gt;
		&lt;p&gt;
			Interessante ressaltar que a pessoa que escreveu sobre a dimens&#227;o metal nem sabia o que era Agilidade, entre tanto citou algumas caracter&#237;sticas &#225;geis nesta dimens&#227;o, relacionadas no quadro abaixo.
		&lt;/p&gt;
		
		&lt;table class="customTable" cellspacing="0" cellpadding="3" width="650" align="center"&gt;
			&lt;tr style="background-color: #E0E0D9;"&gt;
				&lt;td width="30%"&gt;&lt;strong&gt;Dimens&#227;o Mental&lt;/strong&gt;&lt;/td&gt;
				&lt;td width="70%"&gt;&lt;strong&gt;Agilidade&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
				&lt;td&gt;Processos de planejamento di&#225;rio&lt;/td&gt;
				&lt;td&gt;N&#227;o sei de diariamente, vai depender do seu neg&#243;cio, mas isso est&#225; muito pr&#243;ximo a &#8220;Responder a mudan&#231;as&#8221;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
				&lt;td&gt;Fluxos racionais&lt;/td&gt;
				&lt;td&gt;Meio vago o termo, mas entendo como deixar de fazer a coisa da forma mec&#226;nica e entregar aquilo que agrega valor: &#8220;Software funcionando&#8221;, atrav&#233;s de fluxos mais enxutos&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
				&lt;td&gt;Decis&#245;es menos centralizadas&lt;/td&gt;
				&lt;td&gt;Isso traz fortemente o princ&#237;pio &#8220;As melhores arquiteturas, requisitos e projetos emergem de equipes auto-organizadas.&#8221;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
				&lt;td&gt;Fluxos calcul&#225;veis e previs&#237;veis&lt;/td&gt;
				&lt;td&gt;Vejo isso perto da agilidade quando assumimos que o processo &#233; emp&#237;rico, tornamos as coisas realmente mais calcul&#225;veis e previs&#237;veis com Sistema Kanban.&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
		
		&lt;p&gt;
			Entendo que para conseguir aplicar um m&#233;todo &#225;gil &#233; imprescind&#237;vel que a organiza&#231;&#227;o j&#225; tenha passado pelos n&#237;veis: F&#237;sico e Emocional. Isso explica a dificuldade da ado&#231;&#227;o de pr&#225;ticas &#225;geis em algumas organiza&#231;&#245;es, pois estas organiza&#231;&#245;es n&#227;o est&#227;o realmente preparadas para transcender para a dimens&#227;o mental. Por isso &#233; muito importante entender para quem voc&#234; est&#225; vendendo agilidade.
		&lt;/p&gt;
		&lt;p&gt;
			A agilidade &#233; a dimens&#227;o onde a organiza&#231;&#227;o consegue ter atitudes mais racionais. Como podemos ver no diagrama existem dimens&#245;es acima da Mental e que vejo exemplos como a Semco, a Toyota e a iniciativa na Visa, onde existe algo muito maior que os princ&#237;pios e valores da agilidade. 
		&lt;/p&gt;
		&lt;p&gt;
			Eu n&#227;o sei o que est&#225; acima da agilidade, mas sei que ainda estamos no meio do caminho.
		&lt;/p&gt;
		
		&lt;div class="center-highlight"&gt;
			&lt;div class="addendum"&gt;
				&lt;h4&gt;Observa&#231;&#227;o 1&lt;/h4&gt;
				&lt;p&gt;A vers&#227;o que eu divulguei  &lt;a href="http://www2.metodista.br/agenciarp/mariaschuler.pdf"&gt;aqui&lt;/a&gt; &#233; uma vers&#227;o reduzida publicada pela Metodista, assim que tiver a vers&#227;o oficial diponibilizo aqui no blog.&lt;/p&gt;		
			&lt;/div&gt;
		&lt;/div&gt;</content>
    <author>
      <name>Raphael Molesim</name>
    </author>
  </entry>
  <entry>
    <id>tag:www.destilando.com.br,2005:Post/1</id>
    <published>2009-11-28T00:50:00Z</published>
    <updated>2011-02-26T00:18:01Z</updated>
    <link type="text/html" href="http://www.destilando.com.br/posts/1" rel="alternate"/>
    <title>A diferen&#231;a entre ci&#234;ncias da computa&#231;&#227;o e sistemas de informa&#231;&#227;o</title>
    <content type="html">	    &lt;p&gt;Estive esta semana do &lt;a href="http://www.dtsato.com/blog/2007/08/27/dojo-treino-para-programadores/" target="blank"&gt;Coding Dojo&lt;/a&gt; no &lt;a href="http://www.ime.usp.br/" target="blank"&gt;IME-USP&lt;/a&gt;, junto com &lt;a href="http://codeache.blogspot.com/" target="blank"&gt;Hugo Corbucci&lt;/a&gt; e &lt;a href="http://twitter.com/marivb" target="blank"&gt;Mariana Bravo&lt;/a&gt;. Resolvemos fazer o problema &lt;a href="http://acm.uva.es/p/v103/10315.html" target="blank"&gt;Poker-Hand&lt;/a&gt; em Ruby, que consiste em: dado duas m&#227;os de poker o software precisa dizer quem ganha.&lt;/p&gt;
		
		&lt;p&gt;O Hugo sugeriu que come&#231;&#225;ssemos o programa pela Classe PokerHand, e depois fossemos programando as cartas, os naipes e assim por diante. A ideia se resume em criar toda a infra-estrutura para o programa antes de come&#231;ar a implementar o n&#250;cleo (que seriam as regras do Poker) do mesmo.&lt;/p&gt;
		
		&lt;p&gt;Sugeri que n&#227;o fiz&#233;ssemos isso, mas que come&#231;&#225;ssemos pela classe PokerGame (que mais tarde virou PokerRules), pois desta forma come&#231;ar&#237;amos descrevendo as regras, atacando o n&#250;cleo do problema primeiro e trazendo uma abordagem mais orientada ao dom&#237;nio do problema.&lt;/p&gt;
	
		&lt;p&gt;Isso gerou algumas discuss&#245;es, mas resolvemos tentar o que eu havia sugerido, e ent&#227;o implementamos todas as regras na classe PokerGame, assim esta classe j&#225; sabia dizer que &#8220;dois pares&#8221; &#233; menor que &#8220;um trio&#8221;, que &#8220;Flush&#8221; &#233; menor que um &#8220;Full House&#8221; e assim por diante.&lt;/p&gt;
		
		&lt;p&gt;Depois aplicamos os mesmos princ&#237;pios &#224;s cartas e depois aos naipes, assim j&#225; t&#237;nhamos uma classe que sabia toda a regra do Poker e que tinha todo o conhecimento necess&#225;rio para fazer os desempates.&lt;/p&gt; 
		
		&lt;p&gt;Fomos para o PokerMatcher, esta classe tinha por objetivo reconhecer que uma determinada PokerHand era um &#8220;Flush&#8221; se tivesse uma sequ&#234;ncia de n&#250;meros nas cinco cartas da m&#227;o.&lt;/p&gt; 
		
		&lt;p&gt;Come&#231;amos o PokerMatcher, n&#227;o criamos uma PokerHand, dissemos que uma PokerHand &#233; um list de cinco cartas, isso &#233; discut&#237;vel, mas enfim optamos por isso. Implementamos a PokerMatcher at&#233; reconhecer &#8220;um par&#8221;.&lt;/p&gt; 
		
		&lt;p&gt;E na retrospectiva eles me mostraram uma outra solu&#231;&#227;o para o problema, que surgiu &lt;strong&gt;naturalmente&lt;/strong&gt; em um outro dojo que eles fizeram. Percebi que esta outra abordagem se apresenta diferente, quando come&#231;a-se implementando as cartas e depois a m&#227;o at&#233; chegarmos ao seguinte ponto:&lt;/p&gt; 		
		
		&lt;div class="center-highlight"&gt;			
			&lt;div class="highlight"&gt;&lt;strong&gt;poker_hand1 &amp;gt; poker_hand2&lt;/strong&gt;&lt;/div&gt;
		&lt;/div&gt;		
		
		&lt;p&gt;Neste ponto, eles pensaram em atribuir um sistema de pontua&#231;&#227;o para cada uma das m&#227;os onde baseado em um mapa de hexadecimal, cada d&#237;gito do n&#250;mero hexadecimal equivale a uma das jogadas de poker ordenado da direita para esquerda. O quadro abaixo ilustra esta forma:&lt;/p&gt; 
		
		&lt;div class="center-highlight"&gt;&lt;a href="http://s3.amazonaws.com/destilando.images/original/Poker-Hand-Dojo.png?1266691102" target="blank"&gt;&lt;img src="http://s3.amazonaws.com/destilando.images/original/Poker-Hand-Dojo.png?1266691102" alt="Solu&#231;&#227;o Matem&#225;tica do Poker Hand"  width="100%" /&gt;&lt;/a&gt;&lt;/div&gt; 
		
		&lt;p&gt;Enquanto eles pensaram em criar uma f&#243;rmula matem&#225;tica para pontuar cada uma das m&#227;os, eu pensei em n&#227;o pontuar mas descrever as regras um uma classe e criar um matcher para avaliar quem vence.&lt;/p&gt; 
		
		&lt;p&gt;Acredito que nenhuma das solu&#231;&#245;es est&#225; certa e nenhuma das solu&#231;&#245;es est&#225; errada, mas que ambas possuem vantagens e desvantagens e que &lt;span style="text-decoration:underline"&gt;uma das causas&lt;/span&gt; que corroboraram nestas diferentes abordagens foi devido as distintas forma&#231;&#245;es acad&#234;micas dos participantes do dojo.&lt;/p&gt; 
		
		&lt;p&gt;Eu fa&#231;o &lt;a href="http://sistemas2.usp.br/jupiterweb/listarGradeCurricular?codcg=86&amp;amp;codcur=86200&amp;amp;codhab=204&amp;amp;tipo=N" target="blank"&gt;Sistemas de Informa&#231;&#227;o&lt;/a&gt;, e eles fizeram &lt;a href="http://www.ime.usp.br/dcc/grad/curriculo2010/index.html" target="blank"&gt;Ci&#234;ncias da Computa&#231;&#227;o&lt;/a&gt;. O curso de ci&#234;ncias da computa&#231;&#227;o &#233; um curso muito mais matem&#225;tico do que curso de sistemas informa&#231;&#227;o, pode-se observar pelas grades dos cursos. Segue abaixo um comparativo simplificado:&lt;/p&gt; 	
		
		&lt;table class="customTable" cellspacing="0" cellpadding="0" width="650" align="center"&gt; 
			&lt;tr style="background-color: #E0E0D9;"&gt; 
				&lt;td width="281" valign="top"&gt; 
					&lt;p style="text-align: center; "&gt;&lt;strong&gt;Est&#225; em CC mas n&#227;o em SI&lt;/strong&gt;&lt;/p&gt; 
				&lt;/td&gt; 
				&lt;td width="284" valign="top"&gt; 
					&lt;p align="center"&gt;&lt;strong&gt;Est&#225; em SI mas n&#227;o em CC&lt;/strong&gt;&lt;/p&gt; 
				&lt;/td&gt; 
			&lt;/tr&gt; 
			&lt;tr&gt; 
				&lt;td width="281" valign="top"&gt;F&#237;sica I&lt;/td&gt; 
				&lt;td width="284" valign="top"&gt;Computa&#231;&#227;o Orientada a Objetos&lt;/td&gt; 
			&lt;/tr&gt; 
			&lt;tr&gt; 
				&lt;td width="281" valign="top"&gt;F&#237;sica II&lt;/td&gt; 
				&lt;td width="284" valign="top"&gt;An&#225;lise, Projeto e Interface   Humano-Computador&lt;/td&gt; 
			&lt;/tr&gt; 
			&lt;tr&gt; 
				&lt;td width="281" valign="top"&gt;Introdu&#231;&#227;o &#224; Probabilidade e &#224; Estat&#237;stica II&lt;/td&gt; 
				&lt;td width="284" valign="top"&gt;Fundamentos de Sistemas de Informa&#231;&#227;o&lt;/td&gt; 
			&lt;/tr&gt; 
			&lt;tr&gt; 
				&lt;td width="281" valign="top"&gt;No&#231;&#245;es de Probabilidade e Processos Estoc&#225;sticos&lt;/td&gt; 
				&lt;td width="284" valign="top"&gt;Contabilidade para Computa&#231;&#227;o&lt;/td&gt; 
			&lt;/tr&gt; 
			&lt;tr&gt; 
				&lt;td width="281" valign="top"&gt;C&#225;lculo Diferencial e Integral III&lt;/td&gt; 
				&lt;td width="284" valign="top"&gt;Laborat&#243;rio   de Bases de Dados&lt;/td&gt; 
			&lt;/tr&gt; 
			&lt;tr&gt; 
				&lt;td width="281" valign="top"&gt;C&#225;lculo Diferencial e Integral IV&lt;/td&gt; 
				&lt;td width="284" valign="top"&gt;Introdu&#231;&#227;o &#224; Administra&#231;&#227;o para   Computa&#231;&#227;o&lt;/td&gt; 
			&lt;/tr&gt; 
			&lt;tr&gt; 
				&lt;td width="281" valign="top"&gt;&#193;lgebra II&lt;/td&gt; 
				&lt;td width="284" valign="top"&gt;Arquitetura de Computadores&lt;/td&gt; 
			&lt;/tr&gt; 
			&lt;tr&gt; 
				&lt;td width="281" valign="top"&gt;M&#233;todos Num&#233;ricos da &#193;lgebra Linear&lt;/td&gt; 
				&lt;td width="284" valign="top"&gt;Intelig&#234;ncia Artificial&lt;/td&gt; 
			&lt;/tr&gt; 
			&lt;tr&gt; 
				&lt;td width="281" valign="top"&gt;M&#233;todos Formais em Programa&#231;&#227;o&lt;/td&gt; 
				&lt;td width="284" valign="top"&gt;Redes de Computadores&lt;/td&gt; 
			&lt;/tr&gt; 
			&lt;tr&gt; 
				&lt;td width="281" valign="top"&gt;An&#225;lise de Algoritmos&lt;/td&gt; 
				&lt;td width="284" valign="top"&gt;Pr&#225;tica e Gerenciamento de Projetos&lt;/td&gt; 
			&lt;/tr&gt; 
			&lt;tr&gt; 
				&lt;td width="281" valign="top"&gt;Algoritmos em Grafos&lt;/td&gt; 
				&lt;td width="284" valign="top"&gt;Economia para Computa&#231;&#227;o&lt;/td&gt; 
			&lt;/tr&gt; 
			&lt;tr&gt; 
				&lt;td width="281" valign="top"&gt;Conceitos Fundamentais de Linguagens de   Programa&#231;&#227;o&lt;/td&gt; 
				&lt;td width="284" valign="top"&gt;Empreendedores em Inform&#225;tica&lt;/td&gt; 
			&lt;/tr&gt; 
		&lt;/table&gt;
		
		&lt;p&gt;Para eles foi natural a utiliza&#231;&#227;o de um mapa hexadecimal para pontuar a m&#227;o de poker, enquanto para mim esta ideia nem passou pela minha cabe&#231;a, pois n&#227;o fazia o menor sentido pontuar a m&#227;o, e sim fazer um matcher com as regras do jogo. O interessante foi a experi&#234;ncia de ver a diferen&#231;a dos racioc&#237;nios.&lt;/p&gt; 
		
		&lt;p&gt;Este tipo de discuss&#227;o &#233; o que, para mim, mais agrega valor em uma sess&#227;o de Coding Dojo. Sempre devemos tentar conhecer novos mindsets, e quanto mais diferente, melhor. Pois quanto mais op&#231;&#245;es voc&#234; conhecer para resolver um problema, mais bem preparado voc&#234; estar&#225; para resolver o mesmo.&lt;/p&gt;
		
		&lt;div class="center-highlight"&gt;
			&lt;div class="addendum"&gt;
				&lt;h4&gt;Adendo 1&lt;/h4&gt;
				&lt;p&gt;Se no seu caso voc&#234; ainda estiver escolhendo qual curso deseja fazer, e est&#225; em d&#250;vida em ci&#234;ncias da computa&#231;&#227;o ou sistemas de informa&#231;&#227;o, pense no que voc&#234; quer ser quando concluir a faculdade. &lt;span style="text-decoration:underline"&gt;Teoricamente&lt;/span&gt; ci&#234;ncias da computa&#231;&#227;o prepara melhores programadores e cientistas, enquanto sistemas de informa&#231;&#227;o prepara melhores analistas e engenheiros.&lt;/p&gt;
		 
				&lt;p&gt;O mais importante &#233; entender que n&#227;o existe um curso melhor que o outro &#233; tudo uma quest&#227;o de objetivos.&lt;/p&gt; 		
			&lt;/div&gt;
		&lt;/div&gt;
		
		&lt;div class="center-highlight"&gt;
			&lt;div class="addendum"&gt;
				&lt;h4&gt;Adendo 2&lt;/h4&gt;
				&lt;p&gt;Se quiser dar uma olhada no c&#243;digo fonte do dojo est&#225; dispon&#237;vel &lt;a href="http://github.com/dojosp/participant-s-projects/tree/0adcaa55261e0385e807d92cef4e3e04f025ca0f/84-PokerHands-Ruby" target="blank"&gt;aqui&lt;/a&gt;.&lt;/p&gt; 
			&lt;/div&gt;
		&lt;/div&gt;</content>
    <author>
      <name>Raphael Molesim</name>
    </author>
  </entry>
</feed>
