El camino freelancer, parte 3: la mejor parte

Cuando empecé a recorrer este camino lo que más valoraba era la libertad horaria. Con el correr del tiempo comencé a valorar otros aspectos, todos ellos relacionados con la posibilidad de elegir: elegir mis proyectos, elegir mis clientes, elegir mis compañeros de trabajo, elegir la fecha y extensión de mis vacaciones.

Obviamente a la hora de elegir uno debe poner diversos factores en la balanza: expectativas económicas, motivación, finanzas, valor estratégico, diversión, seguridad, probabilidad de éxito, etc, etc. Lo bueno es que es uno mismo quien realiza la ponderación de cada uno de esos factores.

En este sentido si estas pensando en comenzar tu camino freelancer podrías ir pensando cuales sería tus criterios para elegir tus proyectos.

Continuará…

Time to learn Smalltalk: big opportunity

A while ago Stef and his troop started working on a MOOC (massive online open course) about Pharo Smalltalk.

The course is finally live and its formal name is Live Object Programming in Pharo.  The course content is very interesting because it goes far beyond Pharo Smalltalk. Of course it covers Pharo/Smalltalk syntax but it also covers OOP foundations and how OOP mechanisms are implemented in Pharo.

I think this course is a great opportunity for all those programmers who are not familiar with Smalltalk and specially those that are only familiar with static-type languages (like java and c#), believe me: Smalltalk will blow your mind!

The course started last week, but don’t worry it is seven weeks long so you are on time to join, just register here.

pharo_mooc

 

Jenkins 2 ha llegado

Así es, Jenkins 2 finalmente está aquí. Según se cuenta en el sitio oficial los puntos destacados de esta nueva versión mayor (major release) son:

  • Soporte nativo para delivery pipelines
  • Mejoras de usabilidad
  • Completa compatibilidad con versiones anteriores

Tuve la oportunidad de verificarlos cuando pasé uno de mis proyectos a la versión pre-release que Jenkins publicó hace un tiempo. Adicionalmente a esto noté:

  • “Independencia” de Maven, lo pongo entre comillas porque no estoy seguro que el término apropiado sea independencia. Lo que noté es que en la versión anterior, al crear un nuevo job existía la opción “proyecto Maven”, cosa que ya no existe. Creo que inicialmente esto tenía sentido pues Jenkins había surgido en el mundo Java, pero en los últimos años creo que ha transcendido ampliamente el mundo Java y se ha convertido en la herramienta de-facto para integración continua.
  • Integración con Gradle para la definición de los pipelines, los cual tiene mucho sentido ya que Gradle es una herramienta que se posiciona como herramienta de build genérica capaz de buildear proyectos en distintos lenguajes.
  • Se removió el soporte nativo para repositorios CVS, quedándo nativamente soporte solo para Git y Subversion.

Más allá de estos puntos, un detalle que me llamó positivamente la atención fue que como parte del proceso de instalación, se ofrece instalar un conjunto de plugins que son los más comunmente utilizados por la comunidad.

A partir de esta nueva versión de Jenkins y de algunas charlas que he tenido con mi equipo actual de proyecto he decido empezar a trabajar en la preparación de un curso de Jenkins para dictar en Julio o Agosto.

Tipado estático vs. Tipado dinámico

Como de costumbre luego del almuerzo dominical, me senté con un café a leer mi lista de blogs. Fue en ese momento cuando me encontré con este artículo que había publicado Uncle Bob ese mismo día. El artículo está titulado “Type Wars” y en forma muy resumida es una recorrida histórica de esta interminable contienda, con opiniones intercaladas del autor y un cierre interesante.

Este tema del tipado es una cuestión que me encuentro recurrentemente en mis clases todos los cuatrimestres. En FIUBA la mayoría de los alumnos viene de programar Pascal, C y C++, mientras que en UNTREF todos vienen de programar Java. Cada vez que en las materias empezamos a trabajar con lenguajes de tipado dinámico (Smalltalk o Ruby) algunos alumnos se sienten desconcertados y en más de una ocasión surge el debate en clase. De ahora en más voy a referenciarlos directamente al artículo de Uncle Bob, más aún, voy a incluir el artículo como lectura obligatoria.

Para cerrar les recomiendo dedicar un rato para leer el artículo completo y les dejo aquí una frase excelente incluida en el mismo:

…when a Java programmer gets used to TDD, they start asking themselves a very important question: “Why am I wasting time satisfying the type constraints of Java when my unit tests are already checking everything?” Those programmers begin to realize that they could become much more productive by switching to a dynamically typed language like Ruby or Python.

Extracto del artículo “Type Wars, de Uncle Bob“, artículo completo disponible en: http://blog.cleancoder.com/uncle-bob/2016/05/01/TypeWars.html