<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blog.caelum.com.br &#187; interfaces</title>
	<atom:link href="http://blog.caelum.com.br/tag/interfaces/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.caelum.com.br</link>
	<description>blog dos desenvolvedores da Caelum</description>
	<lastBuildDate>Thu, 09 Feb 2012 13:04:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>HTML, CSS, Javascript e UX na nova formação da Caelum</title>
		<link>http://blog.caelum.com.br/html-css-javascript-e-ux-na-nova-formacao-da-caelum/</link>
		<comments>http://blog.caelum.com.br/html-css-javascript-e-ux-na-nova-formacao-da-caelum/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 16:59:25 +0000</pubDate>
		<dc:creator>Anderson Leite</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[experiência]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[informação]]></category>
		<category><![CDATA[interação]]></category>
		<category><![CDATA[interfaces]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[ux]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://blog.caelum.com.br/?p=1788</guid>
		<description><![CDATA[A nova formação da Caelum tem o objetivo de aprofundar os conhecimentos numa área em constante crescimento. A formação tem a parceria da Locaweb e é composta dos cursos WD-41 &#124; Design de Interação, Experiência do Usuário e Usabilidade e WD-43 &#124; Desenvolvimento Web com HTML, CSS e JavaScript. User Experience Ao navegar na web, <a href="http://blog.caelum.com.br/html-css-javascript-e-ux-na-nova-formacao-da-caelum/#more-1788'" class="more-link">more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p style="float:right; margin:0 0 10px 15px; width:240px;">
		<img src="http://caelum.wpengine.netdna-cdn.com/wp-content/uploads/2010/01/formacao_wd1.gif" width="240" />
		</p><p>A <a href="http://www.caelum.com.br/cursos/web/">nova formação</a> da Caelum tem o objetivo de aprofundar os conhecimentos numa área em constante crescimento.  A formação tem a parceria da <a href="http://uxblog.locaweb.com.br/">Locaweb</a> e é composta dos cursos <a href="http://www.caelum.com.br/curso/wd-41-design-interface-experiencia-usuario-usabilidade/">WD-41 | Design de Interação, Experiência do Usuário e Usabilidade  </a> e <a href="http://www.caelum.com.br/curso/wd-43-desenvolvimento-web-html-css-javascript/">WD-43 | Desenvolvimento Web com HTML, CSS e JavaScript</a>.                                                                  </p>
<p><a href="http://www.caelum.com.br/cursos/web/"><img src="http://caelum.wpengine.netdna-cdn.com/wp-content/uploads/2010/01/formacao_wd1.gif" alt="formacao_wd" title="formacao_wd" width="211" height="105" class="aligncenter size-full wp-image-1834" /></a></p>
<p><strong>User Experience</strong></p>
<p>Ao navegar na web, sacar dinheiro de um caixa eletrônico ou mesmo usar um celular, nos deparamos com sistemas diferentes, escritos em Java, Ruby ou C#, porém nossa satisfação não é definida pela linguagem utilizada,  e sim pela qualidade e facilidade em interagir com o produto: nossa <strong>experiência</strong> como usuário. </p>
<p>Ao estudo dessa interação usuário-produto dá-se o nome <strong>User Experience</strong>, muito conhecido como <strong>UX</strong>, e em português traduzido como <strong>Experiência do Usuário</strong>.</p>
<p><img src="http://caelum.wpengine.netdna-cdn.com/wp-content/uploads/2010/01/elements-of-user-experience-300x195.png" alt="elements-of-user-experience" title="elements-of-user-experience" width="300" height="195" class="aligncenter size-medium wp-image-1812" /></p>
<p>Pode-se definir <strong>User Experience</strong> como a satisfação e qualidade em interagir com a interface de um serviço, produto ou sistema. Muitos consideram a <strong>Experiência do Usuário</strong> como um dos principais fatores no sucesso ou fracasso de um software. O quanto seu software é focado na necessidade do usuário? Com que velocidade ele atende aos clientes? Quais as dificuldades para finalizar uma compra? Quanto mais simples de usar, menor é a necessidade de suporte e maior a viabilidade financeira do projeto. Podemos citar exemplos clássicos, como o GMail, que revolucionou a forma de utilizar email online, além do iPod com sua interface simples e objetiva.</p>
<p><strong>Design de Interação</strong></p>
<p>Um dos papéis que existem no processo de desenvolvimento da Experiência do Usuário é o de Designer de Interação. Existem diversas funcionalidades implementadas em um sistema que muitas vezes os usuários finais desconhecem ou tem pouco interesse, sendo que elas poderiam facilitar tarefas e otimizar tempo. O <strong>Designer de Interação</strong> se preocupa com as relações humanas de um software.</p>
<p>Autores e profissionais se referem ao <strong>Design de Interação</strong> como <strong>iD</strong> ou <strong>IxD</strong> (<strong>Interaction Design</strong>), existindo já uma associação oficial, a <strong><a href="http://www.ixda.org/">IxDA</a></strong>. No Brasil há um  conhecido <a href="http://uxblog.locaweb.com.br/">blog da Locaweb</a> focado em Experiência do Usuário.</p>
<p><strong>Designer de Interação x Arquiteto de Informação</strong></p>
<p>Nos projetos web os dois papéis são parecidos, porém com diferentes focos. O <strong>Arquiteto de Informação</strong> se preocupa mais com o armazenamento e distribuição da informação, enquanto o <strong>Designer de Interação</strong> tem a responsabilidade de definir como essa informação será manipulada e transformada.<br />
<img src="http://caelum.wpengine.netdna-cdn.com/wp-content/uploads/2010/01/user_experience_garrett.gif" alt="user_experience_garrett" title="user_experience_garrett" width="300" height="362" class="aligncenter size-full wp-image-1808" /><br />
É comum em equipes grandes o <strong>Designer de Interação</strong> ser responsável por criar wireframes enquanto o <strong>Arquiteto de Informação</strong> cria a estrutura e faz o planejamento geral.</p>
<p>Existe um instituto sobre <a href="http://www.iainstitute.org/pt/">Arquitetura de Informação</a> e no ano passado o Brasil sediou o <a href="http://www.interaction-southamerica.org/">Interaction South-America 09</a>.</p>
<p><strong>Programador de Interfaces</strong>             </p>
<p>E quem realmente escreve o código das interfaces web depois de planejadas? Nessa etapa entra o profissional com conhecimentos aprofundados de HTML, CSS, Javascript, que têm ganhado muita atenção nos últimos anos, em especial o Javascript, sendo reconhecido como uma linguagem extremamente poderosa e divertida. Esse profissional é focado em transformar o trabalho planejado pelos profissionais acima em realidade. Ter o domínio dos melhores padrões, layouts e conhecimento dos diversos navegadores existentes para converter o projeto em realidade são algumas das funções do <strong>Programador de Interface</strong>, também chamado de <strong>Web Designer</strong>.<br />
<img src="http://caelum.wpengine.netdna-cdn.com/wp-content/uploads/2010/01/web-design-300x225.jpg" alt="web-design" title="web-design" width="300" height="225" class="aligncenter size-medium wp-image-1814" />                        </p>
<p>O sucesso de um projeto dependente muito de atender e se possível superar as expectativas dos usuários, fazer com que a interação deles com o sistema seja tão satisfatória a ponto de atingir completamente os objetivos do sistema.</p>
<p>Confira o conteúdo dos treinamentos <a href="http://www.caelum.com.br/curso/wd-41-design-interface-experiencia-usuario-usabilidade/">WD-41 | Design de Interação, Experiência do Usuário e Usabilidade  </a> e <a href="http://www.caelum.com.br/curso/wd-43-desenvolvimento-web-html-css-javascript/">WD-43 | Desenvolvimento Web com HTML, CSS e JavaScript</a>.                                                                  </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.caelum.com.br/html-css-javascript-e-ux-na-nova-formacao-da-caelum/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Effective Java: segunda edição</title>
		<link>http://blog.caelum.com.br/effective-java-segunda-edicao/</link>
		<comments>http://blog.caelum.com.br/effective-java-segunda-edicao/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 11:56:29 +0000</pubDate>
		<dc:creator>Paulo Silveira</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[composição]]></category>
		<category><![CDATA[effective java]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[fj-16]]></category>
		<category><![CDATA[herança]]></category>
		<category><![CDATA[imutabilidade]]></category>
		<category><![CDATA[interfaces]]></category>
		<category><![CDATA[orientação a objetos]]></category>

		<guid isPermaLink="false">http://blog.caelum.com.br/2008/07/25/effective-java-segunda-edicao/</guid>
		<description><![CDATA[Como sabemos, a segunda edição do Effective Java foi publicada. O autor é Joshua Bloch, um dos principais responsáveis pelo generics do Java, e atualmente chief java architect no Google. Esse livro é dividido em 78 itens, cada um com cerca de 3 páginas, atacando um ponto específico do java e orientação a objetos, explicando <a href="http://blog.caelum.com.br/effective-java-segunda-edicao/#more-237'" class="more-link">more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Como sabemos, a segunda edição do <a href="http://java.sun.com/docs/books/effective/">Effective Java</a> foi publicada. O autor é <a href="http://en.wikipedia.org/wiki/Joshua_Bloch">Joshua Bloch</a>, um dos principais responsáveis pelo generics do Java, e atualmente chief java architect no Google. Esse livro é dividido em 78 itens, cada um com cerca de 3 páginas, atacando um ponto específico do java e orientação a objetos, explicando uma boa ou má prática. Simplesmente incrível, durante a leitura você sempre reconhece muita coisa que já aprendeu durante sua experiência de desenvolvimento. </p>
<p>Essa nova edição está estendida e revista, para cobrir as grandes mudanças do Java 5. Esse, juntamente com <a href="http://blog.caelum.com.br/livros-escolhendo-a-trindade-do-desenvolvedor-java/">outros dois livros</a> (e atualmente incluiríamos também o <a href="http://en.wikipedia.org/wiki/The_Mythical_Man-Month">The Mythical Man-month</a>), são de extrema importância para todo desenvolvedor na nossa opinião.</p>
<p>O <a href="http://www.boaglio.com/">Fernando Boaglio</a> tem <a href="http://www.boaglio.com/index.php/2007/10/01/effective-java-depois-de-6-anos/">um resumo</a> em seu blog, sobre todos os itens dessa nova versão. A <a href="http://www.java.blogger.com.br/">Vanessa Sabino</a> publicou anos atrás um resumo completo sobre a primeira edição, que você pode conferir na coluna da direita do seu blog. </p>
<p>O Fernando também <a href="http://www.guj.com.br/posts/list/90779.java">postou no GUJ</a> um link para <a href="http://www.infoq.com/articles/bloch-effective-java-2e">uma excelente entrevista do Joshua Bloch</a>, onde ele tenta resumir as más práticas, o java inefetivo: <strong>otimização prematura</strong>, e <strong>escrever o próprio código quando bibliotecas boas já existem</strong>. Além disso, Joshua Bloch é categório sobre a grande importância dos testes unitários: &#8220;<em>Unit testing is key. And writing your tests first is a great thing.</em>&#8221;</p>
<p>Lendo essa nova edição e relembrando muito da edição anterior, escolhi aqui quatro itens que considero vitais, e vou falar sucintamente sobre cada um deles. Curiosamente todos os selecionados aqui já existiam na edição anterior, e estão mais relacionados a design que a idiomismos da linguagem, mas isso não tira a  importância dos outros aqui não citados. Esses itens são muito debatidos no capítulo de Tópicos em Orientação a Objetos no nosso <a href="http://www.caelum.com.br/curso/fj-91-arquitetura-design-projetos-java/">trienamento de Design e Arquitetura de projetos Java</a>. Vamos a eles:</p>
<p><strong>Item 15: Minimize mutabilidade</strong></p>
<p>Classes imutáveis possuem uma série de vantagens: fáceis de manter, não possuem efeitos colaterais e acima de tudo são thread safe. Uma classe deve ser imutável a não ser que você tenha muito bons motivos para isso. Mesmo se não for possível tornar sua classe imutável, minimize a quantidade de métodos que alteram o estado do objeto. Um objeto previsível é muito mais simples de manter. Joshua Bloch cita <code>String</code>, <code>BigInteger</code> e diz que <code>java.util.Date</code> e <code>java.awt.Point</code> deveriam ter sido criadas imutáveis! Muitas APIs novas abusam da imutabilidade, como a Joda Time, classes wrapper, Money and Time do Eric Evans, etc. Aliás, é com o slogan da imutabilidade que linguagens como <a href="http://clojure.org/">clojure</a> e <a href="http://www.erlang.org/">erlang</a> tem chamado tanta atenção. Leia também <a href="http://blog.lucindo.com.br/2008/05/22/state-youre-doing-it-wrong/">essa citação</a> no blog do Renato Lucindo.</p>
<p><strong>Item 16: Favoreça composição em vez de herança</strong></p>
<p>Esse é um tópico que já foi <a href="http://blog.caelum.com.br/como-nao-aprender-orientacao-a-objetos-heranca/">discutido anteriormente nesse post</a>. O fato é o seguinte: é muito fácil usar herança de maneira errada, como é o caso de <code>Stack extends Vector</code> e <code>Properties extends Hashtable</code>. Mesmo quando usada corretamente, herança pode causar efeitos colaterais com muita facilidade, sendo que utilizar interfaces e composição pode substitui-la por completo, com o pequeno acréscimo de algumas linhas de delegação. Esse item também é citado no livro <em>Design Patterns</em> como um dos dois princípios básicos do bom design orientado a objetos.</p>
<p><strong>Item 47: Conheça e use as bibliotecas!</strong></p>
<p>Você conhece a <code>ArrayDeque</code> do java 6? Sabia que a <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html">java.util.Scanner</a> pode ler facilmente arquivos com formatos caseiros, e já trazer para você <code>double</code>s, <code>String</code>s e até mesmo <code>BigDecimal</code>s? Que JAXB e JAXWS podem agora ser usados apenas com Java SE? Sabia que a <code>Collections</code> possui hoje métodos para calcular a frequência de um elemento e inverter a ordem de um <code>Comparator</code>?. Conhecer bem a biblioteca padrão do Java pode te salvar de escrever muito código já existente, testado e de qualidade. <code>java.io</code>, <code>java.lang</code> e <code>java.util</code> são APIs que funcionam como base para todo desenvolvedor e merecem um estudo aprofundado.</p>
<p><strong>Item 52: Refira a objetos pelas suas interfaces</strong><br />
Sem dúvida uma boa prática mais que necessária. Através dela conseguimos diminuir muito o acoplamento entre classes, deixando apenas uma fina camada entre elas: as interfaces. Sempre usar <code>InputStream</code> em vez de se acoplar em <code>FileInputStream</code>, sempre usar <code>List</code> em vez de se acoplar a <code>ArrayList</code>. Muitas vezes podemos ir mais longe, nesse último caso <code>Collection</code> pode ser o suficiente, ou até mesmo <code>Iterable</code>! Algumas pessoas levam isso tão a sério que nunca criam uma única classe concreta que não implemente uma interface. Esse item também é citado no livro <em>Design Patterns</em>, e é o outro princípio básico do bom design orientado a objetos desta forma: &#8220;<em>Programe voltado a interface, e não a implementação</em>&#8220;.</p>
<p>Ainda existem itens fundamentais sobre Enums, Exceptions, Concorrência e Generics. Esse livro é realmente importante na sua cabeceira. Boa leitura!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.caelum.com.br/effective-java-segunda-edicao/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

