archivo

Archivo de la etiqueta: productividad

Conseguir una mejora del Cycle time cuya repercusión en los resultados sea mayor que la inversión económica realizada y sin pérdida de calidad en el resultado final debe ser un objetivo de todo sistema de estas características (sea Kanban o cualquier otro que utilice estrategias similares).

De hecho la aplicación de Kanban pretende de entrada detectar qué aspectos están afectando al Cycle time y posteriormente detectar de la manera más temprana posible esos cuellos de botella (pretende, por tanto, detectar resistencias y atacarlas con el objetivo de reducir su impacto).

No podemos olvidar que lo más importante siguen siendo las personas, su interacción, sus conocimientos y su capacidad, factores que influyen notablemente en el Cycle time, además de otros aspectos, como los medios disponibles y la tecnología.

Tal y como decía en el primer párrafo, la mejora del Cycle time no debe hacerse a expensas de la calidad del software o al menos debe sopesarse qué supone una cosa y qué supone otra. De nada vale entregar antes pero que el producto resultante sea peor, se llega antes, pero después se tendrá que invertir esfuerzo en dar una solución a los defectos o a reenfocar aspectos funcionales o no que se podían haber hecho mejor si se le hubiera dedicado una mayor atención.

Anuncios

Utilizar el dinero como motivador suele ser eficaz a corto plazo, a medio y largo plazo resulta fatal para tu departamento u organización.

¿Por qué? Pues porque lo excepcional se convierte en costumbre y al cabo del tiempo ya no será suficiente para motivar o no tendrá el mismo efecto. Además, en el momento en que falta ese ingreso se suele obtener el efecto contrario: reducción del rendimiento por falta de motivación.

De esta forma se crea en la cultura de que lo que realmente mueve a los profesionales de la organización es el dinero y no el interés por el trabajo que se realiza en la misma, el propio afán del desarrollador por mejorar o la pasión que puede sentir por su profesión.

Otro problema lo tenemos en que la persona tenderá a ir a por los objetivos que le permiten obtener la recompensa, dejando de lado otros que pueden ser igualmente importantes para la organización. La persona se convierte en cumplidor pero en cumplidor de lo que le interesa, de lo que le hace ganar más dinero.

Estoy hablando de recompensas sistemáticas y no de retribuciones justas. Soy de la opinión de que un profesional debe estar pagado acorde a sus méritos, conocimientos y experiencia (aunque raras veces se pague a los profesionales siguiendo esos criterios). Tampoco estoy en contra de las retribuciones variables siempre y cuando las mismas se realicen siguiendo criterios objetivos y estén al alcance del conjunto de empleados de la organización.

Para Austin Freeman: “la simplicidad es el alma de la eficiencia”.

Cuando como desarrolladores asumimos que el producto se construye mediante aproximaciones sucesivas desde soluciones más simples y que no hay nada más productivo que evitar el desperdicio de esfuerzo en la implementación de funcionalidades no necesarias o que todavía no se han madurado lo suficiente, hemos dado un paso muy importante para tratar de maximizar la relación valor/inversión, lo cual supone una ayuda significativa en los diferentes proyectos en los que trabajemos.

Pero los desarrolladores nos debemos limitar a hacer nuestro trabajo y a asesorar a los responsables funcionales, por lo que independientemente de que tratemos de aplicar principios de simplicidad a nuestros trabajos no será suficiente si los encargados de definir la línea de desarrollo del producto no lo aplican también.

Una vez superado nuestro impulso de querer terminar demasiado pronto (y no es fácil conseguirlo), toca tratar que los usuarios piensen también en simple y eso es complicado porque suelen pensar en soluciones de máximos o en asegurar un buen número de funcionalidades desarrolladas, en lugar, tal vez, de ser menos ambicioso y tal vez llegar a menos pero mejor y con mayor valor.

La eficiencia es invertir adecuadamente el esfuerzo y no desperdiciarlo en lo que no merece la pena. Teniendo en cuenta que es muy difícil no desperdiciar porque si no fuera así siempre acertaríamos a la primera y eso no va a ser así. La economía del desperdicio se basa en partir de lo simple para a través del conocimiento generado y validado seguir creciendo.

Respeto mucho a la gente que trabaja duro, a las personas que tienen un nivel de responsabilidad y compromiso para consigo mismo y su equipo (extenderlo a nivel organizativo sería generalizar demasiado porque no son muchas las organizaciones que hace sentir a las personas que trabajan en ellas como parte importante de la mismas). Después las cosas saldrán bien o mal, pero no será por el empeño que se ha puesto.

Ahora bien, si no sale bien, tampoco es cuestión de mala suerte (o por lo menos no se puede recurrir siempre a eso) porque trabajar duro y de manera efectiva no significan lo mismo.

Por ese motivo no se debe ligar productividad a horas trabajadas sino a la efectividad, extendiéndose este último concepto a algo más que completar tareas de manera adecuada, llegando incluso a considerarse como parte del mismo al aprendizaje que vamos obteniendo incluso en aquellos casos donde los resultados no sean todo lo positivos que esperamos.

Si además de no conseguir resultados, no extraemos conocimiento todo será desperdicio.

La productividad entendida de esta manera puede crear controversia porque nos estamos saliendo de la ortodoxia de su concepción clásica, no obstante, si no tenemos en cuenta esos otros activos que se pueden obtener como consecuencia del trabajo que realizamos, estamos dejando fuera del análisis a una parte importante del producto obtenido, intangible, sí, aparentemente (solo aparentemente) inútil, que tal vez no permita recuperar el tiempo perdido pero que más adelante (tal vez mañana mismo) puede producir resultados tangibles y efectivos.

La productividad pasa por ser efectivo y no por echar más horas. Los que nos dedicamos al mundo del desarrollo de software sabemos que en diferentes ocasiones tenemos que echar horas de más para completar determinadas tareas, sin entrar a analizar si es algo que se debe admitir o no, sabemos que en ocasiones es necesario y la mayoría lo tenemos asumido.

También sería de interés que los responsables de las organizaciones lo tuvieran asumido y reconociesen ese esfuerzo de alguna manera y no hablo de palmaditas en la espalda. Ahora bien, si el sobreesfuerzo es consecuencia de haber dejado las cosas para última hora o por no haber hecho un buen trabajo, no se debe esperar, por lógica y por justicia para el resto de tus compañeros que encima te recompensen.

Sin embargo, echar más horas puede ser efectivo a corto plazo pero perjudicial a medio y largo plazo, sobre todo si esas horas de más se convierten en interminables jornadas que abarcan prácticamente todos los días de la semana. No somos robots, no somos máquinas, más pronto que tarde notaremos física e intelectualmente ese agotamiento y el resultado de nuestro trabajo será un reflejo de ello. Por ese motivo es fundamental saber repartir los esfuerzos y dejar las heroicidades para los superhéroes ya que esa no es nuestra misión.

La competitividad no pasa por malvender proyectos a costa de las personas que después tienen que realizarlos y/o a costa de las satisfacción final del usuario, sino pasa por ser efectivo, ahí es donde se marca la diferencia porque lo otro es capaz de hacerlo cualquiera y, además, suele tener, a la larga, efectos negativos.

Un día sin escribir una línea de código puede ser más productivo que una semana picando código sin parar. Nunca el número de líneas, métodos o clases debe considerarse como métrica de avance del proyecto, al menos, mirándolo desde una perspectiva general.

El mejor código es aquel que nos ahorramos de escribir porque la funcionalidad no era necesaria, el enfoque no era bueno, existía una estrategia mejor, hemos podido reutilizar tal código o hemos encontrado una librería que hace justo lo que queríamos.

Partamos de la base de que va a ser prácticamente imposible que nuestro código tenga esos kilos de más entre otras cosas porque el desarrollo de software es evolutivo y lo que hoy parece una funcionalidad imprescindible mañana puede ser algo que no se utilice o que se tenga que rehacer por completo.

Teniendo presente eso, tenemos que tener en mente tanto nosotros como los responsables funcionales o products owners que la prueba y el error no es lá técnica a seguir (salvo en casos muy puntuales) sino que se debe desarrollar con intención con el objetivo de evitar la cómida rápida y que nuestro producto tenga una dieta equilibrada baja en calorías.

El retrabajo es volver a trabajar sobre un determinado desarrollo o la realización de nuevo de una serie de tareas (que puede ser de mayor o menor entidad) y que ha podido ser perfectamente evitable.

Tiene un impacto importante en los proyectos porque es tiempo perdido, esfuerzo que no ha proporcionado ningún valor al proyecto.

En el desarrollo de software estamos acostumbrados a hacer y a rehacer, la diferencia con el retrabajo es la diferencia entre la intención y la negligencia. Se ha podido desarrollar una funcionalidad con intención, de manera meditada y después el usuario descartarla porque una vez desarrollada no le termina de ver utilidad en el sistema.

Se ha ido con una idea concreta y se ha fallado, la negligencia es cuando sin esa reflexión necesaria u obviando soluciones más claras y probables se decide tirar hacia adelante.

Es cierto que entre intención y negligencia hay toda una escala de grises y que cada caso concreto merece su análisis. No obstante, las situaciones extremas son fácilmente identificables y cuando se mete la pata resulta complicado disfrazarlo.

El retrabajo puede ser motivado por el product owner pero también por los desarrolladores.

¿Se quiere mejorar la productividad en los desarrollos? No solo basta con simplificar o eliminar tareas que aportan un valor escaso o nulo con respecto a la inversión necesaria para realizarlas, también es muy importante evitar, en la medida de lo posible, el retrabajo.