archivo

Archivos diarios: mayo 22, 2010

La Ley de Parkinson enuncia que: “el trabajo se expande hasta llenar todo el espacio de tiempo disponible para completarlo”.

Me parece muy interesante reflexionar sobre esto porque esta forma de actuar que es muy común en todos nosotros repercute directamente sobre nuestra productividad.

Esta Ley está intimamente ligada al Principio de Pareto, pese a que no habla de proporciones entre esfuerzo y resultado, ya que viene a decir que cuando no se dispone de fecha de fin para realizar una tarea o esta es superior a la que realmente necesitaría para realizarse, ésta tiende a dilatarse buscando conseguir mejoras que realmente aportan muy poco para el esfuerzo que requieren.

Por este motivo, es muy importante plantearse plazos realistas (no sobredimensionar) para realizar las tareas, si bien no todas, sí aquellas que sean repetitivas y aquellas otras que sean más urgentes o prioritarias en cada momento, de lo contrario, como nos sobra tiempo, terminaremos perdiéndolo, sacándole brillo a algo a lo que no le hace falta, revisando aspectos que no requieren revisión y en general, realizando actividades que no suelen servir para nada y que si bien nos puede hacer sentir activos, la realidad es que hubiéramos aprovechado mejor ese tiempo con otra tarea o simplemente viendo en la tele nuestra serie de televisión favorita.

Y lo peor de todo es que nos damos cuenta de que estamos perdiendo el tiempo y no le ponemos solución (¿o no hemos tenido esa sensación cuando por ejemplo estamos revisando una presentación y empezamos a añadirle o a cambiarle imágenes, a mirar si el texto está perfectamente alineado, si es mejor dividir una diapositiva en varias (o al revés), etc…?.

Es muy importante comprender que el esfuerzo por alcanzar la perfección no merece la pena, por un lado porque nunca vamos a llegar a conseguirla y por otro porque llegado un punto, para avanzar muy poquito hay que invertir un esfuerzo que no se corresponde con los logros que se van a obtener.

LCOM4 es otra métrica que utiliza Sonar y en la cual el concepto también es independiente de la existencia del producto.

Esta métrica mide la falta de cohesión de una determinada clase (forma parte de un conjunto de métricas que cogen su nombre de las iniciales de Lack of Cohesion of Methods). Antes de entrar a analizar cómo funciona esta métrica, es de interés mencionar aunque sea en líneas generales, qué es la cohesión y para qué sirve.

La cohesión mide la especialización (o la proximidad al principio de responsabilidad única) de una determinada clase o lo que es lo mismo cómo de relacionados están los distintos elementos (atributos y métodos) que la componen. Se entiende que clases más especializadas son más mantenibles. Esto es fácil de apreciar cuando por ejemplo miramos el código de una clase cohesionada y el código de una clase Tutti Frutti, en el primer caso veremos que la clase describe un objeto y su comportamiento, considerando dicho objeto como algo “atómico”, en el segundo caso nos podremos encontrar (exagerando mucho) clases que plancharán la ropa, jugarán al fútbol, te hacen un Cola Cao y son capaces de mantener una charla contigo sobre metafísica. Evidentemente, por muy complejo que sea el primer tipo de clases, probablemente el comportamiento, inteligibilidad, mantenibilidad, etc… de la segunda se vea afectado en sentido negativo.

Existen distintos grados de cohesión, según la forma en qué estén relacionados sus elementos. En el párrafo anterior me centré en la de carácter funcional, que es la que me parece más interesante.

¿Cómo funciona LCOM4? Cálcula un valor para una determinada clase, si ese valor es mayor que uno, la clase es sospechosa de falta de cohesión (cuento mayor sea dicho valor, menos cohesión tendrá). Lo que hace Sonar es indicarte el porcentaje de clases respecto al total que tienen un LCOM4 mayor que uno, así como calcularte el LCOM4 medio. Como en el resto de métricas de Sonar, la clave está en definir umbrales, es decir, qué porcentaje de clases con LCOM4 mayor que uno se considera aceptable y cuál es el máximo valor de LCOM4 admisible para las clases. Puede haber casos donde se pueda justificar superar dichos umbrales (suponiendo que dichos umbrales se hayan depurado con la experiencia), en ese caso, el equipo de desarrollo deberá explicar los motivos y ser coherentes si quiere que se le acepte la entrega.

Para el cálculo del LCOM4 de una clase básicamente lo que hace es medir el número de relaciones diferentes que se establecen entre métodos, teniendo en cuenta que un método se considera relacionado con otro si acceden a un atributo común de la clase o si uno llama a otro. Para el cálculo hay métodos que no se tienen en cuenta como por ejemplo los constructores. Tampoco se tienen en cuenta los accesores.

A través de este enlace podréis acceder a un ejemplo bastante bueno para comprender cómo se calcula esta métrica.

Por tanto, la cohesión es un factor a tener en cuenta junto al acoplamiento (entre otros factores) ya que condiciona la mantenibilidad y deuda técnica de los proyectos de desarrollo de software.

Hay algo que es lógico, si el producto no se vende es porque existen una serie de aspectos que no funcionan, por ese motivo y llegado a este punto es necesario analizar una serie de variables:

– ¿Realmente he establecido una serie de objetivos de venta o de beneficios?, ¿cuáles de ellos se han cumplido?, ¿cuáles no?, ¿se sabe el motivo por los cuáles unos objetivos se han cumplido y otros no?, ¿tenemos resultados objetivos que avalen estas conclusiones?, ¿sabemos cómo explotarlos?, ¿sabemos sacar conclusiones a partir de ellos?.
– ¿Tiene mercado mi producto?
– ¿Existe mercado pero la competencia es muy grande?.
– ¿Se está perdiendo cuota de mercado que ya se tenía ganada?, ¿cuál es el motivo?, ¿más competencia?, ¿han surgido más y mejores productos?, ¿son además más baratos?, ¿no ha está siendo adecuada la política de evolución del producto?, ¿estamos descuidando a los clientes?, ¿el problema no es realmente el producto sino el servicio que acompaña al mismo?.
– ¿Existe alguna manera de poder ganar cuota de mercado a la competencia?, ¿qué estrategia e inversiones tengo que realizar?, ¿están a la altura de mis posibilidades?
– ¿El producto no se vende porque no llega a su público objetivo?, ¿qué políticas de marketing y comerciales he aplicado?, ¿qué resultado ha dado cada una de ellas?, ¿cómo han afectado a cada uno de los objetivos que se han establecido?, ¿cuánto me han costado?, ¿estoy aplicando los resultados de estas políticas para intentar realizar una mejora de las mismas?.
– ¿Es correcta la política de precios que estoy aplicando?, ¿influye dicha política en las ventas del producto?, ¿hasta dónde es posible reducir el margen de beneficios del producto sin ir más allá de un riesgo asumible?, ¿hasta dónde es posible disminuir los costes de producción y mantenimiento del producto?.
– ¿Es realmente el producto que estoy realizando lo suficientemente bueno como para cumplir las expectativas de sus posibles usuarios y clientes?, ¿cómo está siendo la acogida del producto entre sus usuarios reales?, ¿estoy aplicando en los procesos de mejora del producto las opiniones de los mismos?.

Decenas y decenas de preguntas más nos podemos hacer cuando un producto no funciona en el mercado en un momento dado del tiempo (puede que nunca haya llegado a funcionar o que tras un tiempo en el que iba aceptablemente o bien, las ventas se han estancado o se han reducido considerablemente). Muchas de ellas serán incómodas de contestar, ya que evidenciarán errores que hemos cometido y a nadie le gusta que mirar debajo de su alfombra, pero si de alguna manera se quiere intentar revertir la situación o de dejar de invertir en el producto (una huida a tiempo antes de seguir perdiendo más dinero) no hay otra que hacer autocrítica.

Es verdad que sin tener ningún tipo de plan puede que todo salga estupendamente y que de igual manera que un producto lo mismo hoy no se vende, mañana sí lo haga, pero todo esto es equivalente a jugar la lotería. Claro que te puede tocar, pero dejar que la suerte o aspectos que no controlamos sean los que lleven los designios de la comercialización del producto no creo que sea ningún tipo de solución.