Recursos para el profesional independiente (freelancer)

En los últimos años me ha tentado en más de una ocasión ejercer mi profesión de manera independiente, pero por diversos motivos nunca me decidí a hacerlo. Más allá de eso quiero compartir algunos recursos que revisé en esas ocaciones y que me parecieron muy útiles particularmente para profesionales independientes.

Empiezo por el libro de Miles Burke: The Principles Of Successful Freelancing. Esta obra toca una gran diversidad de temas que van desde las consideraciones para decidirse a trabajar independiente, hasta work-life balance, pasando por consejos financieros, calidad de servicio y configuración de la oficina hogareña. Un recurso muy útil y entretenido para leer.

Otro recurso valiosísimo es la técnica del Pomodoro. Sin entrar en mayor detalle les digo que esta técnica ayuda administrar mejor el tiempo e incrementar la productuvidad.

Una lectura que también me parece apropiada y no solo para independientes es el best seller: Los 7 hábitos de la gente altamente efectiva.

Por último creo que Linkedin es una herramienta clave para promocionarse y hacer contactos, dos puntos a mi entender importantísimos para todo freelancer.

Bien, esto es todo lo que tenia por decir a pesar de nuncar abler trabajado independiente, pero bue, es lo que hay.

Se aceptan sugerencias.

El periodismo y el vaso medio vacio

No estoy seguro si el título de este post es el más apropiado pero eso no es lo importante. El punto es que ultimamente siento que gran parte del periodismo argentino tiene una tendencia a ver siempre el vaso medio vacio, lo cual me resulta MUY molesto.

Dos ejemplos concretos los encontré esta mañana mientras veía el portal de noticias del diario de La Nacion donde encontré una nota sobre un raking mundial de universidades y otra sobre la producción de conocimiento en América latina. Si uno leyera las notas sin leer el título y después intentara titularlas, sin duda encontraría títulos mucho menos negativos que los elegidos por La Nación: «Las universidades de la región, ausentes en un ranking mundial» y «América latina no produce conocimiento».

Me parece lamentable la tendencia de varios medios argentinos de alcance nacional de ver siempre el vaso medio y vacio y en consecuencia transmitir a la sociedad una visión negativa de los hechos.

Say no more.

Técnicas para enseñar programación

Hace ya un largo tiempo que vengo leyendo sobre algunas dinámicas interactivas de programación como los coding dojos, pero recien hace un par de semanas tuve la oportunidad de particitar en uno. Dicha actividad se desarrolló en el contexto de los encuentros mensuales de la comunidad ágil de Buenos Aires y estuvo coordinado por Adrian Eidelman (pueden ver el video en code&&beyond). La actividad me resultó muy amena y me ayudó a confirmar una sospecha que tenia: definitivamente este tipo de dinámicas son una excelente herramienta para a enseñar a programar. Es por esto que voy a intentar incoporarlas a las materias que voy a dictar este cuatrimestre.

La técnica del dojo viene del mundo de las artes marciales, donde los practicantes suelen realizar ejercicios/movimientos en forma repetiva para dominar plenamente una técnica. Esta situación es fácilmente extrapolable a cualquier otra disciplina deportiva: todo deportista profesional mejora en base al entrenamiento. ¿cómo podríamos entonces llevar esta idea al ámbito del software? Si lo pensamos con detenimiento en general los programadores nos entrenamos dentro de los proyectos, es como si un futbolista no entrenara durante la semana y fuera directamente al partido el domingo . Alguien podría argumentar que en realidad los programadores nos entrenamos cuando estudiamos, pero en realidad eso seria como la etapa en la que un futbolista aprende las reglas del deporte y la técnica básica para patear un balón o en el caso de un arquero como armar la barrera para un tiro libre.

Un coding dojo es una reunión en la que programadores se juntan para trabajar en un desafio de programación, en cierto modo podria decirse que es un equivalente al entrenamiento de un deportista. Existen diversas variaciones en la dinámica, una llamada randori, consiste en trabajar  con una única computadora y un proyector, la solución es implementada  por pares de programadores que van rotando por la máquina según algún criterio predefinido (porque ejemplo cada 7 minutos).

Otra variante del dojo es la denominada  kata, en la cual un programador toma la máquina conectada al proyector y resuelve el desafio mientras los otro programadores lo observan atentamente  preguntando cualquier detalle que no les quede claro. Una vez finalizado, una programador de la audiencia toma la máquina y repitiendo los pasos previamente observados resuelve nuevamente el desafio comenzando desde cero.

Este post de Code&Beyond tiene varios recursos al respecto de esta técnica y explica la idea con más profundidad. También pueden leer este post de Dave Thomas, uno de los principales responsable de la popularización de esta dinámica.

Espero lo disfruten y prometo en un futuro compatir los resultados de la aplicación de esto en mi ámbito académico.

Otro argumento por Pharo

Esta mañana estaba leyendo la lista de correo de Pharo y encontré un mail de Stef. Duccase sobre la visión de Pharo, transcribo algunos de los párrafos que me parecen importantes.

«Some days ago we were chatting with igor and he made an interesting remark about a kind of hidden philosophy
behind pharo: the idea that we systematically want to make the system better.
In fact I realized that what we are doing is to make a system nice, robust and powerful so that everybody can use
to realize their goals. But we want to have a system where not only smart guys can manage to do something with it but also less talented people…»

«…I want a system that let me learn from itself. I think that lot of things fall naturally in place from this vision (documentation, oo practices – not having car inheriting from wheel, tests comments, adequate abstractions, modularity). I want a system that everybody can nicely build his own software.
So in short I want pharo to be like a nice garden with greenhouses for building new garden with tools versus a jungle where only skilled adventurers can make it through.»

Totalmente de acuerdo. Y esto me lleva a pretuntarte: ¿sabes tu cual es la visión que tienen los createdores de tu lenguaje de desarrollo preferido?

¿Por qué Pharo?

A la hora de trabajar con Smalltalk uno debe elegir algún dialecto al igual que al trabajar con Java uno debe de elegir algún IDE. El tema con Smalltalk es que el dialecto es algo mucho más relevante que el IDE, pues en la mayoría de los casos el dialecto determina no solo el IDE a utilizar sino que además determina entre otras la máquina virtual en la cual se ejecutará nuestra aplicación. En la actualidad existe una interesente variedad de dialectos entre los que se destacan: VisualWorks, Visual Age, GNU-Smalltalk, Dolphin, Squeak y Pharo.

Mi elección personal es Pharo, y en los siguientes párrafos voy exponer mis motivos.

Licencia

Pharo es gratuito y de código abierto, en particular es desarrollado bajo licencia MIT, lo cual otorga una gran libertad.

Comunidad

Sin duda es una de las comunidades más activas y es definitivamente la más activa de las que participo. Por la lista del proyecto pasan más de 60 mails diarios. Para una herramienta de desarrollo (sea IDE, framework, compilador, etc) la comunidad es clave y más aún en el caso de iniciativas código abierto. Adicionalmente es una comunidad muy abierta, todo el mundo puede commitear fixes y todas la preguntas son contestadas en la lista de correo.

Experiencia de usuario

Comenzando por la super cool interface de usuario, el logo RE-copado y siguiendo por las infinitas posibilidades de personalización que ofrece, no conozco otro IDE tan «feliz para el programador» (es cierto, este argumento es muuyyyy subjetivo, pero no deja de ser un argumento).

¿y todo es color de rosa?

Bueno, casi. Hay algunas funcionalidades que por momentos se tornan un poquitin inestable, pero creo que se debe a todas las yerbas particulares que le he agregado a mi imagen.

¡¡¡Aguante Pharo!!!

Sobre el mercado offshore de desarrollo de software y otras yerbas

Hace unos dias por la lista de docente de algo3 me llegó el link a este artículo sobre la industrialización del software.

Comparto varios de los puntos expuestos pero quisiera agregar 2 comentarios al respecto.

Me da la impresion que el autor piensa que TODOS los trabajores en sistemas tienen que ser ingenieros (o contar con una formacion universitaria de 5+ años) lo cual para mi es una gran falacia. Es como si pretendieramos que para construir edificios TODOS fueran ingenieros civiles. Perfectamente se puede construir software respetable con gente de una formación más corta, por ejemplo la Universidad Nacional de Quilmes dicta una Tecnicatura Universitaria en Programación Informática, la cual tiene una duración de  3 años.
En lo que respecta a la situación del mercado y la posibilidades como centro de desarrollo offshore, entiendo que en Argentina el contexto es distinto:
  • Desde Argentina tenemos la ventaja de estar en la misma zona horaria que USA, cosa que no ocurre con Europa ni Asia
  • Culturalmente estamos mucho más cercanos a USA que Asia.
  • A diferencia de lo que algunos puedan pensar creo que a nivel costos no representamos una alternativa interesante. Creo que ni remotamente podemos competir con India, y en algunos casos tampoco con Europa. Donde trabajo actualmente exportamos más del 90% de nuestra producción a USA y manejamos precios internacionales con lo cual NO somos «baratos».
  • De más está decir que creo que técnicamente no tenemos nada que envidiar ni a Europa ni a Asia.
Resumiendo: si bien India puede ofrecer mejores precios, desde Argentina tenemos la ventaja de la cercania cultural y del horario.  Y en cuanto a Europa también tenemos la ventaja del horario y en algunos casos del precio.
Entonces, si queremos «ganar» el mercado offshore, no podemos descuidar la calidad, ese el valor agregado que nos puede posicionar mejor respecto de la competencia internacional.

Correo electrónico

Durante el último año he concentrado la administración de mis casillas de correo electrónico en Gmail. Esta decisión estuvo inicialmente motivada por 3 excelentes funcionalidades provistas por esta herramienta:

  • El filtrado de correo basura
  • La forma de visualización de las conversaciones, lo cual me parece fundamental cuando uno está subscripto a lista de discusión.
  • El manejo de etiquetas para la clasificación de correos

Al mismo tiempo, hay algunas otras funcionalidades que también me resultan muy útiles como la integración del mensajero GTalk en la misma interface, el manejo de la libreta de direcciones y varias extensiones disponibles en la parte de Labs.

Pero más allá de estas bondades hay dos casos de uso que aún no logro resolver de manera suficientemente satisfactoria:

  1. La redacción de correos con formato rico. O sea, si bien la interface de GMail provee la posibilidad de utilizar HTML, la interface tiene varias limitaciones por ejemplo para embeber imágenes en el mail.
  2. El trabajo offline

Respecto de (1), la solución podría pasar el uso de un cliente desktop de correo. En este sentido, sin duda el Outlook es la herramienta más calificada para redacción de contenido rico, pero lamentablemente es una herramienta paga y NO disponible para plataforma Linux. Es por ello que después de evaluar distintas alternativas he optado por utilizar Thunderbird y la verdad es que estoy muy conforme. Este cliente, cuenta con algunas extensiones de integración con GMail que proveen una excelente experiencia de usuario:

  • Zindus: esta extensión permite sincronizar la libreta de contactos de Thurderbird con los contactos de GMail.
  • Sunbird: agrega a Thurderbird la capacidad de manejo de calendarios.
  • Gdata Provider: permite visualizar en Thunderbird calendarios de GMail.

Respecto de (2), una posible solución sería configurar el cliente de correo para funcionar con protocolo POP, pero por diversas cuestiones está estrategia nunca me resultó cómoda feliz y es por eso que actualmente uso IMAP.

Resumiendo: en los que respecta al correo electrónico actualmente uso GMail como plataforma unificada de correo y Thunderbird + extensiones.

Balance 2010

Otro año llega a su fin, pero no es simplemente un año más para mi, 2010 seguramente se convienta en un año bisagra en mi vida tanto en el ámbito personal como en el profesional. Quienes son habituales lectores de este blog estan al tanto de mi experiencia en el INRIA y si bien esa fue una de las cosas más importantes de este año, no fue la única. Entre otros hechos destacados no quiero dejar de mencionar:

  • El paper que escribí en conjunto con Shaggy y que fue aceptado en el ASSE 2010.
  • Mis presentaciones en ESUG 2010 y Smalltalks 2010.
  • La titularización en concurso de mi cargo de ayudante de primera en el área de programación avanzada en Fiuba.
  • La consolidación del régimen de cursada en Algo3.
  • El crecimiento de este blog

Respecto de este último punto le doy las gracias a todos los lectores de este espacio y aprovecho la ocasión para compartir algunas estadísticas:

  • Durante 2010 escribí 66 posts , haciendo un total de 198 publicaciones en el blog
  • El número total de visitas durante 2010 fue aproximadamente 7000, duplicando el número de visitas del año anterior (aproximadamente 3200)
  • El día de más visitas fue el 12 de agosto con 143 visitas, es curioso que la entrada que publiqué ese día poco que tiene que ver con la temática central del blog (https://nicopaez.wordpress.com/2010/08/12/escribir-leer-escribir/)

Resumiendo,  el 2010 fue un gran año para mi y lo termino con muchas expectativas para el 2011, pero esto es tema otro post.  Por lo tanto amigos, desde esta forma cierro el año, ojala sus balances también sean positivos y les deseo comiencen muy bien el 2011.

Virtualization: what works for me

I work with virtual machines almost all time and it is very common for me to run 2 virtual machines simultaneously. According to comments from several colleagues VMWare is the best, but I discarded it because I don’t have license to use it (there is a free/gratis license for the VM runner, but that product is not enough for my work). So tried several other virtualization solutions including Virtual PC 2007, Windows Virtual PC, Hyper-V and Virtual Box.

Nowadays I am using Sun Virtual Box, yes I now that the product now belongs to Oracle, but I use the old version because the new one has some issues (it seems that it is becaming a pattern, every thing Oracle puts his hands on, starts failing, oh God! poor Java!). I use Virtual Box version 3.1.8, some of the interesting capabilities of this product includes:  support for several VM formats and USB support.

Well, that’s all for now.

Linux por n-ésima vez

Y esta vez estoy rompiendo un record, llevo más de dos meses trabajando FULL time con Linux. En este caso la distribución es Ubuntu 10.04. Sinceramente no estoy seguro de qué es lo que está haciendo la diferencia en esta ocasión, pero me parece que viene por el lado de la experiencia de usuario (algo que en ocasiones anteriores me hizo abandonar Linux para volver corriendo a Windows). Algunos hechos concretos:

  • La instalación fue muy directa, no tuve que pelear con nada, solo el pequeño detalle de que algunos dispositivos recien funcionaron al máximo de sus posibilidades luego de instalar el correspondiente driver propietario, lo cual requirió un paso adicional de mi parte, pero muy trivial.
  • Las herramientas que estoy utilizando actualmente corren todas perfectamente en Linux, es más, un punto muy positivo es Kile, un procesador de texto con soporte Latex con el que me siento muy cómodo. Las otras herramientas que utilizo diariamente son: Pharo, OpenOffice, Gimp, FireFox (con agregados) Chrome y Rhythmbox Music.
  • Una aplicación que merece una mención aparte es GtkPod, aplicación para administrar el ipod que para MI gusto es MUCHO más simple que iTunes.
  • Finalmente no puedo dejar de mencionar la increible experiencia de usuario que brindan los utilitarios apt-get y el Synaptic Package Manager para la instalación de aplicaciones.

Bueno, esto es todo por ahora, veamos cuanto más me quedo en este mundo, se aceptan apuestas!