Gestion de requisitos y métricas en SCRUM

Tradicionalmente la gestión de requerimientos ha sido llevada a cabo por especialistas en la materia llamados ‘Analistas de Requerimientos’, quienes básicamente entran en contacto directo con los clientes ‘dueños de los requisitos’, para establecer las necesidades funcionales para los sistemas, en relación con las necesidades de sus negocios.

Este proceso de obtención de requisitos nunca estuvo conformado por procedimientos sencillos y la cantidad de actividades a considerarse, deben incluir un proceso de validación recurrente con el mismo cliente o su representante directo.

Este proceso de validación, bajo una gestión de requisitos tradicional, toma una gran cantidad de tiempo del proyecto y el objetivo de tales validaciones tiende a predecir todo lo que se pueda necesitar de los sistemas a construir.

Como consecuencia, los requisitos pasarían de un estado de inmadurez inicial, a un estado de madurez final, lo cual indicaría que ese documento formal sería “la columna vertebral del proyecto”.

Es decir que a estas alturas, los equipos de desarrollos podrían ignorar completamente la existencia del proyecto y mucho menos habrían estimado la viabilidad/factibilidad del sistema, o los riesgos presentes, entre otras consideraciones importantes para cualquier proyecto.

En los procesos tradicionales, se busca que estos aspectos estén fuera del alcance de los equipos operarios y las organizaciones desarrollan grandes volumenes de datos para respaldar métricas que soporten un cuadro predictivo aplicable a los proyectos y con  la grave tendencia de estar solo en manos de ciertos roles, corrientemente Líderes de Proyectos y Gerentes, mientras que suelen ser desconocidas por Desarrolladores y Testers.

Por otro lado tenemos las metodologías Agile que nos marcan un camino algo diferente, pero no necesariamente mejor, siempre.
Los requisitos son puestos en manos de una persona que cumplirá un rol fundamental, la de Product Owner. Esta persona será siempre el dueño/a de las necesidades del producto y necesariamente deberá comprender y hacer notar en todo momento, el valor que tiene cada uno de los requisitos funcionales que presentará, defenderá y aceptará de aquí en más.

En contrapartida con las metodologías tradicionales, en Agile los requisitos pueden no estar en un estado maduro y presentarse para ser atacados desde un punto de vista de mayor transversalidad, es decir donde el análisis de requisitos pasa a estar en manos de todo un equipo multidiciplinario, pero especialistas en áreas específicas como desarrollo y testing, por solo referirme a dos.

Esto es ventajoso en cuanto ningún pedido del Product Owner es puesto en la cola del proyecto hasta poder ser estimados por el equipo de trabajo. Aquí es donde cobra vitalidad este tipo de aproximación, por que los managers, evitarán negociados de alcances, riesgos, recursos y fechas finales,  solo dependiendo de métricas.

Algo ventajoso es tambien la posibilidad de iniciar la codificacion, aun cuando el proyecto se haya en un estado de iniciacion en gran parte de los requisitos. Esto es posible gracias a las propiedades de un modelo de iteraciones, donde cada iteracion solo tendra el objetivo de mostrar un incremento funcional y podria en gran medida considerarse independiente del resto del proyecto.

La desventaja puede verse claramente por ejemplo, cuando los requisitos son claros pero el desconocimiento del producto es amplio. Por ejemplo, el equipo tiene en manos una aplicación heredada donde su equipo de desarrollo original ya no existe y tampoco hay documentación.
Siendo así, si el equipo desconoce todos los aspectos técnicos y de funcionalidad, es decir, flexibilidad de los sistemas, legibilidad del código, mantenibilidad, testeabilidad, entre otros aspectos arquitectónicos, se vera impedido de estimar y es posible que por cada dos o tres historias de usuario, deba proponer un “research” para la historia de usuario que sigue.

Esto en si mismo representa un proyecto de I+D que posiblemente el cliente no este dispuesto a considerar o por lo menos si pretendemos desde el equipo, finalizar con todos los researchs.

Quizas entonces en situaciones así, mejor contar con métricas que apoyen esta nueva incertidumbre. Aunque lo interesante de Agile, es que si trabajamos con estas metodologías, sabemos que contamos con un cliente dispuesto a negociar cada Sprint y tambien podremos incluir un par de sprint para los research.
Considero que QA es un gran candidato para estas investigaciones, al menos desde el aspecto funcional, de modo que el feedback que podemos generar desde estas areas, es enorme y de gran valor para el proyecto.

Que metricas son interesantes considerar en equipos Agiles cuando hablamos de requisitos? Considero que todas las que habitualmente utilizamos. Conocemos nuestra velocidad y el factor de foco con determinadas tecnologias y productos, podemos aplicar indices de riesgos para disminuir el factor foco y alterar la velocidad, la cantidad de iteraciones y tambien su longitud.
Sin duda que determinar con el Product Owener la importancia de cada requisito permitira al equipo sostener el foco del desarrollo.

Lo interesante es que no debemos perder mas tiempo que un par de reuniones donde hacemos las evaluaciones mas importantes, negociamos las primeras historias de usuario y armamos el primer Sprint.
Recordemos que podemos hacer nuestro I+D aun cuando ya se esta en plena codificacion.

Virtualización en QA Testing

Recientemente tuve que utilizar varias máquinas virtuales para ejecutar pruebas y resulta que la única alternativa que tuve a mano fue la utilización de Virtual PC (Microsoft). Luego de haber finalizado las pruebas, emití un informe resumido donde también explico los problemas que tuve y que solución podría aplicarse para esos problemas.

Los problemas básicamente tuvieron que ver con que más del 35% del tiempo fue utilizado en generación de Upgrades de los sistemas que estuve utilizando, como también procesos de desinstalación, limpiezas de registros y otras cosas tradicionales. Este porcentaje se vio agrabado, ya que al no disponer de un servidor dedicado de máquinas virtuales, fue necesario mover archivos de un PC a otro, cuidando espacios de discos, rendimientos de PC anfitrionas y por supuesto, el preciado tiempo del que dispongo para cumplir mis objetivos.

Dado esta última restricción, tiempo, es que decidí lisa y llanamente, realizar los procesos de instalación / desinstalación / upgrades, etc. utilizando solo dos equipos anfitriones donde correrían 4 máquinas virtuales en total.

Las respuestas a mi informe no se hicieron esperar y ahora estoy en la tarea de una comparación para determinar que tecnología podría ser mejor para aplicar en un entorno de testing dedicado, de manera virtualizada.
Por suerte ya tuve la experiencia de trabajar en entornos especializados, virtuales, para testing y puedo contar al menos como fue con VMWare.

Pero lejos de contar esto, solo quiero destacar que la discusión actual se centra en que hardware es necesario para dar soporte a la virtualización y es así que llegué a observar un lindo cuadro comparativo que hizo un tal “Termik”, usuario del lejendario sitio Softonic.

Termik compara el rendimiento de Virtual PC, VirtualBox y VMware, con “Host”, que es el rendimiento de su sistema operativo. Así se pueden ver de maravilla las diferencias de hacer una misma acción en una máquina virtual y hacerlo directamente en el sistema operativo instalado. De verdad, con opiniones así da gusto.

Comparativa de rendimiento software virtualización

Las pruebas han sido realizadas utilizando como equipo host un portátil Pentium M 1.6 GHz con 752 Mb de RAM.

Las máquinas virtuales han sido Windows XP SP2 Profesional con 320 Mb de RAM y disco duro de expansión dinámica. Para que la comparativa de rendimiento sea más precisa todas las instalaciones han sido nuevas, instalándose como único software: PC Mark 2005, 7-Zip, Direct-X 9 y los drivers exclusivos para virtualización.

PC Mark 2005 es una referencia en la industria para evaluar el rendimiento de un PC, pero en este caso debido a las peculiaridades de una máquina virtual (no admite aceleración gráfica por hardware y el disco duro es virtual) nos hemos ceñido solo en realizar los test de rendimiento CPU y Memoria.

7-Zip es una excelente herramienta de compresión que admite la ultra-compresión, consiguiendo unos ratios de compresión mejores que Zip, Rar y Ace. El método de compresión Ultra necesita de unos altos requerimientos de RAM y de CPU siendo un método formidable para evaluar el rendimiento de una máquina. Podíamos haber utilizado también algún compresor de vídeo, pero con 7-Zip ya nos basta.

El software de virtualización evaluado ha sido Virtual PC 2007, VirtualBox 1.5.2 y VMware 6.02.

Debido a que la velocidad de reloj de las máquinas virtuales se descontrola un poco ante pruebas de estrés el resultado obtenido por PC Mark 2005 no ha sido todo lo preciso que pudiera ser, para el resto de pruebas hemos utilizado un cronómetro externo. La realización de cada una de las pruebas ha sido ejecutada previo reinicio de la máquina virtual y ha sido realizada tres veces, el resultado mostrado es la media de las tres, solo para PC Mark 2005 – CPU hemos necesitado de 12 reinicios (4 x 3).

Puntuación PC Mark 2005 – CPU:

• Host: 2807
• Virtual PC: 2704
• VirtualBox: 2742
• VMware: 2730

Puntuación PC Mark 2005 – RAM:

• Host: 2345
• Virtual PC: 2333
• VirtualBox: 2245
• VMware: 2087

Tiempo empleado en copiar 345 Mb de archivos del Host a la máquina virtual:

• Virtual PC: 2 min. 35 seg.
• VirtualBox: 2 min. 37 seg.
• VMware: 1 min. 24 seg.
Tiempo empleado en comprimir con 7-Zip:

(345 Mb de archivos método Ultra, tamaño de diccionario 16 Mb y de palabra 256)

• Host: 7 min. 21 seg.
• Virtual PC: 8 min. 19 seg.
• VirtualBox: 12 min. 30 seg.
• VMware: 7 min. 52 seg.

Tiempo empleado en iniciar la máquina:

• Host: 40 seg.
• Virtual PC: 41 seg.
• VirtualBox: 14 seg.
• VMware: 42 seg.

Consumo de RAM con la máquina virtual en ejecución:

• Virtual PC: 348 MB
• VirtualBox: 355 MB
• VMware: 397 MB

Tamaño de la instalación:

• Virtual PC: 36 MB
• VirtualBox: 33 MB
• VMware: 733 MB

A lo largo de los últimos años hemos visto como han ido mejorando cada vez más el rendimiento de estas máquinas virtuales, acercándose cada vez más al ordenador que las aloja (host), en el caso de Virtual PC 2007 por ejemplo se ha conseguido triplicar el rendimiento de la versión 2004. En el caso de VMware el rendimiento es de un 93% del host!!! Si nuestro procesador soporta virtualización puede mejorarse aún más.

fuente: Softonic

En lo personal creo que este tópico solo tiene sentido discutirlo y analizarlo, si los problemas por trabajar con equipos anfitriones comunes, son superiores a las soluciones que actualmente podemos brindar.

Por lo pronto voy identificando que para Testing es dramático la pérdida del 50% del tiempo asignado, solo para generación de ambiente.

Thinking a Test Case – Generic example

<TC.03.06>
‘DataPush packet’ without ‘Assigned Locations’ is not exported
<Summary>
Normal behavior
Is not possible to export a DataPush packet without assign a ‘Location’
<Steps>
1, Follow the path (Setting/Location/Inventory/DataPush)
2, Press the ‘New’ button in the DataPush screen
3, Select the ‘General’ tab
4, Enter a description in the ‘Description’
5, Select the ‘Packet Content’ tab
6, Press the ‘Add’ button
7, Choose a date using the drop down list in the left superior corner into the ‘Item Type Of’ section.
Example: (Initial Set Up/All)
8, Select one ‘Item Type’ in an individual way or pressing the ‘Select All’ button (recommended)
9, Press the ‘Accept’ button
10, Select the ‘General’ tab
11, Press the ‘Export Packet’ button
<Expected results>
A, the DataPush packet is not delivered
B, a clear alert message pop up notifies that there are no locations defined

Main concept

Subject
Subject + Condition+ Event (Wanted / Unwanted)
Summary
Brief description indicating the current situation. (The behavior actually produced when the object is tested under specified conditions)
Steps
Specific sequence of activities to follow to reproduce de event
Expected results
Brief explicit description of the expected behavior after complete the Steps. (The behavior predicted by the specification of an object under specified conditions)

Agile facilita la separacion de areas

Agile nos facilita un marco para las rapidas adaptaciones, no solo cuando hablamos de “artefactos de desarrollo” o “productos”, sino especialmente cuando hablamos de modelos de negocios.
Los distintos formatos organizacionales vienen migrando hacia modelos mas colaborativos, con menor foco en la separacion de areas y de disminucion de roles y mayor volumen de compromiso con los clientes, trabajando con empe;o en los cumplimientos de los acuerdos de servicios, mejorando la cadena de valor y todo esto haciendo foco en la calidad.
He comenzado a notar cada vez mas, que mientras una corriente de pensamiento del agilismo sostiene que los equipos deben trabajar sin separaciones (inclusive fisicas) y abordar los asuntos basandonos en equipos consolidados y con experiencia en lo que se trata, otra corriente trabaja bajo el concepto de que AGILE permite, apoya y facilita la separacion de areas, ayuda en el sosten de la independencia y asi las proyecta convirtiendolas en mas utiles por si mismas al colaborar con otras areas brindando un aporte exquisitos en pos de los mismos objetivos.
Este segundo marco de trabajo, a mi entender, permite pensar en Agile como una valiosa herramienta de aprovechamiento de recursos, ayudando a que los equipos puedan estar conformados por personas fisicamente separadas, tener una formacion conceptual y metodologica plenamente diferente y hasta modos de gestion diversos.
Agile puede ser observado desde las entra;as de un equipo operativo o desde las ventanas reducidas del managment y la direccion. A cada nivel le sera util de distintas maneras y el modo de gestion a mi entender solo terminaria siendo una herramienta que ayuda a enmarcar mejor lo que cada organizacion comprende como Agile.

Use Repro to test applications while Repro runs silently in the background


http://www.reprosoftware.com/index.htm

  • No changes to the application source code are required. Simply add the application(s) to be instrumented through a menu option.

Create a Repro when a bug occurs by simply clicking on the Repro tray icon and selecting ‘Found a bug.’

Preview the Repro file and trim the bug to the appropriate time frame.

Estas son las actividades básicas que QA/Testing realizan a diario o periódicamente.

QA/Testing common activities

Cada una de ellas es llevada a cabo considerando la participación de roles transversales y responden a una necesidad y/u objetivo de negocio de la organización.
Existen muchas otras actividades comprendidas en estas macro actividades.

No cuentes el tiempo que usas en generar…

No cuentes el tiempo que usas en generar el entorno de testing y prepárate para explicar por que aún el testing no finaliza.
Si por cada vez que debes iniciar una actividad de testing, debes preparar ambientes nuevos o actualizar los existentes, configurando, modificando o cambiando tu juego de dato para hacerlo significativo, entre otras tantas acciones previas al testing efectivo, entonces será mejor que incluyas ese tiempo en tus estimaciones o te verás acorralado contra la línea de tiempo final.
Inclusive si tu actividad de ejecución de las pruebas en si mismo, es corta, es decir si tus casos de pruebas son simples y de un corto tiempo de ejecución, es absolutamente posible que la preparación del entorno para tales ejecuciones pueda consumirte el doble o más tiempo del que usas para hacer las pruebas.
Esto es algo que posiblemente un manager no lo comprenda y suele ocurrir muy seguido. Un síntoma muy claro es cuando se espera que la actividad de testing finalice en tiempo y en forma, aún cuando los desarrollos no finalizaron en término y se consumieron una franja del tiempo de testing.

Agile en los procesos de selección RRHH. Nuevos paradigmas contra nuevos paradigmas?

Durante 5 meses y medios participe en más de 10 entrevistas de trabajo en las consultoras, más de 5 en las empresas en su área de RRHH, tuve más de 15 entrevistas vía telefónica. Me llamaron hasta 7 veces distintas consultoras a nombre de la misma empresa. Me dijeron “solo falta un trámite” en más del 70% de las veces, “la semana que viene te llamamos por que te fue muy bien en los técnicos” en más del 50% y puedo seguir con la lista de “casis” hasta hartarnos.
En las distintas entrevistas en su primera fase, normalmente realizada por las especialistas en RRH, tuve un éxito importante, en las técnicas superé la mayoría de ellas y en otras fracasé hasta por falta de entusiasmo. Pero aún así, la decisión final de darme trabajo siempre fue resuelta por una suspicacia, una duda intrínsica, o una “intuición”, quizás sobre mi perfil, quizás sobre mi personalidad. Entiendo que esta suspicacia podría haber sido solo mis pretenciones económicas, pero jamás negociamos.
Aparentemente todo lo previo a esta etapa no tuvo peso significativo o lo que es peor, siempre hubo un recurso más barato.
Solo en dos oportunidades llegué a conversar con el gerente general. En una nos miramos y no congeniamos. Demás está explicar el resultado. En la otra me quedé esperando su llamado para “comenzar el lunes”. Finalmente muy amablemente pude “hacer mi descargo.”
Recientemente me integré a una empresa norteamericana radicada en la provincia de Córdoba. Estoy muy contento no solo por el grupo que la conforma, sino por el proceso de selección directo asumido por su líder al frente de la organización.
Este proceso directo me pareció especial y bien dirigido, asumiéndose todas las responsabilidades, desde la búsqueda y selección, hasta las entrevistas iniciales, técnicas y negociaciones de salarios y otros términos. Pude observar que fue un proceso libre de vicios, prejuicios, suspicacias y otros metodologías aburridas, perennes e ineficaces. En esto SOS o NO SOS.
Mi actual jefe una tarde terminó su entrevista técnica conmigo, ayudado por su líder técnico y lejos de indicarme que todo estaba a mi favor, dejó que me marchara hasta una nueva oportunidad. Al final de la tarde me pidió que me acercara a la oficina (no su secretaria ni la “chica RRHH”), conversamos unos minutos más e hizo su propuesta laboral, clara, precisa, sin rodeos y cerramos el trato.
De pronto sentí nuevamente tener mucha suerte. Haber pasado por tanto manoseo de pasamano y de pronto estar negociando mi futuro con el “dueño del circo” y cerrar trato muy favorablemente.
Esta no es una empresa pequeña ni mediana, es una gran empresa con un montón de cosas bien aceitadas, un montón de gente trabajando en conceptos absolutamente de puntas, entre los que menciono Agile.
¿Será que Agile ya está embebido en su proceso de selección de recursos? por que los principios del cara-a-cara fueron excelentemente aplicados aquí, no por que yo haya quedado, sino por que me tocó vivirlo y ahora lo estoy disfrutando desde adentro.
Por favor las empresas de Argentina y del resto del mundo, revean sus procesos de selección. Dejen de poner en manos de consultoras externas la definición de sus relaciones con sus colaboradores. No digo que no pidan su participación, pero selecciónenlas a ella previamente, expliquen quien toma la decisión y quienes deben llegar hasta los escritorios de los manager para entablar una relación duradera y de confianza.

Podcast: Personas, equipos, talento y gestión ágil

Software Testing Advice for Novice Testers

Algunos me han preguntado que cosas tener en cuenta cuando se es un principiante en materia de Testing del Software. Mis respuestas particulares ya las di­, pero en viajes por Internet encontre un interesante sitio y un arti­culo muy bueno para tener en cuenta, aun cuando se es un experto.
Algunos conceptos solo son posibles de entender cuando los has vivido.

Software Testing Advice for Novice Testers

Próxima compra de servicios de desarrollo. El tamaño no importa…

Según tu experiencia como comprador de servicios de desarrollo de software, ¿te sientes satisfecho o aún estás intentando decidir con cual otro proveedor reemplazar los servicios actuales?

Pero en esta oportunidad ¿indagarás sobre aspectos internos del proveedor o volverás a limitarte a las cuestiones contractuales y de costos?

Algunos de los profesionales con los que he conversado en este sentido me han indicado que en el 90% de los casos basta con entregar las funcionalidades principales dentro de unos límites de tiempo, costos y calidad. Inclusive dejando una gran deuda de funcionalidad, los clientes desean evitar confrontaciones y amplian sobradamente los tiempos, habilitan un incremento del presupuesto y son los que por lo general absorven los costos.

Esto quizás solo es la consecuencia de los síntomas enquistados en la mayoría de los proveedores de desarrollo de software, normalmente PyMEs.

Pero “no hay peor ciego que el que no quiere ver” y si tu gestión de proveedores es buena, no puedes evitar indagar profundamente sobre algunos aspectos que influyen no solo en la calidad de tus productos solicitados, sino en la calidad de los proyectos que compras. Ten en cuenta que en definitiva, lo que compras es un proceso de desarrollo y una gestión que afecta a personas y sería muy bueno que tu proveedor pudiera acreditar calidad en la vida de las personas al ejecutar proyectos para tus productos.

Estas son algunas de mis sugerencias sobre ítems a exigir a tus proveedores:

  • Metodologías de desarrollo
  • Existencia de técnicas de integración continua
  • Patrones de desarrollo
  • Procedimientos de pruebas unitarias
  • Repositorio, seguridad de datos y respaldo
  • Procedimientos de Testing por terceros (Independencia de QA)
  • Pruebas de rendimiento
  • Pruebas de funcionalidad
  • Pruebas de usabilidad
  • Pruebas de aceptación
  • Gestión de defectos y métricas
  • Gestión de proyectos
  • Gestión de documentación en entornos colaborativos
  • Entorno de trabajo y estilos de liderazgo

Parece exagerado? solo piensa que una empresa que no invierte en estos aspectos, no invierte en la calidad de sus servicios y si logras un producto de calidad, seguramente el proyecto habrá sido de una calidad dudosa o pésima y quienes sufren el impacto son los recursos humanos.

La proxima compra de servicios de desarrollo de software, hazlo con una empresa seria. No importa su tamaño.

Testing Unitario y Automatizado (lecturas recomendadas)

A pedido tuyo amigo mío (Jorge Luís Giménez) ahora que el testing te está exigiendo más conocimientos y reconoces que la calidad del software no es un aspecto que deba ser atendida solo por programadores.
Estos enlaces que te paso son solo el principio. Que bueno sería que pronto nos expliques cosas que aprendiste.
En el mundo somos muchos que buscamos algún tipo de soporte y esto suele no estar al alcance de la mano o no es muy barato que digamos.
Lectura recomendada:
Unit Test Patterns
Advanced Unit Testing, Part I – Overview
Advanced Unit Testing, Part II – Core Implementation
Advanced Unit Testing, Part III – Testing Processes
Advanced Unit Testing, Part IV – Fixture Setup/Teardown, Test Repetition, And Performance Tests
Advanced Unit Testing, Part V – Unit Test Patterns
http://mbunit.tigris.org

Aplicaciones recomendadas para Unit Test Automation :
CSUnit, NUnit, JUnit

Herramienta de diseño de Pruebas Unitarias
MbUnit

Al rescate del 60%

Recientemente leí un artículo interesante en la versión digital de La Nación, el cual en su marco principal trata sobre “qué hacer y cómo tratar a las nuevas generaciones de empleados que nacieron entre 1981 y 2000, y que traen en su ADN una nueva manera de insertarse en el mundo del trabajo”. En este artículo me interesó un concepto particular y es que según estudios recientes, se determinó que el 60% de la fuerza laboral estaría representado por empleados desmotivados cuyo aporte es el mínimo indispensable para la organización y que en lugar de hacer un aporte efectivo estarían generando pérdidas.

Esto me llevó a reflexionar sobre mi participación en distintas empresas de Argentinas y de las cuales finalmente me desvinculé, principalmente por cuestiones de motivación y una falta de misión y compromiso de tales empresas con su empleados, o por el parcialismo que representó su accionar.

Más de una vez me pregunté que ocurre con aquellas personas que por sus características personales y capacidades profesionales o adecuaciones realizadas de su aprendizaje, fueron seleccionadas para pertenecer a un equipo de trabajo para el cual se le brinda inicialmente una apertura y participación amplia, pero con el correr del tiempo, proyecto a proyecto la resultante es un un aporte operativo básico, carente de participación en opinión analítica, crítica constructiva y pensamiento diferenciado.

Creo que las insistentes “conversaciones en pasillos” entre empleados, sobre las malas políticas de RRHH, sueldos bajos, falta de capacitación o el exceso de las mismas, más la poca o nada de relación esfuerzo/compensación, en realidad tienen mucho más que ver con la falta de participación y opinión que se le ofrece a los empleados, que con los ítems negativos.

Es allí donde veo la falta de preparación de las diferentes líneas gerenciales y jefaturas, quienes manifiestan a las claras su falta de liderazgo al no saber declarar una misión, transmitir la visión, conseguir el compromiso y motivar para el cumplimiento de los objetivos.

Creo que gran parte de ese 60% de empleados desmotivados fueron finalmente empujados a esa actitud nociva y destructiva. Es posible que de alguna manera su accionar sea un acto de ajusticiamiento y revancha.

No se debe “tirar a la hoguera” a un soldado que aún vivo huye, sino rescatarlo, curarlo, re reclutarlo y aliarlo bajo un nuevo compromiso. Es importante considerar que, si como líderes y organización no estamos listo para “el rescate”, nuestra vida laboral también será complicada y en camino hacia un valle de desánimo, con un tendal de gente que “no trabaja motivada” y otros que poco a poco planifican su huida.

“Exploratory testing is simultaneous lerning…

“Exploratory testing is simultaneous learning, test design, and test execution”

Esta hermosa frase me leventó el ánimo luego de haber ejecutado en forma manual una secuencia de TestCases diseñados en Testlink (una buena herramienta open source). Durante la ejecución no hice más que salirme de los caminos planificados e intentar alternativas que por mi intuición, sabía generarían un fallo.
Lo gracioso del asunto es que ciertamente, cada vez que me salía del plan, detectaba alguna anomalía y comencé a dudar del diseño de TestCases.
Esto tiene cierta lógica, ya que quien diseña un plan de prueba, naturalmente tiende al enfoque conservador orientado a la comprobación del correcto funcionamiento del software, similar a la postura del desarrollador y poco orientado a la “destrucción creativa” que propone un buen testing. Esta actitud nos propone diseñar pruebas en las cercanías de “el camino feliz” y respondiendo al juego de datos que normalmente haría que la aplicación tuviera un desempeño natural y eficiente.
Un enfoque de “destrucción creativa” basado en técnicas exploratorias, podría incluir un juego de datos poco convencional y alternativas de uso no contempladas, ni aún en los planes de testing más abultados.
La debilidad se centra en la mentalidad del diseñador y no en las técnicas formales de registración, que en definitiva solo son un soporte para un proceso repetitivo.
A su vez surgen otros problemas cuando un incorrecto diseño rige el proceso de testing:

. Uno podría ser la merma de creatividad en el acto de ejecución, con su consecuente pérdida de enfoque para la detección de fallos y aumento del enfoque que busca la confirmación del funcionamiento del sistema o aplicación. Aunque garantizo la posibilidad de repetir los casos tantas veces como se desee y aún teniendo la facultad de ampliar el diseño original, si el diseño original es trivial, mal enfocado o demasiado restrictivo, las ampliaciones solo serán una ampliación del error.
. Otro surge cuando se manifiestan los desvío en las ejecuciones de modo tal que una técnica aleatoria se presentan sin consenso y aumenta el riesgo de desviación de los tiempos de ejecución del plan. Aunque pueda detectar mayor cantidad de defectos, se pone en riesgo la naturaleza de los objetivos centrales del plan, la repetitividad y la rastreabilidad. Adiciono también la aparición de la necesidad de análisis por cada defectos detectado, por el solo hecho de explicar el contexto de detección donde se manifiesta el fallo.
En ambos casos la cobertura corre el mayor de los riesgos.
Este enfoque se presenta con tanta frecuencia en planes convencionales que aquí es donde propongo la creación de planes que permitan la aplicación de técnicas exploratorias.
Antes que nada tengamos en cuenta que las técnicas exploratorias, se caracterizan por ser unscripted e improvisadas, por lo que no es posible que cualquiera de los recursos afectados al testing pueda beneficiarse de este contexto, sino aquellos que tienen amplia experiencia en el aprendizaje, una gran intuición y gobiernan el contexto general del sistema y los negocios afectados.
Particularmente, solo me he permitido utilizar testing exploratorio en casos donde tengo la garantía de otros colaboradores ejecutando “testing tradicional” y me asigno tiempo en los planes, para actuar como un satélite que ejecuta “pruebas libres” como motor de ampliación de los caminos diseñados en los planes.
Muchos me han dicho que la ejecución del testing de manera exploratoria la puede ejecutar cualquiera, pero lo interesante es cuando se puede explicar el contexto y el modo de ejecución lo más detalladamente posible. Conseguir que lo intangible se transforme en tangible con solo la explicación verbal, excluye a la mayoría de los testers y managers.
Por esto mismo pienso que lo ideal es cuando se logra pasar a un punto donde las técnicas de diseño tradicional se mezclan con las bases del testing exploratorio y aun cuando ambas parezcan contradictorias, en realidad lo que se establece es un “juego de expectativas” que solo nos indica que tipo de trabajo debemos hacer y como se debe registrar, pero no da más detalles que solo aquellos que proveen la garantía de un excelente marco para el diseño.
Como manager de testing, siempre he querido ser quien más conoce de cada producto, sus características y sus comportamientos, pero no estár restringido a caminos normales y alternativos diseñados en base a otra documentación. Como tester, siempre tuve la intención de ser limpio en mis ejecuciones y facilitar la registración de nuevos caminos posibles. La ambiguedad esta presente en todo pero hay que saber lidiar con ella.
Creo que esta metodología es ideal, pues propone agilidad y creatividad, sin la pérdida de exactitud, repetición y rastreo.

http://www.satisfice.com/sbtm/

Office development Software more adecuate than Software Factory

Mientras que los procesos manufactureros se concentran en los procesos, los procesos de desarrollo de software suelen estar centradas en las personas. Es por eso que tal vez  los ahorros y los beneficios que se producen en la industria del software debido a la mejora del proceso de actividades, no son realmente importantes.
Por ejemplo, parte del proceso SIX-SIGMA consiste en identificar la causa raíz de los problemas y luego encontrar y aplicar una solución. Un requisito para lograr la mayor efectividad del proceso, es que las operaciones sean repetitivas.
Procesos como SIX-SIGMA son principalmente aplicables a industrias donde las operaciones y las actividades son prácticamente idénticos y repetitivas, mientras que quizás esta característica no existente en los procesos de desarrollo de software.
No hay que ser drásticos ni decir que SIX-SIGMA no es aplicable a los procesos de desarrollo de software, pero si es posible decir y comprobar que su aplicación no mejorará sustancialmente los beneficios como lo puede hacer en la industria manufacturera.

Algunas diferencias entre estas dos industrias son:

1 – en Manufacturing, cada producto de la serie tiende a ser idéntico a un modelo específico. En el desarrollo de software cada producto es personalizado (de otra manera no hay nada que desarrollar)
2 – en Manufacturing, para cada operación el proceso es idéntico, mientras que en el desarrollo del software varían en términos de contenidos.
3 -  en Manufacturing, los trabajadores ejecutan su trabajo en niveles muy parejo de efectividad, mientras que en desarrollo de software las habilidades varían ampliamente, como también los niveles de calidad y efectividad.

De esta manera es facil observar que las actividades implementadas para mejorar un proceso específico o resolver un problema de desarrollo de software, pueden no ser válidos para otro de la misma empresa. También el grado de éxito cada proyecto es siempre diferente.

Se puede concluir que en el proceso de desarrollo de software existe una variabilidad por la componente humana, que introduce grandes cantidades de errores que necesariamente escaparán a cualquier control. Esto evita en gran medida la obtención de procesos de consistencia hermética.

Entonces tal vez deberíamos modificar el término Software Factory evitando hacer un parangón con los procesos de fabricación manufacturera y pasar a un término más acorde, como puede ser “Office Software”. De esta forma también se delimita la forma en que cada una de estas industrias utiliza sus recursos y habilidades.

Twiter y el spam nuestro de cada día.

Twiter spam!!! así es cada día tengo en mi cuenta Twiter una lluvia de followers que finalmente son cuentas que redireccionan a alguna página comercial. Muchas veces ni puedo bloquearlas y pronto, como me sucedión con hotmail en alguna oportunidad, tendré que clausurar mi cuenta y abrir otra, o dejar de usar el servicio.
Espero que Twiter haga algo en contra de esto.

Maldito MySpace. Gasté una hora de mi ti…

Maldito MySpace. Gasté una hora de mi tiempo en editar lo que considero un “post inspirado” y al intentar insertar una imagen de mis archivos, la ventana de edición refrescó y perdí todo lo que escribí sin una posibilidad de recuperación.
MySpace incorporó algunas funciones de vinculación con Skype y también es posible utilizar email, juegos, twiter y otras aplicaciones más, simil facebook. Pero no controla una maldita ventana de edición para que uno pueda bloguear.

Las aplicaciones Open Source están en la…

Las aplicaciones Open Source están en la mira de las empresas emergente de todo el mundo. Son potentes, no implican un esfuerzo de construcción, hay una gran comunidad que soporta a los distintos proyectos, son relativamente fáciles de instalar y progresan rápidamente. Pueden ser integradas a otras aplicaciones tanto open source como propietarias y también es posible contar con su código para modificarlo de acuerdo a las necesidades.
Actualmente cuentan con una gran aceptación y en muchos casos, sirve para orientar mejor a los gerentes y propietarios de las organizaciones al respecto de sus verdaderas necesidades, las cuales en realidad podrían estar poco claras.
Así mismo, es posible que una o varias personas investiguen las mejores herramientas bajo los requerimientos de la gerencia y dado la facilidad de obtención y uso de esas herramientas, “saltar” de una aplicación a otra para compararlas.
Es posible que la mejor solución Open Source no sea gratuita, pero los costos son irrisorios en comparación con soluciones propietarias y el respaldo sigue siendo potente, eficiente y barato.

E-books. Recuros gratuitos de lectura técnica.

free ebooks download space at eBooks-Space.com
Excelente sitio con recursos gratuitos para lectura técnica.

El lado oscuro (reglas básicas para hacer fracasar tu proyecto)

Rescaté este interesante hilo de discución existente en XING.
Lo traigo a mi blog más que nada para poder recordar en cualquier momento, todo aquello que pensé y aún hoy sostengo. También para disfrutar del sarcazmo de mis colegas:

Juan Carlos
Esta resumen detalla las malas practicas que se pueden aplicar a un proyecto de manera que ni el coste ni la calidad sean aceptables. Obviamente la lectura debe hacerse con tono sarcastico.

La garantía es completa. Siguiendo minuciosamente mi plan será imposible que vuestro proyecto se ajuste a las necesidades de presupuesto, calidad o plazos. Este manual de malas prácticas consta de los siguientes apartados:
- Relación con el cliente. Tenemos dos alternativas de trato para fracasar estrepitosamente. La primera es tratar al cliente de ESTUPIDO y la segunda creer que es DIOS y poseedor de la verdad absoluta. Ambas nos harán profundamente desgraciados y nuestros proyectos subirán en coste.
- Especificaciones funcionales. Tenemos tres alternativas: No escribirlas nunca, escribirlas al final o en el otro extremo detallar hasta el último detalle más insignificante.
- Planificación del proyecto. Para cumplir nuestros objetivos es mejor no planificar. Es más, cuando alguien pregunte sobre el tema disimilemos y hablemos de otra cosa. Como si no hubiera dicho nada. Cuando alguien de la tenga prisa ya correremos.
- Arquitectura y diseño. ¡!Que nadie pierda su tiempo con esto por dios!! Esta actividad puede generar grandes beneficios que revertirán en el coste, no solo del proyecto en curso si también de otros. Una actividad a evitar siempre que sea posible.
- Revisiones. Cuantas menos mejor. Todo el mundo debe ser capaz de hacer las cosas mal a la primera. No necesitamos que nadie empeore nuestro trabajo.
- Análisis Estático y Estándares de codificación. Esta actividad la podemos realizar completamente automatizada, siempre que no asignemos ningún responsable de supervisarlos ni ninguna actividad asociada. Así gastaremos dinero en una herramienta que no aportará beneficios.
- Pruebas unitarias. Aquí surgen otra vez dos opciones. Una es no hacerlas, claro, pero otra mejor es hacer development driven testing, es decir, escribir el código y luego los test unitarios que NO fallen.
- Integración continua. No hacerlo bajo ningún concepto. Es una actividad muy rentable. Mejor esperar al final del proyecto, juntarlo todo y disfrutar de los fuegos artificiales (pum, pom, plas, runtime,…)
- Test funcional. Solo hay una cosa mejor que no hacerlo. Hacerlo después de entregar la versión y luego ignorar los defectos que se encuentren ya que el cliente no los ha visto (aún). A ser posible no decirle nunca al equipo del test las nuevas funcionalidades y en caso de que nos fuercen a ello hacerlo en las relase notes (o lo más tarde posible).
- Mantenimiento. Poner a un becario a mantener todo el código si es que después de todo conseguimos llegar hasta aquí.

Esta presentación tiene como objetivo defender las buenas practicas desde la perspectiva del absurdo. Algunas de las exageraciones comentadas nos parecerán un disparate, pero nos harán reflexionar sobre nuestras actuaciones, decisiones o planificación de los proyectos y sobre todo incidir en los costes que resultan de aplicar las malas prácticas y como la calidad ayuda a reducirlos.

José
Enhorabuena Juan Carlos, se lo pasaré a mi jefe de proyecto, a ver si lo aplica del todo (le faltan sólo un par de puntos para conseguir aplicarlo enteramente) :-)
P.S.
Especialmente bueno el término “development driven testing”. ¡¡¡Como la vida misma!!!

Oscar
Una aportación al “manual del buen desarrollador” de Juan:
Los requerimientos:
Al igual que los clientes, los requerimientos son casi una leyenda. Pocos los han visto, y quienes los han visto o han resultado con una sicosis post traumática por ello o no los han entendido. Preventivamente, usted evítelos todo lo que sea posible.
Recuerde siempre que el único requerimiento que siempre se cumple es el que no se escribe (a esto los matemáticos le llaman prueba por vacuidad).
Si su cliente es uno de esos necios que insiste en escribir requerimientos, no se espante, igual puede conjurar a esas quimeras.
Primero, léase un par de leyes para que entienda lo que quiere decir “decir mucho sin decir nada”. Ya con el estilo jurídico en la cabeza, póngase a escribir un tratado kilométrico sobre la funcionalidad del software poniendo mucho cuidado en que no quede claro ni de qué software está hablando ni cuál es la tan mencionada funcionalidad. Use palabras técnicas, términos en inglés, nombres de archivos y bibliotecas, palabras inventadas y uno que otro periplo en pseudocódigo.
Haga uso de diagramas complicados en un UML muy personalizado, así, si el cliente tiene la desgracia de entender UML, usted puede presentarse como un reformador y modernizador del UML.

Un tip básico es:
Nunca use términos de dominio, son confusos. Por ejemplo, a los usuarios puede llamarles “userEntity”, o mejor aún, desaparézcalos y hable de “userName” y “userModuleAPermision”. Puede decir algo como:
[...]
Un userName especificado puede estar linkeado con un userModuleAPermision que indicará de manera especializada un comportamiento del sistema en cuanto al usuario asociado al userName en cierto módulo del mismo.
[...]
Escribir requerimientos de este modo es casi un arte, por eso existe gente que presta sus servicios como analistas de requerimientos, tanto para interpretarlos a conveniencia como para escribirlos.

Javier
Cuan importante es valorizar nuestra actividad individual para reconocer el esfuerzo grupal y sentir orgullo de lo que hacemos. Tan simple como entender que no se puede improvisar o mejor dicho, no se debe, pues de poder siempre se pudo y se hizo:

“La garantía es completa” y “Relación con el cliente”Esta frase me recuerda a cuando fui vendedor de seguros de retiro. La muletilla era “te lo pudo garantizar, decime a donde firmo. Pero mi firma va con la tuya”. Fantásitica técnica de venta agresiva, donde lo único que no va es la firma del vendedor.
¿El cliente esta interesado realmente en las garantías o en los problemas que provocan los incumplimientos de las garantías? Personalmente opino que lo segundo. Si estuviera interesado en las garantías, sería el principal conocedor de nuestro proceso y el mejor crítico. Y pensar que desde un principio los proyectos tienen una alta garantía de fracaso!!!.
Recuerdo que algunos expresaron una envidia sana cuando en un hilo de Neurona expuse “Capacitar al cliente para …” . Algunos dijeron que era imposible contar con un cliente maduro. Solo expreso hoy que si tenemos un cliente al que podemo tildar de ignorante, estúpido, o simplemente inmaduro, quiere decir que nuestro proceso tiene muchos elementos que alimentan esa condición especial de nuestro cliente y la sostienen. También sugiero que estos tildes son puestos por los sectores operativos que se contraponen a la visión del cliente como un dios.
Por otro lado si nuestro cliente es “dios”, estoy seguro de que estamos hablando de una condición impuesta por nuestros superiores, nuestros comerciales o ambos y suelen ser un factor de presión al nivel operativo, principalmente a los Líderes de Proyectos y/o Analístas de Requerimientos o Funcionales, quienes expondrán las limitaciones de los requerimientos, del dominio del sistema y del negocio y en primeras instancias mostrarán las dificultades que serán inmediatamente tildadas de “visionarios de incendios y muertos en la puerta de un hospital” o de “solicitantes del postre cuando no se sabe ni comer”.
La mayoría de las veces puede darse que los costes ya están definidos y las variaciones sean mínimas o no significativas, pero el esfuerzo de comunicación, entendimiento y satisfacción serán absolutamente diferentes, según la madurés del cliente.

>”Especificaciones funcionales”
Este punto es casi para discutir de procesos y metodologías. Agile o RUP, RUP Agile, algún pseudo proceso a modo de proceso propio basado en….
No escribirlas me parece la peor opción. Sucede? si, todo el tiempo en mayor o menor escala, en proyectos, en defectos o incidentes, en mesa de ayuda o soporte. Siempre algo falta y en algún momento se necesita esa información.
Lo interesante de cualquiero proceso o metodología o combinación, es como construimos y administramos nuestra base de conocimientos.

>”Arquitectura y diseño”
Realmente dificil provocar la existencia de estos artefactos. Lo prácticamete imposible es hacer entender a La Gerencia lo importante de esta actividad y demostrar los beneficios fuera del proyecto, cuando estamos en fases de Garantías, justo cuando el cliente comienza a solicitar cambios significativos. Cómo explicarle a los niveles superiores que esos artefactos se deben considerar si o si en la presupuestación pues restarle arquitectura y/o diseño a un sistema es restarle FLEXIBILIDAD, ESTABILIDAD, ESCALABILIDAD y también merman los CRITERIOS DE SATISFACCIÓN AL CLIENTE.

>”Revisiones” (Evitar revisiones, “nunca lo hice ni lo volveré a hacer”)
En mi vida como profesional SQA, he sido partícipe necesario de los recortes de procesos por demanda de La Gerencia y me he sentido víctima, victimario e indiferente ante esta situación.
Al principio sentí la impotencia de la víctima de quien debe cumplir un rol, una función y no tiene el marco necesario. Este mismo modo me vinculó con el rol de Victimario, pues así me he sentido al ser complice sin otras chances más que la de expresar con cierta peligrosidad mi desacuerdo. Hasta sentí el impulso de renunciar. Y finalmente mi instinto de supervivencia me hizo volverme indiferente aunque más no fuera de manera temporal, pues mi naturaleza me impide cambiar la vista a otro lugar cuando tengo una importante obligación.
Hacer las cosas bien a la primera. Bueno, no es una locura y mucha gente pionera en Ágile explica el por qué. Pero sin ser Ágilista, siguiendo un modelo en V, cuanto antes se haga mejor, doblemente mejor para las fases de revisión, exponencialmente mejor para el proceso, el producto, la empresa.

>”Pruebas unitarias”
Como lo explicaron en otro hilo de discución, debe existir un justo balance entre Testing Unitario, Testing de Integración y Pruebas de Sistemas. Lo que le hace mal a todas estas actividades es la falta de planificación, no contar con el tiempo de dedicación necesario y no atesorar la experiencia dejándo de lado las métricas, lecciones aprendidas y otros elementos que puedan ayudarnos a mejorar para próximos proyectos.

>”Integración continua”.
Integrar los componentes en iteraciones cortas suele dar resultados muy favorable para ejecutar testing en ciclos más contínuos, aún sin haber logrado efectivizar técnicas formales de Integración contínua.

>”Test funcional”
Quien no ha sufrido la entrega forzada de un producto no ha conocido la presión de esta industria particular.
En algunas ocaciones la estrategía ha sido no notificar a Calidad del despliegue del sistema en producción, luego de meses el cliente encuentra fallos de gravedad importante y “se tira la bomba a Calidad con una mecha encendida”, situación ante la cual solo sirve tener una gran conciencia o rastreabildad de lo que sufrió el proceso de calidad o morir callado asumiendo que el estallido puede costar muy caro.
Yo prefiero rastreabilidad antes que conciencia, pero necesito de las dos cosas.

>”Mantenimiento”.
No opino sobre este concepto pues al considerarlo de gran importancia y relacionarlo con los acuerdos de servicios, entonces prefiero que se abra un nuevo hilo de discusión al respecto.

En un nuevo posteo me uniré al sarcazmo.

Juan Carlos
¿El cliente esta interesado realmente en las garantías o en los problemas que provocan los incumplimientos de las garantías?
Supongo que dependerá del cliente, pero me cuesta imaginar un cliente que quiera que su proyecto se ponga en riesgo a no ser que tenga algún tipo de razón maliciosa. Normalmente el cliente lo que quiere es pagar menos por más y eso es común a todos los compradores. Otra cosa es que la cesión comercial sea siempre a costa de la calidad o falta de funcionalidad encubierta (se le dice al cliente que si cuando sobradamente se sabe que no va a ser a si).

…nuestro proceso tiene muchos elementos que alimentan esa condición especial de nuestro cliente y la sostienen…
Más que nuestro proceso yo diría que se alimentan desde una posición de competencia feroz y a veces poco profesional que hace difícil competir diciendo la verdad (y si, ya se lo del largo plazo, pero dilo cuando presentas la cuenta de resultados….)

…Arquitectura y diseño
Realmente difícil provocar la existencia de estos artefactos

No es necesario un detalle impresionante, pero un mínimo de planteamiento se debe hacer, al menos si el proyecto tiene un tamaño considerable y sobre todo si es una plataforma nueva o un desarrollo nuevo completamente.

Pero sin ser Ágilista, siguiendo un modelo en V, cuanto antes se haga mejor, doblemente mejor para las fases de revisión, exponencialmente mejor para el proceso, el producto, la empresa.
Completamente de acuerdo. Cuanto antes se detecte el problema mejor.

…Yo prefiero rastreabilidad antes que conciencia, pero necesito de las dos cosas
La trazabilidad es mi seguro de vida. El avisar de los riesgos de la no ejecución de determinados procesos es nuestro deber, pero la decisión de asumirlos no. Puedo entender que si el producto no está disponible hoy, se llega tarde al mercado. No somos los guardianes de la calidad, sino que ayudamos a tomar decisiones respecto a calidad del producto.

El sarcasmo ayuda a digerir y tomarse con humor las situaciones más complejas.

Javier
¿El cliente esta interesado realmente en las garantías o en los problemas que provocan los incumplimientos de las garantías?
Supongo que dependerá del cliente, pero me cuesta imaginar un cliente que quiera que su proyecto se ponga en riesgo a no ser que tenga algún tipo de razón maliciosa. Normalmente el cliente lo que quiere es pagar menos por más y eso es común a todos los compradores. Otra cosa es que la cesión comercial sea siempre a costa de la calidad o falta de funcionalidad encubierta (se le dice al cliente que si cuando sobradamente se sabe que no va a ser a si).

Juan Carlos, ¿El cliente puede expresar que quiere evitar todos los riesgos posibles en su proyecto y no interesarse en tu proceso? ¿o evitar su involucramiento tan solo para sentarse a esperar desde una postura rigurosa de “ya pactamos los términos del contrato ahora quiero que cumplas en tiempo y forma”?.
Siendo esta situación posible, como proveedores ¿no adoptaremos todos los recuados necesarios para controlar todos los riesgos posibles y cumplir en tiempo y en forma? si respondemos que si a esta última pregunta, ¿podemos hablar de proyectos con pocos elementos de control en los procesos o en los que se sacrifique alguna parte de el, por ejemplo la calidad? ¿Podemos realmente ser rentables para nuestra organización y para el cliente si entregamos “encubiertamente” funcionalidad recortada? ¿Podemos seguir adoptando proyectos mal definidos y trabajar contra End_Lines mentirosos?

…nuestro proceso tiene muchos elementos que alimentan esa condición especial de nuestro cliente y la sostienen…
Más que nuestro proceso yo diría que se alimentan desde una posición de competencia feroz y a veces poco profesional que hace difícil competir diciendo la verdad (y si, ya se lo del largo plazo, pero dilo cuando presentas la cuenta de resultados….)
Juan Carlos, yo sugiero que busquemos clientes mejores, no los que solo pretenden el engaño de “pagar menos por más”.
Un cliente que aprecie la calidad será el que nos haga ganar dinero a grandes escalas, no solo por que nos pagará lo que valemos, sino que nos recomendará, nunca nos abandonará y será nuestro aliado para mejorar nuestros procesos y nos hará verdaderamente competitivos. Si somos fieles a nosotros mismos y trabajamos con lealtad, permaneceremos y trascenderemos.

Arquitectura y diseño
Realmente difícil provocar la existencia de estos artefactos

Juan Carlos, los procesos agilistas no desdeñan estos artefactos y cuando más agilista pretenden ser, más lo incorporan, aunque a su modo. Lo interesante es generarlos en el momento en que deben aparecer. Son la base para nuestros SLA y la garantía para lo que el mercado exige tan competitivamente, la evolución.

Pero sin ser Ágilista, siguiendo un modelo en V, cuanto antes se haga mejor, doblemente mejor para las fases de revisión, exponencialmente mejor para el proceso, el producto, la empresa.
Completamente de acuerdo. Cuanto antes se detecte el problema mejor.

Juan Carlos, estoy plenamente de acuerdo con vos en estos puntos.

El sarcasmo ayuda a digerir y tomarse con humor las situaciones más complejas.
Juan Carlos, también me pongo de acuerdo con vos en tomarse las cosas con humor.

Extraido de XING

Oportunidad en Córdoba – búsqueda de perfiles Líderes de Proyecto, Arquitecto de Sistemas, Analistas Funcionales, Developers, QA y Testers

Empresa de servicios Off-Shore radicada en Córdoba invita a Líderes de Proyecto, Arquitecto de Sistemas, Analistas Funcionales, Developers, QA y Testers a enviarnos su CV como primera medida de contacto.

Por favor indiquen en el asunto del email la referencia correspondiente:

  • LP (Líder de Proyecto)
  • ARS (Arquitecto de Sistemas)
  • AF (Analista Funcional)
  • DEV (Developers)
  • QA (Aseguramiento de Calidad y Mejora de Procesos)
  • TST (Tester de aplicaciones)

Se admiten postulaciones a otros cargos relacionados con TI, Servicios Informáticos y Desarrollo de Software, que no hayan sido mencionados aquí mismo.

Consultoras de Servicios IT en Latinoamércia: “prestadores de verdaderas soluciones para clientes reales?

En esta época de globalización generalizada, donde las barreras geográficas y tecnológicas no son un impedimento, los prestadores de servicios profesionales latinoamericano estamos iniciando un nuevo camino en el que debemos aprender a posicionarnos.

Las potencias económicas que antes consumían los servicios y recursos humanos de países como India e Israel, casi en forma exclusiva, han comenzado a mirar hacia Latinoamérica con mayor énfasis que nunca.

Argentina es uno de los países que dice estar a la vanguardia de prestación de servicios Offshore y Nearshore (nuevos término post Out Sourcing), quizás por algunos factores externos, más que por sus reales capacidades.

India presentó un modelo interesante de trabajo para los norteamericanos y los europeos, al demostrar que por años se han estado preparando para dar servicios exclusivamente a ese mercado demandante. Los niños son educados en el idioma inglés y las especializaciones técnicas son dictadas en forma gratuita en prácticamente todo el país.

Bajos costos en la mano de obra y respuestas aceptable con habilidades técnicas probadas, convierten al mercado indio en un atractivo singular para las empresas del primer mundo.
El soporte de este modelo esta garantizado por una situación coyuntural, donde la población India supera los 90 millones de personas donde la mayoría intenta emerger de la pobreza, más el adicional de los aspectos mencionados antes.

Otro modelo presente en el mundo, pero a mi entender diametralmente distinto, es el isralelita, el cual pareciera ser una suerte de clonación del modelo norteamericano.
Este mercado de prestación de servicios se expande a todo el abanico posible, logrando ser más amplio que el conjunto de servicios hindú.
Las capacidades técnicas y de resolución de problemas de los israelitas en distintos ámbitos (no solo IT y servicios informáticos), es bien muy conocida en todo el mundo.
La cara de estas empresas está escondida detrás de las marquesinas que promueven sus servicios en los sitios con formatos totalmente “yankizados”. No hay forma de detectar una diferencia entre un proveedor norteamericano y uno israelita, sobre todo si no es necesario mencionar el origen de la prestadora.

Argentina se encuentra en la disyuntiva de definir un modelo útil de prestación de servicios al exterior, desde hace varios años ya, encontrándose en discusiones y comparaciones, justamente estos dos modelos mencionados.

Al igual que años atrás desde el noviciado, los hindúes e Israelitas comenzaron a dar servicios a los mercados del primer mundo, hoy nos toca “en carne propia” incursionar en esa empréstito y arrancar desde una posición demasiado poco madura y con capacidades más que limitadas para hacerlo con buenos grados de garantías internas.

Una enorme cantidad de individuos  y grupos de Argentina se han asociado en pos de esta “ola de servicios” (Outsourcing, Offshore, Nearshore), con la promesa de generar trabajo, ganar dinero y establecer relaciones duraderas con clientes del exterior.

Sin embargo hay factores que favorecen a una enorme volatilidad en dichas relaciones. Un  grupo de factores son de índole interna y tienen que ver con la falta de un verdadero apoyo por parte de los gobiernos, notándose la falta de capital destinado a este tipo de empresas, falta de asesoría y formación específica para entender y generar relaciones con el exterior y el establecimiento de un formato específico para ser competitivos “sin relegar precio” y generando valor en forma bilateral. Por supuesto los mecanismos de protección a los operarios empleados, pueden ser fácilmente sorteados.

Sin duda esta es una oportunidad de oro, pero hay que tener cuidado por que “no todo lo que brilla es oro”.
Este actor primario proveniente del exterior está comenzando a manifestar algunas restricciones importantes luego de la “crisis económica de 2009″. Un síntoma claro, es que hoy muestra su capacidad de permanecer en una puja sin cuartel para ganar a su favor un precio por una diferencia de U$D300 ó menos, quizás destinado a un recurso humano.
Otra restricción es que sus proyectos en realidad podrían no ser para satisfacer una necesidad propia, sino que ellos mismos están siendo terceros para la satisfacción de un cliente más importante en la pirámide. Entonces comienza una cadena de tercerización de tercerizaciones, la cual aprieta a los que se encuentran al final de la cadena de cobro, es decir al principio de la cadena operativa.

Es posible que estemos siendo proveedores de individuos y grupos conformados con el mismo propósito que el nuestro y que tienen la capacidad de destinar algunos capitales pequeños para tercerizar un trabajo que les ha sido confiado a ellos.

Creo también que podríamos estar siendo utilizados para pujas de precios y ya he podido ver pujas entre proveedores de Buenos Aires y Córdoba para un mismo cliente de EEUU.

Es muy fácil para nosotros desconocer a donde está “el brazo del río con la veta de oro” y cual es el que solo deja residuos.

Por otro lado aquí mismo pareciera ser mejor establecer un  “gran pasamanos  de RRHH freelance”, en lugar de conformar empresas que realmente cuenten con sus propios recursos, de infraestructura y humanos, manifestándose prestadores de verdaderas soluciones para clientes reales.
Para esto, hay que asumir riesgos, inclusive si nuestro cliente no nos habilita plenamente los recursos para proyectos en fases iniciales. Es decir que suena más serio si logramos establecer nuestra organización antes de que los proyectos la requieran.

¿No nos han dicho siempre que debemos estar listos?

Es interesante entonces que nuestra postura general tenga un modelo consensuado, que nuestro modo de relaciones cuente con garantías para la protección de nuestros negocios e involucrados, basado quizás en condiciones  que nuestros clientes comprendan y acepten.

Es cierto que “el que tiene la joya pone las reglas”, pero estoy seguro que la joya no es el dinero sino el trabajo bien administrado y definido, con el adicional de la dedicación, la pasión y la energía que cada equipo le pone.  Si esta joya no es más importante que “la oportunidad de oro”, nada podrá ser ponderado adecuadamente.

Segundas Jornadas Latinoamericanas sobre METODOLOGÌAS AGILES

Profesionales relacionados al desarrollo del software, unidos por el objetivo de crear un espacio amplio de discusión sobre las metodologías Agiles y su adopción en América Latina, han organizado para el mes octubre de 2009 en Florianópolis, Brasil, las SEGUNDAS JORNADAS LATINOAMERICANAS SOBRE METODOLOGÍAS AGILES.

Están confirmadas las presencias de importantes figuras del medio como:

- “Brian Marick” (uno de los 17 visionarios que firmaron el Manifesto for Agile Software Development en el año 2001)

- “Diana Larsen” (co-autora del libro “Agile Retrospectives: Making Good Teams Great!” y co-fundadora de la conferencia Agile Open Northwest y del evento internacional Retrospective Facilitators Gathering)

- Entre otros referentes internacionales de la comunidad ágil, se contará con la participación de Matt Gelbwaks, Naresh Jain, Dave Nicolette y Joshua Kerievsky como invitados especiales.

La información oficial del evento está aquí

Sede: Rod Admar Gonzaga, 2765
Florianópolis – SC, 88034001, Brazil

View Larger Map

desde LinkedIn: Debate: ArgenTIna – Software y Servicios Informáticos.

Reblog this post [with Zemanta]

El aprendizaje de un nuevo lenguaje

Están convencidos de que el aprendizaje de un nuevo lenguaje de programación aporta al aprendizaje de nuevos paradigmas?

Siempre entendí que un paradigma va más allá de un lenguaje en particular; es una representación que encierra problemas y soluciones con un enfoque particular.

Entiendo la necesidad de los programadores de aprender más lenguajes de programación y es válido si lo vemos como proponentes de soluciones técnicas útiles en los proyectos.
Entiendo que un arquitecto de sistemas debe poder comprender muy bien estos lenguajes que su equipo de desarrollo opera, sin embargo deberán darse cuenta que en otras capas de las organizaciones, otros analistas tienen otro dinamismo con la lingüística relativa a los ámbitos que les competen y también debe existir un nexo con estas personas que administran otros paradigmas.

El lenguaje de los negocios tiene su propia lingüística y así ocurre con cada capa que se presenta donde deba ser gestionada la transformación de las ideas.

Por lo tanto, pienso que los lenguajes de programación son solo los medios para hacer tangible lo abstracto de las ideas analizadas y puestas en un plano distinto al de su origen, de las cuales se espera un resultado utilizable. Sostengo también, que el aprendizaje de nuevos lenguajes no tienen relación con herramienta alguna, sino con la “lingüística conductiva” que trasciende a través de todo un equipo concluyendo en soluciones óptimas.

Contratos Agile Para Tus Clientes (1)

No se puede convencer a los clientes de que utilicen metodologías Agile, ellos por si mismo deben convenserse de que Agiles les es útil. Nuestro aporte es enseñarles a traves de hechos.

Video 1 – Introducción

Aspectos que rescato de esta exposición:

  • No se puede decir que los clientes hacen mal su gestión de proyectos.
  • Nuestro interés debe ser mejorar los resultados de los proyectos de nuestros clientes
  • Nuestro interés debe ser crear diferencias en los procesos de trabajo de nuestros clientes para darles una ventaja competitiva
  • Todo se puede mejorar según las metodologías de mejora continua

¿Los programadores quieren dejar de programar? o ¡A ver cuando me ascienden para dejar de programar!

Entre las muchas ideas que pudimos comentar en la reunión … salió un tema que resulta bastante habitual: Ingenieros que quieren dejar de hacer trabajo técnico. Dejar de programar para pasar a tareas comerciales, de consultoría o de gerencia.

El año pasado en una selección de personal (para programadores) un candidato afirmaba que su objetivo era ascender en la compañía, para dejar de programar y pasar a comercial o consultoría. Según sus palabras: “a puestos con mayor proyección”.

Algunos fragmentos extraídos de la entrevista:

“Un médico de 50 años es una eminencia y un programador de 50 años es un fracasado”

“No podemos negar que el salario, además de la reputación es muy importante”

“Efectivamente, el negocio del software en España funciona así” … “Acá en México la cosa no cambia”  (y por lo que vimos en la reunión de la semana pasada, en Chile pasa lo mismo)

“No hagan líderes de proyecto a sus mejores programadores, porque pierden a su mejor programador y ganan un pésimo líder de proyecto”

“Ser (buen) programador es duro. Muy duro”

“El mérito se lo llevan los comerciales y gerentes, y dentro de las empresas solo se valora a quien tenga contacto con el cliente, ya que es el que paga”

“No entiendo como a un ingeniero informático o a un técnico informático no le parece apasionante el mundo de la Programación de ordenadores. Nunca lo entenderé”.

“Me encanta programar, me apasiona. Es mi vida. Pero sabéis qué me ha sucedido? Mis jefes y superiores me han tratado mal”

esta es una lista que se extrae e inicia de ¡A ver cuando me ascienden para dejar de programar!

Luego de leer atentamente el hilo de discusión, quise ver como se desarrollan las opiniones de los programadores y mis conjeturas son las siguientes:

Como características diferenciadoras, pude observar que algunos reconocen la importancia de los distintos roles en una organización y se expresa que la inoperancia en la ejecución de estos roles esenciales perjudica con gran dolo al programador. Al expresarse aspectos negativos de otros roles y el impacto nocivo en los resultados de los programadores, se deja evidencia de que estos roles bien ejecutados bajo un proceso sinérgico tendrían el impacto contrario en el trabajo (…el de todos), es decir positivo.

En otros casos pareciera ser que para ser programador se necesita de capacidades extraordinarias, desestimando la importancia y aporte de otros roles y peor aún, de otro modelos y/o procesos de desarrollo distintos a los Agiles. De modo tal que se teje en la figura del programador, una suerte de omnipotencia.
Algunos solo admiten el trabajo entre pares y consideran que esto les da la cobertura de pensamiento, análisis y toma de decisión suficiente y necesaria para llevar adelante un trabajo ingenieril en materia de desarrollo de software.
La sugerencia en algún comentario, es de que solo se puede acceder a cargos de liderazgo o comercial, luego de haber transcurrido una carrera como programador en los productos que en la empresa existan.

Como características inclusivas, pude ver que el lenguaje general es de insatisfacción y crítica para el modelo y estilo de liderazgo difundido en las distintas empresas que agrupan a estos programadores, mostrándose fuertes sensaciones de injusticia e incomprensión de los mandos gerenciales y líderes.
Estos caracteres acentúan la necesidad de cambio de rol de algunos programadores, mostrando una necesidad de ser reconocidos en su micro entorno e “impartir justicia” con quienes ellos reconocen como “los más esforzados de toda la organización”.

También se habla del aspecto económico precarizado existente y la sensación de inequidad en relación a los esfuerzos que ejecutan distintos roles.

Algunos exigen acertadamente, la necesidad de procesos de trabajo bien conducidos, principalmente en la gestión de proyectos.

Algunos relatos demuestran la importancia de roles transversales, no para aliviar la carga de los programadores o de cualquier otro, sino para ejecutar una actividad ingenieril digna.

Por lo que puedo observar, lo que realmente falla es el estilo de liderazgo organizacional y la falta de comprensión y aplicación de un verdadero proceso de ingeniería, independientemente del modelo que lo rija.
Sucede que en todas partes del mundo se ahorra en gente, se ahorra en procesos, procedimientos y mejores prácticas y los resultados finales se traducen en mala calidad laboral y de vida. El recorte es una característica que se reconoce en todos los casos de fracaso en los proyectos, pero sucede así por que se recorta sin criterio y con total arbitrariedad y luego se estandariza el proceso dejándolo estático, en lugar de adaptarlo para cada proyecto.
Por otro lado, esta sensación de insatisfacción generalizada se presenta aún en personas que aman su profesión, independientemente del rol. Puede variar la perspectiva, pero todos tenemos a la corta o a la larga, la necesidad de reconocimiento general o de nuestros pares, un salario digno, horarios laborales tan flexibles como nuestra flexibilidad horaria, beneficios e incentivos por hacer cada día más productiva nuestra labor, posibilidades de crecimiento y proyección, respeto y trato justo, entre otras cosas.
Entonces si la percepción es la misma, tal vez la solución no sea mirar de reojo y con desmedro a nuestros colaboradores de otras fases, sino demostrar que el trabajo en equipo es mucho más que una ambición utópica y lo podemos hacer.

Referencias:

¿Los programadores quieren dejar de programar? at Chile Ágil.
A ver cuando me ascienden para dejar de programar