2011 ha sido un año un tanto extraño, podría decir que he aprendido algunas cosas, en ciertos temas he profundizado y con otros ni siquiera he comenzado. Para este año 2012 que entra me gustaría escribir una lista de propósitos y objetivos para llevar a cabo, al final del año sería interesante ver cuales he cumplido y cuales no.
SOLID
Pensaba que conocía la programación orientada a objetos, incluso llegué a creer que mi código era bueno, en cuanto comencé a leer sobre SOLID y aplicar un poco de TDD me di cuenta de que ninguna de las dos premisas anteriores eran ciertas. Mi propósito para este año 2012 es conocer SOLID (sólo he rozado la superficie) y aplicarlo en el día a día. Terminar la lectura de Clean Code y profundizar con este artículo.
TDD
Me gustaría mucho aplicar TDD a todos los proyectos que comience en el futuro, pero no tengo el nivel suficiente. Sería interesante practicar con algunas katas, leer Diseño Ágil con TDD y Growing Object-Oriented Software Guided by Tests así como comenzar un nuevo proyecto utilizando TDD.
Git
No quiero utilizar Git como un mero sustituto de Subversion, me gustaría profundizar y conocer mejor como sacar todo el provecho posible a este sistema de control de versiones, conocer distintos workflows y como usarlos de manera ágil. Un buen libro que podría servir como guía es Pro Git, también hay artículos muy interesantes como este.
Ruby
Este año me ha servido para introducirme en este magnífico lenguaje, incluso he llegado a crear una pequeña gema. En este año que entra me gustaría profundizar más, conocer mejor sus interioridades y mejorar mi código. Quizás pueda ayudar practicar algo de metaprogramación o un escribir un DSL, hay algunos artículos que tratan el tema, como este y este.
Rails y Sinatra
Después de años utilizando Django me he dado cuenta de que hay muchas cosas en este framework que no encajan bien, quizás demasiadas. Definitivamente he tomado la decisión de no volver a utilizarlo para futuros proyectos y adoptar otro framework. Hay muchos detalles de Rails que me llaman la atención aunque para muchos proyectos lo veo demasiado pesado y grande, por lo que la sencillez de Sinatra también es algo que me atrae. Me gustaría crear algún proyecto utilizando alguno de estos dos frameworks.
noSQL
El sector de las soluciones para el almacenamiento de datos ha cambiado drásticamente en los últimos años con nuevos paradigmas, que han roto el dominio que las bases de datos relacionales han tenido durante décadas, como soluciones únicas para el almacenamiento de datos. Ahora podemos elegir entre multitud de herramientas, en concreto me llaman la atención MongoDB, Redis, Cassandra, y Kyoto Cabinet (antiguo Tokyo Cabinet). Me gustaría aprender alguna de estas bases de datos y utilizarlas en algún nuevo proyecto.
Desarrollar un servicio Web RESTful
Creo que el crecimiento de las APIs en Internet para este año 2012 va a ser sorprendente. Me gustaría desarrollar un servicio Web con una API útil y bien diseñada, que siga los principios de un diseño REST pragmático.
Publicar una aplicación en la App Store
Llevo intentándolo un año entero y me gustaría terminar este año 2012 con una aplicación disponible en la App Store de Apple. Y si no es mucho pedir que además se venda bien.
Patrones de diseño
Los patrones de diseño siempre han sido algo que me ha costado mucho aplicar, quizás porque no conozca bien cada uno de ellos o debido a mi propia torpeza. Me gustaría estudiarlos más detenidamente para ser más eficaz aplicándolos cuando detecte que es necesario. Quizás pueda ayudar un libro excelente y moderno sobre el tema, Design Patterns In Ruby.
Lenguajes
Muchos desarrolladores a los que aprecio me han incitado más de una vez a aprender Lisp, lo he intentado en alguna ocasión, pero siendo sincero me cuesta mucho trabajo. Un libro que me llamó mucho la atención por su formato es Land of Lisp, quizás me pueda ayudar a cumplir este propósito.
Mejorar mi inglés
No basta con leer libros escrito en inglés. Me gustaría mejorar mi gramática y ser capaz de mantener una conversación fluida, aunque creo que esto no será posible dentro de 2012.
Participar en alguna iniciativa social
Siempre me han motivado los proyectos sociales o de contenido libre, este año he descubierto el proyecto Open Source Ecology, que tiene como objetivo el desarrollo de tecnologías libres y de bajo coste para el desarrollo de una civilización sostenible. Me gustaría sacar tiempo de algún lado y ayudar en esta iniciativa tan interesante, aportando mis conocimientos.