Archivo

Archivos diarios: octubre 12, 2011

Desarrollamos para un conjunto de usuarios que serán los que utilicen la aplicación y esto es así, tanto cuando se trabaja en un proyecto para un cliente como cuando se desarrolla hacia un gran público (como puede ser una aplicación en la nube, un juego, etc…).

Sin embargo, son muchas las ocasiones en que nos olvidamos de ello, pensando en el software como una expresión artística en la que prima nuestra satisfacción a la del usuario final y no debe ser así, lo importante es la satisfacción de quien va a utilizar la aplicación, elemento fundamental (aunque no el único) para considerar a un software de calidad y factor imprescindible si se quiere vivir de esto.

Jeff Atwood es un desarrollador de software, autor de libros y artículos y conocido por ser el autor del blog Coding Horror y ser junto a Joel Spolsky del sitio web Stack Overflow.

Jeff Atwood hace una interesante reflexión sobre esto: “Tenemos que parar la optimización para programadores y empezar a optimizar para los usuarios”.

La productividad no es solo un indicador de la capacidad de sacar trabajo adelante por unidad de tiempo, sino también de la eficacia o utilidad de ese trabajo.

Esa falta de eficacia disminuye el nivel de productividad, ya que el trabajo efectivo realizado ha sido menor.

Ser productivo por tanto, no es solo ir más rápido, sino llegar a cumplir las metas que se marcan con tu trabajo. Por ese motivo, es necesario que ese volumen de trabajo que podemos soportar vaya acompañado por la eficacia, ya que personas que lo mismo no son capaces de acaparar tanto, pueden igualar o superar a personas con mayor capacidad, técnica y experiencia, simplemente haciendo las cosas mejor.

Se trata de una técnica de testing de caja negra, en la que se definen diferentes hitos a ser probados, que pueden ir desde elementos de carácter unitario hasta elementos cuya funcionalidad es proporcionada por varias capas de la arquitectura de la aplicación, como por ejemplo, los campos de un formulario y a los que se les proporciona un juego de entrada de datos aleatorio que puede tener acotado o no el patrón de generación de los mismos.

En función del nivel de acotación (o de inteligencia) del juego de entrada de datos aleatorio generado, se distinguen diferentes tipos de Monkey testing: Dumb Monkey Testing, Brilliant Monkey Testing y Smart Monkey Testing.

Esta técnica de testing requiere de un importante conocimiento funcional del sistema por parte del tester, ya que se basa en dicho conocimiento para realizar una serie de pruebas no guiada por casos o plan de pruebas.

Puede tener múltiples aplicaciones:

- Para el diseño de casos de prueba.
- Para realizar smoke testing o sanity testing.
- Como una fase más dentro de un testing exploratorio donde el tester ha adquirido con las evoluciones del software y con su experiencia, conocimiento suficiente del sistema, etc…

Los testers son desarrolladores de software, son una pieza más dentro del equipo, hacen otro tipo de trabajo, pero de gran importancia dentro del proceso de desarrollo.

Precisamente uno de los principales problemas con que se encuentran los equipos de testing, oficinas de calidad, etc… es que se consideran el enemigo o si parece demasiado exagerada esa afirmación, se consideran como obstáculos para la causa que no es otra cosa que ejecutar el proyecto.

Esto es así, porque está formado por un equipo de personas diferente, que en muchos casos ni conocen, que no están en el día a día del proyecto y de las presiones o contingencias internas y con el cliente y que te indican que hay cosas que no están bien y que deben ser corregidas.

El equipo de testing hace su trabajo, de igual manera que el equipo de proyecto hace el suyo. Es posible que el equipo de proyecto tenga la sensación de que el equipo de testing no está alineado con los objetivos del proyecto, pero esto no es culpa directa de los testers (salvo que no estén haciendo un correcto desempeño de su trabajo), ya que será provocado probablemente porque no se ha comunicado de manera adecuada al equipo de proyecto el proceso de calidad del software o porque dicho proceso elegido no resulta adecuado para el proyecto.

Los testers tienen la misión de localizar errores los más críticos posibles y lo más cerca que se pueda del lugar donde se han producido, tomando como base un plan de calidad del software y su aplicación concreta al proyecto en el que se está trabajando. Si este trabajo se realiza de manera adecuada, el equipo de proyecto saldrá beneficiado de manera indudable, ya que errores detectados de forma tardía impactan gravemente en la calidad y los resultados del proyecto.

A nivel conceptual se considera que el team recreation se diferencia del team building, por perseguir fines estrictamente recreativos o lúdicos.

Pero eso es a nivel conceptual, ya que desde mi punto de vista el team recreation no es más que una estrategia más dentro del team building, ya que cualquier actividad que favorezca la cohesión, conocimiento y la dinámica de un equipo redunda en su beneficio y por tanto en el desarrollo, mejora y potenciación del equipo de trabajo (objetivos del team building).

Por otro lado, el team recreation favorece la integración entre personas de diferentes equipos (no estando tan orientado a la consolidación de equipos concretos) lo cual resulta muy interesante, ya que las personas se suelen mover entre equipos y porque los equipos no son elementos aislados, sino que requiere de la interacción con otros para poder realizar sus actividades.

El manifiesto ágil se encargó de poner por escrito una realidad que era anterior a él y que por supuesto, hoy sigue vigente y lo seguirá siendo y es que el activo más importante para el desarrollo de software (y en general para cualquier organización, son las personas).

Por tanto, toda estrategia, toda actividad que fomente el desarrollo de las personas, potencie su motivación, productividad y talento, aproveche los puntos fuertes de cada individuo y los ponga a disposición de la organización o de los equipos de trabajo en los que participe, debe ser tenido en cuenta como algo, más que positivo, necesario.

Sin embargo, ¿qué es lo que nos encontramos en la mayoría de las organizaciones? Pues que como mucho se potencia a individuos concretos que han destacado por algo (una buena venta, un buen proyecto, etc…), teniendo en cuenta una visión cortoplacista (en lugar de medir una trayectoria) y se deja al resto, a la clase media dentro de la organización, con unas políticas de desarrollo personal y colectivo generalista, mediante el acceso a determinadas actividades formativas (a las que tampoco tienen acceso todos).

Mediante autogestión, los propios empleados, pueden potenciar aspectos individuales o de grupo, de hecho no les queda otra en muchos casos, si quieren que su trabajo individual y colectivo tenga unos niveles aceptables y vaya mejorando de manera paulatina. Creo en la autogestión, sin embargo, las organizaciones deben proporcionar medios, accesibles al mayor número de empleados posibles, para favorecer el funcionamiento y dinámica de las personas, de los grupos de trabajo, de los departamentos y de la propia entidad en sí.

Una de las posibles estrategias a utilizar es el team building o el desarrollo de actividades que potencien la empatía, interacción, conocimiento, comunicación, habilidades, capacidad análitica y toma de decisiones dentro de equipos de trabajo.

Estas actividades que persiguen objetivos serios y formales se suelen desarrollar en entornos y formatos distendidos, sin presión, sin obstáculos externos que supongan un freno a las finalidades que se persiguen.

Estos ejercicios pretenden mejorar diversas variables que afectan al funcionamiento de un equipo de trabajo como son la comunicación (cuántos proyectos se hubieran realizado mucho mejor si las personas dentro del equipo de trabajo se hubieran comunicado (no hablo siquiera de comunicarse mejor, sino de al menos comunicarse)), la confianza (que supone un freno para otras variables como la comunicación), la resolución de problemas y toma de decisiones (como medio para poner en juego las habilidades del colectivo y cómo aprovecharlas para conseguir objetivos, mediante el planteamiento de ejercicios que necesitan del equipo y no de individualidades para llevarse a cabo), la importancia de la planificación, la capacidad de adaptarse al cambio, etc…

La sociedad de la información es la capacidad que tienen los miembros de la misma de poder acceder a cualquier información (disponible y abierta), en cualquier momento y desde cualquier sitio.

La sociedad del conocimiento es una sociedad de la información en la que se permite extraer conocimiento (tras el análisis de la información y con una formación adecuada) a partir de la información a la que se accede.

Se dice que la sociedad de la información está superada y que vivimos en la sociedad del conocimiento (incluso también dicen que está superada).

Yo no lo creo aunque existan medios que permitan llegar hasta la sociedad del conocimiento (acceso a Internet, dispositivos fijos y móviles que permiten acceder a Internet en diferentes localizaciones, medios de comunicación multicanal, sistemas educativos, etc…) y no lo creo porque esos medios no están disponibles para todos (por lo que la brecha digital sigue existiendo y en muchos sitios en lugar de ir suturándose lo que hace es ampliarse) y porque no toda la información es accesible para la ciudadanía (puedo entender que información sensible no sea accesible por todos, pero hay mucha que no lo es y a la que solo acceden unos cuantos).

Cuando hablamos de CMMI y más concretamente cuando nos referimos al nivel 3 o superiores lo estamos haciendo para referirnos a la implantación de un modelo organizativo orientado a procesos.

Las organizaciones o segmentos más pequeños de la misma están muy departamentalizados y dentro de ellos, los trabajadores están muy centrados en el área concreta de negocio en la que trabajan, esto implica que si bien pueden (y deben) llegar a conocer de manera adecuada el subconjunto de procesos que les afecta, el conocimiento de otros procesos en muchos casos no es el adecuado, lo cual afecta a la dinámica de funcionamiento ya que existirán procesos horizontales que se deben respetar y otros con una orientación más vertical pero con los que se interactúa e determinadas ocasiones.

Este área de proceso tiene como objetivo proporcionar una serie de medios para que cada trabajador, en cada momento, tenga la capacidad de poder consultar el alcance de un proceso, sus actividades, material y documentación de apoyo, los entregables de los mismos, etc… (CMMI los denomina activos). Se trata, por tanto, de proporcionar los medios adecuados para tener una biblioteca o repositorio con el conocimiento corporativo, el cual no tiene, ni debe ser estático, siempre puede ser objeto de mejora.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 3.196 seguidores