archivo

Archivos Mensuales: junio 2010

Equilibrio. Esa es la palabra. Desde mi punto de vista una empresa de desarrollo de software que consiga un equilibrio entre las áreas de producción, comercial y de gestión tiene mucho camino ganado, ya que por regla general se tiende a potenciar un área por encima de las otras, en función de las características del personal de la empresa.

Se puede tener un área comercial excelente, que permita vender muy bien los productos y/o servicios, pero después los proyectos no salir bien generalmente y ser deficitarios. Evidentemente esto tiene consecuencias y cada vez puede resultar más complicado “colocar” esos productos y/o servicios conforme se incrementa el número de clientes que han tenido malas experiencias.

Por otro lado, se puede tener un área de gestión excelente, que tenga perfectamente motivado al personal, que controle con esmero cada céntimo que entra y que sale, que aplique políticas financieras eficientes pero después no tener la capacidad de conseguir unas buenas ventas y/o tener unos costes adecuados de producción, siendo esto último un factor que puede ser desequilibrante tanto para ser competitivo, como para intentar conseguir los mejores resultados posibles en los proyectos.

También es posible tener un área de producción excepcional, que consiga desarrollar productos o realizar servicios de calidad con un coste inferior a la media, pero después no tener la capacidad de vender este potencial o no disponer de unas políticas que permitan controlar que los proyectos se desarrollan dentro de los parámetros esperados en cuento rentabilidad,

Lo que intento explicar en los párrafos anteriores es que ser muy bueno en un aspecto concreto no garantiza absolutamente nada si no se llegan a unos mínimos en otras áreas dentro de una empresa de desarrollo de software. El equilibrio no es incompatible con ser excelente en un área, ya que cuando me refiero a equilibrio lo que quiero decir es que no se debe olvidar que una empresa es como una maquinaria formada por diferentes componentes y que todos deben funcionar bien para que todo discurra por el camino esperado o por lo menos para que la probabilidad sea mayor de que las cosas vayan bien.

En muchas organizaciones se toman decisiones neutrales en materias de recursos humanos o muchos jefes de proyecto, jefes de departamento, etc… toman ese tipo de decisiones respecto a sus empleados. ¿En qué consisten esas decisiones neutrales? Pues en la aplicación de una determinada política a todos ellos, es decir, todos somos buenos, todos somos regulares o todos somos malos. Sin llegar a este extremo, también considero políticas neutrales cuando son de aplicación pocas alternativas de un determinado tipo de decisión a un conjunto amplio de empleados (en proporción a dichas alternativas).

Desde mi punto de vista esta política va en contra de la productividad de los empleados, ya que decisiones o políticas globales meten en el mismo saco a personas con diferentes niveles de productividad, lo cual es injusto y puede provocar pérdida de motivación de aquellas personas más productivas al ver que otras que han conseguido resultados inferiores tienen el mismo tipo de recompensa.

Por todo esto, soy partidario de las evaluaciones individualizadas de los empleados y que su recompensa, reconocimiento o similar venga determinado por su resultado individual dentro del colectivo (no quiero decir con esto que no se valore su participación en tareas en las que también han participado otros) independientemente del tiempo que lleve en la organización o de su nivel dentro de la jerarquía de la organización. Soy consciente de que la aplicación de esta política puede resultar complejo en empresas de gran tamaño, pero en donde pueda ser posible de aplicar creo que es la mejor solución.

Como al final la evaluación depende de un individuo, es necesario que estas personas que evalúan expongan en la misma, es decir, si una persona se equivoca evaluando debe tener consecuencias sobre su propia evaluación, ya que de esta forma se cuidará mucho de aplicar decisiones políticamente correctas y se centrará más en la toma de decisiones objetivas.

Todos los trabajadores de una organización son importantes para el funcionamiento de la misma, por lo que desde mi punto de vista cada cual debe recibir una remuneración acorde a las tareas que realiza, a su productividad y a lo que ayuda a que la organización avance y progrese en su conjunto.

Pese a que lo he comentado en el párrafo anterior, lo vuelvo a hacer ahora, todos los trabajadores son importantes. No obstante, quiero hacer una matización, son importantes siempre y cuando cumplan con las tareas y obligaciones que tienen encomendadas en tiempo y forma.

Todos los trabajadores de una organización tienen asignadas una responsabilidad y en sí cada responsabilidad es importante porque forma parte del engranaje de esa maquinaria que es en sí una organización. Pero como en toda máquina no todas las piezas, pese a tener una responsabilidad específica, son igualmente importantes, ya que hay algunas que dejan de funcionar de manera adecuada o simplemente no funcionan, no tienen por qué hacer que la máquina deje de marchar, pero hay otras que si no van bien, hacen que la maquinaria se estropee o que funcione de manera irregular.

Esas piezas importantes que tienen, por tanto, una gran responsabilidad, porque de su trabajo depende que un área o departamento de la organización o la organización en su conjunto funcione, valen dinero, valen una remuneración acorde a esa responsabilidad, ya que un error o un acierto suyo tiene repercusiones sobre otros muchos y porque su ausencia, si se va a otra organización se va a notar durante un tiempo. Nadie es imprescindible, pero no todo el mundo es sustituible a corto plazo, ni dos personas son iguales.

Por esta razón, de la misma manera que digo en este artículo o he comentado en otros, que se tiene que pagar de manera justa a todos los empleados de una organización, tengan el puesto que tengan, tomando como base su productividad y resultados, también digo que aquellas personas cuyas tareas tengan un mayor grado de responsabilidad, también deben ver reflejados en su nómina un plus por ello, ya que el simple hecho de que de tu trabajo dependa el funcionamiento de un área y en consecuencia el trabajo de otros es un peso importante que se lleva encima y que trasciende en muchas ocasiones el ámbito laboral, ya que este tipo de preocupaciones, en demasiadas ocasiones, no se queda en tu mesa de trabajo, sino que viaja contigo a casa y por mucho que sepas desconectar del trabajo no siempre consigues aislarte de ese tipo de problemas.

La responsabilidad no está asociada a puestos de trabajo concretos, porque una cosa es el puesto de trabajo y otra es el trabajo real que se realiza en el mismo, por tanto, no se debe medir en base al nombre del puesto sino en relación a la responsabilidad real que se tiene, ya que puede haber veinte personas en la organización con el mismo nombre de puesto de trabajo, pero no todas ni de lejos, con la misma responsabilidad.

Una de las causas que puede provocar una reducción de la productividad es quedar atrapado en la maraña de flujos de información y toma de decisiones o lo que viene a ser lo mismo: convertirse en un proxy o intermediario que se encarga de recibir información, que puede procesar antes de redirigir (tomando o no decisiones en este proceso que se trasladan a un receptor o conjunto de receptores), simplemente redirigir o simplemente ser un consumidor de la misma (sea o no importante).

No quiere decir que no se trabaje si se cae en este tipo de telas de araña, es más se trabaja y mucho e incluso se puede ser productivo siendo capaces de sacar mucho volumen de trabajo por unidad de tiempo. Esto no supone una contradicción respecto a lo comentado en el primer párrafo, ya que si tu trabajo real es otro, realmente se produce una pérdida de productividad en el mismo, ya que se está dedicando demasiado tiempo y esfuerzo en tareas que no deberías estar realizando tú y sí otro tipo de perfil o bien que sólo te deberían ocupar un determinado tiempo, que es el que se tardaría en tratar los problemas realmente importantes que surjan en todo ese haz de datos e información.

Desde el punto de vista personal, desde hace tiempo estoy atrapado dentro de ese flujo de información y toma de decisiones y soy plénamente consciente de ello. ¿Por qué no pongo solución? Salir de esto supone disponer de una infraestructura que actualmente ni poseo ni estoy de disponibilidad de tener. Esta infraestructura es sobre todo de procesos y responsabilidades, casi más que de recursos humanos. No tiro la toalla y sé que tarde o temprano la situación se normalizará y podré dedicar más tiempo a aquellas actividades que constituyen o deberían constituir el núcleo de mi trabajo, de hecho he conseguido que una parte de las tareas de estas características que realizaba yo directamente, ahora simplemente las supervise. No obstante, todas las organizaciones no son de las características de la mía y sí que es posible que otras dispongan de una mayor flexibilidad en cuanto a la toma de decisiones, definición de procesos, etc.., por ese motivo esta experiencia personal no debería desanimar a nadie para intentar salir de este círculo, porque además yo soy el primero que soy optimista en este sentido.

¿Por qué hablo de procesos y responsabilidades? Los procesos definen dinámicas de trabajo, si estas son conocidas por todos y son de obligado cumplimiento no será necesario recordar a nadie cuál es su trabajo y cómo debe desarrollarse (incluidos los niveles de calidad y productividad esperados en el mismo). Las responsabilidades dan un margen de maniobra a las distintas personas encargadas de realizar una tarea para la realización de las mismas, a cambio de ese margen de maniobra son responsables de cumplir las expectativas que se tienen en su trabajo y de las consecuencias que tiene hacerlo bien y de las consecuencias que tiene hacerlo mal.

Una vez definido ese modelo de procesos y responsabilidades, tocará el siguiente paso que es la delegación de tareas, nunca es fácil delegar, sobre todo determinados aspectos que se consideran importantes, no obstante es algo necesario y en el que nunca se debe olvidar que lo que se delegan son tareas y no responsabilidades, por lo que si una tarea delegada no sale bien, la responsabilidad es de quien delega. Una vez asumida dicha responsabilidad el siguiente paso es exigir la responsabilidad al resto de la cadena de delegación hacia abajo. Además de delegar, también supone que se abandone la realización de tareas que se estaban realizando que no eran cometido de las funciones y objetivos de tu trabajo, esto suele ser más sencillo, pese a que se tenga conciencia de que si no se realizan bien puedan tener influencias negativas sobre las áreas que sean de tu responsabilidad.

NOC es otra de las métricas de Chidamber y Kemerer. Como no podía ser de otra forma, mide la complejidad de una clase desde un punto de vista diferente al del resto de métricas propuestas por estos autores. En este caso su cálculo se basa en contar el número de subclases que directamente heredan de la clase para la cual se calcula esta métrica.

Las subclases están acopladas con la clase de la que heredan, esto quiere decir que cuanto más clases hijas tenga una clase más prudencia hay que tener con cambios relacionados con el comportamiento y especificación de los métodos, ya que podría tener trascendencia sobre sus subclases. Por ese motivo, es necesario ser más exhaustivo en las pruebas de clases con un NOC alto, ya que cualquier problema en las mismas tiene un impacto importante en el programa. Por tanto, se puede deducir de esto que clases con un número de hijos elevado son más complicadas de mantener que otras con un número más bajo.

En el árbol de jerarquía de clases de un determinado programa resulta razonable que las clases situadas en los niveles más alto de la jerarquía tengan un valor de NOC superior a las clases que se encuentren en niveles inferiores, por ese motivo, la existencia de clases con un NOC alto en comparación con otras que se encuentran en niveles superior de la jerarquía, puede ser un indicador de un mal diseño de la clase o una utilización no adecuada de la herencia.

Por otro lado, clases con un NOC alto favorecen su comprensibilidad y la capacidad de implementación de nuevas reutilizaciones, ya que existe un número de clases de ejemplo donde se puede estudiar cómo han aplicado la herencia y como se ha reutilizado la clase.

Aquellos que lleven más tiempo siguiéndome en este blog, saben que he sido bastante crítico con los usuarios. También he destacado su papel fundamental para que un proyecto salga adelante. No se trata de una relación de amor/odio, sino de una relación profesional entre ellos y las áreas de desarrollo y producción que no termina de ser fácil generalmente por el desconocimiento por parte de los usuarios de los trabajos que se realizan en el departamento de informática y por el desconocimiento de estos departamentos respecto a las necesidades e inquietudes de los usuarios.

Es cierto que a nivel personal y profesional por regla general hay buenas relaciones entre usuarios y técnicos de dichos departamentos, sobre todo en aquellos casos donde hay trato directo, cuando éste no es directo, no es tan sencillo (que no imposible) mantener buenas relaciones.

En este articulo voy a dar la razón a los usuarios en una circunstancia que paradójicamente es del todo injusta para los responsables del mantenimiento de aplicaciones. Se trata de cuando se pone en producción una nueva aplicación o se realiza un cambio significativo en una funcionalidad esencial de un sistema que ya está en producción y tiene una serie de errores que impiden el normal desempeño con la herramienta, es decir, lo mismo la aplicación se puede utilizar y está cogida con alfileres, lo que provoca que sea bastante incómodo su uso o bien existen funcionalidades importantes (esenciales o no) que no terminan de funcionar.

En este tipo de circunstancias los usuarios por regla general se enfadan y mucho. En función de su personalidad se pueden dar diversas circunstancias: 1) quejarse ante el responsable temático de la aplicación. 2) quejarse ante el responsable técnico de la aplicación (suele pasar que el responsable temático redirija rápidamente la responsabilidad al responsable técnico) 3) quejarse ante sus jefes de que no pueden trabajar, para que estos a su vez lo escalen. Ante estas circunstancias, los usuarios tienen toda la razón, no comparto la forma y tono en que, a veces, se dirigen a nosotros, pero evidentemente se encuentran con obstáculos que les impiden desarrollar su trabajo en condiciones y es normal que lleguen a molestarse, primero porque no lo puedan hacer y segundo porque a veces no tienen por parte de los responsables técnicos de la aplicación el tiempo de respuesta que esperan.

¿Dónde está la injusticia para el personal responsable del mantenimiento de la aplicación? Pues porque pese a que se esté poniendo todo el empeño posible por corregir cuanto antes los problemas, a veces se tarda más de lo que a uno le gustaría, sobre todo para evitar los mismos problemas que dieron lugar a que la aplicación o ese parche importante se pusiera en producción en ese estado. Es decir, se anda con mucho más cuidado en el desarrollo y en la revisión de la aplicación, ya que es mejor tardar un poco más (salvo que el sistema en su estado actual no se pueda utilizar) y asegurarnos que todo va a funcionar mejor, a saltar sin red y correr el riesgo de poner en producción una versión peor que la actual o que siga sin cumplir las expectativas demandadas, lo que daría lugar a una vuelta atrás, más molestias para los usuarios y todavía más tiempo para poder darles lo que ellos quieren.

Este tiempo que se tarda de más es en muchas ocasiones (sobre todo si no se conoce al equipo que está trabajando en ello) interpretado como que no se les está echando cuenta en sus demandas o que simplemente, siendo suave, nos estamos rascando el ombligo.

Conforme vaya incrementando la interacción entre los usuarios del sistema y el equipo de mantenimiento y van viendo como la aplicación va mejorando (aunque sea lentamente), va creciendo la confianza de estos (también se puede dar la situación contraria, que llegado un punto, puede ser bastante complicada de revertir).

Independientemente de que las relaciones entre usuarios y equipos de desarrollo dependen de muchos factores para que terminen de ser buenas en un proyecto concreto, estoy convencido de que todo sería bastante más fácil si las distintas partes llegasen a conocerse mejor y se estableciera una comunicación con la mayor fluidez posible.

Hace unos días tuve la oportunidad de ver el documental “Océanos de plástico” y me resultó tremendo. Si tenéis la oportunidad, os recomiendo que lo veáis porque por mucho que nos imaginemos el daño que le estamos haciendo al medio ambiente por nuestros hábitos de consumo y forma de vida no alcanzará el nivel que nos muestra este documental. Como el nombre del mismo indica, muestra una serie de ejemplos de los efectos que provocan los residuos del plástico y derivados en nuestros ríos, mares y océanos.

No soy un activista contra el cambio climático, ni tampoco soy un activista medioambiental, respeto a este grupo como aquellos que piensan lo contrario siempre y cuando tanto unos como otros se basen en el debate, en el diálogo y en la obtención de conclusiones constructivas. Por tanto en todo esto tengo una visión bastante neutral de partida y después trato de crearme mi opinión sobre lo que leo, veo y escucho.

El plástico se ha convertido en un elemento fundamental en nuestra vida diaria queramos o no, miremos donde miremos nos encontraremos con objetos hechos de plástico o que entre sus componentes lo tienen, por ese motivo terminar de la noche a la mañana con él, sin otra opción que lo sustituya y de coste similar, lo veo prácticamente imposible. Esto no quiere decir que la cosa no pueda mejorar, sí que se puede, pero pasa principalmente por lo siguiente:

– Incrementar la conciencia social del problema: En mi opinión es lo primero que tiene que cambiar, mientras sigamos sin ver que existe el problema difícilmente podremos darle solución. Una vez concienciados cuidaríamos mucho de separar los componentes plásticos para el reciclaje y tendríamos mucho más cuidado en tirar residuos plásticos a nuestras aguas.

– Incrementar la conciencia política del problema: Se tienen que impulsar políticas que propicien y potencien el reciclaje de estos productos, la limpieza de este tipo de residuos en las aguas, así como que se favorezcan los proyectos de investigación y desarrollo que permitan mejorar los procesos de reciclaje y búsqueda de alternativas a los componentes plásticos en los diferentes productos que lo utilizan.

Esta es mi opinión sobre este asunto, personalmente intentaré mejorar algunos hábitos, sé que una sola persona no puede cambiar nada, pero también sé que ya hay muchas personas concienciadas sobre esto, seré un grano de arena más, pero creo que mejor eso que nada.