Martes, 18 de Diciembre de 2007

Vida de Programador VIII:Legacy Code

En las categorías: Tech, Puke

No creo que exista algo que cree mas panico, ira y frustración a un desarrollador que  tener que adaptar cambios a un sistema ya hecho por otro equipo de desarrollo. En estos tiempos ‘googlegianos’  podemos encontrarnos con pedazos de codigo que otro hizo dentro de nuestras aplicaciones, es lo mas comun, pero como siempre el core del sistema sigue siendo creación del desarrollador/arquitecto/programador que lo realizo ya que corresponde a la capa del negocio que se esta pretendiendo automatizary no hay nada en el mundo que haga que encontremos esto en otro lado por mas que lo querramos.

 

Para que un desarrollador  tenga el desagrado de llegar a mantener o ampliar un aplicación que otro haya realizado pueden ocurrir 3 escenarios:

 

En cualquiera de los 3 escenarios que me imagino lo primero que sucederá es que entre en juego el tan mencionado ego de los desarrolladores, donde en primera instancia veran con cara de pocos amigos ese pedazo de codigo que el no hizo y veran la forma de denigrarlo de alguna forma. Luego de superado su incial esceptisismo hacia este sistema tendran que comenzar a revisar su funcionamiento a detalle ty pasar el segundo paso que es encontrarse con muy poca documentacion sobre el trabajo desarrollado(excepto la gente de un departamento de mantenimiento que tal vez pueda exigir esto), el resto de los escenarios que planteo, el nuevo equipo desarrolladro se encontrara con un autismo del otro lado debido a alguna falla de comunicación inter-empresa o sencillamente porque el creador original de la aplicación no esta mas en la organización o lo mas comun, los tiempos no dieron para documentar por la premura de la entrega del producto. En cualquier sentido se encontrana miles de lineas de codigo que al inicio no tendran sentido mas que un funcionamiento de pantallas y que para el usuario probablemente no sirvan ya que eso es lo que quiero pero deseo agregarle, esto, aquello, etc. Y esos pequeños detalles son los que generaran de ahora en adelante la curva exponenacial de erorres de la aplicacion en contraste de la curva d ela bañera de los equipos electronicos(en cualquier caso revisarse cualquier libro de Ing. del Software para saber de que hablo).

 

Cuando el equipo desarrollador logra al fin ‘empaparse’ del negocio que la aplicación original hacía y agregado la nueva funcionalidad pueden ocurrir ahora 2 nuevos escenarios, que generamos un apice completamente nuevo con lo cual la aplicación seguira siendo mantenible en el tiempo, o sencillamente desarrollamos un ‘frankestein’ ya que alteraron el core del negocio original y se agrego otras funcionalidades que el sistema original no satisfacía, con lo cual la mantenibilidad de esta aplicación solo la conoce el neuvo equipo de trabajo ya que el grupo anterior si intenta hacer uso de ella se encontrara con un sistema completamente diferente al que pensarono entregaron.
Tristemente esto uno de los casos que mas frecuentemente nos encontramos en nuestro ambiente laboral. Por ejemplo gente como SAP recomienda usar lo mas estandar posible su sistema evitando agregar muchas personalizaciones al mismo (las conocidad ‘Z’) para garantizar que cuando se realice el cambio de versión esta pueda realizarse sin traumas. ¿Será esta la verdadera razón o ellos conocen mejor el problema que muchas instalaciones SAP cambien el sistema en demasiadas partes?.

 

Ahora, si el legacy code llega a ser tan pernicioso  ¿por que se estila comprar u obtener sistemas con fuentes para adaptarlo al negocio?. La respuesta podría ser lo que inicialmente se piensa, que con algo que mas o menos se parezca a mi negocio podría hacer que mi desarrollo se haga en menos tiempo, ¿pero realmente se evaluan bien lo que hace este sistema que se adquiere con lo que deseo o sencillamente se cumple una expectativa de elección presionado por otros niveles ?. Si al caso vamos, mucho proyectos open source sone exitosos al permitirnos adaptarlos a nuestra necesidad, pero la recomendación en este caso es que cada cual tome el proyecto base, que desde mi punto de vista tiene los servicios básicos del negocio y lo adapte a su necesidad, pero nunca tomar uno ya adaptado porque este ya contendría el modelo de negocio difernete al nuestro a menos que la nueva funcionalidad agregada sea algo completamente estandar y si mejore la calidad del proyecto base y no lo entorpezca o la haga inmantenible.

 

Continuando el tema de la elección del sistema, tambien se cae en ver muy por encima al sistema y no se observa en profundidad la arquitectura del mismo(no vale que te muestren los diagramas de siempre, tristemente la implementación puede cambiar esta realidad), pasando que luego de haberlo elegido se den cuenta que adaptar los nuevos cambios  conlleva a una reprogramación excesiva del negocio. Esta muy claro que si se toma el tiempo de hacer una evaluación exhaustiva del mismo se corre el riesgo de desecharlo por no cumplir con los requerimeintos mismos y sumado a esto el haber perdido este tiempo cuando se pudo haber aprovechado en codificar o hacer uno nuevo desde 0.

 

¿Realmente sirve usar un Legacy Code?, la respuesta es muy ambigua, ya que los mismos estan alli, son muchas veces el core system de las empresas y hay que seguir ampliandolos debido a cambios del modelo de negocio, pero desde mi punto de vista, un sistema medular de cualquier empresa nunca debería ser realizado con codigo prestado de otro lado, simplemente que por la garantía del proceso negocio este debería ser hecho en casa siempre para tener le modelo de negocio consistente; es un craso error pensar que usar algo de otro implica un ahorro ya que al final se genera un monstruo que con el transcurso del tiempo hara que la directiva diga: "El presupuesto de tu Gerencia coloca este sistema para hacerlo de nuevo", y la espiral arranca de nuevo, pero esto es otra historia :D



Letargo »»


Del.icio.us  |   Cosmos  |   Digg  |   Slashdot |   ”submitMeneame |   Guardar en Favoriting Favoriting

Escritos Relacionados:


EL URI para seguir esta entrada es: http://zeitan.blogsome.com/2007/12/18/vida-de-programador-viiilegacy-code/trackback/

8 Comentarios »

    delimce
  1. yo le tengo algo de miedo a hacer reingeneria, quizas es lo mas sensato como dices, pero creo que el factor humano tiene mucho que ver en este proceso, tal como el concepto de bioreingeneria lo dice no solo hay que empezar de nuevo el software, sino también darle frescura a las ideas, incentivar y motivar, identificarse con el nuevo proyecto y hacer todo lo posible para que el cliente entienda que tiene un aliado en un analista de software no un lacayo.

    December 18, 2007 @ 11:06 pm

    • • •
     
  2. Lobito
  3. SAP: Sistema de Atraso de Pagos

    Y no solo sucede con código, si no también con instalaciones eléctricas que es mi campo de trabajo, mas de una vez he pasado horas estudiando y analizando que coño hizo el otro tipo, para al final tener que recablear todo de nuevo a mi estilo…

    December 19, 2007 @ 7:34 am

    • • •
     
  4. CarlosZombie
  5. aunque hay una parte que no mencionas y es cuando uno consigue codigo que es muuuuuuuuy arrecho y logras entenderlo, modificarlo y hasta mejorarlo, eso hace que un orgasmo luzca como un estornudo.
    ahora bien, el gran peo de esto es que como dices uno no metio mano en ese codigo y practicamente tienes que ponerte en el lugar de quien lo hizo, y alli puedes determinar si quien lo hizo era un programador estrella o un caiman, si es organizado o seguramente pone los interiores sucios cerca de la comida, etc, etc.

    December 20, 2007 @ 8:12 pm

    • • •
     
  6. PercyReyes
  7. jejeje, es una de los retos desagradables que todo desarrollar debe afrontar lo mejor posible en su eterna carrera.

    Recomiendo, tomar un poco de aire, antes de intentar ser el héroe al toparse con algo asi. xD!.

    December 20, 2007 @ 11:51 pm

    • • •
     
  8. SoulSlayer666
  9. Verga loco… de esto no se nda…pero se ve interesante el tema

    December 21, 2007 @ 1:02 pm

    • • •
     
  10. Apocalypso Facto
  11. Yo soy un total n00b en esto del desarrollo de software, pero leo mucho al respecto y sé de las historias de terror que involucran el uso de legacy code, debe ser algo espeluznante tratar de comprender un código tan complejo como el core de una empresa cuando el mismo no está documentado!

    December 21, 2007 @ 2:46 pm

    • • •
     
  12. Vladimir
  13. Tu sabes que yo estoy empezando en esto de la programación; el otro día me consigo con un tipo que me pasó un codigo que me dejó espantado, muy bien documentado (cosa que me ayudó a entenderlo medianamente) sin embargo el programador anterior lo había dejado a medias y el tipo quería que yo se lo terminara; lo gracioso es que el sujeto se me sienta al lado y me pregunta, ¿como cuanto tiempo piensas tu que puedes terminar esto? ¿Una hora dos horas? Yo me lo quedé mirando… O_O
    Le dije: “Yo me acabo de graduar de esto, no tengo eperiencia de nada, realicé un proyecto con una base de datos que era la cuarta parte de esta, tenía la ayuda de 4 compañeros y tardamos un mes, así que se puede hacer la idea.”
    Total que el tipo no le gustó y se buscó a otro; pero después me volvió a llamar por que no consiguió nadie que por lo menos le entendiera el codigo XD
    Pero por lo que estaba pagando, a otro perro con ese hueso :p

    December 25, 2007 @ 5:35 am

    • • •
     
  14. conche!
  15. verga zeitan! tienes esta vaina abandonada… pense q despues de lo del caracas estarias triste pero no es pa tanto… a ver si revives el blog…

    January 11, 2008 @ 5:18 pm

    • • •
     

RSS feed para comentarios en el post.

Deje un comentario.

Entrelineado de parrafos automáticos, direcciones de e-mail nunca seran mostradas, HTML permitido: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>



Anti-spam measure: please retype the above text into the box provided.

cró·ni·ca s. Artículo periodístico o información radiofónica o televisiva sobre temas de actualidad.

Puede que algunos elementos de esta página no se muestren correctamente si navega con Internet Explorer. Zeitan recomienda utilizar:
Get Firefox!

Links internos:

Categorías:

La gente comenta:

Archivos:

Diciembre 2007
L M M J V S D
« Nov   Ene »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Hace un mes atras:

La gente lee:

Mamarrachos:

HuitZiloP: el blog inutil
Alondra.com.ve
Filosofía y zapatos de goma
Rock Site

Zeitan. Es el navegante constante de la red que expone sus opiniones y gustos en este espacio esperando compartir junto a Uds. esta experiencia y saber su feedback a través de sus comentarios.

Contacto:

msn:antonbas@gmail.com
Blogger Code:
B4 d- t k s++ u++ i o x-- e+ l c+
(decode it!)

Escuchando en Last.FM:

Twitteando:


Sigue a zeitan en http://twitter.com

Yo pertenezco a:



Búsqueda:

Busca con este:


O si te parece mejor usa este otro:

Leo a:

Mas clickeado:

Sindicalizado por:

Estamos Suscritos a:

Directorio de Blogs de Venezuela
BloGalaxia
Blog Flux Directory

 Bitacoras.com

Top Technology Blogs

Cotizamos en:
Listed on BlogShares Unión de Bloggers Hispanos
Unión de Bloggers Hispanos

Contadores:


web statistics
Revisa las estadísticas

Theme copyright © 2002– Mike Little
Modificado por Zeitan 2006.