Running Windows 7 RC – Day 1

Yes, I am writing this post from my machine with Windows 7 RC installed directly on the hardware, no virtual machine, and it is the only systems (no vista, xp o linux on other partitions).
My machine is a Dell XPS 1330M with 2 GB of RAM. I been working for a couple of ours and I didn’t get any trouble. It seems that all devices have been recognized and are running ok. The only driver that I had to install by myself was the sound system and I used the Vista driver.

Til now I have installed and run the following software successfully:

  • Mozilla FireFox 3.0.10
  • Mozilla Thunderbird 2.0.0.21
  • Winamp
  • Sony Ericsson Wireless Manager

More news in the upcoming days.

Agile Open BsAs 2009 – Sessions part 3

This is the last part:

Session 4: What should I do with my junior developers?

One of the principles of the agile methods is the self-organized teams, but this is not an easy question when you have junior people in your teams. How much seniority is required to have a self-organized team? How can a person be able to estimate a task that he never performed? How to prevent this inexperienced people to get stuck when working with new things?  These were some of the questions that were discussed. In the next few lines I will share the two main ideas I get clear from the session.

1. Don’t let them get stuck

When  juniors start a task they may get stucked and there are two bad situations when this occur:

  1. they start asking all the time, interrupting the work of the rest of the team or
  2. they try to solve the impediments by themselves and waste too much time

One useful technique to prevent this situations is to use pair programming, making pairs senior-junior but also junior-junior, this last combination gives me great results in my teams. And to complement this it could interesting to make frequent «pings», I mean every three or four hours just see how they are doing with their tasks.

2. Allow them to choose their tasks

This could sound strange, how can they choose their task when maybe they don’t know how to perform them?. Well the key is how you create the sprint backlog. First of all try to split the work in small tasks, second when the tasks are asigned let the experienced developers to choose first. This way the experienced developers will choose the difficult tasks, and when the juniors have to choose the will have only simple tasks. Another benefit of this approach is that juniors will be able to estimate these simple tasks. Despite of this, it could happen that a junior choose a complex task that you know he don’t have the knowledge to perform it, in that situation make him some questions about how he think he will complete the task in order to make him realize that that task is not the best for him.

That’s all, more after the next Agile Open.

La programación como disciplina central del desarrollo del software (introducción)

Parte 1: La programación, la academia y la industria

Claramente si trazáramos un paralelismo entre el desarrollo de software y las construcción de edificios, bien podríamos decir que en cierto modo, el programador es al desarrollo de software lo que el albañil es a la construcción de edificios. Al mismo tiempo, resulta que el trabajo llevado a cabo por los programadores insume aproximadamente la mitad del esfuerzo total del desarrollo del software.

Si uno analiza la situación actual del mercado IT en Argentina rápida se encuentra con la escasez programadores, como uno de los principales problemas para el crecimiento de la industria.

Curiosamente, si uno mira la oferta académica actual de las universidad nacionales (no estoy al tanto de las universidad privadas, pero supongo que la situación debe ser similar), se encuentra con abundantes opciones de licenciaturas / ingenierías en sistemas, pero ninguna carrera enfocada en la formación de programadores. Si bien es cierto que todo licenciado / ingeniero en sistemas debería ser capaz de programar, para ser programador no basta con ser capaz de programar. Las universidades enseñan programación en la primera mitad de la carrera, tratándola más como una base necesaria para las materias del ciclo superior que como una disciplina en si misma.La falta de una carrera de programador hace que aquellos jóvenes con aspiraciones de ser programadores se vean obligados a estudiar una licenciatura/ingeniería que no los formará como programadores, provocando una deserción temprana en la carrera. Como consecuencia de todo esto, la academia no forma programadores, sino ingenieros/licenciados capaces de programar.

Por su parte la industria asume que la formación general de los programadores es responsabilidad de la academia y por ello en el mejor de los casos solo invierte en la especialización del programador en una tecnología particular.

Estas posiciones adoptadas por la industria y la academia posiblemente sean consecuencia de la subestimación de la tarea del programador y por una falta de conciencia de la importancia de la actividad.

Personalmente creo que resulta necesaria una revalorización (en la academia y la industria) de la programación como disciplina fundamental del desarrollo de software y es por ello que he decidido escribir una serie de artículos centrada en programación como actividad fundamental del desarrollo de software dejando en claro la diferencias entre ser capaz de programar y ser programador.