Entendendo a numeração de versões do Node.JS

Após um tempo usando o Node.JS, talvez você se pergunte quais versões usar em produção, e/ou sob quais versões você deve basear uma biblioteca que está desenvolvendo. O controle de releases do Node.JS é baseado no clássico estilo de versionamento x.y.z, onde x é o major release, y é o minor release e o z é um patch. Se você não sabe muito bem o que é isso, o site sobre Semantic Versioning cobre esse assunto, e vai um pouco mais além.

Historicamente, alguns projetos costumam usar a versão par como stable e a versão ímpar como unstable. O próprio kernel do linux já foi assim. Esse não é o princípio do Semantic Versioning e muita gente considera errado, mas isso não está em discussão aqui. Meu objetivo é apenas explicar como você deve manter atualizado seu runtime do Node.JS.

O Node.JS também se baseia nessa divisão entre par e ímpar. A versão atual é a 0.4.6 e é a que deve ser utilizada em todos os casos, seja para experimentos, seja para produção. O target atual é a versão 0.6.0, e assim como aconteceu com a versão 0.4.0, as versões intermediárias 0.5.x (unstable) serão usadas para fazer as experiências do que irá entrar nas versões 0.6.x.

Sendo prático, a forma mais indicada de lidar com isso é usar sempre as versões pares para desenvolver suas bibliotecas e colocar aplicações em produção e sempre que possível ter uma branch para testar essas bibliotecas e aplicações nas versões ímpares posteriores, evitando assim acumular muita coisa para a versão par seguinte.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Publicado em nodejs | Com a tag , , | Deixar um comentário

Experiência do Usuário sob a ótica do usuário

Na última semana, estive passeando de férias em Natal/RN. Foi uma semana de muita diversão. Apesar disso, vivi algumas situações que me fizeram refletir sobre a experiência do usuário, mas não somente focado na nossa área de TI, mas num âmbito geral, atuando como o próprio usuário/cliente.

Em um dos dias do passeio, resolvi jantar com a minha esposa e um casal de amigos numa pizzaria famosa da região. A pizzaria era bem indicada, tem um website bem legal e tudo que tem direito. Com uma estrutura linda, uma faixada de dar inveja, toda em madeira, com um lugar bem estilizado e com direito a música ao vivo. Para minha surpresa, a pizza não era a das melhores. Eu até sai satisfeito, mas a minha esposa não gostou e acabou nem comendo tudo. De fato a pizza não era tão boa.

No dia seguinte, saímos novamente para comer a noite, mas dessa vez tinha que ser algo rápido, pois era necessário dormir cedo devido ao voo ser as 5 da manhã do dia seguinte. Perguntamos ao recepcionista da pousada se havia algum lugar por perto onde tinha lanche e ele nos indicou comer uma Pizza (novamente ?!?) ali bem próximo, no quarteirão seguinte. Ele também disse que os donos da pousada eram frequentadores. Depois que ele nos explicou onde ficava a pizzaria, saímos a pé mesmo pois era muito perto. Chegando em frente ao local, percebemos ser um lugar bem simples, ao ponto de nos fazer pensar se era aquele realmente o lugar que os donos da pousada frequentavam. Para ter uma idéia, nem lembro de como era a fachada/letreiro/etc. O recepcionista do hotel havia dito que esse lugar servia apenas pizzas individuais (um pouco maior que uma pizza brotinho) e confirmamos isso, tenho assim certeza que estávamos no lugar certo. Olhei o cardápio e vi que tudo era bem barato. Fizemos o pedido e aguardamos. A pizza era simplesmente muito gostosa. Muito mesmo. Em poucos lugares eu comi uma pizza tão gostosa por um preço tão barato. E olha que não é questão de custo/benefício. Se a pizza fosse mais cara que na outra pizzaria eu pagaria certamente, mesmo sendo uma pizza menor. Saímos dali muito satisfeitos e entendi o motivo que fazia os donos da pousada frequentarem aquele local. Por sinal, nem lembro o nome do lugar, mas lembro exatamente onde fica e se eu voltar algum dia a Natal certamente irei nessa pizzaria. E o que raios essa pizza tem a ver com experiência do usuário?

Essa minha passagem pelas pizzarias não foi premeditada, simplesmente aconteceu. Como cliente (ou usuário se você preferir), fiquei mais satisfeito com a pizzaria mais simples do que com a pizzaria mais bonita, requintada, que tinha website e tudo mais. E por que eu gostei da mais simples? Será que é por que eu não gosto de coisas requintadas? Claro que não. Eu gostei do lugar simples porque eles me serviram uma pizza melhor. O mais importante de uma pizzaria é a pizza ser gostosa ora bolas. Não adianta ter uma cadeira linda, usar um iPad pra fazer pedidos, guardanapo imperial e talher de outro se a pizza não for saborosa. É simples assim. E o que isso tem a ver com a nossa área?

Vamos pensar nas aplicações que fazemos no dia a dia. O Youtube, por exemplo, tem um site bem simples. Não considero o site deles uma obra de arte, muito pelo contrário. O player de vídeos deles provavelmente é um dos mais simples e feios que existem na web. Então por que será que ele é um produto de sucesso? Simples: o youtube da muita importância para o que tem realmente valor para o usuário do site deles, que é ver e compartilhar vídeos. É muito simples enviar um vídeo e mais simples ainda ver videos. Qualquer leigo consegue fazer isso. O player de vídeos deles funciona perfeitamente bem, apesar de não ter uma aparência linda. E o usuário se importa com essa aparência não muito bonita? Alguma vez você pensou em deixar de acessar o Youtube porque o site não é lá tão bonito? Acredito que não. Eu poderia citar diversos exemplos de produtos de sucesso que são extremamente simples e as vezes feios mas que são sucesso exatamente por focarem na necessidade do usuário, mas nem preciso citar porque acho que já deu pra entender onde eu quero chegar.

Parece chover no molhado, mas é impressionante o número de vezes que me pego discutindo ou observando discussões sobre se um site/aplicação precisa de borda arredondada, gradiente, se o cinza está um pouco mais claro ou escuro, ou se o botão está 1 píxel pra direita ou pra baixo, quando por vezes o que tem mais valor para o usuário nem está ótimo ainda. Não que esses detalhes não tenham importância, muito pelo contrário. O ponto aqui é que o foco deve estar primeiro no core business e depois nos acessórios. É o exemplo da pizzaria. Me lixei pra decoração linda, música ao vivo e requinte da primeira pizzaria, pois a pizza não era tão boa (se fosse certamente eu voltaria). Ao meu ver eles se preocuparam demais com coisas secundárias e esqueceram de contratar ótimos pizzaiolos. Certamente me lembrarei muito mais da segunda pizzaria, que era um lugar bem mais simples mas tinha uma deliciosa pizza.

Pra finalizar, pense um pouco sobre os motivos que fazem do iPhone um produto de sucesso. Provavelmente você perceberá que um dos menos relevantes é a sua beleza.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Publicado em agile, lean, pensamentos, pragmatic, reflexao | Com a tag , , , | 1 comentário

Curso de Node.JS da e-Genial

Na próxima semana, começa a primeira turma do curso de Node.JS da e-Genial. Este curso será uma grande oportunidade para quem quer estar por dentro dessa nova tecnologia e gosta de estar sempre atualizado. Pra quem não sabe, o professor desse curso sou eu, e tenho me envolvido com Node.JS quase desde o seu início.

Conteúdo do Curso

Este curso não é apenas um conjunto de tutoriais para você aprender a fazer determinadas aplicações. O curso é voltado para ensinar o know why do Node.JS. Nele você aprenderá como as coisas realmente funcionam, mas sem deixar de ensinar também como fazer as coisas acontecerem, ou seja, você aprenderá a fazer, mas também aprenderá os porquês.

Por que aprender Node.JS ?

Node.JS é uma tecnologia de fato emergente. Surgiu em Maio de 2009 e vem evoluindo muito rapidamente, com uma comunidade muito forte se formando.

O Node.JS basicamente foi feito para resolver alguns problemas conhecidos, de forma eficiente e eficaz, como I/O não bloqueante e assíncrono, alta concorrência de usuários, conexões persistentes, streaming, entre outros. É uma tecnologia baseada na linguagem Javascript e no poderoso runtime V8, que é usado no Google Chrome, browser bem conhecido pelos desenvolvedores.

Aprender Node.JS certamente abrirá seus horizontes na programação. Ele trás o grande desafio da programação assíncrona, baseada em Reactors, que não é muito comum no nosso dia a dia de programação com Java, DotNet, Ruby e Python (apesar dessas possuirem frameworks para tal). Além disso, a facilidade que o Node.JS nos dá para desenvolver aplicações em tempo real é impressionante, dado a quantidade de bibliotecas e frameworks disponíveis para esse fim, não se esquecendo que o próprio Node puro já é feito para esse propósito.

Mercado de trabalho

Sobre o mercado de trabalho para Node.JS, pense no Rails em 2004/2005. Nessa época, existiam poucas vagas, mas os que aprenderam a tecnologia no começo se deram bem, tendo hoje bastante experiência no assunto. A grande maioria ocupa uma ótima vaga de emprego em alguma empresa aqui no Brasil ou até mesmo no exterior. Com Node.JS a história é a mesma: quem aprender agora está saindo na frente, e quando as vagas bombarem aqui no Brasil (já existem algumas no exterior), quem já conhecer o Node terá vantagem e poderá ocupar facilmente essas vagas.

Por que fazer o curso com o Emerson Macedo?

Alguns podem se perguntar se sou a pessoa mais indicada para ministrar um curso de Node.JS. Acho a pergunta totalmente válida. Quando vamos contratar um serviço devemos sempre nos perguntar se vale a pena ou não fazer com profissional A ou B. Portanto, entendo esse tipo de dúvida e apenas vou falar um pouco do meu envolvimento com o mundo Node.JS, da minha experiência como professor e deixar que você tome essa decisão.

Não sou presunçoso a ponto de achar que sou o cara que mais conhece Node.JS na face da terra, mas ao mesmo tempo tenho noção de que sou um dos que tem investido em conhecer bem essa tecnologia.

Meu envolvimento mais profundo com Node.JS começou no início do ano passado, quando resolvi investir na tecnologia. De lá pra cá, não consigo mensurar a quantidade de material que consumi sobre o assunto. Foi quando em agosto tive a oportunidade dada pelo pessoal do DevInSampa (Tino Gomes e Cia) para apresentar algo sobre o Node). Depois disso, apresentei diversas palestras sobre o assunto, fiz alguns projetos Open Source que estão no meu GitHub, um projeto para própria e-Genial (que está sendo testado em Beta), e tenho testado algumas soluções na Globo.com que quando eu colocar alguma coisa de fato no ar publicarei aqui mesmo no blog.

No fim do ano passado, fui convidado pela e-Genial (conhecida pela sua ótima plataforma de cursos online, o Treina Tom, e também por ser inovadora em cursos) para criarmos um curso de Node.JS. Eles me perguntaram se eu toparia montar um curso e resolvi aceitar. Pra quem não conhece a minha trajetória como professor, faço isso desde os 17 anos, quando eu dava treinamento do sistema para diversos clientes de uma empresa de automação de ponto e acesso, empresa essa que trabalhei de 1998 a 2000 com eletrônica e informática. Depois de um longo período sem lecionar, voltei a faze-lo em 2007, ministrando cursos de Java no famoso centro de treinamento da DBA Engenharia de Sistemas, onde trabalhei por quase 3 anos. Em 2008, também ministrava treinamentos em cursos de extensão na Faculdade Simonsen. Além disso, fora da profissão, sou professor de jovens na Escola Bíblica Dominical na igreja onde faço parte, ministrando aula todos os domingos pela manhã (Deixo claro aqui que no curso de Node.JS não contém nem conterá nenhum conteúdo religioso ou relacionado a isso. O fato de eu mencionar ser professor na igreja é apenas para ilustrar minha experiência no assunto).

Dado essas informações, dá pra perceber que não sou um aventureiro em lecionar, nem tão pouco um oportunista que está aproveitando a onda do Node.JS para se dar bem. É claro que todo o investimento que tenho feito na tecnologia está dando esse retorno, mas poderia não ter dado em nada. O fato é que tenho me envolvido bastante com o Node.JS e tenho ampla experiência como professor.

Mas não dá pra aprender tudo sozinho?

Claro. Estamos na era da informação. A única diferença é que se você fizer o curso, receberá tudo mastigado :p. Ao invés de você começar do zero, vai ganhar um start ótimo, sem precisar penar como eu penei. Meu objetivo é preparar os alunos deste curso para desenvolver qualquer aplicação que o Node.JS permite, passando pelos conceitos, pela base da tecnologia (know why) e também pela prática, com aplicações reais e que fazem uso do que o Node tem de melhor.

Aprender isso tudo sozinho é possível, mas você pode aprender muito mais rápido com um baixo investimento, ao meu ver.

Outras referências

O Daniel Lopes, que é coordenador e instrutor da e-Genial, publicou no Blog da empresa a respeito do curso e dos porquês de aprender Node.JS e fazer o curso. Leitura recomendada.

Está esperando o que? Matricule-se já no curso, pois começa na próxima semana !!!

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Publicado em cursos, nodejs | Com a tag , , | 1 comentário

Webbynode também suporta Node.JS

O serviço de hospedagem Webbynode, muito conhecio na nossa comunidade Ruby on Rails (pra quem não sabe programo em Ruby já faz um bom tempo e faço parte também dessa comunidade), também tem suporte a Node.JS nos seus Rapid Apps. Eu acho que esse suporte já existe faz algum tempo, mas somente agora me dei conta disso.

Ainda não testei o serviço. Estou até disposto a gastar $20 pra ver se funciona bem. Assim que eu fizer posto aqui um feedback sobre o assunto.

Segue o link pra quem quiser ver a documentação – http://guides.webbynode.com/articles/rapidapps/nodejs.html

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Publicado em nodejs | Com a tag , | 1 comentário