Reclutando programadores

Desde hace ya un par de años que la demanda de profesionales informáticos en Argentina está por encima de la oferta disponible. Por esto es que algunas empresas han comenzado a prestar mayor atención a ciertas cuestiones como el proceso de reclutamiento y los planes de carrera.

El año pasado una empresa en que había trabajado como empleado tiempo atrás, me contactó para que los ayudara con un plan de entrenamiento para programadores y líderes técnicos. Nos reunimos a hablar del tema para entender mejor sus necesidades y finalmente terminé presentando una propuesta integral que incluía trabajar sobre el proceso de reclutamiento, el entrenamiento y los planes de carrera. Si bien el proyecto nunca se concretó, yo estuve pensando bastante en el tema y un libro que lei recientemente me ayudó a confirmar algunos puntos de mi visión.

Una charla que tuve con un colega la semana pasada me motivó para compartir mis ideas, así que decidí inaugurar una nueva serie de artículos en este blog y que voy a bautizar como: “Reclutando programadores”.

Continuará…

recluting

.Net: infraestructura de desarrollo & test

Quiero compartir la infraestructura que estamos usando en el proyecto que estoy trabajando en este momento.

Como repositorio de código estamos usando Git, más específicamente GitLab (aunque a pedido del cliente en breve migraremos a BitBucket).  Dado que estamos usando una arquitectura “micro-servicios-like” tenemos un repositorio por cada micro-servicio, más un repositorio general para configuración, más un conjunto de repositorios adicionales para algunas librerías de uso común y finalmente un repositorio para los scripts de operaciones.

Estamos usando Nexus como repositorio de binarios NuGet y Maven, ya que tenemos componentes .Net y Java.

El servidor de integración continua y orquestador de deployments es Jenkins 2. El proceso de Build lo tenemos armado con MSBuild de manera que Jenkins simplemente obtiene el código de Git, dispara MSBuild y genera reportes y notificaciones basados en el resultado del proceso.

Los deployments los hacemos con MSDeploy y los disparamos desde Jenkins.

De esta forma, los componentes comunes compartidos entre distintos micro-servicios están publicados en nuestro NuGet/Nexus y quien necesita utilizarlos simplemente agrega una referencia a nivel binario usando NuGet. Esto nos permite evitar almacenar binarios en Git y al mismo tiempo que nos habilita a que cada parte de la arquitectura pueda ser versionada en forma independiente.

Para la gestión del backlog utilizamos Jira que a su vez lo tenemos integrado con Hiptest para el manejo de los casos de prueba. Personalmente nunca antes había trabajado con Hiptest y algo que me gusta mucho es que se integra con SpecFlow para la definición de los casos de prueba y el registro centralizado del resultado de la ejecución de las pruebas reportado por SpecFlow.

Para comunicarnos tenemos una lista de correo, un Slack y Skype/Hangout para las video conferencias.

pipeline_net

.Net: abuso de AppSettings

Toda aplicación .Net cuenta con un archivo xml de configuración. Dicho archivo tiene un conjunto de secciones predefinidas entre las que se encuentra la sección AppSettings que permite definir parámetros de configuración del tipo clave-valor.

Considero que este mecanismo resulta muy útil y apropiado para cuando uno tiene que manejar un set reducido de entradas en esta sección. Sin embargo me he cruzado con aplicaciones con más de 10 entradas en appsettings. Más aún, en alguna ocasión que me cruzado con aplicaciones con ¡más de 50 appSettings!. El problema que veo con esto es que cuando uno cuenta con tal cantidad de parámetros de configuración, es muy posible que dichos parámetros tengan cierta relación/estructura, la cual no es posible reflejar usando el mecanismo de AppSettings. Para estos casos resulta mucho más conveniente en mi opinión utilizar el mecanismo de extensión de configuración que ofrece .Net definiendo secciones personalizadas.

Este breve artículo de MSDN explica de forma muy concreta cómo hacer uso de este mecanismo. Personalmente no suelo usarlo porque en mis proyectos generalmente uso algún inyector de dependencias y hago uso de las funcionalidades del inyector para precisamente inyectar los parámetros de configuración.

Noche polémica en Agiles@BsAs

Noche polémica en Agiles@BsAs

Como anuncié hace un tiempo, ayer tuvimos Meetup de Agiles@BsAs por partida doble.

La reunión comenzó con @jgabardini diciendo “F*** the manifesto“, una crítica provocativa al manifiesto escrito hace ya quince años. La charla estuvo muy creativamente planteada desde la teoría de Tribal Leadership.

A continuación yo hablé sobre Software Craftsmanship. Fue mi primera vez hablando de este tema ante una audiencia. Los slides que utilicé están disponibles aquí.

Si bien había unas 70 personas registradas, la cantidad de asistentes fue de alrededor de 25, una caída habitual en este tipo de encuentros. Ambas presentaciones tuvieron muy buena participación de la audiencia generando como estaba esperado cierto nivel de polémica.

Personalmente estoy muy conforme con como salió el encuentro, agradezco a los participantes y Kleer por haber facilitado las instalaciones.

Herramientas para desarrolladores Windows

Herramientas para desarrolladores Windows

Para quienes trabajamos habitualmente en mundo unix-like (Linux, MacOS, etc), trabajar en Windows puede resultar extremadamente molesto. Personalmente he encontrado dos herramientas que me han ayudado a mitigar mis tareas en Windows:

  • Chocolatey es un gestor de paquetes para Windows, es en cierto modo un equivalente al apt-get de los sistemas Debian.
  • Cmdler es un emulador de consola. Simplemente excelente pues más allá de los típicos comandos POSIX también provee un editor vi, un esquema de colores muy agradable y prompt muy cómodo.
  • Firefox, creo que no hay mucho que decir
  • Visual Studio Code es un “Power editor” al estilo Sublime. Su nombre me parece una triste elección pues causa confusión y poco tiene que ver con el famoso Visual Studio, pero es una muy buena herramienta de edición de código.

 

Se viene Meetup polémico en Agiles@BuenosAires

El miércoles próximo en el Meetup de Ágiles@BuenosAires tendremos un jornada que en cierto modo podría considerarse polémica. Al mismo tiempo será una jornada doble: por un lado @JGabardini reeditará su sesión F*** the manifest que diera el año pasado en #Agile2015 por otro lado yo estaré hablando del movimiento de Software Craftsmanship. Ambas temáticas invitan a repensar los valores y principios de mundo Agile y la forma en que los consideramos en nuestro día a día.

La cita es el miércoles 3 de agosto a las 18.30 en las oficinas de Kleer.

Como siempre la entrada es libre y gratuita pero require registración (vía Meetup).

¡Nos vemos!