Escolar Documentos
Profissional Documentos
Cultura Documentos
A continuacin encontrar una narracin de experiencias relacionadas con el proceso de desarrollo de software y recomendaciones para su identificacin en situaciones de la vida real. No es una explicacin de lenguajes de programacin, ni de artefactos o metodologas de software, es simplemente una exploracin de las situaciones desde el punto de vista de quin por muchos aos, en mi caso 18 aos, ha dedicado su vida a mejorar los procesos de negocios de empresas mediante la produccin de software.
Lima Per
07/04/2013
Introduccin
Este documento se estructura bajo la motivacin de que el software no es solo ingeniera y que hay muchos inconvenientes y temas que no los aborda ninguna metodologa de software a los cuales se debe prestar atencin antes y durante la ejecucin de un proyecto. No reclama de las metodologas formales de proyectos, pero si deja claro hasta donde es bueno seguir esquemas rigurosos de proyectos y hasta donde es bueno tener una percepcin del proyecto directa, no solamente cifras o roles de personas.
Contenido
Incertidumbres y Riesgos .................................................................................................................... 4 Egos en conflicto ............................................................................................................................. 4 Requerimiento difuso...................................................................................................................... 5 Herramienta desconocida ............................................................................................................... 6 Proceso de negocio inmaduro......................................................................................................... 7 Falta de compromiso del usuario .................................................................................................... 8 Ausencia de mtricas de las actividades ......................................................................................... 9 Estilo de desarrollo no orientado a objetivos ............................................................................... 11 Desconocida capacidad de los recursos participantes .................................................................. 12 Dificultad para justificar o precisar el costo del proyecto ............................................................ 13 Primeros, segundos o terceros interesados en que el proyecto no salga.. .................................. 15 Sobre el Desarrollo de software........................................................................................................ 17 Traslape tecnolgico.. ................................................................................................................... 17 Esquematizar Alcance y Actividades ............................................................................................. 18
Incertidumbres y Riesgos
Egos en conflicto
Tpicamente un proyecto de software nace como una necesidad de un rea o empresa.. Ya sea que la desarrolle internamente un equipo o que se contrate a un tercero. Lo primero que encontrar en la primer escarbada del tema ser a un grupo de colaboradores (o a un solo individuo, en el peor de los casos) orgullosos de sus procesos manuales, de sus fallidos o semiexitosos intentos de automatizacin - nunca bien reconocidos, ni premiados por el pblico-. Probablemente ese ser el escenario ms normal, quien est orgulloso de sus esfuerzos anteriores lo inundar con detalles, algunos hasta irrelevantes de los escenarios, incluir en muchas ocasiones referencias a los documentos, correos, y otras gestiones de su autora. En esos casos la mejor postura es no desestimar el esfuerzo anterior pero siempre concentrarse en el verdadero objetivo, ya sea de la empresa o del rea donde se vaya a desarrollar el proyecto. Se debe tener siempre en mente que todo lo anterior por algo ya no se va a usar, y es peligroso apuntalar un nuevo proyecto con bases que ya fueron desgastadas por otros procesos de desarrollo previos.. Abstraer el concepto, pero no el procedimiento, ms si se incluye herramientas de legado o procedimientos con nombres y apellidos (as lo haca yo cuando no tena computadora, si quiere le traigo a la persona que lleva 10 aos haciendo lo mismo, haba un proceso automtico documentado pero mejor le explico como lo terminamos haciendo nosotros cuando se fue el otro jefe..) ah escudrie con cuidado, la sensibilidad ms grande de las personas est en el reconocimiento y/pero, su mayor miedo.. He mencionado actitudes positivas, disposicin, necesidad de reconocimiento, pero existen y vaya que existen muchos ms escenarios, donde el dueo del conocimiento para el proyecto, no es quien lo patrocina, ni ninguno de sus sbditos, sino ms bien el ms acrrimo rival del jefe, aquel que nunca fue tomado en cuenta y que conoce todo, el orculo del proceso. Y que por esa falta de remuneracin, buena relacin laboral, peligro de despido, obsolescencia tcnica o inmadurez profesional, va a convertir la extraccin de la informacin y la abstraccin del proceso en un reto interminable. Ahora bien cuando logre estar de frente a la fuente de la informacin y est tratando de esquematizar el proyecto con una base ms consciente, encontrar entre sus pares y superiores a aquellos que lancen las tpicas preguntas capciosas: cuanto va a durar en eso??, que herramienta va a usar??, usted cree que ya sabe lo suficiente para comenzar el proyecto??, se anima usted solo, ocupa ayuda??. Yo ya lo intent y no pude??.. Adems de las tpicas serruchadas de piso, de quien prob hacer ese proyecto y no lo pudo dimensionar y ante la nueva oportunidad descargar toda su ofensiva destructiva de envidia y tratar a toda costa de ocultar el xito del nuevo proyecto. Ante todo eso, debe no slo perseverar, sino dar pasos cortos, pero decididos que manden un mensaje a los dems de que se tiene una intencin sana y clara de lo que se quiere hacer. Ahora que si entre todos esos egos no descubre una visin compartida con un colaborador y/o contraparte que pueda ser el patrocinador..NO LO INTENTE!!
..el proyecto no tiene cabeza, y usted por complacer a todos puede terminar siendo cocinado en la hoguera de las brujas..
Requerimiento difuso
Cuando va a trabajar un proyecto de software tpicamente tendr que priorizar sus actividades, como en cualquier proyecto en general. Y siempre se encontrar un conjunto de requerimientos medibles, acotados, con abundante documentacin, proceso de negocio maduro, usuarios comprometidos y otras condiciones ideales. Esos requerimientos definidos, trate de ubicarlos de primeros en su proceso de desarrollo. Convenza y cuide de que la prioridad de los requerimientos no vaya en funcin de los intereses del usuario (Cmo??, as debiera ser, pero tal vez no, puede que ese inters del usuario vaya en contra de la percepcin y resultados de su proyecto). Si lo que ms le interesa al usuario es lo que est menos claro, an no se ha madurado como proceso de negocio o implica un esfuerzo de anlisis mayor, NO DESGASTE al equipo de desarrollo nadando en tempestad, primero vaya por aguas mansas y cuando vea que el tiempo amaina trate de cruzar el ocano.. Tpicamente los proyectos o desarrolladores quemados, se enfrescaron en los requerimientos inciertos, donde: Haba cambios de parecer Continuas iteraciones con percepcin de no avance. Especificaciones desactualizadas o ambiguas. Documentos sin firma de responsable Reuniones donde se dijo que el problema era muy grande, pero en la minuta no se encuentra ningn acuerdo Minutas que regresan sin firmas de los participantes Minutas que regresan con tantas observaciones que pareciera que no hubo reunin. Usuarios que dicen que no entienden un documento tcnico o son renuentes a firmarlo Usuarios que no leen los documentos e insisten en la tradicin oral para especificar todo su proceder Tomadores de decisiones que se ausentan de las reuniones importantes o mandan a un chivo expiatorio para que no figure su firma en los acuerdos Personal que se nota excesivamente nervioso o distrado, con continuas llamadas telefnicas o intervenciones de subalternos o secretarias que interrumpen las reuniones Excesiva rotacin en los puestos operativos o mandos medios donde se va a implementar la solucin. Todas esas caractersticas producen un requerimiento difuso, ambiguo o demasiado voltil. Una vez detectadas algunas de esas caractersticas, no es muy decoroso salir corriendo, pero si est en sus manos la toma de decisiones, patee lo ms adelante posible esos requerimientos hasta que tenga alguna certeza de que va a poder generar una percepcin de solucin.
Recuerde siem pre que el softw are si es tangible com o bits, pero un
requerim iento solo es al fin y al cabo una acotacin ex itosa de una intencin, pero que para ojos del usuario estar finalizado, solam ente si se gener una percepcin real y positiva de la solucin.
Herramienta desconocida
Pasa que se tiene un proyecto, se tiene desarrolladores, pero no se tiene la herramienta. Y puede que la herramienta ideal para el proyecto sea desconocida para el equipo de desarrollo. O puede suceder lo contrario el equipo de desarrollo est entusiasmado con una nueva herramienta que ampla su mercado laboral y es innovadora, pero que no tiene ninguna relacin con el proyecto a desarrollar. Peor an si alguien recin llegado o que quiere ser protagonista lanza la habitual pregunta y.. cuanto cree usted que van a durar con esa herramienta??...y ese silencio..solamente se escuchan los grillos en el jardn.. Pues resulta que no, no hay que dar fechas..primero revise si tiene un framework (herramienta ms un conjunto de clases o procedimientos base que le permite superar la curva inicial de desarrollo). Es una herramienta con licencia??, sabe usted cuando se vence. Va a desarrollar para un producto que de por si tiene licencia, es un producto con fuentes abiertas o gratuitas. Revise el contrato de adquisicin puede que est enfrascndose en un proyecto que no se puede hacer porque no puede tocar los fuentes de su herramienta o aplicativo soado. Cuenta con una versin estable de la herramienta o los aplicativos, si no es as, no se atreva a dar una fecha...se va a quemar tratando de estabilizar el producto y la percepcin de los usuarios nunca va a estar alineada con los resultados a corto plazo que usted pueda dar. Si la herramienta es muy vieja, est listo, sus desarrolladores no van a sentir la misma motivacin para trabajar y puede que el proyecto se alargue simplemente por no tener una herramienta "fashion".
Cudese de los falsos conocedores, son fciles de detectar, encubren todos sus desconocim ientos, no necesita m s de 1 hora trabajando fuentes con ellos para darse cuenta de que conocen, pero cuidan m s su prestigio que su creatividad y al final, dan de cuenta gotas de lo poco que saben y hacen del proyecto una guerra para ahuyentar a los que si quieren aprender e investigar .
Adems por lo general estn cargados de certificaciones y desmeritan a todo el que se aparezca sabiendo y que no haya pagado lo mismo que ellos por los cursos. Si ya consigui un equipo de desarrolladores comprometidos, entonces dese oportunidad de hacer un piloto, no los tire a la guerra. De unos primeros pasos con ellos y mida (saque sus propias mtricas de como desarrollan), con base en eso puede despus animarse a ir avanzando secciones de un proyecto, pero no extrapole demasiado, recuerde que la gente no es constante y que de la naturaleza del problema puede venir el mayor atraso en un desarrollo.
Com o antdoto a estas m ltiples circunstancias y si logra ubicar al verdadero prom otor de la idea, prstele sus m ejores conocim ientos, particpelo de sus hallazgos, dele todo el m erito, aunque sea com partido. M anifistele con franqueza su inters por sacar adelante el proyecto y si logra una com unicacin a buen nivel de confianza, trate de averiguar qu elem entos bloquean o estn divorciados con la iniciativa de su proyecto y lo m s im portante com o podra ganarse una m ejor aprobacin de la idea, siem pre que sea m ediante m edios ticos y transparentes.
abstraccin, depurar una pulga brava, que se esconde en un aplicativo, o cuanto tardar una reunin de lluvia de ideas para dar alternativas de solucin. Ah tendr que poner lmites de tiempo razonables, sobre una media de resultados anteriores, hasta que se oculte el sol, hasta que vuelva a salir el sol..o hasta que el oficial de seguridad de su cliente pase a cerrar las oficinas... Tambin tenga cuidado de no extralimitarse, si usted trata de correr al pensar..puede que deje temas inconclusos en el camino y eso para un proyecto o requerimiento puede ser difcil de retomar. Inclusive si calcula una proporcin de 8 horas para definir el requerimiento a nivel de anlisis y 40 para desarrollarlo, puede que esa ponderacin para algunos requerimientos sea demasiado corta para el anlisis y deje como resultado tareas pendientes que tendr que asumir en la etapa de desarrollo (esa ponderacin 8/40 tiende ms a estar apegada a metodologas de desarrollo en cascada pero la incluyo como referencia nicamente).
Si lo que usted tiene com o horizonte es term inar un requerim iento para luego retom arlo com o soporte..adelante!!..aventrese a dar tiem pos rgidos para abstraer los problem as, ah solam ente debe cuidarse de acotar bastante la solucin, ya que los cabos sueltos los podr disim ular y dejar pendientes para la siguiente etapa.
Si ha detectado alguna de estas condiciones trate de delim itar bastante el proyecto y no incluya dentro del desarrollo de su proyecto aquellos tem as que podran distraer al equipo o al usuario. Y si detecta que el tem a est m s para pasarlo a soporte que para desarrollo, m ejor no invierta m ucho recurso en esa iniciativa.
Com o cualquiera de estas caractersticas se puede presentar en su equipo de trabajo, an siendo colaborador y no jefe del proyecto, lance la alerta desde el principio, no se m ande a hacer todo el proyecto, sin tener una base del desem peo .
Debe tener una referencia de al menos un mes de ver cmo trabajan los colaboradores, sino su proyecto se va a alargar ms de lo esperado y puede que algunos recursos se vayan a quemar rpidamente porque se les asign demasiada carga o asumieron la responsabilidad ajena por tener ms compromiso o tica.
El usuario manifiesta sus expectativas una y otra vez, pero nunca las pone por escrito o peor an, las cambia constantemente para complacer a cada interesado. Entonces las actividades del proyecto no quedan bien definidas y el costo se puede disparar una vez que se inicien las primeras iteraciones y se revise nuevamente el alcance.
P ara todo esto la m ejor recom endacin es no vender proyectos dem asiado am biciosos o com prarle iniciativas difusas a los clientes, ya que la posibilidad de variaciones en el alcance aum enta y por lo tanto el riesgo de incurrir en gastos incalculables .
Hasta los conserjes o los vigilantes, si los dems empleados los convencen y manipulan dicindoles que el nuevo sistema les va a quitar privilegios o les va afectar sus ingresos.
A veces las lim itaciones tcnicas que se im ponen a un sistem a, no son tales, son barreras de las m ism as personas que ven afectado su status quo, por no decir su bolsillo o vicios cuando se cam bia de sistem a.
En ese caso, no queda ms que tomar una posicin, si es posible, ser neutral, siendo externo esa posicin queda muy elegante. Compasin de quien se haga el perjudicado, pero sin hacerle caso del todo porque puede ser manipulacin y dejar siempre en claro que quien est haciendo el cambio es la misma empresa, no usted, no se compre enemigos por puro gusto. Siempre resalte quien es el verdadero patrocinador y controlador del proyecto y cules son los objetivos que le han propuesto llevar a cabo.
Esto no es ex trao en softw are, surge por la necesidad de m antener el softw are actual, pero adem s con la tendencia natural a evolucionar.
En las empresas donde se tiene claro el avance de la tecnologa y se tiene un plan de mejora, muchas veces se encontrar con varios sistemas en soporte o mantenimiento que necesitan seguir resolvindose dentro de sus propios requerimientos funcionales y a su lado, encontrar nuevas propuestas, algunas que quizs ni siquiera lograrn llegar a reemplazar al software actual, pero que por necesidad de mercado, visin o por antojo de alguno de los desarrolladores, se justifica invertir recursos en alguna nueva tecnologa. En las empresas de software donde se manejan "releases", versiones y se trata de mantener la misma solucin en distintas plataformas o IDEs, es ms usual encontrarse con el mismo aplicativo, pero con algunas adaptaciones tcnicas, y no tanto funcionales de acuerdo a la plataforma o framework sobre el cual se haya rediseado. La posicin en un traslape es ventajosa cuando se tiene el panorama completo de ambas o de todas las soluciones. Aunque parezca que se inventa el agua tibia, hay muchos factores de costos, de expiracin de licencias, de falta de conocimiento de los productos anteriores o incluso de nuevas adquisiciones de hardware o software que implican una duplicidad temporal en las aplicaciones.
P ero cuidado, la parte difcil es cuando se em pieza a hablar del trm ino m igracin , o de
descontinuar productos u otras. En ese momento se activa una alarma para todos los que estn en los productos traslapados, ya que habr fuerzas en conflicto, unos por retardar el cam bio lo
m s que se pueda para no perder la estabilidad o control del softw are anterior y otros pujantes por dem ostrar que la nueva o las nuevas soluciones dan un resultado m s adecuado, eficiente, m oderno o sim plem ente estable, con respecto al anterior sistem a o softw are .
Incluso esa disyuntiva va a abarcar a los propios usuarios. Ms de un patrocinador quitar las manos del fuego justo antes de echar a andar una nueva solucin cuando detecte diferencias en detalles del control, personal, modificaciones a bajo nivel, reportes personalizados u otras facilidades que le brindaban anteriormente y que con el nuevo sistema aun no est tan convencido.
En cada iteracin entere al equipo del objetivo y a los usuarios del entregable. Ex plique a su equipo porque no va a hacer todo el proyecto de una vez y porque algunos tem as prefiere postergarlos.
Es importante que todos los miembros en su equipo expresen las mismas opiniones o tengan claros los mismos objetivos a la hora de comunicar a terceros. Los hroes que se lanzan en pos de sus propias campaas, muchas veces se desgastan ms de la cuenta y en ciertas ocasiones crean una expectativa ms alta de lo que se puede resolver en una iteracin corta.
Ex plique a su equipo adem s el concepto de que "todo puede cam biar" y que eso no es pecado.
Aunque en algunas ocasiones se encontrar seguidores crdulos que le siguen incondicionalmente, ser en el menor de los casos, por naturaleza las personas esperan analizar los titubeos y ven muchas veces en los cambios de rumbo, la duda en la preparacin de quin los dirige o aporta en un proyecto.
Aclare m uy bien que en softw are nadie tiene la culpa de los cam bios de decisin, debe ser una responsabilidad com partida y no unilateral.
Excepto que el usuario o un miembro diga: "esto se hace as, porque me da la gana". Todo cambio es justificable, siempre y cuando la decisin o requerimiento que se cambia, en un principio haya
sido acordado entre varios o haya llegado crudo de otra etapa y se tenga pleno convencimiento de que debe ser evolucionado. Y sobretodo no olvide de docum entar las ex pectativas y los cam bios , no para incriminar a las personas, sino para que al cierre del proyecto se refleje la sana evolucin de las ideas y bueno, para que se justifique de m anera transparente el costo a nivel de presupuesto de proyecto . Aunque existen artefactos (estndares de documentacin) muy buenos para expresar el alcance y las actividades del proyecto. Es muy valioso el aporte que pueda dar el equipo preparando presentaciones y haciendo esquemas libres en pizarra.
Con slo atreverse a dibujar el "big picture" o panoram a general , se tiene una idea del
"bosque", y a partir de ah se puede decidir que rboles podar primero. Y cuales reas son ms inaccesibles o definitivamente intocables en un principio. Sintase en confianza en un principio de hacer consultas sobre requerimientos no funcionales, ya que si deja en duda esos temas, puede que la solucin ms impactante del proyecto sea inviable tcnicamente y eso solo lo puede averiguar si a la par de sus deseos de hacer pantallas, pginas o cdigo hiper-poderoso, se dedic un rato a ver de qu manera iban a almacenarse o fluir los datos en el entorno del proyecto y con qu infraestructura mnima se podra soportar.