Story Points: Definiendo el esfuerzo relativo

Planning Poker (banner)

Scrum es una metodología de desarrollo de software muy popular en la actualidad. Una de las herramientas de Scrum para la planificación de la duración de un proyecto, es la actividad conocida como “planning poker” en donde el equipo de desarrollo le asigna a cada funcionalidad del sistema, o lo que en Scrum se conoce como “historia de usuario”, una cantidad de puntos que miden su dificultad relativa. Continue reading Story Points: Definiendo el esfuerzo relativo

Las telecom y sus grandes datos

Antena de Telecomunicaciones

Gran parte de mi experiencia profesional como ingeniero la he obtenido trabajando en empresas de telecomunicaciones. Las telecomunicaciones tienen para mi una connotación especial porque tienen el poder de transformar la vida de las personas. Cuando un pequeño poblado obtiene de un día para otro acceso a Internet dejan de estar excluidos, tienen acceso a la más grande colección de información y conocimiento que como especie humana hemos recolectado en nuestra historia. Sus oportunidades de crecer, de aprender, de estar informados o de divertirse mejoran a la par que mejora su calidad de vida. El acceso a Internet es un gran democratizador del conocimiento, una herramienta para la nivelación de las oportunidades y reducir así la brecha social que amenaza con descomponer la sociedad.

Continue reading Las telecom y sus grandes datos

Lo que nos motiva

Hace un par de años encontré por casualidad en Youtube un video de un discurso de Dan Pink llamado “Lo que nos motiva”.

En este discurso, el autor concluye que, contrariamente a lo que la mayoría de nosotros creemos, estudios científicos han encontrado que las recompensas económicas por tener un buen desempeño en el trabajo no logran el efecto deseado. Es más, a medida que el monto de la recompensa es mayor, el desempeño promedio disminuye. Dan Pink, apoyado por la evidencia científica, encontró que lo que realmente nos motiva y por lo tanto mejora nuestro desempeño, es la libertad de tener autonomía en nuestras decisiones, la capacidad de crecer y ser mejores en lo que hacemos, y tener un propósito trascendental. Continue reading Lo que nos motiva

Las metodologías ágiles no son útiles para las startups

PolarBearIce

Como parte de los requisitos para obtener mi título de maestría en ingeniería de sistemas, durante los últimos meses he estado desarrollando un anteproyecto de tesis titulado “Marco de Referencia para la Selección de Metodologías Ágiles o Planificadas para Startups”. El objetivo principal de la tesis era crear una evaluación que le permitiese a una startup decidirse entre usar una metodología ágil o una disciplinada para la creación de su producto de software. El alcance se limitaba a recomendar un enfoque metodológico y no una metodología en particular (XP, Scrum, RUP, TSP, etc.).

Continue reading Las metodologías ágiles no son útiles para las startups

Unbundling: Un modelo de negocio para las operadoras celulares

Las empresas de telefonía celular se encuentran en un proceso de transformación profundo. Esto debido a que la forma en que usamos las redes celulares ha cambiado, las llamadas de voz y SMS han sido relegadas por una creciente demanda de conexiones de datos. En parte también por el temor de que colosos de la tecnología como Google entren al sector con modelos de negocio innovadores arrasando todo a su paso. Sea cual sea la razón, una la estrategias adoptadas por las empresas de telefonía celular para su transformación ha sido el unbundling. Continue reading Unbundling: Un modelo de negocio para las operadoras celulares

Las “grandes” empresas y su resistencia al cambio

200533084-004

Cuando se habla de burocracia, usualmente pensamos en el estado. Lo cierto es que la burocracia es una enfermedad endémica de todas las “grandes” empresas o instituciones. El estado, al ser la institución más “grande” de todas, sufre de forma más evidente esta enfermedad. En este contexto, la palabra “grande” sirve como peyorativo pues no exhibe grandeza, sino que se refiere a una vasta cantidad de recursos humanos y capitales desperdiciados. Continue reading Las “grandes” empresas y su resistencia al cambio

El misterio del error de precisión de los números de punto flotante

Finalmente he podido entender el misterio del error de precisión de los números de punto flotante que afecta a todos los lenguajes de programación. Para explicarlo, voy a emular el trabajo que realiza el computador para almacenar y leer el número decimal 0.1

Como los computadores almacenan todos los números y caracteres en binario, el primer paso es transformar el número decimal 0.1 a su representación binaria. Para ello se sigue un algoritmo sencillo:

1) Se toma el número a transformar y se multiplica por 2:

0.1 * 2 = 0.2

2) Se separa la parte entera de la decimal del valor resultante

La parte entera de 0.2 es 0
La parte decimal de 0.2 es 0.2

3) La parte entera se toma como el primer dígito significativo del número binario

0.0______

3) Se repiten los pasos 1 y 2 usando la parte decimal obtenida del paso anterior.

Este proceso se repite hasta que el resultado de sea cero o se obtenga una secuencia periódica.

Si ejecutamos este proceso completo para el número 0.1 obtenemos lo siguiente:

0.1 * 2 = 0.2 -> 0
0.2 * 2 = 0.4 -> 0
0.4 * 2 = 0.8 -> 0
0.8 * 2 = 1.6 -> 1
0.6 * 2 = 1.2 -> 1
0.2 * 2 = 0.4 -> 0 (vuelve a reiniciarse la secuencia)

Con esto obtenemos que la representación binaria de 0.1 es:

0.00011... periódico

Como las computadoras tienen una cantidad finita de bits para almacenar cualquier número, los números periódicos se almacenarán truncados. Si asumimos que nuestra computadora solo almacena el valor 0.00011 y no 0.000110011001100110011... (hasta el infinito), la conversión de binario a decimal de este número sería:

0.00011 = 1/16 + 1/32 = 0.09375

Y con esto hemos comprobado como surge un problema de precisión pues 0.1 no es igual a 0.09375, es solo un valor aproximado.

Breve resumen del libro “Clean Code – A Handbook for Agile Software Craftmanship”

Recientemente leí el libro “Clean Code – A Handbook for Agile Software Craftmanship” de Robert C. Martin y decidí compartir algunos apuntes interesantes sobre lo que el autor considera como buenas prácticas de programación. Continue reading Breve resumen del libro “Clean Code – A Handbook for Agile Software Craftmanship”