<?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>hlegius</title>
	<atom:link href="http://www.hlegius.pro.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hlegius.pro.br</link>
	<description>programação, desenvolvimento, tecnologia e muito o que contar.</description>
	<lastBuildDate>Tue, 22 Jun 2010 15:19:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Procura-se o Programador Sênior</title>
		<link>http://www.hlegius.pro.br/procura-se-o-programador-senior/</link>
		<comments>http://www.hlegius.pro.br/procura-se-o-programador-senior/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 15:19:29 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[Carreira]]></category>
		<category><![CDATA[Featured Articles]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[developer]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/?p=455</guid>
		<description><![CDATA[O que muito é visto nas ofertas de &#8220;vagas&#8221; para programadores são os rótulos Júnior, Pleno e Sênior. Mas, como saber em qual destes níveis você está ? E, é possível tachar pessoas com estes níveis ?

Já conversei com pessoas que batem o martelo facilmente dizendo:
- É por tempo.  Eu programo em brainfuck há seis [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">O que muito é visto nas ofertas de &#8220;vagas&#8221; para programadores são os rótulos Júnior, Pleno e Sênior. Mas, como saber em qual destes níveis você está ? E, é possível tachar pessoas com estes níveis ?</p>
<p style="text-align: center;">
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.moma.org/collection/browse_results.php?object_id=79018"><img class=" " title="The Persistence of Memory" src="http://farm4.static.flickr.com/3023/3097529664_ffc705e57e.jpg" alt="The Persistence of Memory" width="500" height="333" /></a><p class="wp-caption-text">Salvador Dali, 1931 - The Persistence of Memory</p></div>
<p>Já conversei com pessoas que batem o martelo facilmente dizendo:</p>
<p style="padding-left: 30px;"><em>- É por tempo.  Eu programo em <a href="http://en.wikipedia.org/wiki/Brainfuck" target="_blank">brainfuck</a> há seis anos, logo sou sênior. </em></p>
<p>Será mesmo ?</p>
<p style="text-align: justify;">Em tempos modernos, fica ainda mais complexo fazer uma avaliação deste tipo para programadores, arquitetos ou engenheiros de software, pois, não é somente uma linguagem de programação que está em análise. É todo um contexto que abrange desde a escolha do ambiente de desenvolvimento até relacionamento com stakeholders e domínio em metodologias e paradigmas de desenvolvimento.</p>
<p style="text-align: justify;">Se temos a análise temporal como inválida, então o que espera-se de um dito sênior ?</p>
<p style="text-align: justify;">Para tal, conversei com três pessoas que estão diretamente envolvidas com estes aspectos.</p>
<p style="text-align: left;">&nbsp;</p>
<p style="padding-left: 30px; text-align: justify;">Creio que sim. Existem os profissionais seniores, porém muitas pessoas, e empresas, acabam confundindo o nível do profissional com o seu tempo de experiência.</p>
<p style="padding-left: 30px; text-align: justify;">Em minha visão, o tempo de experiência é importante, porém, não determinante para rotular um profissional, ou seja, é perfeitamente possível existirem seniores com 3 anos de experiência e juniores com 15 anos.</p>
<p style="padding-left: 30px; text-align: justify;">O profissional Júnior, é aquele que já desempenha as tarefas com certa autonômia, porém, necessita de um maior tempo de pesquisa e em alguns casos de orientação.</p>
<p style="padding-left: 30px; text-align: justify;">Por sua vez, o pleno já demora um tempo menor para realizar as mesmas tarefas além de não necessitar de orientações referente aquela tarefa. O que difere o pleno de um sênior é a visão holistica, ou seja, para ser um profissional sênior é preciso possuir habilidades complementares as necessárias para o desenvolvimento daquela tarefa, isso ajuda acima de tudo no desenho de uma melhor solução além de maior facilidade no tratamento de problemas.</p>
<p style="padding-left: 30px; text-align: justify;">Outro ponto que vale ser observado, é que muitas vezes o sênior é destacado para tarefas simples, que não exige um conhecimento avançado, como seguir um procedimento de criação de usuário. Esse fato, além de desmotivar o profissional, gasta recursos de forma imprudente, já que são os seniores que deveriam criar os procedimentos a serem seguidos, além de desenhar soluções para problemas e corrigir falhas críticas ou em serviços críticos.</p>
<p style="text-align: right;"><a href="http://twitter.com/bufoni" target="_blank">Vinícius Bufoni</a>, coordenador de engenharia web na <a href="http://www.vexcorp.com" target="_blank">Vex</a></p>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;">&nbsp;</p>
<p style="padding-left: 30px; text-align: justify;">Este é um assunto interessante. Na maioria dos lugares as pessoas usam &#8220;anos de experiência&#8221; como medida para classificar. Esta é, na minha experiência, uma das piores maneiras de se fazer este tipo de classificação. Uma pessoa que desenvolve em, digamos, JSP e Servlets Java por 10 anos não necessariamente tem 10 anos de experiência desenvolvendo software, ele tem experiência desenvolvendo JSP e Servlets! E mesmo assim, tempo gasto em uma tecnologia não está diretamente relacionado com proficiência nesta. Enfim, utilizar tempo para medir experiência é, normalmente, uma besteira.</p>
<p style="text-align: justify; padding-left: 30px;">A forma com que eu tenho lidado com esta relação entre níveis de desenvolvedores, atualmente, é usando algo chamado modelo Dreyfus de aquisição de conhecimento: <a href="http://en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition" target="_self">http://en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition</a> .</p>
<p style="text-align: justify; padding-left: 30px;">Normalmente eu tenho as áreas em que eu considero que meu time deve ser competente (este post: <a href="http://fragmental.tw/2009/11/24/i-wish-i-knew-that-before-getting-this-job-–-slides-and-long-notes/" target="_blank">http://fragmental.tw/2009/11/24/i-wish-i-knew-that-before-getting-this-job-–-slides-and-long-notes</a> da uma idéia sobre quais seriam estas áreas) e uso o Dreyfus para tentar entender onde cada um está nestas competências. Tem funcionado relativamente bem para mim mas ainda é, como sempre será, problemático e, por muitas vezes, injusto.</p>
<p style="padding-left: 30px; text-align: right;"><a href="http://fragmental.tw/" target="_blank">Phillip Calçado</a>, consultor na <a href="http://www.thoughtworks.com" target="_blank">ThoughtWorks</a></p>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;">&nbsp;</p>
<p style="padding-left: 30px; text-align: justify;">Do meu ponto de vista um profissional sênior é acima de tudo auto suficiente, é o tipo de profissional em que você não precisa passar o que deve ser feito, ele geralmente entende seu papel em uma equipe e como pode contribuir.</p>
<p style="padding-left: 30px; text-align: justify;">Um profissional Sênior consegue tomar decisões e assumir responsabilidades, ele não depende de alocações e precisa de muito pouca supervisão gerencial e técnica.</p>
<p style="text-align: justify; padding-left: 30px;">Geralmente um profissional Sênior também, está sempre atualizado e esta sempre ligado em tendências do mercado e em como adaptar estas novidades a sua realidade nos projetos em que esta envolvido.</p>
<p style="text-align: justify; padding-left: 30px;">&#8220;Tempo&#8221; de experiência na verdade não é tão importante, mas a diversidade e intensidade da experiência da pessoa é extremamente importante, se ele esteve envolvido uma grande diversidade de projetos e atuou em papeis dos mais diversos, um profissional sênior geralmente consegue se adaptar pois já trabalhou em diversos papéis e com diversos times.</p>
<p style="text-align: justify; padding-left: 30px;">No caso de grandes empresas de Internet, como o Yahoo!, é vital que o profissional sênior entenda de e tenha tido vivência com projetos de grande escala, e que entenda de Sistemas, arquiteturas e plataformas que funcionem com grandes volumes de acesso e demandam muita performance.</p>
<p style="text-align: justify; padding-left: 30px;">Não gosto muito destes rótulos, mas um profissional Pleno depende de um nível de supervisão/apoio maior. Um Pleno também tende a ser mais inseguro na tomada de decisões e definições mais complexas.</p>
<p style="text-align: justify; padding-left: 30px;">Mas a principal diferença é a experiência, bagagem de conhecimento. Em entrevistas sempre pergunto qual foi o maior desastre da carreira da pessoa, espero que ele me diga quais foram os erros e o que ele aprendeu com isso. Isso mostra maturidade em relação a tentativa/erro, onde não se deve temer cometer erros e que sempre devemos aprender com eles e continuar tentando. Isso é chave para ser inovador.</p>
<p style="text-align: right;"><a href="http://me.me/acarlos1000" target="_blank">Antônio Carlos Silveira</a>, diretor de Produto e Engenharia, <a href="http://yahoo.com.br" target="_blank">Yahoo! América Latina</a></p>
<p style="text-align: right;">
<p style="text-align: left;">Cada um tem seus métodos de análise, mas ficou evidente que contar os dias no calendário já não é mais tão convincente como parecia <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/procura-se-o-programador-senior/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Programador apaixonado</title>
		<link>http://www.hlegius.pro.br/programador-apaixonado/</link>
		<comments>http://www.hlegius.pro.br/programador-apaixonado/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 22:10:24 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[Carreira]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Dia-a-dia]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/?p=599</guid>
		<description><![CDATA[Ser programador é uma coisa engraçada ! Tenho visto recentemente várias movimentações por parte de programadores, buscando juntar-se para: programar !
É possível reparar que a quantidade de grupinhos que buscam aprender coisas novas &#8211; sejam elas linguagens da hype &#8211; metodologias ou ainda algum projeto pessoal integrando algumas linguagens, dados públicos e uma interface dita [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Ser Programador" href="http://hlegius.pro.br/ser-programador" target="_blank">Ser programador</a> é uma coisa engraçada ! Tenho visto recentemente várias movimentações por parte de programadores, buscando juntar-se para: <strong>programar</strong> !<br />
É possível reparar que a quantidade de grupinhos que buscam aprender coisas novas &#8211; sejam elas linguagens da <em>hype</em> &#8211; metodologias ou ainda algum projeto pessoal integrando algumas linguagens, dados públicos e uma interface dita Web 2.0.</p>
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.flickr.com/photos/danicuki/4671867058/in/set-72157624208353028/"><img title="Random Hack of Kindness São Paulo 2010 por danicuki" src="http://farm2.static.flickr.com/1275/4671867058_104bf2b4eb.jpg" alt="" width="500" height="333" /></a><p class="wp-caption-text">Random Hack of Kindness São Paulo 2010 por danicuki</p></div>
<p>Eventos como Yahoo! Open Hack day; Google Developer Day; o recente Random Hack of Kindness; <a href="http://www.codingdojo.org" target="_blank">Coding Dojo</a> (o de Sampa no IME da USP está meio inativo ao que consta); e vários outros movimentos iniciados até por empresas, como a própria <a href="http://www.caelum.com.br" target="_blank">Caelum</a> que já abriu as portas para criar um ambiente onde programdores pudessem se juntar e desenvolver suas coisas, ou mesmo que fechado ao grupo de programadores da mesma como já ouvi relatos de programadores.</p>
<p>O que leva esse bando de programador <em>malhucos</em> das cavernas a participarem com empolgação destes eventos &#8211; muitas das vezes apenas com <em>free lunch</em> e Internet 0800 ? São desocupados ? Loucos ?</p>
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.flickr.com/photos/acarlos1000/4448541107/"><img title="Yahoo! Open Hack Day Brazil 2010" src="http://farm5.static.flickr.com/4020/4448541107_bf35ab2bea.jpg" alt="Yahoo! Open Hack Day Brazil 2010" width="500" height="281" /></a><p class="wp-caption-text">Yahoo! Open Hack Day Brazil 2010 por Antônio Carlos</p></div>
<p>Simples: adoram o que fazem ! São essas pessoas que geralmente criam tendências, aplicam ideias e tomam iniciativas nas corporações em que trabalham; São os mesmos developers que passam horas a fio programando com vários livros de nomes <em>nonsense</em> à tira-colo; ou que criam projetos pessoais para suprir uma necessidade própria e acabam chamando a atenção de muita gente &#8211; vide tantas <em>startups</em> bem sucessidas criadas e mantidas por programadores.</p>
<p>Geralmente esses mesmos programadores conhecem pelo menos duas linguagens. O motivo ? Curiosidade ! Pouco importa se Ruby on Rails fará sucesso no mercado coorporativo ou se Python não agrada o chefe. É legal para eles, então, investem tempo nisto.</p>
<p>Sempre em busca de novos conhecimentos, fanáticos pela arte em programar e fazer coisas novas; de novas formas e com novas ferramentas. Criam coisas, compartilham o feito e ainda passam a diante o novo conhecimento com artigos, blogs ou seminários. São programadores sempre motivados que buscam fazer uma análise crítica sobre suas próprias formas de programação buscando a evolução das ideias.</p>
<p>Vida social ? Muito bem, obrigado ! Nestas idas e vindas acabam conhecendo pessoas, lugares e oportunidades diferentes. Trocam ideias, conversam, trocam contactos das redes sociais; <acronym title="PHPinga, oi ?">juntam-se em botecos</acronym> ou equivalentes tornando o simples ato de programar em grupo em praticamente uma festa completa ! <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/programador-apaixonado/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>8++ perguntas para @marcelotoledo</title>
		<link>http://www.hlegius.pro.br/8-perguntas-para-marcelotoledo/</link>
		<comments>http://www.hlegius.pro.br/8-perguntas-para-marcelotoledo/#comments</comments>
		<pubDate>Mon, 24 May 2010 16:52:12 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[Carreira]]></category>
		<category><![CDATA[Séries]]></category>
		<category><![CDATA[comunidade]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[entrevista]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/?p=462</guid>
		<description><![CDATA[O entrevistado da vez é o Marcelo Toledo, atual CTO da Vex &#8211; também conhecido como meu chefe. Ele mantém um blog em http://marcelotoledo.org.
1.&#8221;The early years&#8221;.
O meu primeiro computador veio tarde, foi um 386, mas foi o suficiente para me introduzir no mundo dos computadores e me deixar completamente fascinado. Quando comprei meu primeiro modem [...]]]></description>
			<content:encoded><![CDATA[<p>O entrevistado da vez é o <a href="http://twitter.com/marcelotoledo" target="_blank">Marcelo Toledo</a>, atual CTO da <a href="http://www.vexcorp.com" target="_blank">Vex</a> &#8211; <em>também conhecido como meu chefe</em>. Ele mantém um blog em <a href="http://marcelotoledo.org" target="_blank">http://marcelotoledo.org</a>.</p>
<p><strong>1.&#8221;The early years&#8221;.</strong></p>
<p>O meu primeiro computador veio tarde, foi um 386, mas foi o suficiente para me introduzir no mundo dos computadores e me deixar completamente fascinado. Quando comprei meu primeiro modem foi que a coisa começou a tomar força, acessava as BBSs e quando finalmente a internet apareceu, tive certeza o que queria fazer da minha vida.</p>
<p>Desde cedo comecei nos esportes, durante vários anos fui atleta profissional, nadava duas vezes ao dia, de segunda a sábado. Começava de madrugada, das 5 às 6:30, a tarde, das 4 às 5 tinha preparação física, e das 5 às 7:30 era o treinamento principal na água. Eu nadava em média média 12 a 14km por dia.</p>
<p>Meu primeiro livro foi a história do Kevin Mitnick, não deu outra, ele foi minha maior referencia e inspiração na infância/adolescência, comei a estudar programação, Linux, BSD, montei um grupo hacker, comecei a andar com os melhores hackers do Brasil e além da natação, computador era uma das coisas que eu mais gostava no mundo.</p>
<p>Nunca fui bom aluno, sempre achei um saco a escola e a forma como ensinavam as coisas. Tomava broncas homéricas quando meu boletim chegava. Um dia, para deixar meu pai feliz, larguei a coisa mais importante da minha vida, para mostrar o quanto eu estava empenhado em estudar. Saí da natação e resultado, nada mudou. Só que mais tarde eu entendi que tudo aquilo foi importante para eu ingressar no mundo profissional. Deixei de ser hacker e comecei a entender como o mundo dos negócios funcionava. Mergulhei no software livre, que acabou me abrindo todas as primeiras portas.</p>
<p><strong>2. Totalmente direto quando o assunto é Java. Por quê tamanho desdém por uma das linguagens mais utilizadas no meio corporativo ?</strong></p>
<p>De jeito nenhum, deixei de ser radical ainda novo, acho o Java uma excelente linguagem e plataforma de desenvolvimento, foi responsável por uma expansão brutal do nosso mercado, mas infelizmente em todos os problemas que eu encontro na vida, existe uma solução mais interessante que o java. Você que trabalha comigo aqui na <em>Vex</em>, sabe que temos uma área web, outra de redes, outra de sistemas embarcados e agora teremos aplicativos desktop e mobile e mesmo assim o Java não entra como minha primeira opção em nenhuma delas.</p>
<p><strong>3. Como um bom programador você deve possuir uma linguagem que tenha mais afinidade e como consequência, habilidade. Qual seria e por quê ?</strong></p>
<p>Depois de tantos anos programando, percebo que não existe uma linguagem que te acompanha para o resto da vida como sua melhor linguagem, em cada momento ou fase da minha vida eu tive uma linguagem de programação mais presente, a que até hoje nunca foi superada na minha opinião, o C, mas tem suas aplicações limitadas, obviamente eu não usaria e não uso C para uma serie de aplicações, mas considero uma linguagem pura e eficiente, elegante quando bem utilizada. Em linguagens de script para servidor, gosto muito do Python. Para desenvolvimento web, confesso que o Rails tem roubado os meus holofotes. Programei muito em muitas outras linguagens, de Assembly a Visual Basic ou Delphi, acredite, programei nessas linguagens. Mas teve fase da minha vida que fui apaixonado por Lisp. Também fui apaixonado por C++ e PHP e também programei bastante no quase falecido Pascal.</p>
<p><strong>4. De developer à manager. Você tinha como objetivo este &#8220;desvio&#8221; na carreira ou chegou como uma boa oportunidade ?</strong></p>
<p>Nunca tive a pretensão de ser chefe, mais importante ainda, nunca tive interesse em ser chefe. Sempre fui extremamente técnico, minhas leituras sempre foram regadas a tópicos bem profundos da tecnologia. Por este motivo eu admirava empresas gringas que valorizavam bons engenheiros, eu imaginava que poderia continuar como engenheiro e ainda assim ter um nível salarial comparado a um gerente ou diretor. Mas ei, eu estava no Brasil, a cena de tecnologia era praticamente nula, eu tive que mudar minha mentalidade e subir a escadinha dos cargos, hoje eu sei que as coisas são bem diferentes e hoje já é possível ser um eterno engenheiro com um bom salário, ainda não é fácil, pois são raras as empresas que dão boas condições no Brasil. Mas desde então passei a estudar e aprender este outro mundo, marketing, finanças, vendas, gestão de pessoas, política, etc. Ainda bem que eu tive essa vontade de ser eterno engenheiro e não consegui, assim como várias outras vontades na minha vida que eu não realizei, hoje todas elas são minhas metas de vida, para tornar isso realidade para alguém. Pratico hoje o que eu busco amanhã, meu funcionário ideal é aquele que tem amor incondicional pelo que faz, assim como eu tive e tenho pela tecnologia.</p>
<p><strong>5. Seguindo a nomeclatura do mercado, temos cargos baseados em níveis por, em teoria, conhecimento: Júnior, Pleno e Sênior. Assumindo que você está em busca de um profissional dito sênior, qual seria sua forma ou metodologia para tachar Foolano ou Ciclano adequado ao título ?</strong></p>
<p>Vale lembrar que eu sou totalmente contra as formas tradicionais de organização de recursos humanos, muitas empresas acabam errando ao fazer isso. Falando especificamente de engenharia de sistemas, o conhecimento técnico é sempre um pré-requisito para um sênior, um candidato que se propõe a trabalhar com um determinado assunto e não domina completamente o assunto é eliminado imediatamente. Além disso, o cargo Senior pressupõe que o engenheiro tem muita experiência prática, escreveu centenas de milhares de códigos, passou por dificuldades em diversos tipos de sistemas diferentes. Mas eu ainda assim penso que cada pessoa é única, não pode ser tratada genericamente, já tive gênios na minha equipe que eram completamente loucos e anti-sociais, impossíveis de trabalhar em equipe, uma maçã podre que todos nós sabemos qual destino tem. A história de vida de cada um tem importância, outras aptidões, estilo de vida, equilíbrio e controle emocional também formam um profissional Sênior.</p>
<p><strong>6. Mantendo a linha sob o foco de níveis em cargos, quais seriam as diferenças fundamentais entre um programador pleno e sênior ?</strong></p>
<p>Este é tema para um artigo, mas resumidamente, eu gosto de definir as características para cada um dos cargos, aplicar uma pontuação a cada uma delas e definir os interva-los para os cargos propostos, como você mencionou poderia ser Junior, Pleno e Sênior.</p>
<p>Por exemplo:</p>
<ol>
<li>Formação acadêmica (x pontos)</li>
<li>Linhas de código escrita (y pontos)</li>
<li>Tempo de experiência (z pontos)</li>
<li>&#8230; (n pontos)</li>
</ol>
<ul>
<li>Junior &#8211; 10 pontos</li>
<li>Pleno  &#8211; 20 pontos</li>
<li>Sênior &#8211; 30 pontos</li>
</ul>
<p>Essa metodologia funciona muito bem se muito bem testada e validada, mas como mencionei acima, muitas empresas utilizam algo similar de forma completamente errada. Quantas empresas que conhecemos que definem para um engenheiro de sistema que a formação acadêmica é um pré-requisito? Um detalhe besta que faz com que perca-se pessoas brilhantes. Vale lembrar o que eu já mencionei várias vezes, os melhores programadores que eu conheci na vida não tinham formação acadêmica.</p>
<p><strong>7. Com o &#8220;boom&#8221; das metodologias ágeis, começaram a preocupar-se mais com processos de desenvolvimento de software. O que temos atualmente, porém, são muitas empresas sem processos e metodologias mesmo que primárias para gerenciar a produção (de software). Como gestor, qual sua visão sobre esta falta de processos e qual a solução que você indicaria para uma possível adoção ?</strong></p>
<p>Quando eu comecei a trabalhar não falava-se muito neste assunto, anos mais tarde eu me vi em meio a implantação de ISO 9001 e CMMI. O CMMI é uma das coisas mais radicais que eu vi na vida, impraticável, não se da um peido sem levantar os requisitos, prazo, riscos, conseqüências e pedir permissão e após autorizado registrar em log, relatórios, lições aprendidas, etc. Sou totalmente contra alguém fazer algo do tipo, pelo jeito muitas pessoas são, não foi a toa que surgiu as metodologias ágeis, que se preocupa somente com o que realmente funciona. Meu conselho para este de prática é, aprenda as melhores, utilize somente o que fizer sentido. Não seja radical, pois as vezes a melhor metodologia é não ter metodologia.</p>
<p><strong>8. É comum ler pela rede a seguinte expressão: &#8220;Desenvolva para mudanças&#8221;. Para tal, é fundamental o foco na qualidade do software produzido/mantido. Apesar de óbvio, não é isto que realmente acontece. A qualidade, no mundo real, é sim um fator &#8220;negociável&#8221; e por isso falhas, insatisfação do cliente e o retrabalho aumentam drasticamente. Em seu ponto de vista, qual o problema em fazer da qualidade uma constante ao projetar software ?</strong></p>
<p>O dia em que o chefe absoluto da sua empresa for um engenheiro que passou por tudo isso que você esta passando, pode ser que isso não mais aconteça.</p>
<p><strong>8++. Como você tem mantido organizadas atividades profissionais na Vex e projetos pessoais ? Utiliza-se de ferramentas ou técnicas de organização pessoal ou tem mantido tudo nos renomados checklists (i.e. Remember The Milk) ? E como tem feito uso de tais ferramentas ? (dica de <a href="http://twitter.com/chanelym" target="_blank">@chanelym</a>)</strong></p>
<p>Já inventei muito para me organizar, hoje eu posso dizer que eu alcancei uma forma prática e funcional de me organizar bem. Eu pratico muitos conceitos do GTD e tenho duas principais ferramentas, um gerenciador de tarefas, utilizo o Things (<a href="http://culturedcode.com/things/" target="_blank">http://culturedcode.com/things/</a>), que me acompanha em meus computadores, iPhone e futuramente no iPad, e um bom calendário (iCal), paralelamente utilizo muito o AddressBook, tudo sincronizado com Push.</p>
<p>Chegou a hora delas, as palavras finais&#8230;</p>
<p>Novamente, obrigado por aceitar o convite <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Parabéns pela iniciativa do blog, continue sempre escrevendo, foi um prazer responder a sua entrevista. Boa sorte e continue firme e forte, pois enxergo em você um potencial muito grande.</p>
<p>Meu blog empoeira às vezes, mas para quem quiser visitá-lo: <a href="http://blog.marcelotoledo.org " target="_blank">http://blog.marcelotoledo.org</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/8-perguntas-para-marcelotoledo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>8++ perguntas para @loiane</title>
		<link>http://www.hlegius.pro.br/8-perguntas-para-loiane/</link>
		<comments>http://www.hlegius.pro.br/8-perguntas-para-loiane/#comments</comments>
		<pubDate>Sun, 09 May 2010 22:45:18 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Séries]]></category>
		<category><![CDATA[comunidade]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[entrevista]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/?p=459</guid>
		<description><![CDATA[Loiane Groner ( @loiane ) é uma programadora Java, casada , capixaba, tem 23 anos cronologicamente comprovados em cartório e mora atualmente em Campinas, interior de São Paulo.
Bacharel em Ciência da Computação, trabalha como Java Developer/IT Specialist em um projeto internacional na IBM – Hortolândia-SP.
1. Cientista da computação e trabalhando com Java. Como foi seu [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.loiane.com/sobre/" target="_blank">Loiane Groner</a> ( <a href="http://twitter.com/loiane" target="_blank">@loiane</a> ) é um<strong>a </strong>programador<strong>a</strong> Java, <strong>casada</strong> , capixaba, tem 23 anos cronologicamente comprovados em cartório e mora atualmente em Campinas, interior de São Paulo.</p>
<p>Bacharel em Ciência da Computação, trabalha como Java Developer/IT Specialist em um projeto internacional na IBM – Hortolândia-SP.</p>
<p><strong>1.</strong> <strong>Cientista da computação e trabalhando com Java. Como foi seu primeiro contato com essa área e qual foi o motivo &#8211; se é que houve motivos especiais &#8211; que a motivou a seguir em frente ?</strong></p>
<p>No começo sempre quis seguir a carreira de direito, mas não gostava de decorar história pra passar no vestibular. Resolvi mudar para a área de exatas, pois sempre gostei muito de física e matemática, e entre as carreiras possíveis escolhi ciência da computação pois sempre gostei de explorar o computador desde que ganhei o meu primeiro, aos 10 anos de idade (e o coitado vivia no conserto por causa disso! rs).</p>
<p>Entrei na faculdade sem nem sequer saber que raios era a tal da programação. Tive um pouco de dificuldade no início, para aprender lógica de programação, mas decidi que iria aprender aquilo de qualquer jeito e comecei a estudar bastante. Chegava a estudar lógica por umas 5 horas/dia no primeiro período da faculdade. Até que no final do período já tinha gosto por programar em portugol e não sentia mais dificuldade, aprendi a “manha”.</p>
<p>Minha primeira linguagem de programação foi Pascal, mas tinha muitas limitações. Depois ouvi sobre o tal de Java (na época java estava super na moda). Uma professora sugeriu começar um grupo de estudos fora do horário da faculdade para aprendermos a linguagem. E aí fiquei apaixonada e até hoje mantenho esse “casamento”.</p>
<p><strong>2.</strong> <strong>Ao que consta, o primeiro programador foi na realidade uma programadorA &#8211; <a href="http://en.wikipedia.org/wiki/Programmer" target="_blank">http://en.wikipedia.org/wiki/Programmer</a> -, porém, mesmo assim o espaço das programadoras é bem pequeno. Acha que há algum tipo de impedimento ou preconceito que esteja dificultando mais programadoras ?</strong></p>
<p>Essa é uma questão que há anos intriga os pesquisadores da área. A escassez da participação de mulheres não ocorre apenas na computação, mas em qualquer carreira científica. A taxa de mulheres na graduação de exatas sempre foi baixa, mas depois de 2000 esse número descresceu ainda mais.</p>
<p>A ACM e a SBC estão bem empenhadas para divulgar e tentar trazer mais mulheres para a área.</p>
<p>Na minha opinião, o que ajudaria muito seria introduzir o estudo da programação básica ainda no ensino médio, pois é nessa época que começamos a pensar em qual profissão iremos seguir carreira. Assim, mais garotas (e também garotos) ficariam atraídos pela área, e muitos decobririam aptidão e vocação que às vezes nem sabem que têm.</p>
<p><strong>3.</strong> <strong>Eu já pude ver algumas pessoas um pouco decepcionadas com as provas de certificação da Sun para a linguagem Java &#8211; o que não inclui a SCEA, claro &#8211; Você inclusive foi uma delas <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Essa forma facilitada está fazendo a certificação perder seu valor &#8220;no mercado&#8221; tornando-se um belo quadro ou elas ainda tem seu valor para o profissional ?</strong></p>
<p>A certificação nunca tem o objetivo de desvalorizar o profissional, muito pelo contrário. O que acontece com a certificação da SUN é que atualmente, ficou muito fácil de passar. Bastam 2 meses de estudos e decoreba que você passa, ou seja, “qualquer um” consegue uma certificação SCJP, até mesmo quem nunca programou em Java.</p>
<p>Vamos ver se com a reformulação da Oracle isso vai mudar agora. O que eu acho que a maioria dos profissionais java esperam, é que seja cobrado na certificação problemas e cenários presentes no dia-a-dia de um profissional java, valorizando a experiência, e não apenas decorar para daqui a um mês esquecer tudo.</p>
<p>O que quero deixar bem claro é: se tiver vontade de tirar a certificação por você mesmo, ou seja, para aprender mais sobre Java, vai fundo, porque você vai ser valorizado por isso. Mas se quiser tirar a certificação só pra colocar no currículo (decorar pra passar), não é o fato de ter a certificação que vai ajudar a conseguir um emprego, até porque fora do Brasil, certificação da SUN não é muito valorizada, aliás, os caras lá fora nem vão ler o seu currículo, só irão te entrevistar pra ver se você realmente sabe o conteúdo.</p>
<p>Essa é minha opinião pessoal. Esse assunto é um pouco complicado de abordar, já gerou várias brigas em listas de discussão, é igual política, cada um defende um lado! rs</p>
<p><strong>4.</strong> <strong>Há várias aplicações, inclusive Bancos, que utilizam o Java no backend e fazem integração para rodar PHP como frontend dessa aplicação Java. Como você enxerga este fato ? Pelo que sei, esta parte é uma das mais &#8220;XML based&#8221; dos padrões JEE. Há implementações JEE que trabalham seguindo a linha &#8220;Convenção sobre Configuração (CoC)&#8221;, trazendo uma boa melhoria eliminando tanto XML. Mesmo assim, o modelo Controller (Servlets) e View (JSP, JSTL) do JEE é visto como um problema para a comunidade ou acredita que haja outros motivos para essa adoção hibrida ?</strong></p>
<p>Acredito que essa mixagem de linguagens se dá por alguns fatores:</p>
<p>O contra do PHP nesses casos é a fraca implementação OO, o que leva a pouco reaproveitamento de código e dificulta a manutenção por isso. Porém, a curva de aprendizado do PHP é pouco íngreme. Por outro lado, temos o Java, com implementação OO bem forte, mas a curva de aprendizagem é longa e íngreme. Sem contar o fato que ás vezes, muitas empresas não migram totalmente seus sistemas para Java justamente por esse fato, o que resultaria em alto custo de treinamento dos funcionários.</p>
<p>Hoje há uma certa flexibilidade entre linguagens e diferentes sistemas, então é legal explorar esse lado e usar o que cada linguagem tem de melhor para oferecer.</p>
<p><strong>5.</strong> <strong>Trabalha especificamente com Web. Qual o motivo da escolha pelo Java ?</strong></p>
<p>Comecei com Java no meu estágio e depois nunca parei. Meu trabalho foi sempre voltado para web, que acredito ser a maior demanda hoje, independente de linguagem. Me colocaram para trabalhar com web e aqui estou – só trabalhei em um projeto desktop até hoje. Gosto bastante da área, bem eclética, há centenas de recursos que pode-se usar, às vezes fica até difícil escolher o que usar.</p>
<p>Java oferece vários recursos nativos da própria linguagem, além de vários frameworks no mercado, como Spring, JSF, Struts, Vraptor (um brazuca que é ótimo). Sem contar com a mixagem de frameworks que se pode fazer, tanto no lado servidor, quanto no lado do cliente (browser).</p>
<p><strong>6.</strong> <strong>No <a href="http://www.loiane.com/" target="_blank">seu blog</a> é fácil perceber que há vários artigos sobre o lado frontend de uma aplicação. É sua preferência ? Por quê ?</strong></p>
<p>No último ano troquei de empresa e tive oportunidade de aprender novos frameworks. Sempre trabalhei muito com código do lado servidor. Nessa nova experiência, tive oportunidade de trabalhar com código do lado cliente (browser) e aprendi mais javascript. Comecei a aprender ExtJS (framework javascript) e JQuery, que são maravilhosos e poupam muito o tempo do desenvolvedor.</p>
<p>Hoje divido meu tempo entre frontend e backend. É legal porque nos torna um profissional mais completo. Profissional java web, além de saber Java e frameworks, também tem que saber javascript, HTML e CSS, senão fica um profissional incompleto. Temos que desenvolver a aplicação pensando no usuário (que pensa que é mágica que acontece por trás da tela!), por isso também gosto do frontend.</p>
<p>No meu blog faço um log de algumas coisas que estou aprendendo, estudando. Às vezes é fácil encontrar na internet aquele exemplo bem básico, mas quando precisa fazer alguma integração com outra tecnologia é mais complicado de encontrar. Faço meus testes e publico no blog, assim, quando precisar novamente daquilo já tenho um passo a passo pronto, além de poder ajudar outras pessoas que podem ter as mesmas dificuldades.</p>
<p><strong>7.</strong> <strong>A Oracle já colocou sua &#8220;cara&#8221; nos sites que pertenciam a Sun. Essa aquisição trouxe temores à comunidade Java ? O que esperam do futuro da linguagem ?</strong></p>
<p>Há muita coisa sobre a Oracle que a gente ainda não sabe. Acho que só esperando pra ver. A Oracle já comprou várias empresas e muita coisa mudou para elas, mas acho que nenhuma compra foi tão importante e deu tanto o que falar quanto a compra da SUN.</p>
<p>Uma coisa já sabemos: a Oracle vai continuar com o suporte aos JUGs – grupos de usuários java. Enviaram uma carta aos JUG leaders. A nossa preocupação agora é se esse suporte vai ser tão bom quanto a SUN nos dava. Pelo menos foram bem receptivos com a gente.</p>
<p>Recentemente anunciaram algumas mudanças na certificação. Isso pode trazer tanto pró como pode ser contra. A Oracle tem a fama de precisar fazer curso para tirar certificação, o que seria ruim. Por outro lado, talvez mudem um pouco o processo da certificação e a melhore, trazendo de volta o status que uma certificação Java tinha antigamente.</p>
<p><strong>8.</strong> <strong>Já estive presente em seminários &#8220;Javeiros&#8221; e foi comum ouvir horrores sobre o PHP. Mesmo sendo ele tachado como &#8220;ridículo&#8221; pelos Javeiros, a adoção dele por empresas de gente grande é elevada &#8211; Yahoo!, Flickr (agora Yahoo!), Last.fm, Digg, Facebook, &#8230; &#8211; além das recentes &#8220;amizades&#8221; com Microsoft e Adobe. O que você pensa sobre esse #flamewar que o pessoal do Java faz contra o PHP. #off : (olha lá, sou developer PHP, hein !? =P ) /off</strong></p>
<p>Flamewar não faz bem para ninguém. Há muitos desenvolvedores que são apaixonados pela linguagem, como os profissionais Java. Mas ser radical é ridículo. As pessoas precisam aprender que a linguagem é apenas uma ferramenta de trabalho. Java pode ser melhor para certos tipos de sistemas, PHP para outros, C/C++, C#, Ruby, Cobol, e assim por diante.</p>
<p>Uma linguagem não é melhor do que a outra, temos que saber usar e saber o que aplicar para cada tipo de situação.</p>
<p>Não adianta eu falar que PHP/Java/C# é a melhor linguagem do mundo sendo que preciso desenvolver um sistema para mainframe. Nesse caso, não há linguagem melhor do que cobol. E aí?</p>
<p>Hoje as empresas não buscam mais aquele cara que só sabe uma linguagem. Para se destacar hoje no mercado, é preciso ser um profissional “multi-línguas”. Aquela pessoa que for muito xiita, não vai se sair muito bem&#8230;</p>
<p><strong>8++.</strong> <strong>Entre os developers Java, parece que há uma certa afinidade com o Ruby (e o Rails) que carrega a bandeira ágil, o qual possui um manifesto criado por dezessete developers muitos deles developers Java. Qual é a explicação para essa afinidade em seu ponto de vista ?</strong></p>
<p>Ruby é a linguagem do momento, da moda, que as pessoas dizem ser a linguagem do futuro.  Ruby tem vários recursos incríveis, além de ser rápida para codificar. Como já citei na resposta anterior, hoje o profissional procurado é aquele que não tem problema de se adaptar para usar uma outra linguagem, ou várias ao mesmo tempo. O “in” é usar o que tem de melhor de cada linguagem para construir um sistema mais robusto, mais potente. E com certeza Java e Ruby é uma ótima combinação!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/8-perguntas-para-loiane/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Ser programador</title>
		<link>http://www.hlegius.pro.br/ser-programador/</link>
		<comments>http://www.hlegius.pro.br/ser-programador/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 18:19:15 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Featured Articles]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[projetos]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/?p=564</guid>
		<description><![CDATA[Quando decidi, aliás, percebi, que eu tinha vontade de estudar programação, nunca passou pela minha cabeça o quão difícil era criar uma aplicação a nível profissional.
Iniciei na segunda metade de 2004, instalando um daqueles all in one for Windows (PHP, Apache, MySQL) e em uma semana estava fazendo uns ifs e submetendo formulários via HTTP [...]]]></description>
			<content:encoded><![CDATA[<p>Quando decidi, aliás, percebi, que eu tinha vontade de estudar programação, nunca passou pela minha cabeça o quão difícil era criar uma aplicação a nível profissional.<br />
Iniciei na segunda metade de 2004, instalando um daqueles <em>all in one</em> <em>for Windows</em> (PHP, Apache, MySQL) e em uma semana estava fazendo uns <em>ifs</em> e submetendo formulários via HTTP POST.</p>
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.flickr.com/photos/harmony19490/363024712/"><img src="http://farm1.static.flickr.com/138/363024712_5783b2bee0.jpg" alt="" width="500" height="333" /></a><p class="wp-caption-text">&quot;Java printout por Ngọc Hà @ flickr&quot;</p></div>
<p>Naquela época era claro para mim que programação era algo relacionado à área de exatas, pois criar uma aplicação é algo lógico tendo envolvimento direto com matemática e tudo mais.<br />
Em coisa de um mês e pouco já conseguia fazer até uns &#8220;SQLs&#8221; e montava sites no estilo <em>macarrônico</em> de desenvolver. Aquilo para mim era fantástico! Tinha como objetivo aprender bem a linguagem para assim conseguir <a title="Zend Certified Engineer" href="http://www.zend.com/en/store/education/certification/authenticate.php/ClientCandidateID/ZEND010366/RegistrationID/231431226" target="_blank">minha certificação da Zend</a>, tornando-me assim um programador profissional.</p>
<p>Aconteceu porém, algo inesperado: comecei a &#8220;seguir&#8221; &#8211; não era no Twitter, até porque ele ainda era um protótipo de projeto na época &#8211; pessoas realmente profissionais em desenvolvimento de software e eu percebi assim que o buraco era mais embaixo e que eu ser excelente em uma linguagem era apenas um dos passos para tornar-me um programador profissional.</p>
<p>Abrindo um parênteses, eu li através do <a href="http://www.twitter.com/sergioprado" target="_blank">@sergioprado</a>, não lembro onde agora, uma frase interessante e que tem como tradução algo como:</p>
<pre>"O caminho para tornar-se mestre: siga o mestre; ande com o mestre;
torne-se o mestre."</pre>
<p>Após começar eu a seguir os mestres, pude perceber que programação vai muito além da leitura de um requisito funcional de software e fazer daquilo algo sistêmico. Hoje, arrisco-me a dizer que programação não é algo somente relacionado à exatas. Possuí também, questões éticas &#8211; humanas &#8211; e artísticas.</p>
<p><strong>A programação é relacionada a área de exatas</strong></p>
<p>Isso é bem claro aos envolvidos em desenvolvimento de software. Você lê um problema descritivo, vulgo especificação funcional, ou visual (UML, rabisco na <a href="http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;field-keywords=moleskine&amp;x=0&amp;y=0" target="_blank">Moleskine</a>, <em>whatever</em>) e faz daquilo algo sistêmico e que agregue valor ao negócio de seu cliente.</p>
<p>Como premissa você precisa aprender uma linguagem. Conhecer uma linguagem bem não é nada fácil. Você precisa empenhar-se para conhecer as intrínsecas e peculiaridades para aproveitar o melhor dela, tornando-se um especialista na linguagem. Eu valorizo mais um programador excelente em uma linguagem a um que já &#8220;trabalhou&#8221; com várias. Não é impossível uma pessoa ser excelente em mais de uma linguagem, mas isto, porém, demandaria muito tempo de dedicação para atingir tal nível.</p>
<p><strong>A programação é relacionada a ética</strong></p>
<p>Toda área tem suas condutas éticas e humanas, óbvio. Em programação, porém, vejo muitos ditos programadores ignorando isto. Quando você troca qualidade por falso ganho de tempo, você está sendo antiético. Quando não analisa corretamente as decisões que irá tomar em cima de algum problema, falta-lhe ética. Quando deixa de atentar seu cliente, o que inclui seu chefe, sobre a ausência de segurança, qualidade ou algum problema em cascata que venha a aparecer em decorrência de uma atitude, você está sendo antiético.</p>
<p>E isso acontece em demasia em nossa área! Seja por falta de interesse por parte do dito programador ou mesmo por medo de perder o emprego/projeto por &#8220;afronto&#8221; ao seu chefe ou cliente.</p>
<p>Para conhecer as técnicas, metodologias e artimanhas no desenvolvimento de software é necessário antes, ter uma boa noção de análise e projeto de software; arquitetura de aplicações; padrões e melhores práticas, para, após criticar uma atitude antiética de seu chefe/cliente, você ter total embasamento para propor a solução sem comprometer o projeto nem a aplicação. Isto será necessário também, para você ter um vocabulário comum para quando estiver numa roda de conversa entre os &#8220;mestres&#8221; da área.</p>
<p>Importante ressalvar que seu cliente ou chefe pode estar tomando uma atitude antiética, no ponto de vista de programação, inconscientemente. Afinal ele é especialista no negócio, o programador profissional é você! <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>A programação é também relacionada a artes</strong></p>
<p>Há uma enorme diferença entre criar algo que funcione e criar algo que além de funcionar, transparece o domínio (regra de negócio).</p>
<p>Eu posso saber ler e escrever em português, mas há uma diferença gritante entre um poeta português e eu. Ele, diferentemente de mim, sabe utilizar muito bem as palavras e com elas, faz transparecer sentimentos, idéias e pensamentos sobre determinado tema, trazendo um enredo ao assunto abordado, envolvendo-nos em sua história.</p>
<p>Posso saber desenhar, mas isso não me torna um artista que emociona as pessoas com minhas obras.</p>
<p>Como programadores profissionais é fundamental conseguirmos fazer o mesmo ! É de nossa responsabilidade criar um código simples, legível e que conte toda a história da aplicação através de seus pacotes, classes, métodos, parâmetros, atributos e variáveis. Qualquer coisa diferente disso, não pode ser aceito como código profissional.</p>
<p>Pouco importa se a linguagem X é tachada como mais poluída que a Y. Você como profissional, tem que quebrar essa barreira e torná-la tão legível quanto qualquer outra, afinal, você é especialista na linguagem, lembra ?</p>
<p>Além de criar, é nossa responsabilidade cuidar para que o código continue sempre otimizado por tantas quantas forem as mudanças que nele ocorrer. Criar algo legível recai diretamente sobre isto, pois, no futuro outro profissional em programação poderá continuar seu trabalho sem danificar ou abandonar as premissas cruciais para um bom código. <a href="http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1272218331&amp;sr=8-1" target="_blank">Andrew Hunt</a> aborda o título: <em>&#8220;Don&#8217;t live with broken windows&#8221;</em>, onde resumidamente ele alerta para não descuidarmos da qualidade, pois, basta uma janela quebrada em uma casa para que ela transpareça o estado de abandono, fazendo assim, com que outras pessoas destruam mais janelas.</p>
<p>E como toda arte, não há uma receita para criar bons softwares. É necessário muito empenho, ler muitos códigos, revisar muitos paradigmas ao longo do tempo e claro, programar bastante. Não é possível tornar-se um programador profissional sem conhecimento teórico, tão pouco, sem vivência com erros e acertos.</p>
<p>Ao desenvolver a aplicação, não aceite nada menos do que seu melhor naquilo e atente-se para não cair na armadilha de criar softwares de forma sistematizada. Tenha autocrítica para fazer avaliações em seus próprios códigos e evitar assim, programar por coincidência.</p>
<p>Lembre-se de que será seu nome no <em><strong>@author.</strong></em> <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/ser-programador/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Um ano depois&#8230;</title>
		<link>http://www.hlegius.pro.br/um-ano-depois/</link>
		<comments>http://www.hlegius.pro.br/um-ano-depois/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 20:31:15 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[Dia-a-dia]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[hlegius]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/?p=544</guid>
		<description><![CDATA[Há pouco mais de um ano, comecei a desenvolver pela Vex, minha primeira experiência non-freela, criando aplicações internas web-based em PHP, claro.  
A &#8220;ideia&#8221; de trabalhar fora veio repentinamente, basicamente com um pseudoconvite de meu amigo de longa data @Otata, que já estava trabalhando por lá e disse-me não por uma, nem duas, mas [...]]]></description>
			<content:encoded><![CDATA[<p>Há pouco mais de um ano, comecei a desenvolver pela <a href="http://www.vexcorp.com">Vex</a>, minha primeira experiência non-freela, criando aplicações internas web-based em PHP, claro. <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.flickr.com/photos/hlegius/3575945402/in/photostream/"><img title="Vex - Maio 2009" src="http://farm3.static.flickr.com/2455/3575945402_708ae7b821.jpg" alt="" width="500" height="375" /></a><p class="wp-caption-text">Vex - Setores TI e Operações - Maio 2009</p></div>
<p style="text-align: left;">A &#8220;ideia&#8221; de trabalhar fora veio repentinamente, basicamente com um pseudoconvite de meu amigo de longa data <a href="http://twitter.com/otata" target="_blank">@Otata</a>, que já estava trabalhando por lá e disse-me não por uma, nem duas, mas algumas vezes, de que a Vex estava contratando mais developers para fechar o time e que era para eu enviar meu &#8220;currículo&#8221;.</p>
<p style="text-align: left;">Após enviar meu currículo para o pessoal, houve os tramites default de conversa por telefone, entrevista pessoal, a renomada provinha tira-teima e no final do dia após enviar meu currículo estava ingressando no time.</p>
<p style="text-align: left;">Algo que achei peculiar foi a rápida contratação &#8211; comigo pelo menos. Tudo bem que houve ele, o QI, mas fiquei surpreso com a confiança que recebi dos coordenadores, afinal eu era até aquele momento um freela de cabelo comprido e que morava há alguns quilômetros de distância da empresa.</p>
<p style="text-align: left;">
<p style="text-align: left;"><strong>Ambiente</strong></p>
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.flickr.com/photos/hlegius/3535317787/"><img title="Vex - Galere Web - Maio 2009" src="http://farm4.static.flickr.com/3352/3535317787_a58de59980.jpg" alt="" width="500" height="375" /></a><p class="wp-caption-text">Vex - Galere Web - Maio 2009</p></div>
<p style="text-align: left;">Obviamente, totalmente diferente do até então <em>escritório-casa</em> que eu trabalhava enquanto freelancer. A adaptação não foi um problema, pois na Vex eu também utilizo notebook para desenvolver plugado à um monitor externo quase nos mesmos moldes que tenho em meu home office.</p>
<p style="text-align: left;">Por não recebermos visitas de clientes no prédio, podemos ir com roupas menos formais. Isso não quer dizer que eu possa ir de bermudas ou chinelos igual já tentaram fazer por lá <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p style="text-align: left;">No andar do desenvolvimento, há também o pessoal de sistemas embarcados e redes. O relacionamento com todos sempre foi bem tranquilo, mesmo quando saía uns flamewars do tipo: Python vs PHP; Zimbra não é <acronym title="Sim, sou Yahoo! fanboy">Yahoo!</acronym>; e todo mundo contra o <a href="http://twitter.com/otata" target="_blank">@Otata</a>.</p>
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.flickr.com/photos/hlegius/3655840182/"><img src="http://farm4.static.flickr.com/3396/3655840182_986d765840.jpg" alt="" width="500" height="375" /></a><p class="wp-caption-text">Vex - Junho 2009</p></div>
<p style="text-align: left;">Durante esse período uma coisa ficou clara: a empresa movimenta-se bastante. Houve pessoas entrando; pessoas mudando de área, pessoas deixando a Vex e até, pessoas que saíram e estão retornando novamente. As saídas, do ponto de vista pessoal, são ruins, pois todos no andar tem um contato diário, uma amizade e que depois de sua saída o contato praticamente se extingue.</p>
<p style="text-align: left;">
<p><strong>Os PHP&#8217;ers</strong></p>
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.flickr.com/photos/hlegius/4328427633/"><img src="http://farm5.static.flickr.com/4057/4328427633_8172122753.jpg" alt="" width="500" height="375" /></a><p class="wp-caption-text">Vex - Galere Webdev (@bufoni)</p></div>
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.flickr.com/photos/hlegius/4497018828/"><img src="http://farm5.static.flickr.com/4036/4497018828_06f4333761.jpg" alt="" width="500" height="375" /></a><p class="wp-caption-text">Vex - Galere Web (@Sugamele)</p></div>
<p>Se os developers geralmente não batem muito bem das ideias, essa turma bate menos ainda ! (haha, vão me matar com esse comentário). O pessoal na Vex é bem tranquilo e são bem espontâneos. O que surpreende nessa turma são as diferenças: cada um possui seu temperamento, opiniões &#8211; muitas das vezes bem diferentes &#8211; e suas especialidades. Mesmo com tantas diferenças, nós, que trabalhamos geralmente aos pares ou trios e raramente individualmente, temos um envolvimento excelente nos projetos.</p>
<p>Ao que estive olhando nos logs do controle de versão, passaram aproximadamente 12 pessoas (achismo mode on) pelo time Web durante um período de 4 anos.</p>
<p>Inclusive, o <a href="http://twitter.com/esampaio" target="_blank">@esampaio</a>, aqui conhecido como meu chefe, publicou um vídeo com o histórico do SVN de um de nossos projetos internos.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="275" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=9383180&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="500" height="275" src="http://vimeo.com/moogaloop.swf?clip_id=9383180&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object><a href="http://vimeo.com/9383180"></a></p>
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.flickr.com/photos/hlegius/3877838088/"><img title="Vex - Webdev" src="http://farm3.static.flickr.com/2529/3877838088_e2c2dd9b4e.jpg" alt="" width="500" height="375" /></a><p class="wp-caption-text">Vex - Webdev. @Sugamele e eu - Agosto, 2009</p></div>
<p>Pela quantidade de pessoas que ao longo desse período trabalharam em cima desse projeto em específico é um pouco previsível o que pode-se encontrar nele. Há coisas realmente muito boas &#8211; tanto código quanto solução para um problema &#8211; a própria engine de i18n é uma delas, porém, há também coisas desenvolvidas no estilo <a title="WOP" href="http://desciclo.pedia.ws/wiki/POG#Modelagem_Orientada_a_Gambiarras" target="_blank">WOP</a>. (Workaround-oriented programming).</p>
<p>O que me chamou a atenção nessa área é a real vontade do pessoal em evoluir e melhorar os pontos que hoje não estão bons. <strong><em>Quality of Code</em></strong> está literalmente em alta e o princípio <strong><em>&#8220;Don&#8217;t live with broken windows&#8221;</em></strong> (para mais leia o livro: <a href="http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1271881011&amp;sr=8-1" target="_blank">The Pragmatic Programmer</a>) tem feito sucesso. <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Quando é necessário atualizar alguma coisa ou sempre que possível &#8211; mesmo não estando na lista de prioridades, os códigos obscuros do passado são atualizados, melhorando não só a leitura e documentação (leia-se PHPdoc), mas também o relacionamento daquele módulo com todo o resto. Anima muito ver uma equipe &#8211; o que inclui os coordenadores da área &#8211; interessados em adotar metodologias e princípios que visam melhorar o código e entendem que isto no final, traz benefícios não só para os developers, mas também para os usuários da ferramenta.</p>
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.flickr.com/photos/hlegius/3576906072/"><img src="http://farm4.static.flickr.com/3331/3576906072_c0577e878a.jpg" alt="" width="500" height="375" /></a><p class="wp-caption-text">Vex - (@lfamorim e @sergioprado ao fundo) @Otata e @acidcode - Maio, 2009</p></div>
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.flickr.com/photos/hlegius/4328427647/"><img title="Vex" src="http://farm5.static.flickr.com/4019/4328427647_dea0894017.jpg" alt="" width="500" height="375" /></a><p class="wp-caption-text">Vex - @bufoni @esampaio e @sergioprado - Fevereiro, 2010</p></div>
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.flickr.com/photos/hlegius/3966572478/"><img src="http://farm3.static.flickr.com/2484/3966572478_8d8b0de070.jpg" alt="" width="500" height="375" /></a><p class="wp-caption-text">Vex Webdev - @bufoni e @Sugamele - Setembro, 2009</p></div>
<p><strong>Trabalho em grupo</strong></p>
<p>Por ter o costume de trabalhar sozinho na época dos freelas &#8211; claro, havia o designer <a href="http://twitter.com/jorgeveteran" target="_blank">@jorgeveteran</a> &#8211; eu, achei no começo que seria algo complicado. E sim, é complicado ! Não guardar as ideias ou soluções contigo é uma das coisas mais complicadas. Deixar o pessoal que está contigo no projeto atualizado das ações, estabelecer uma linha e manter as coisas alinhadas durante todo o projeto é algo que eu precisei reeducar quando comecei na Vex. Mas até hoje não houve nenhum tipo de problema com o pessoal que já trabalhei em conjunto. <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Um dos maiores problemas foi encontrar paciência para explicar as coisas técnicas para o pessoal. Não sou o melhor exemplo de paciência quando a tarefa é explicar coisas &#8211; que eu julgo claras e simples de entender &#8211; aos outros. Consigo explicar tudo numa boa, porém, dúvidas e erros que eu julgo primários me deixa meio: &#8220;Não acredito que você fez/perguntou isso !?&#8221;.</p>
<p>Outra particularidade é que dependendo da pergunta &#8211; na realidade, quase todas &#8211; eu não forneço a resposta pronta. Forneço links, materiais e até títulos de livros para que a pessoa leia, estude e tire suas próprias conclusões a respeito. Antes eu debater com ela aquele assunto à eu &#8220;formar robozinhos&#8221; que repetem tudo que eu julgo ser verdade até aquele momento. Se eles não entendiam o motivo pelo qual faço isso, agora eles ficaram sabendo ! <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://www.flickr.com/photos/hlegius/4343683541/"><img title="Vex Webdev" src="http://farm5.static.flickr.com/4066/4343683541_e496d9cdc8.jpg" alt="" width="500" height="375" /></a><p class="wp-caption-text">Vex Webdev - Playground - Fevereiro, 2010</p></div>
<p>Esse período que é um pouco mais de um ano realmente está valendo muito. Ao que percebo de comentários &#8211; críticas, na realidade &#8211; dos developers nas empresas em que trabalham, é possível ter uma clara noção de que a Vex é uma exceção. Uma equipe jovem, de jovens líderes e com ideias muito boas. O setor de tecnologia está de parabéns !</p>
<p>Retratos que coleciono desde quando iniciei na Vex podem serem <a title="Vex Pics." href="http://www.flickr.com/search/?w=59288595%40N00&amp;q=vex+OR+vexcorp&amp;m=tags" target="_blank">vistos aqui, ó !</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/um-ano-depois/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP e seus pseudo-padrões para nomeclatura de classe.</title>
		<link>http://www.hlegius.pro.br/php-e-seus-pseudo-padroes-para-nomeclatura-de-classe/</link>
		<comments>http://www.hlegius.pro.br/php-e-seus-pseudo-padroes-para-nomeclatura-de-classe/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 01:56:46 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[padroes]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/?p=519</guid>
		<description><![CDATA[Se você reparar bem o PHP é no quesito padronização de código uma linguagem bem brasileira. Há os padrões: Pecl, Pecl2, Zend Framework e Java (vulgo Zend Framework Coding Standard for PHP &#62;= 5.3).
Reparando bem, cada modelo tem suas particularidades, porém com mesma base. O Pecl2 e Zend Framework PHP &#62;= 5.3, aqui chamado de [...]]]></description>
			<content:encoded><![CDATA[<p>Se você reparar bem o PHP é no quesito padronização de código uma linguagem bem brasileira. Há os padrões: <a title="Pecl Coding Standard" href="http://pear.php.net/manual/pt_BR/standards.php" target="_blank">Pecl</a>, <a title="Pecl2 Coding Standard for PHP 5.3" href="http://pear.php.net/manual/pt_BR/pear2cs.rules.php" target="_blank">Pecl2</a>, <a title="Zend Framework Coding Stantard" href="http://framework.zend.com/manual/en/coding-standard.html" target="_blank">Zend Framework</a> e <a title="Zend Framework Coding Standard for PHP 5.3 or higher" href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html" target="_blank">Java</a> (vulgo Zend Framework Coding Standard for PHP &gt;= 5.3).</p>
<p>Reparando bem, cada modelo tem suas particularidades, porém com mesma base. O Pecl2 e Zend Framework PHP &gt;= 5.3, aqui chamado de Java/Sun/Oracle Coding Standard, tem o mesmo objetivo: atualizar o não-padrão para trabalharem com suporte a Namespaces. O que explico mais adiante.</p>
<p><strong>Antes do namaspace</strong>, ou seja, antes do PHP 5.3 a Zend recomendava um padrão que eu sempre achei ridículo, mas pensando bem, não tinha muito como fugir disso:</p>
<pre>Arquivo: /application/module/Object.php
Nome da Classe: Module_Object</pre>
<pre>Arquivo: /application/module/client/view/Json.php
Nome da Classe: Module_Client_View_Json</pre>
<p>Funcional ? Sim, sem dúvidas. Elegante ? Bem&#8230;</p>
<p>Bonito fica quando encontramos coisas como:</p>
<pre>Arquivo: /application/module/AObject.php
Classe: Module_AObject &lt;&lt;abstrata&gt;&gt;</pre>
<p>A adoção do prefixo &#8220;A&#8221; para abstrações e do prefixo &#8220;I&#8221; para interfaces. Além de nada elegante, só atrapalha o uso de Domain-Driven Design onde, resumidamente falando, tem como foco: transparecer no código o que você ouve de seu cliente/stakeholder.</p>
<p>Salvo engano meu, vi isso em um destes padrões sugeridos para o PHP. Mas infelizmente não encontrei o link :/</p>
<p><strong>E aí veio o PHP 5.3</strong></p>
<p>Com a chegada oficial do PHP 5.3, os padrões ao invés de unificarem-se e sugerir algo em comum, resolveram o que ? Criar <strong>mais padrões</strong> (o que chega a ser irônico) para brindar a chegada do tão sonhado Namespace (ou pacotes, para os Javeiros).</p>
<p>A Zend sugere o seguinte agora:</p>
<pre>Arquivo: /application/module/client/view/Json.php
Namespace: \module\client\view
Classe: Json</pre>
<p>Sim, óbvio ! Temos assim o padrão Zend Framework v2 ou simplesmente, Java Coding Standards. E eu não estou brincando não. No próprio artigo proposto por <a href="http://framework.zend.com/manual/en/coding-standard.naming-conventions.html#coding-standard.naming-conventions.classes">Matthew Ratzloff</a>, ele cita como referência o <a href="http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html#367">link para o site do Java</a>. O foco de Matthew é acabar com um problema grave criado pela Zend Framework: abreviação de nomes devido a quantidade de caracteres.</p>
<p>O pessoal do Pecl, sugeriu algo bem parecido. Manteve as particularidades e adicionou o suporte à namespaces ao seu Coding Standard.</p>
<p><strong>Porém, há os frameworks</strong></p>
<p>Obviamente em meio a sopa de pseudo-padrões, cada framework tem o seu próprio como era de se esperar. symfony, Cake PHP, Zend Framework, Kohana, etc. Cada um com o seu próprio mesclando vários e criando um terceiro.</p>
<p>Em minha sincera opinião, acho o Coding Standard do symfony de longe o mais bizarro: tab com dois espaços e nome de classe iniciado por minúsculo e sufixado com .class.php de longe lidera a aberração.</p>
<p>Para piorar o autoload dele autoriza coisas como:</p>
<pre>Arquivo: /apps/module/lib/myObject.class.php
Classe: myObjectClass</pre>
<p>Isso não funcionará com namespaces. Fato.</p>
<p><strong>Teremos um padrão ?</strong></p>
<p>Gostaria eu que sim. Seria fundamental estabelecer, agora com o reaparecimento de namespaces no PHP &#8211; sim, existiu num passado sombrio &#8211; um padrão default e que fosse largamente adotado. Complicado é convencer muito ego por aí a fora a abandonar seus pseudo-standards &#8211; que de padrão não tem nada &#8211; e utilizar um único facilitando a colaboração entre projetos e utilizando o tempo no que realmente importa: criar bons e bem documentados softwares.<strong> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/php-e-seus-pseudo-padroes-para-nomeclatura-de-classe/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Twig &#8211; Uma outra engine de templates em PHP</title>
		<link>http://www.hlegius.pro.br/twig-uma-outra-engine-de-templates-em-php/</link>
		<comments>http://www.hlegius.pro.br/twig-uma-outra-engine-de-templates-em-php/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 10:14:47 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software livre]]></category>
		<category><![CDATA[hlegius]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[Twig]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/?p=467</guid>
		<description><![CDATA[Fui apresentado ao Twig não há muito tempo, mas logo me interessei pela proposta do projeto: simplicidade e flexibilidade ao trabalhar com templates em PHP.
Resumidamente é um projeto criado pelo Fabien Potencier - para quem não o conhece é o criador do symfony framework &#8211; e salvo engano há rumores de que ele pretende integrar [...]]]></description>
			<content:encoded><![CDATA[<p>Fui apresentado ao <a href="http://www.twig-project.org">Twig</a> não há muito tempo, mas logo me interessei pela proposta do projeto: <em>simplicidade e flexibilidade</em> ao trabalhar com templates em PHP.</p>
<p>Resumidamente é um projeto criado pelo <strong>Fabien Potencier </strong>- para quem não o conhece é o criador do <a href="http://www.symfony-project.org">symfony framework</a> &#8211; e salvo engano há rumores de que ele pretende integrar o Twig à versão 2.x do symfony removendo o PHP super verboso que rola nos templates do symfony desde seu lançamento. <em>* carece fontes concretas</em></p>
<p>Recursos bacanas e uma sintaxe à lá Django nos templates me chamou muita atenção para não só mais olhar, mas sim, testar para ver melhor a ferramenta.</p>
<p>Não demorou para eu testar como ele se portaria diante de objetos no template e para minha tristeza, para ele ler um atributo, depende nada mais, nada menos do que <strong>__get()</strong> e <strong>__isset()</strong>. É possível também, assim como na JSTL ler um atributo iniciado por get. No template você deveria chamá-lo sem esse get. i.e: getFoo() no template seria apenas foo.</p>
<p>Imediatamente, o que vem a mente de quem trabalha com OO ? Quebra brutal de encapsulamento. Sim, <strong>__get() </strong>por mais fácil que possa parecer, quebra totalmente a segurança de uma variável membro, uma vez que os atributos da mesma tornam-se públicos.</p>
<p>Tentei entrar em contato com o Fabien para ver o motivo que o levou a implementar assim. Ele, bem receptivo <em>- ironia mode on -</em> disse-me: se tiver um patch mande-o, do contrário, peço que seja paciente.</p>
<p>Fiz o patch, revi algumas coisas e mantive compatibilidade com o <strong>__get() __isset()</strong> que o Twig originalmente aceita e criei um Fork do <a href="http://github.com/hlegius/Twig">projeto no GitHub</a>.</p>
<p><strong>Features default</strong></p>
<ul>
<li>Suporte a plugins</li>
<li>Variáveis</li>
<li>Leitura de arrays por índices int ou string</li>
<li>Arrays multidimensionais</li>
<li>Objetos (via __get() __isset() apenas)</li>
<li>Objetos alinhados (Nested Objects) com __get() __isset() também</li>
<li>Blocos de controle, loops, etc.</li>
</ul>
<p><strong>Mudanças</strong></p>
<p>Métodos públicos começados por:</p>
<ul>
<li> get</li>
<li>is</li>
<li>has</li>
<li>match</li>
<li>contain</li>
</ul>
<p>Podem ser chamados no template sem qualquer problema sem a necessidade dos métodos mágicos.<br />
Abaixo exemplos funcionais:</p>
<p><code></p>
<pre>//...
/**
 * SomeVar
 * @var string
 */
 private $baz;
 /**
 * Bar Object
 * @var Bar
 */
 private $bar;
 /**
 * Magic String with __get
 * @var string
 */
 public $magic;

 public function __construct() {
    $this-&gt;baz = "Value of Foobar::\$baz";
    $this-&gt;bar = new Bar();
    $this-&gt;magic = 'Magic methods still working !';
 }

 /**
 * @return string
 */
 public function getBaz() {
     return $this-&gt;baz;
 }

 /**
 * @return boolean
 */
 public function hasBaz() {
     return (!empty($this-&gt;baz)) ? true : false;
 }

 private function hasIamNull() {
     return false;
 }

 public function fakehasFoo() {
     return 'I will not be displayed !';
 }

 public function matchesWith($otherString) {
     return ('foo' === $otherString);
 }

 public function getBar() {
     return $this-&gt;bar;
 } // ....</pre>
<p></code></p>
<p>No template teriamos:</p>
<p><code></p>
<pre>&lt;body&gt;
 &lt;h1&gt;Meu título&lt;/h1&gt;
 &lt;p&gt;Bar foo&lt;/p&gt;

 {% if foo.hasBaz %}
 &lt;p&gt;{{ foo.getBaz }}&lt;/p&gt;
 {% endif %}

 {% if foo.hasIamNull %}
 &lt;p&gt;{{ foo.getBaz }}&lt;/p&gt;
 {% endif %}

 &lt;p&gt;{{ foo.getAbstractBaz }}&lt;/p&gt;

 &lt;p&gt;{{ foo.getIamPublic }}&lt;/p&gt;

 &lt;p&gt;{{ foo.fakehasFoo }}&lt;/p&gt;

 &lt;p&gt;{{ foo.getBar.getHlegius }}&lt;/p&gt;

 &lt;p&gt;{{ foo.getBar.getBarFoo.getTwig }}&lt;/p&gt;
 &lt;p&gt;{{ foo.getBar.getBarFoo.tryToCallMe }}&lt;/p&gt; &lt;!-- private function, fails. --&gt;

 &lt;p&gt;{{ foo.methodThatIsnotExists }}&lt;/p&gt; &lt;!-- without error --&gt;

 {% if foo.matchesWith('foo') %}
 &lt;p&gt;Yeah, it's matches !&lt;/p&gt; &lt;!-- will matches --&gt;
 {% endif %}

 {% if foo.matchesWith('baz') %}
 &lt;p&gt;Yeah, it's matches again :S !&lt;/p&gt; &lt;!-- will NOT matches --&gt;
 {% endif %}</pre>
<p></code></p>
<p>Métodos não permitidos, índices não existentes e outros tipos de erros são omitidos por default.</p>
<p>Ainda penso em melhorar e implementar mais coisas ao projeto. Minha ideia inicial é ir sempre atualizando do projeto oficial para não distanciar-se muito. O patch eu também encaminhei ao próprio Fabien, mas ainda ele sequer respondeu ao meu e-mail.</p>
<p>Quem já utiliza o Twig e quiser testar <a href="http://github.com/hlegius/Twig">essa nova versão mais &#8220;Object-oriented friendly&#8221;</a> farei questão de dar total suporte e apoio para mantê-la up to date <img src='http://www.hlegius.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Há ainda, exemplos de uso e do que você pode fazer com o Twig que eu modifiquei. Detalhes você encontra no <a href="http://github.com/hlegius/Twig/tree/master/examples/">diretório examples</a> do projeto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/twig-uma-outra-engine-de-templates-em-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eu uso estático porque é mais rápido.</title>
		<link>http://www.hlegius.pro.br/eu-uso-estatico-porque-e-mais-rapido/</link>
		<comments>http://www.hlegius.pro.br/eu-uso-estatico-porque-e-mais-rapido/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 14:04:04 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[Arquitetura]]></category>
		<category><![CDATA[Featured Articles]]></category>
		<category><![CDATA[OOP e Patterns]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[teoria]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/?p=488</guid>
		<description><![CDATA[Ouvi e já pude ler isto não uma, nem duas, mas sim diversas vezes. Argumentação padrão de quem defende uma &#8220;Orientação à Objetos mais estática&#8221; &#8211; se é que podemos chamar isso de OO.
Vejamos um exemplo nada científico que fiz:
Criei os seguintes exemplos:

&#60;?php
class Estatico {

    public static function fazAlgumaCoisa() {
   [...]]]></description>
			<content:encoded><![CDATA[<p>Ouvi e já pude ler isto não uma, nem duas, mas sim diversas vezes. Argumentação padrão de quem defende uma &#8220;Orientação à Objetos mais estática&#8221; &#8211; se é que podemos chamar isso de OO.</p>
<p>Vejamos um exemplo nada científico que fiz:</p>
<p>Criei os seguintes exemplos:</p>
<p><code></p>
<pre>&lt;?php
class Estatico {

    public static function fazAlgumaCoisa() {
        $i = 0;
        while ($i &lt; 10000) {
           echo Estatico::outraCoisa();
           $i++;
        }
    }

    public static function outraCoisa() {
        return "Conteúdo";
    }
}

Estatico::fazAlgumaCoisa();</pre>
<p></code></p>
<p><code></p>
<pre>&lt;?php
class Instancia {

    public function fazAlgumaCoisa() {
        $i = 0;
        while ($i &lt; 10000) {
            echo $this-&gt;outraCoisa();
            $i++;
        }
    }

    public function outraCoisa() {
        return "Conteúdo";
    }
}
$objInstancia = new Instancia();
$objInstancia-&gt;fazAlgumaCoisa();</pre>
<p></code></p>
<p>Os resultados após rodar quatro vezes cada foram:</p>
<p><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/02/estatico.png"><img class="aligncenter size-medium wp-image-491" title="Chamadas estáticas em PHP" src="http://www.hlegius.pro.br/wp-content/uploads/2010/02/estatico-300x68.png" alt="" width="300" height="68" /></a></p>
<p style="text-align: center;"><a href="http://www.hlegius.pro.br/wp-content/uploads/2010/02/instancia.png"><img class="aligncenter" title="Chamada em instância em PHP" src="http://www.hlegius.pro.br/wp-content/uploads/2010/02/instancia-300x66.png" alt="" width="300" height="66" /></a></p>
<p>Ou seja: <strong>91.09 ms para o estático</strong> contra <strong>90.07 para a versão non-static</strong>. Obviamente foi apenas um teste sem qualquer relevância, pois rodei em minha máquina pessoal com várias outras aplicações rodando em background. É perceptível porém, que a diferença não é absurda que compense o uso de estático por este motivo.</p>
<p>Deixando a questão de &#8220;performance&#8221; de lado, partimos para questões arquitetônicas:</p>
<ul>
<li>Identidade</li>
<li>SoC &#8211; Separation of Concerns (Principio de Separação das Responsabilidades)</li>
<li>Encapsulamento</li>
<li>Estado</li>
<li>DRY &#8211; Don&#8217;t Repeat Yourself</li>
<li>Associações &#8211; sejam elas composições ou agregações</li>
</ul>
<p>Ao perder Identidade e Estado as possibilidades daquele método &#8211; ou da classe inteira, caso use estático em tudo &#8211; tem o leque de utilidade reduzido para:</p>
<ul>
<li>Service</li>
<li>Facade</li>
<li>Factory</li>
<li>Helpers &#8211; no âmbito de serem apenas funções que realizam determinada tarefa na aplicação sem qualquer valor ao Domínio</li>
</ul>
<p>Com isso, perdemos também o Princípio de Separação das Responsabilidades, ou seja, a classe perde o controle sobre a integridade dos dados que ela deveria controlar e proteger contra acesso ou alteração indevidos.</p>
<p>Listei o DRY também por um motivo simples: com métodos estáticos, perdemos a grande chance de usar as variáveis de instância da classe à favor da mesma. Exemplo:</p>
<p><code></p>
<pre>class UsuarioEstatico {

    public static function login($usuario, $senha) {
        // valida o usuário e zaz
        $autenticador = new Autenticador();
        $autenticador-&gt;autentica($usuario, $senha);
    }

    public static function logout($usuario) {
        // verifica se a sessao está aberta
        $autenticador = new Autenticador();
        $autenticador-&gt;fechaSessaoPara($usuario);
    }
}</pre>
<p></code></p>
<p><code></p>
<pre>class Usuario implements Autenticavel {
    private $autenticador;

    public function __construct($usuario, $senha) {
        // manipula os dados de entrada
        $this-&gt;autenticador = new Autenticador($this);
    }

    public function login() {
        return $this-&gt;autenticador-&gt;autentica();
    }

    public function logout() {
        return $this-&gt;autenticador-&gt;fechaSessao();
    }
}</pre>
<p></code></p>
<p>Repare no modelo estático: foi necessário instanciar o antenticador por duas vezes em pontos diferentes. Opa, repetiu ! Mesmo que o autenticador fosse estático, teriamos duplicação, pois teriamos que certificar que o usuário existe e tudo mais. Isso porque não comentei como ficaria o lado cliente dessa implementação estática. O cliente &#8211; seja Controller, WebService ou qualquer classe em outra camada no domínio &#8211; teria que conhecer muita coisa sobre implementação dessa classe para poder manipulá-la.</p>
<p>Como bônus, repare que perdemos neste caso também o Polimorfismo, uma vez que eu poderia ter esse Autenticador() como base de autenticação para qualquer tipo (Usuário, Funcionário, Gerência, Administradores&#8230;)</p>
<p>O uso de métodos ou funções &#8211; sim, há diferença &#8211; estáticas pode ser bem-vindo nos itens já enumerados. Alguns developers porém, ainda que nestes casos são contra o uso por achar a ideia estática demasiadamente anti-oo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/eu-uso-estatico-porque-e-mais-rapido/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Meme do Yahoo!</title>
		<link>http://www.hlegius.pro.br/meme-do-yahoo/</link>
		<comments>http://www.hlegius.pro.br/meme-do-yahoo/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 23:11:04 +0000</pubDate>
		<dc:creator>hlegius</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[hlegius]]></category>
		<category><![CDATA[yahoo! internet]]></category>

		<guid isPermaLink="false">http://www.hlegius.pro.br/?p=468</guid>
		<description><![CDATA[Estou há exatos um dia completo estou usando o serviço de Meme do Yahoo!.
Trata-se de uma ferramenta para disseminar Memes com imagens, vídeos e até aúdio acrescidos de um texto de no máximo 2000 caracteres por meme postado. Tudo bem que está sendo usado mais como um Twitter tunado só que ao meu ver o [...]]]></description>
			<content:encoded><![CDATA[<p>Estou há exatos um dia completo estou usando o serviço de <a href="http://meme.yahoo.com">Meme do Yahoo!</a>.</p>
<p>Trata-se de uma ferramenta para disseminar Memes com imagens, vídeos e até aúdio acrescidos de um texto de no máximo 2000 caracteres por meme postado. Tudo bem que está sendo usado mais como um <em>Twitter tunado</em> só que ao meu ver o objetivo é disseminar memes e isto não inclui o que <em>você está fazendo</em> ou <em>o que está acontecendo agora</em>.</p>
<p>Alguns conceitos foram por eles sugados como o Repost (Retwitt), seguidores e a palavra &#8220;baleiando&#8221; quando algo dá errado por lá. Interface default do Yahoo!, integração com sua credencial Y! e agora estão aprimorando para torná-lo mais amigável com APIs que conectam-se ao <a href="http://facebook.com">Facebook</a>, <a href="http://twitter.com">Twitter</a> e mais algumas outras.</p>
<p>Havia uma <a href="http://www.memehunter.com.br">promoção</a> que ajudou a disseminar o <a href="http://meme.yahoo.com">Meme do Yahoo!</a> na rede, porém, a mesma encerra-se hoje às 23:59hs.</p>
<p>Mais informações de como funciona e o que está rolando por lá, basta acessar o site do Meme do Yahoo! Se interessar ver meus memes, <a href="http://meme.yahoo.com/hlegius/">segue por aqui, ó</a> !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hlegius.pro.br/meme-do-yahoo/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
