Funcionalidades las justas y necesarias.
octubre 18, 2011
Estoy seguro de que todos a estas alturas conocéis la roomba, ese robot que nos limpia la casa mientras estamos trabajando o en el sofá.
Es un robot que ha tendió un éxito espectacular de ventas y del que ya han empezado a salir bastantes productos simulares de la competencia.
Cuando ves su éxito de ventas, tiendes a pensar que la clave está en que el producto es muy bueno y das por sentado bastantes cosas, por ejemplo: ¿cómo pensáis que es su algoritmo de limpieza?
- Limpia una habitación pasando por todos los puntos, sin repetir prácticamente ninguno y cuando acaba se va a su base.
- Limpia de forma aleatoria haciendo círculos, repitiendo puntos sin límite y que pase por un punto concreto es una cuestión de tiempo más que algo calculado.
Yo también pensé en la primera opción, para mi la más eficiente, pero no, su algoritmo es el segundo. Éste confía en estar tanto tiempo en ejecución como para que acabe pasando para todos los puntos, así que al final que limpie una habitación entera es una cuestión de tiempo. ¿Qué hubierais hecho vosotros si hubiese estado en vuestra mano?
Este es un claro ejemplo de funcionalidad que se podría hacer y que muchos querrían hacer a cualquier precio para tener el mejor producto posible pero que no es estrictamente necesaria, como demuestra el éxito de la roomba.
Además si analizas con más detalle esta funcionalidad verás que probablemente una de las claves del éxito del producto esté precisamente aquí. Si hubieran hecho un algoritmo más eficiente que conozca los puntos por donde ha pasado para no repetirlos, probablemente necesitaría mejor hardware para almacenar las posiciones por las que ha pasado, para hacer un plano de la habitación y conocer su posición en él o cualquier otra técnica. Todas ellas a buen seguro hubieran incrementado el precio y probablemente las ventas no habrían sido las mismas, máxime teniendo en cuenta que era un producto pionero.
Moraleja diferencia lo posible, de lo probable y necesario.
¿Qué diferencia un senior de un junior?
agosto 20, 2011
Llevo un mucho tiempo con este post/ideas en la cabeza pero no sé muy bien porque nunca las llegaba a escribir.
En muchas ocasiones veo ofertas de trabajo en las que piden mil cosas para júniors y casi las mismas para senior, bueno esa es otra historia
, a lo que voy, en las ofertas para senior se ve un montón de líneas vacías sobre la empresa, la progresión que tendrás, etc y luego un montón de tecnologías, y siempre hecho en falta lo que para mi realmente diferencia a un senior de un junior, se resume en 5 lineas:
- Resolución de problemas en base a la experiencia.
- Aceptación de la responsabilidad.
- Aceptar y atacar los problemas desde el primer día/no bloquearse con uno.
- Capacidad de centrarse en el punto clave y no distraerse por problemas auxiliares.
- Saber escalar / conocer sus límites.
Supongo que te estarás preguntando ¿Y del código/tecnologías no hablas?… pues no, porque sino cumple estas cinco cosas, la verdad es que me importa muy poco que sea el megacrack o el megacraftsman.
PD: no es que vuelva a escribir en el blog, es que no me entraba en twitter xDDDD pero quien sabe lo mismo me vuelve a pasar
Agrotrack
febrero 10, 2010
Estoy de vuelta! No sé ni el tiempo que ha pasado desde la última vez que escribí en el blog, lo que es seguro es que desde entonces han cambiado muchas cosas en mi vida. He cambiado de trabajo, he retomado la carrera y he tenido la suerte de entrar al proyecto Agrotrack para la trazabilidad en la agricultura.
Trabajando en Unkasoft tuve la suerte de coincidir con compañeros de un nivel extraordinario, yo diría que mitico xDD, uno de ellos es Javi, sin duda el mejor desarrollador que conozco, una persona que es dinámica, emprendedora, inteligente y le sobra talento programando. Él ya tiene el proyecto Agroguía un sistema de guiado GPS agrícola, un proyecto que tien un éxito tremendo y que ya tiene unos añitos de vida. Así que como es normal no dude en aceptar su invitación para participar en su nueva aventura, Agrotrack el sistema para llevar trazabilidad en la agricultura que he comentado antes.
Agrotrack trata de poner orden en los trabajos de agricultura, mantener la trazabilidad, de forma que un agricultor sin añadirle trabajo , sin rellenar mil formularios, etc pueda tener todos los trabajos en su ordenador, accesibles desde cualquier lugar, generar informes para la PAC con un solo click, y lo más novedoso, los trabajos son añadidos de forma automática.
Unforgettable Things Maps and Voice
agosto 20, 2009
I’ve just released a new version of Unforgettable Things!! and the first paid version. Both of them have the same functionalities, the free version has ads in the new functionalities.
Imagine your phone reminds you to buy something when you get to the mall?
These are the functioalities:
- Voice Reminders. Now you can recorder the reminder and you even can use it as a sound for the reminder.
- Map reminders. Mark places on the map, add a text or voice reminder and when you get to these places the reminder will go off. Imagine your phone reminds you to buy something when you get to the mall?
- Custom sound. You can choose among all of the phone ringtones and whether the sound is insitent or not.
- Smart Reminders. Before this relese you had to select the date when the reminder was enabled. Now with this type, you create a reminder and the phone detects when it’s still for a while and it will be enabled, for instance:
- You are walking home and you thing it might rain, so you create a new “smart reminder”, you name it “might rain” and without no more options, you put your phone back in your pocket. The app detects that you keep walking, so the reminder is not enabled, after a while you get home, you leave your phone on the table, and the apps detects that the phone is still for while and enables the reminder, so when you are about to leave your home and pick your phone up, the reminder will be shown: “might rain”, pick an umbrella.
- Also you can set how long the phone has to be still.
Screenshots

We can see the buttons for adding reminders and also see the stored and scheduled reminders
New Smart Remider
![]() Press the "Smart quick reminder" |
![]() Select the kind of the reminder |
Both of them let you choose the way in which the reminder is shown:
- When you get to the marked places.
- When you put your phone back in your pocket
It’s very easy and quick to add new reminder.
![]() Voice Reminder. Record your voice like a reminder. |
![]() Text Reminder. |
The “Voice Reminder” can be used as the ringtone of the reminder. If you only want the reminder to show you when you put your phone back in your pocket, that’s it. You only have to press save.
If you want the reminder to show you when you get to the some place, then you only need 2 more steps:
![]() Select "you get to the marked places" |
![]() The map is opened. |
![]() Press and hold whatever location you would like to place a reminder at |
![]() Click on it to edit. Touch the screen and drag left to decrease the radius and right to increase it. |
Touch “Save” button and that’s it!! When you get the marked place the reminder will go off.
If something is not clear, use the Help in order to learn how tou use it.

New Remider
The only different between “New reminder” and “Smart Reminder” it’s that you can schedule when the reminder will start and it’s more cool xDD.
| Step 1 | Step 2 | Step 3 | Step 3 |
![]() The name used for managing |
![]() Select the kind of reminder |
![]() If you chose "Sound reminder" |
![]() If you chose "Text reminder" |
| Step 4 | Step 5 |
![]() You have choose how the reminder will be shown. |
![]() The First button opens the map in the same way like the "smart reminder". |
| Step 5 |
Step 5 |
![]() The second button lets you to set a date in which the reminder will be enabled. |
![]() The third button lets you to set how long the reminder has to be still to be enabled |
Unforgettable Things 2.0!!
julio 10, 2009

I’ve worked hard, very hard!! and i’ve dedicated my whole free time, we already have the new version!!! Thanks to users like Erika or Andreas, because with their comments they have encouraged me.
With the new features now you can:
- have multiple reminders.
- store reminders.
- schedule the reminders.
- Add quick reminders (only 2 clicks)
So you can see in the view, now we have two lists, one for “New reminders” and the other “Scheduled reminders”.
- New Reminders.
- “New reminder” : Here you can add new scheduled reminder.

- “Quick reminder” : Here you can add new scheduled reminder.
- “The rest of reminder” : Each time you add a reminder, it’s automaticaly stored.
- “New reminder” : Here you can add new scheduled reminder.
- Scheduled reminders. You can see the outstanding reminders.
- You also can delete reminders or disable outstanding reminders. You only have to keep pressed the reminder you want to delete/disable,
-
The application has 2600 downloads so far, we’ll see with the new features …
Unforgettable Things!! 1.2
junio 5, 2009
Well, I released my first application yestarday, in only one day, i’ve had more then 1100 downloads and enought feedback for updating the application, so I’ve just released the version 1.2!! with 3 new features:
- Spanish version.

spanish version
- Custom Delay. Now you choose when the detection will start.

Custom delay
- Added the key “Done”/”Hecho” to the keyboard, now it’s easier to hide it.

Done/Hecho key
Unforgettable things (0.1) released!!!
junio 3, 2009
I’ve just published my first Android application!!
Basically the application is an alarm for absent-minded. The application reminds you about things you shouldn’t forget. For instance, you are at home and you think, when i leave, i can’t forget to check whether the gas is on or not, so you open the application “Unforgettable things” in your Android phone, set the notification “Check the gas”

Type the unforgettable thing
and leave the phone on the table. That’s it!!!. When you put your phone back in your pocket the application warns you (with sound, led and a notification) :

Once you unlock the mobile, you can see the notifications
Once you unlock the mobile, you can see the notification.

Notification details
When you touch the notification you’ll see the whole note and you can put it off.

Seeing the unforgattable thing
Basically the application detects the movement caused by the mobile going back into your pocket. The applications is also capable of detect when you stand up, so if you’re seating in a bar, you can type a note and when stand up, the mobile warns you.
Changed the subject: Android
junio 2, 2009
After a long time, i’ve come back. Up to now this blog was about management but i’ve got more interests, so today i’m starting a new blog in which i’m going to write about everything and nothing:), i’ll start with Android.
2 months ago, i bought an HTC Magic (Android) and this definitely stirred my interest in Android. I love Android, it’s great stuff, very well thought-out. Developing for Android is very easy and rewarding. I used to develop for J2ME, and i was sick and tired of that shit, it’s buggy, annoying, and so on. Android is quite the opposite. You can do whatever you want, everything is enabled, and you can use all the hardware. When i started to look into Android SDK, ithought, thank god!!! everything makes sense!!.
So i’ve started my first application and this week i’m going to release the first beta (0.1), i’m waiting for MrKoala who has to the icon of the application. And once i’ve had released the application i’ll write about the code.
Félix
Aprendiendo a estimar
febrero 4, 2009
Después de alguna milestone con desviaciones, de quejas (no sin razón) del equipo por la poca fiabilidad de las estimaciones, hemos decidido cambiar la forma de estimar, mejor dicho hemos decidido cambiar el momento de estimar.
No me resigno a no estimar (en pro de la supuesta mega agilidad) y si no llegamos y el proyecto no se entrega no pasa nada, ni al “llegamos como sea” aunque sea no duermo. Ni trabajar por demás ni trabajar para nada.
Hemos pasado por varios métodos y todos con poco acierto, Pert, delphi, experiencia, etc. El problema de que la estimaciones no funcionen en iteraciones de menos de un mes no es tanto la desviación como la desconfianza del equipo en el propio hecho de estimar. Hasta el punto de preguntarse de que sirve estimar o que aporta. Antes de seguir con la nueva forma que hemos adoptado intentaré responder a esa pregunta :
¿De que sirven y que aportan las estimaciones?
-
Descubrir riesgos.
La mejor forma de mitigar los riesgos es atajarlos pronto. ¿Imaginas descubrir un riesgo en el último sprint antes de sacar un milestone?. Yo no quiero ese estrés. -
Construir confianza.
La empresa necesita confiar en las estimaciones para poder tomar ciertas decisiones, por ejemplo: Merece la pena hacer el proyecto?, merece la pena implementar esta feature?, llegara dentro de la ventana de mercado?, necesitamos mas gente en el equipo?, etc..
La confianza también hará que el equipo pueda trabajar a un ritmo mas sostenible, más importante aún, el equipo necesita creer en las estimaciones para trabajar cómodo, de lo contrario la mayoría del tiempo trabajarán como si las estimaciones fueran un losa sobre sus espaldas. -
¿Cómo puedo saber que requisitos meter en mis iteraciones y cuales pasar a la siguiente sino los estimo?
-
¿Cómo puedo evitar tener que hacer mil horas extras sino sé que requisitos meter y quitar?
Como programador y project manager me encuentro entre los dos y entiendo a los dos: Entiendo que la empresa necesita una estimación para saber si un proyecto es rentable, para saber si entra en el mercado, etc. Y como programador entiendo que hay cosas que no se pueden ser estimar hasta que te pones a trabajar en ello por un tiempo. Os preguntaréis como diciendo esto puedo apoyar-pedir que se haga una estimación.. Básicamente es porque creo que hay una solución intermedia.
Una cosa más, las estimaciones son solo eso, estimaciones.
Tal y como dice Craig Larman lo normal de las desviaciones es que sean mas certeras a medida que avanzas en las iteraciones, como se puede ver en la grafico de abajo.

El problema viene cuando tus iteraciones son completamente diferentes unas de otras, como si fueses proyectos completamente diferentes, con una fuerte carga de I+D. Básicamente esto es con lo que vivimos en nuestro equipo. Por lo que nosotros no ganamos más seguridad a medida que avanzamos. Después de alguna iteración y a través del gráfico de avance nos hemos dado cuenta de que las estimaciones siempre se iban, o cortas o largas, pero no eran certeras y después de unos días la situación de repente se estabilizaba como si de repente el equipo hubiera visto la luz. Y claro que ve la luz, básicamente lo está ocurriendo es que el equipo es capaz de analizar una vez que se ha metido en harina, después de 2 días pegándose con el proyecto, de ver el código, de empezar a lidiar con el problema de verdad, es cuando pueden decirte con más seguridad que tienen por delante.
Lo que vamos a intentar es mover el momento de la estimación. Hasta ahora el equipo desglosaba los requisitos elegidos (normalmente por el cliente) en tareas y las estimaba, dependiendo de la estimación se quita o añade para cumplir dentro del time-boxing, después el equipo empezaba a desarrollar. Ahora se le entregará al equipo los requisitos, el equipo durante unos días (no más de 3 ó 4) empezará a desarrollar (sí, a lo bruto) y después de esos días el equipo se reunirá de nuevo, en ese momento hará el desglose en tareas y las estimaciones de las tareas.

Amarillo: Estimado. Verde: Real. En la línea verde puedes ver como después de unos días la estimación se estabiliza
Ya comentaremos el resultado, si ha sido un completo desastre o si ha tenido algún resultado positivo.
Si tienes algún comentario, corrección por favor házmelo saber que como dice el título, estoy aprendiendo.
Claro que soy ágil, por dios!
diciembre 26, 2008

Yo después de 2 semanas de prácticas ágiles
Con el hype que tiene lo agile, todo programador que se precie dice querer usar metodologías ágiles para mejorar la qué actualmente usan y/o para quitar burocracia, mejorar, etc. Pero estoy descubriendo que la gente desconoce lo que conlleva la palabra “ágil “ y que se centra en cosas como “autogestión”, menos burocracia, etc. pero a la hora de realizar otras practicas que también proponen las metodologías ágiles cuanto menos salen corriendo
. La mayoría de practicas se basan en equipos participativos, predispuestos a colaborar no solo con ellos, también con el resto de participantes del proyecto incluido el cliente, a asumir ciertas responsabilidades que van mucho más de allá de programar.
Así que me hago una pregunta, ¿está tú equipo preparado para usar metodologías ágiles?, normalmente la pregunta es sí la empresa está preparada, ya que no siempre es necesario ni recomendable usar metodologías ágiles, ya Craig Larman en su libro “Agile & Iterative development” recomienda a las empresas no introducir metodologías ágiles por ejemplo si se tiene éxito en los proyectos desarrollados. Yo empiezo a creer que para introducir metodologías ágiles también es necesario saber si el equipo está preparado, normalmente como ya comenté, ningún libro habla sobre esto, de acuerdo a JM esto es porque la mayoría de libros sobre metodologías ágiles vienen de EEUU y la actitud de los americanos a la hora de trabajar es muy diferente a la nuestra, son más colaborativos, más dispuestos a tirar del carro, a arrimar el hombro y hacer el proyecto suyo, vamos a estar comprometidos, sea como fuere, la realidad es que casi ningún libro habla sobre si un equipo está capacitado para usar metodologías ágiles. Como programador me hago algunas preguntas para saber si yo estoy capacitado o no:
-
¿Acepto los cambios?. ¿Cómo encajo cuando alguien me propone cambiar algo que programe en el último sprint, incluso aunque siga iteraciones fijas y por tanto tenga garantizado que la implementación no será inmediata sino que ira al “product backlog” ?
-
¿Sé y/o quiero trabajar codo con codo con el cliente?. Buen punto éste, soy capaz de trabajar con el cliente y aceptar sus proposiciones y/o saber canalizarlas hasta alcanzar lo que él realmente quiere?. Normalmente los programadores no trabajamos directamente con el cliente sino que hay un persona encargada de ello (por ejemplo el project manager), pero esto desemboca en el punto 1.
-
Client driven planning. Estoy dispuesto a que las funcionalidades de cada entrega/release las marque el cliente?. Para mi esto esto es el ideal, toma de requisitos continua y por tanto cambio/cancelación/modificación de requisitos actuales.
-
Daily meeetings. Estoy dispuesto a salir de mi nicho para una reunión diaria en la que se comenta lo que se está haciendo, lo que se va hacer, etc?
-
Estoy dispuesto a participar en proceso continuo aportando para crecer como grupo o solo estoy interesado en hacer mis 8 horas e irme a casa.
-
Equipos autogestionados. ¿Soy lo suficiente maduro profesionalmente para acertar ciertas responsabilidades y tomar decisiones que pueden afectar a la empresa, más aún, soy capaz de ver las cosas desde la perspectiva de la empresa?.
-
Equipos autogestionados 2. ¿Soy lo suficiente maduro profesionalmente para acertar ciertas responsabilidades y tomar decisiones que pueden afectar al producto entregado al cliente, más aún, soy capaz de ver las cosas desde la perspectiva del cliente?.
-
Equipos autogestionados 3. ¿Soy lo suficiente maduro profesionalmente para encajar 1 y 2 y hacer que comulguen los intereses de los dos?. (Esto normalmente es tarea del project manager pero en equipos autogestionados muchas decisiones importantes son tomadas por el equipo).
-
¿Sé que ágil != falta de proceso o falta de gestión?
Aparte de estás preguntas que me hago, creo que para que tenga éxito la adopción de una metodología ágil es necesario que el equipo sepa trabajar en equipo y esté comprometido.

















