No mas recortes
Porque un país que pretende llamarse desarrollado debe invertir en su propia tecnología en lugar de comprarla fuera, y porque la ciencia debiera estar siempre por encima del ladrillo.
Porque un país que pretende llamarse desarrollado debe invertir en su propia tecnología en lugar de comprarla fuera, y porque la ciencia debiera estar siempre por encima del ladrillo.
Llevaba ya algún tiempo con ganas de tener una lente de tipo gran angular para la cámara.
Desde que compré la D40 con el 18-55mm y el 55-200mm me he dado cuenta de que generalmente me encuentro más cómodo tirando fotos con el primero que con el segundo.
Digamos que las fotos con zoom son una gran asignatura que tengo pendiente, y en ocasiones el lente a 18 mm se me quedaba algo corto para ciertos planos.
Así que despues de leer muchas review, hacer mis cálculos y dudar mucho (pero MUCHO) entre la Sigma 10-20 o la Tonika 12-24 al final opté por la primera.
La primera impresión que me dió al sacarla de la caja fue que pesaba bastante!
El acabado es completamente diferente al de los dos objetivos Nikon que tengo, da la sensación de ser bastante más resistente y de mejor calidad.
También me sorprendió el tamaño, la D40 se queda pequeña con el lente puesto
Todavía no estoy seguro de que haya sido la decisión más acertada, pero por el momento estoy más que satisfechos con los resultados.
Aquí os dejo algunas fotos que tomé este fin de semana estrenando la lente.
Me quedan un montón de cosas por aprender con esta lente, y en cierto modo eso es lo que me gusta de las DSLR, cada lente nueva te abre un montón de posibilidades
Leer a Kafka no significa que seas inteligente.
Ser inteligente es leer a Kafka y entender lo que dice!
RafitaFx ~ Random Conversations
En la metodología de desarrollo ágil se usan varias técnicas diferentes. Si habéis escuchado algo sobre Scrum o XP, todas esas técnicas, o metodologías tienen algunos puntos básicos en común.
Aquí os voy a hablar de alguno de ellos:

Imagen tomada usando Caimito One Team
El backlog es prioritizado por el Product Owner y los Stakeholders (clientes, usuarios finales, etc) de manera que los asuntos más importantes siempre están en la cabezera.
Si bien esta aproximación es muy básica, nos da una idea que sí es bastante importante. Al final de una iteración el software debe estar listo para correr en un entorno de producción.
Esto no quiere decir que lo que se entrega esté escrito en piedra, de hecho lo ideal es que el cliente pueda probar realmente el producto y proporcionar el feedback necesario para construir lo que realmente quiere.
Un ejemplo de una iteración sería esto:

Imagen tomada usando Caimito One Team
Como podéis ver, una iteración se compone de los mismos elementos que teníamos en el backlog. Cuando los stories están listos para comenzar a trabajar con ellos y se tiene el suficiente material como para abarcar una iteración de trabajo, se genera la iteración y todo el mundo comienza a trabajar.
Una iteración es un compromiso que el equipo de desarrollo establece con el cliente final. Se compromete a que todos esos puntos, que se han incluido en la iteración estarán listos y funcionando al final de la misma.
La idea de esto es encapsular pequeñas funcionalidades que sean entendibles por los programadores y rápidamente implementables. De manera que si es necesario modificar o descartar el story no se deba emplear o se haya perdido mucho tiempo.
Generalmente un story se compone de esta estructura:
Siendo un [ rol ]
Quiero que [ funcionalidad ]
Para que [ valor de negocio ]
De ahí el famoso As a… I want … so that … que seguramente ya habréis visto por internet.
Aquí podéis ver un ejemplo de un User Story:

Imagen tomada usando Caimito One Team
Como podéis ver, el story no entra en detalles de cómo debe ser la implementación ni engloba todos los posibles casos de uso. Simplemente define un concepto de manera que el programador que vaya a trabajar en ese story tenga una idea de por donde comenzar a trabajar.
A medida que comienza la implementación del story y surgen las dudas, el programador colaborará con el Product Owner para aclarar esas dudas, y finalizar exitosamente el story. (En el próximo post donde explicaré los roles dentro de un equipo ágil os explicaré que es esto del Product Owner, mientras tanto os puedo dar este link[ENG])
Escribir buenos stories es todo un arte, aquí tenéis algunos consejos para escribir buenos stories. [ENG]
En general un story debe ser lo suficientemente pequeño como para que un programador pueda realizarlo sin problemas durante una iteración, y lo suficientemente significativo como para que añada valor de negocio al producto. Es ese equilibro el que diferencia un buen story de otro no tan bueno.
Una vez escrito el story, el equipo de desarrollo lo lee, conversa sobre él para asegurarse de que todo el mundo entiende lo mismo y procede a estimarlo. Sobre la estimación de un story hablaré algo más adelante en este post.
Una vez ha sido estimado, está listo para ser introducido en la iteración y comenzar su implementación.
Es importante que exista un test para cada story que se implementa. De manera que dichos test por un lado validan el correcto funcionamiento de la implementación, y por otro sirven de documentación para el mismo.
Si al implementar un story nos vemos incapaces de realizar un test que lo cubra, probablemente estemos tratando de implementar un story demasiado grande.
Estos stories reciben el nombre de Épicos, y deben ser subdivididos en otros stories más pequeños.
Cuando se detecta un funcionamiento anómalo en el comportamiento de nuestro código se debe reportar y rellenar un reporte de error.
Ejemplo de un Bug Report:

Imagen tomada usando Caimito One Team
De acuerdo con la idea de tener código listo para producción, al planear una iteración, todos los Bugs Reports que tenemos en nuestro Backlog, pasan automáticamente a la iteración, ya que antes de desarrollar nuevos stories es fundamental que el código que ya existe funcione correctamente.
En cuanto a las tareas, podríamos definirlas como pequeños stories para los que no podemos realizar un test para verificar, o no tiene sentido estimarlas.
Ejemplo de una tarea:

Imagen tomada usando Caimito One Team
Las tareas son un arma de doble filo, por su similitud con los stories en ocasiones no resulta tentador “disfrazar” stories como tareas. Tal vez para ahorrarse escribir los test, o para ahorrarse el proceso de estimación… sin embargo es importante limitar el número de tareas con las que se trabaja.
Principalmente el hecho de que una tarea no tenga una estimación es peligroso, ya que el trabajo realizado no se refleja directamente en la velocidad del equipo a lo largo de la iteración. (hablaré de la velocidad más adelante)
La experiencia empírica demuestra que este proceso está errado. En general las estimaciones basadas en tiempo suelen ser bastante inexactas, suelen “recortarse” por parte de ciertos comerciales para competir por vender un proyecto y eso devienen en un sin fin de problemas que básicamente terminan con un equipo de programadores trabajando hasta altas horas de la noche, molestos, desmotivados y sacando el trabajo como buenamente pueden.
No hace falta ser un visionario para darse cuenta de que ese código no solo es propenso a errores, si no que un programador, trabajando en esas condiciones no puede dar lo mejor de sí.
Estimar en complejidad, al principio resulta bastante incierto, pero en mi experiencia personal ha demostrado ser una medida bastante más fiable a la hora de saber qué cantidad de trabajo semanal soy capáz de llevar a cabo.
Las métricas usadas dependen completamente del equipo o el software que se esté usando para estimar.
One Team, por ejemplo, utiliza los valores: 10, 20, 40, 80, 1000000, siendo éste último el valor asignado a stories épicos.
Al principio, para nuevos equipos, es bastante habitual que la velocidad del equipo (la suma de los valores asignados a los stories que se completan al final de la iteración) varíe. Pero con el tiempo, a medida que el equipo comienza a perfeccionar sus prácticas ágiles, es habitual tener una velocidad más o menos estable, permitiéndonos de esta manera, saber cuantas iteraciones nos hacen falta aproximadamente, para finalizar el proyecto (o al menos todos los asuntos que tenemos pendientes en en backlog).
Con estos conceptos básicos podemos comenzar a trabajar de manera ágil. Espero que os sirva de ayuda o de referencia para iniciaros en esta metodología
Para los que me escribís diciendo que estoy desaparecido del mapa os diré que tenéis toda la razón, así que voy a aprovechar un breve lapso de tranquilidad para escribir algunas actualizaciones de lo que he estado haciendo estos meses.
En general este viene siendo un torpe resumen de lo que he hecho, lo que estoy haciendo y lo que espero seguir haciendo durante los proximos años.
Trabajar “en la cuerda floja” por tu cuenta tiene bastantes riesgos y no todo es bonito.
Pero el ambientillo de una startup hace que sea mas llevadero
Como se suele decir, vuelvo por mis fueros!
Después de haber pasado un par de meses en España recargando las fuerzas he vuelto a cruzar el charco hasta mi querido Panamá.
Sé que critico bastante ciertos aspectos de este país, pero a día de hoy me siento irremediablemente atraído hasta esta tierra. Será masoquismo, o serán los retos que mi estancia aquí plantea lo que me atraen? No lo se, y por el momento no me importa.
He aprendido que, al igual que en un proceso Ágil, no se puede pensar demasiado por adelantado, si no ir caminando por la vida pasito a pasito adaptándose a lo que ésta me trae, pero sin perder de vista hacia donde quiero llegar.
Hay muchas cosas sobre las que escribir, y creo que, siempre que el tiempo me lo permita, el blog volverá a tomar un rumbo interesante.
Así que aquí estamos, nuevamente al otro lado del océano. El día amanece gris, el tráfico está imposible como cada mañana. La humedad impregna el aire que respiro y el calor comienza a levantarse, perezoso, con su eterno abrazo.
Welcome to Panama