Los foros de la comunidad.
No estás identificado.
Hola, aunque el titulo de mi comentario no resuelve ninguna idem, espero que como yo exista mucha gente, si no juro que dejo esta profesión.
Ante todo comentar que me fascina el foro, me parece super correcto y muy profesional, razones estas por las que me he motivado a lanzarme a la piscina.
Os cuento, soy miembro de un grupo de desarrolladores, 4 concretamente, de los cuales, yo, fijate tu por donde se supone que soy el analista, etc, etc, mi empresa no es una empresa muy grande, pero bueno nuestros clientes ya tenemos y trabajo casi para regalar. Hasta ahi todo aparentemente normal, lo anormal o eso creo yo es nuestra organización. Directamente no existe. En este tiempo de crecimiento de la empresa hemos pasado por varios estados:
1º Hasta hace 4 dias como quien dice cada vez que salia un proyecto, el departamento comercial enseñaba una aplicación ya desarrollada, el futuro cliente la veia y vale, mas o menos es lo que quiero, luego el analista, ese soy yo, iba para alla tomaba cuatro notas y a empezar. Problemas, todos, la aplicación no se acababa nunca, ya pero ahora lo quiero asi, y ahora asi, ¿ pero no era lo que te enseñamos mas 4 ajustes ?, pues parece que no.
2º Esto no puede seguir asi, hay que hacer analisis de los proyectos, vale, correcto, pero ¿como se hace un analisis?, mas o menos se detalla en profundidad lo que quiere el cliente, he dicho mas o menos, no nos podemos tirar 6 meses haciendo un analisis, hay mucho trabajo y yo soy analista, si pero tambien programador, si hago analisis no programo. ¿Casos de uso? comor???, La cosa ha mejorado, pero aun se cuelan, que si hazme esto asi, y el analisis?, ya hombre pero cuando hacemos el analisis no me voy a acordar de todo. Bien correcto, pero esto va a parte, lo haremos mas tarde y se cobrara a parte. No jodas, pero yo creia que...., etc, etc, etc..
3º La cosa mejora un poco, todo se analiza mas o menos, cosas nuevas y nuevas funcionalidades en aplicaciones ya instaladas, pero y los desarrolladores?, cuanto tardan?, que hacen?, eso se tendria que haber terminado para antesdeayer y aun no se ha empezado?, en esa fase estamos, buscamos herramientas.
-> Control de versiones: Usamos un programita desarrollado por nosotros mismos que nos copia cada dia lo que hacemos a un ordenador central, con una carpeta por dia. Estamos, estoy mejor dicho, provando subversion, por comentarios de esta web, haber que tal.
-> Bugs, los postit, a nuestros buenos amigos, de ellos pasamos a un control interno a traves de un programa nuestro tambien, en donde anotamos el cliente, la aplicación y que le pasa.
-> Control de proyectos, tareas, estado de las mismas, tiempos, partes de trabajo, etc, etc, nada de nada, varios intentos de hacer algo por nuestra cuenta, pero si no tenemos tiempo para hacer lo de los clientes como para hacer lo nuestro, estoy intentando provar cosas como Sourceforge enterprise o buildix, o algo, pero la verdad siempre me cogean de algun lado.
-> Metodologia de programacion, creo que en estado inconsciente debo de ser un crack en estos temas, pero en estado consciente aun no he podido asimilar o adaptar a mi entorno nada de lo que llevo leido, mirado, escuchado, visto, en estos 12 meses?, que si formales, agiles, scrum, cmmi, xp, rup, ahhhhhhh no entiendo nada.
Se que lo escrito es un peñazo, pero es que llevo tanto tiempo dando vueltas al tema, que quisiera exponerlo y que alguien me contara sus desdichas, y si ha podido salir de ellas, estoy frustrado, cuando mi gerente me pregunta, como vamos, que tenemos pendiente, comienzo a temblar, si esto y lo otro, ah si y aquello te acuerdas de tal, y lo de menganito?, a si tambien, y cuento queda?, ehhhhhhh bueno no mucho.
Socorro que alguien me arroje un bote salvavidas.
Gracias.
Desconectado
Bienvenido al Mundo Real (TM).
A los electricistas les jode que los llamen para cambiar un enchufe y terminen estando dos dÃas arreglando cosas.
A los fontaneros que los llamen para solucionar un "ligero escape" que requiere cambiar media instalación de tubos.
A los constructores que llege el pavo de turno y le diga que las puertas esas no le gustan.
A los mecánicos de coches que te lo traigo hoy pero me lo llevo reparado ayer.
A los médicos tener que dedicar 1 minuto cuando lo deseable serÃan 30.
A los astronautas cagar dentro del traje con un tubo metido en el culo.
A los ricos el aburrirse sin tener que hacer nada.
A los tontos porque son tontos y no se enteran de nada.
A los listos porque son listos y se enteran de todo.
Es la vida real tÃo, eso que te pasa no es nada comparado con lo que les pasa a otros.
Desconectado
Rfog, con ese bote salvavidas le has dado en la cabeza, pero casi se la partes ![]()
giskard, no has hablado del jefe de proyecto ¿existe esa figura en tu empresa? A veces sirven para organizar las cosas ![]()
Desconectado
Pues si te sirve de consuelo hay muchos en la misma situación, incluso en situaciones mucho peores. En todo grupo de trabajo tiene que haber algo como "el jefe de proyecto" que dice joserra, que no tiene que ser el tio que se toma los cafes con los clientes sino el encargado de gestionar todo lo referente al estado del proyecto, y lo tiene que hacer desde el punto de vista de gestión de proyectos y desde el punto de vista TECNICO, que es lo que se suele olvidar, yo creo firmemente que alguien sin profundos conocimientos tecnicos no puede dirigir proyectos de desarrollo de software. Quizas en grupos de desarrollo muy grandes pueda haber dos figuras, un jefe de proyecto más enfocado a la gestión y otro enfocado a la parte tecnica, pero en proyectos pequeños con uno sólo basta y tiene que saber hacer las dos cosas.
Nosotros seguimos fallando en muchos puntos, pero creo que algo hemos aprendido, algunos consejillos por si te sirven:
- JAMAS y digo JAMAS, desarrolleis herramientas propias para gestionar los proyectos. Usar herramientas existentes que hay muchas y algunas gratuitas, si teneis tiempo libre dedicaros a investigar tecnologÃas que puedan aportar valor a los programas que haceis para vender a vuestros clientes, pero no inviertais tiempo y esfuerzo en crear herramientas que ya existen y seguro que serán mejores que lo que vosotros podais hacer (no es porque no seais buenos, es por pura lógica, no podeis competir echandole cuatro ratos con herramientas que tienen en muchos casos años de desarrollo y por expertos en la materia). Si no encontrais nada gratuito buscar opciones comerciales, es un dinero bien invertido.
- Usar un control de versiones es simplemente obligatorio en cualquier proyecto, empezar a usar SVN (u otro, eso a gusto del consumidor) YA MISMO. Y no lo useis a lo loco, definir un protocolos de cuando subir el código, como poner los comentarios, cuando hacer un tag, cuando hacer un branch, etc,etc. La herramienta por si sóla no soluciona los problemas si no se usa de forma coherente.
- Usar un bugtracking y tirar a la basura la herramienta que habeis hecho, sonara radical pero con el tiempo os ahorrara dolores de cabeza. A mi despues de probar varios me gusta especialmente JIRA, es de pago si, pero tampoco es muy caro y merece la pena.
- También podeis usar JIRA como herramienta sencilla de gestión de proyectos (para gestionar un grupo de cuartro deberÃa ser más que suficiente). y de nuevo establecer un protocolo, todo el mundo tiene que rellenar al dÃa un comentario con lo que esta haciendo sobre el "ticket" del módulo en el que este trabajando y hay que registrar el tanto por ciento de progreso (podeis empezar con protocolos sencillos y según le cojais el aire irlos mejorando para tener más control).
- Sobre los requisitos, este tema es de lo más delicado y depende mucho del tipo de proyecto y el tipo de cliente que tengais. A mi lo que mejor me funciona para especificar requisitos son definiciones textuales y muchas, muchas capturas de pantalla con prototipos de la aplicación. Los clientes que por lo general no entienden nada de informatica necesitan tener una referencia visual de los requisitos que puedan entender, y para esto los casos de uso NO SIRVEN.
- definir normas de estilo para programar, normas que no se limiten a cuestiones sintacticas sino que queden claras determinadas cosas como:
- tamaño maximo de los métodos y clases (por ejemplo en java 30 y 1000 lineas respectivamente es lo que yo uso)
- tratamiento de excepciones (aqui hay muchas opiniones, pero es crucial que el tratamiento de excepciones siga unas normas coherentes en toda la aplicación)
- que todo el mundo se lea el Code Complete
utilizar una herramienta que os garantize que vuestro código cumple las normas de estilo y "cante"cuando alguien no las cumpla, por ejemplo en java teneis checkstyle o pmd ambas más que recomendables.
- Compilación de vuestros productos sin usar el boton del IDE. si usais java con ANT, .net con NANT, c++ con make. Vuestros proyectos se tienen que poder bajar del sistema de control de versiones y generar todos los ejecutables, instaladores etc,etc con un sólo comando. Si podeis también es util un sistema de integración continua (tipo cruise control), si no al menos que la integración sea "frecuente", vamos compilar el producto completo una vez al dÃa minimo y pasar los test.
- Hacer test unitarios, y hacerlos bien, es decir probando los métodos de forma aislada usando objetos mock si es necesario (esto requiere investigación y experiencia que es bastante más complejo de lo que parece, pero merece la pena con creces).
Yo hace dos o tres años (llevo 6 en este mundillo) ni sabia que eran la mitad de estas cosas, pero precisamente el estar en un entorno de trabajo desorganizado me hizo replantearme las cosas y buscar herramientas y tecnicas para mejorar nuestra forma de trabajo, en mi caso particular al menos todo lo que te comento nos ha sido de gran utilidad, ahora veo como haciamos las cosas hace dos o tres años y se me ponen los pelos de punta...
Desconectado
Hola,
Uf! ¿Complicado verdad?. No de desanimes. Es difÃcil y lento, pero a la larga conseguir un equipo o departamento de programación que funcione relativamente bien es muy gratificante, aunque por mi experiencia, repito que es difÃcil y para corredores de fondo.
Comparto los consejos técnicos de rastafari, y a nivel de organización, casi más que consejos se me ocurren preguntas, porque cada empresa es cada empresa y no hay "recetas".
Por eso no sé si más que ayuda te puedo dar solo ánimo, aunque leer entre lÃneas las preguntas puede dar alguna orientación:
¿Mantenéis alineación y sintonÃa entre dirección, ventas y vosotros?
¿CompartÃs información para una estrategia global de aprovechar los eslabones fuertes, orientando las ventas hacia lo que os interesa, re-aprovechando trabajo?.
¿Hay más equipos de programadores que el tuyo?
¿Trabajáis con proyectos más bien pequeños de una persona, dos máximo y no más de uno o dos meses?
¿El nivel técnico de la gente?
Mi consejo (que no se nada de tu empresa, asà que cógelo con pinzas), es que avances creando una base de organización despacio, pero sin dejar de avanzar. No entres en "parálisis por análisis", no te detengas por desesperación.
No hay herramientas que organicen, y si sois 4, sé pragmático.
Si la cultura de la empresa es buena, ten a los mejores, y dales el ambiente más enriquecedor.
Por los tipos de clientes y programas que hacéis, es más bien estable y "conocible" lo que quieren, o casi ni ellos lo tienen claro?
¿Se puede orientar como servicio de desarrollo en el que paga cada periodo y cada periodo se le entrega lo que va encargando?
En fin, perdona.
No se si te aclaro o no.
En cualquier caso, mantén la confianza en tà mismo y el convencimiento de que vas a ir avanzando de forma constante.
Un saludo.
Desconectado
Gracias a los tres por vuestras contestaciones, rfog realmente me dio con el salvavidas en la cabeza y me fui hundiendo..... pero también me sirvió para ver que en el fondo habÃa muchos como yo, algo muy importante, por lo menos para mi salud mental.
En cuanto a lo del jefe de proyecto, pues si que lo hay, y ¿a que no sabéis quien es?, pues yo mismamente. Cual es el problema, que también soy uno de los desarrolladores y el tiempo es limitado, y veo que para tener un control férreo sobre los proyectos, que so se vayan de las manos, etc.. se necesita tiempo. En la empresa se planteo la posibilidad de contratar a una persona exclusivamente para este puesto, ser el analista de los proyectos y el jefe de los mismos, pero mi postura fue radical y tajante, no lo creÃa oportuno, ya que creo que esa figura debe de ser como bien dice rastafari, muy conocedora de muchas cosas, tanto a nivel de gestión, como se hace algo, a nivel de conocimientos de gestión, que es caso del 90% de los clientes o aplicaciones que desarrollamos, como tener un nivel alto de conocimientos de programación, ya que puede ser que lo que te piden sea directamente imposible de desarrollar, y a nivel comercial y de decisión, ya que debe de ser capaz de decidir de forma rápida si una especificación o un cambio de un cliente se hace o no.
Rastafari, tiene toda la razón en lo que dice, realmente estoy dando pasos para que todo se haga de una manera mas formal, con respecto al código es algo que ya hacemos, ya que tenemos un “libroâ€? de estilo, sobre el nombre de las variables, la tabulación o espaciado del código, nombre de procedimientos, etc… para que si cojo el código de un compañero no tenga que pasarme 3 horas para ver y saber lo que querÃa hacer.
A partir de aquà quisiera abrir un hilo de conversación diferente que creare en otro post, pero lo anticipo. Tengo otro problema, y en un blog vi el cielo al ver que hablaban de ello, y es como decir que no a los clientes. ( http://www.kilex.org/blog/2006/02/18/qu … -decir-no/ ) Tengo ese problema y me doy cuenta de que tras hacer análisis, hablar, requetehablar y volver a hablar una vez echa una parte de la aplicación, montarla y decirte el cliente: “Ya pero y esto como lo hacemos ahora, porque claro, si esto no podemos hacer tal cosa, etc…..â€?, ¡¡¡ PERO QUE ME ESTAS CONTANDO !!!, la primera vez que oigo algo parecido pero si eso no lo hace y mira las especificaciones, mira tal, mira esto otro, y contestar el muy jodio, “pues entonces no me vale nadaâ€?, Ahhhhh, que hacer en ese caso?????
Por si no lo he dicho muchas gracias por los comentarios, me han servido de mucho.
Desconectado
"¿Se puede orientar como servicio de desarrollo en el que paga cada periodo y cada periodo se le entrega lo que va encargando?"
Esta pregunta que ha hecho jpalacio me parece el kid de la cuestión, el problema por lo que parece es que estas en proyectos donde el cliente no tiene claro lo que quiere pero se firman unas especificaciones el primer dÃa, y luego viene la eterna batalla de la "interpretación", cada cual lee la especificación de requisitos como quiere y claro esta, barre para su casa, el cliente quiere más y tu quieres hacer menos. Esta situación, que por mi experiencia es la más habitual, puede hacer que cualquier proyecto se venga abajo al no estar cliente y empresa desarrolladora alineados en busca del mismo objetivo. Yo he estado en muchas reuniones donde habÃa verdaderos "magos de la palabra" que conseguian re-interpretar cualquier requisito de formas inimaginables
.
Para el tipo de proyectos que parece desarrollais un módelo de negocio basado no en un proyecto con especificaciones cerradas sino en una prestación de servicios parece lo más adecuado, en un módelo de este tipo los cambios que va proponiendo el cliente no son un problema sino todo lo contrario, cada cambio que el cliente propone se debe considerar como algo positivo ya que nuestro producto cada vez se acerca más satisfacer las verdaderas necesidades del cliente (que rara vez, por no decir nunca, quedan reflejadas en una especificación de requisitos inicial). Intentar vender productos cerrados con una especificación cuando se sabe de antemano que los requisitos van a terminar cambiando es meterse en problemas seguro. Lo malo de este tema es explicarle al cliente que esto del software no funciona como va cuando al ikea a comprarse una mesa, un tema complicado sin duda, porque esta claro que necesitas clientes, y si el cliente decide acudir a otro proveedor que le promete un proyecto con presupuesto cerrado pues es probable que lo prefiera, al menos hasta que se pegue unos cuantos batacazos.
Y claro, mucho me temo que cambiar este tipo de cosas no es algo que este en tu mano, lo más probable es que tengas que acomodarte a la politica de negocio que decidan otros, y si deciden llevar una politica más adecuada para vender mesas en ikea que para vender desarrollos de software... en este caso salvo armarte de paciencia poco más puedes hacer.
Desconectado
Giskard dijo:
En cuanto a lo del jefe de proyecto, pues si que lo hay, y ¿a que no sabéis quien es?, pues yo mismamente. Cual es el problema, que también soy uno de los desarrolladores y el tiempo es limitado, y veo que para tener un control férreo sobre los proyectos, que so se vayan de las manos, etc.. se necesita tiempo. En la empresa se planteo la posibilidad de contratar a una persona exclusivamente para este puesto,
Entonces a lo mejor la solución no es que se contrate a un jefe de proyecto, sino que tú asumas realmente esa función y lo que se contrate sea un programador para descargarte a tà de trabajo.
Giskard dijo:
Tengo ese problema y me doy cuenta de que tras hacer análisis, hablar, requetehablar y volver a hablar una vez echa una parte de la aplicación, montarla y decirte el cliente: “Ya pero y esto como lo hacemos ahora, porque claro, si esto no podemos hacer tal cosa, etc…..�?, ¡¡¡ PERO QUE ME ESTAS CONTANDO !!!, la primera vez que oigo algo parecido pero si eso no lo hace y mira las especificaciones, mira tal, mira esto otro, y contestar el muy jodio, “pues entonces no me vale nada�?, Ahhhhh, que hacer en ese caso?????
La solución a eso es el desarrollo iterativo.
Un saludo.
Desconectado
Hola Juanjo, gracias por tus comentarios, me he seguido los enlaces y me parece super correcto el enfoque sobre realizar los proyectos de forma iterativa, super correcto. Pero se me plantea una duda:
- Un potencial cliente quiere saber lo que le va a costar un desarrollo o una aplicacion estandar como ellos lo llaman, al realizarlo de forma iterativa, solo podre saber el coste del mismo de forma aproximada, ya que no se el tiempo real que me va a llevar desarrollarlo. ¿Como se puede solventar eso?
Realmente la respuesta yo ya me la se, y es que muchos proyectos se deberian de cobrar por administración, es decir, este mes tantas horas invertidas tanto te facturo. Por mi experiencia el 99,9 % de los cliente no están dispuestos a eso. Como siempre esto es la pescadilla que se muerde la cola, si yo no cobrara por trabajar el 100% de los desarrollos que hiciera mi empresa eran un puro exito, el problema es que tengo la mala costumbre de comer, y no puedo regalar mi tiempo a nadie.
Un Saludo.
Desconectado
El desarrollo iterativo se puede hacer igualmente independientemente de como factures al clente. En tu caso empiezas cerrando una serie de requisitos y pactando un precio, posteriormente en tu analisis lo que haces es dividir el desarrollo en iteraciones, genralmente colocando los requisitos con más riesgo primero, o bien aquellos requisitos que sean bloqueantes para otros desarrollos (si no hago el insertar en la bd no puedo empezar con el borrar). Lo que ocurre es que tampoco merece la pena planificar veinte iteraciones porque a la tercera como mucho tardar ya estará descuadrado todo el planning, mi consejo es que hagas una valoración global del tiempo que llevarÃa el proyecto y luego planees las 3 o 4 primeras iteraciones ya de forma más exahustiva, el resto ya se ira viendo, si cuando vas por la tercera todo sigue según el plan (que serÃa cosa rara) planteate ir planeando nuevas iteraciones, y si te han cambiado ya la mitad de los requisitos (lo normal) pues por lo menos no has perdido tantas horas planeando iteraciones a las que nunca llegaras. Hay que tener claro que tratar de cumplir un plazo firmado sobre unos requisitos que varian a cada paso es sencillamente imposible, como mucho puedes buscar la forma de desperdiciar el menor tiempo posible, pero el problema es el propio plantemiento de lo que se esta vendiendo, y eso no hay metodologÃa que lo arregle.
Una cosa importante es marcarse las etapas más cortas posibles (un par de semanas suele estar bien) y ir enseñandole al cliente el proyecto, de este modo ganas margen de reacción cuando te pidan cambios. Es fundamental que el cliente se implique en este proceso y le dedique tiempo a ir verificando el desarrollo. La realidad es que los clientes quieren firmar un presupuesto y olvidarse hasta el dÃa de la entrega final, cierto, pera la realidad también es que cuando esto pasa los proyectos por lo general son un desastre. Al final el tiempo inicial se dispara, el cliente esta descontento y la empresa desarrolladora a invertido mucho más tiempo del deseable en el desarrollo, y eso sin mencionar al pobre desarrollador que acaba quemado y preguntandose porque no se dedico a prepararse las oposiciones de controlador aereo, a la cria del champiñon o a cualquier otra actividad menos frustrante. ![]()
El módelo de vender productos cerrados cuando lo que en realidad se necesita es un proyecto que se vaya adaptando a las circunstancias del cliente es algo que espero que el tiempo y las malas experiencias de los clientes terminen por enterrar algún dÃa. Hay otros módelos mucho mejores, por ejemplo cobrar por el valor que tu producto aporta al cliente, te pongo un ejemplo, tenemos un proyecto con un banco para procesar una serie de expedientes (digitalizarlos, enviarlos a la central donde pasan por un worflow con varios revisores etc,etc), en este caso se cobro un precio por la instalación y puesta en marcha inicial y posteriormente se acordo un precio por expediente procesado, cuanto mejor sea nuestro producto más expedientes decidira el banco procesar con nuestro sistema y más dinero ganará mi empresa, en este caso cliente y proveedor están alineados en los objetivos, y esto es lo mejor que le puede pasar a un proyecto.
Otro ejemplo más muy tipico en las empresas que desarrollan OCR's, lo que hacen es cobrarte por documento procesado dandote unos niveles de fiabilidad, de modo que tu les compras un "paquete" de digamos un millon de documentos y cuando se te acaba les compras otro, y si el producto no cumple las expectativas pues te vas a otro proveedor. De este modo la empresa proveedora se preocupara por entregar el mejor producto posible, ya que en ello le va su exito o fracaso.
Desconectado
Giskard dijo:
- Un potencial cliente quiere saber lo que le va a costar un desarrollo o una aplicacion estandar como ellos lo llaman, al realizarlo de forma iterativa, solo podre saber el coste del mismo de forma aproximada, ya que no se el tiempo real que me va a llevar desarrollarlo. ¿Como se puede solventar eso?
Realmente la respuesta yo ya me la se, y es que muchos proyectos se deberian de cobrar por administración, es decir, este mes tantas horas invertidas tanto te facturo.
Efectivamente, y como te ha dicho Rastafari, el desarrollo iterativo no tiene que ver con cobrar las horas trabajadas este mes y seguimos. Lo que tiene que ver es con controlar el riesgo del proyecto, conseguir que los problemas y desacuerdos con el cliente surjan lo antes posible para tener margen de maniobra para incluir las funcionalidades cambiantes o negociar cambios con el cliente.
Pongamos por caso un proyecto que se hace entero, en un 110% del tiempo estimado y con una sola entrega final al cliente. Lo más probable es que esa entrega no le sirva al cliente, habrá cosas que no se especificaron bien y el cliente queda con mala sensación e igualmente la empresa desarrolladora.
Si ese mismo proyecto se hace con desarrollo iterativo el cliente comunicará los nuevos requisitos en las primeras iteraciones, de tal modo que se pueden incluir, incluso negociando con él el eliminar a cambio una funcionalidad menos necesaria. Quizá el tiempo de desarrollo siga siendo un 110% del especificado, pero a ese punto se llegará con un producto que el cliente ha probado una y otra vez y que cumple sus espectativas.
La programación iterativa significa control de riesgo, no desarrollo más rápido.
Un saludo.
Desconectado