Acho que todo bom nerd(Yeah, sou nerd!) gosta de aprender coisas novas, principalmente geeks da área de tecnologia, aonde surgem novidades a cada segundo. Basta um semana de feeds novos que vamos descobrir várias coisas novas, das quais pelo menos uma vai nos interessar em aprender.
Infelizmente, a grande quantidade de novidades empolgantes somadas as nossas atividades obrigatórias, como estudar e trabalhar, costuma atrapalhar nossa busca por novos conhecimento interessantes.
Na maioria dos casos de tecnologias novas, eu prefiro aprender fazendo. De preferência com alguma idéia nova, ou revitalizando algum projeto antigo usando as novidades. Criar um projeto novo especificamente para testar as novas tecnologias.
Nessa caso estou falando de tecnologias, de implementação. No caso de conceitos, a abordagem é diferente, começando pelo estudo. Por exemplo, para aprender Orientação a Objetos é interessante ler primeiro, para depois aprender a implementar(ai sim, na prática), ou para aprender sobre modelos de webservices(REST ou SOAP), são itens abstratos. Arquiteturas, Design, e por ai vai.
Mas se quer aprender uma nova linguagem ou framework, faça uma aplicação. Um tecnologia de virtualização, crie uma pequena rede virtual. Administração de sistema, instale e rode um servidor, mesmo que virtual. Um novo CMS, instale e use. Enfim, faça algo! Mesmo que seja numa aplicação pequena.
As vezes vou ao extremo nisso, crio o projeto antes de ler o primeiro tutorial. Começo o projeto e consulto a documentação conforme for avançando. E é importante lembrar sempre de fazer as coisas da nova forma, usando o máximo de recursos da nova tecnologia, e evitar cair na tentação de usar os métodos antigos “apenas aqui para ser rapidinho”.
E para complementar os estudos, que tal publicar artigos sobre o assunto? Tentar ensinar e passar conhecimento adiante é uma ótima forma de reavaliar seus conhecimento e aprimorar-se.
Estes dias estou aprendendo JavaFX, que introduz o JavaFx Script, uma linguagem com sintaxe declarativa, e todo um novo pacotes de elementos ao Java. Além possuir conceitos diferentes quanto a criação de aplicações.
Não adiantaria muito se, por exemplo, eu fizesse as interfaces com swing, ou usasse o tempo todo a sintaxe padrão do Java, que é suportada. Assim não estaria aprendendo as novidades dessa tecnologia e não estaria aproveitando seus recursos únicos.
Seria o mesmo que aprender Orientação a Objetos, apenas para fazer listas de métodos chamados um após o outro de forma procedural. Ou tentar aprender um linguagem funcional sem usar closures, macros e currying. Ou usar um framework novo, e fazer gambiarras para usar os mesmos recursos do antigo. No fim não vai aprender a parte interessante da tecnologia, e ainda vai ficar reclamando que a tecnologia é ruim por que é diferente.
O interessante a notar é que a cada "milestone" do projeto, tem-se vontade de apagar tudo e começar do zero, por que nesse ponto você descobre que poderia ter feito tudo diferente e bem melhor. Ai o melhor é refatorar um pouco, deixe terminar o projeto. Ao final, faça a versão 2.0 do zero, pois ai você já tem a visão macro das melhorias e novidades.
Enfim, se quer aprender algo novo. Pegue uma das opções, e faça!