La semana pasada, y de hecho también este lunes, estuvo simplemente fatal. En el trabajo aplicaron la súper estrategia de meter a alguien en un proyecto del que no tiene idea de cómo está compuesto, y le echan trabajo que, como siempre, era para ayer, sin contar que todo está hecho en un lenguaje que ese alguien nunca ha usado y un juguete que simula ser una base de datos (léase “Access”). ¿Necesito decir que ese alguien era yo?
He trabajado en desarrollo de sistemas antes y sé lo que son los tiempos que se manejan en el proceso: nunca son reales y uno tiene que andar a la carrera para poder sacar “los pequeños cambios” que curiosamente salen después de que los requerimientos fueron tomados, aceptados y congelados. Pero quizá lo que más me sorprende es la reafirmación de que en muchos lugares el software que se usa para producción dista mucho de tener una calidad siquiera aceptable, y Japón no es la excepción. Cierto. He visto código que sí está bien hecho, con buen formato y con su respectiva documentación, pero son pocos los casos.
Lo que tocó hacer estaba en C# y la base de datos en Access… simplemente increíble. El código estaba bien estructurado, pero había funciones que realizaban más de una tarea y que eran enormes; comentarios totalmente inexistentes que hacían mucho más difícil de entender lo que el programador pensó al momento de codificar. Lo grave del asunto es que, después de tanto tiempo y de haber trabajado en 3 países, ya considero esto como normal puesto que entiendo que muchas veces se anda a las carreras con tal de cumplir con los tiempos establecidos aunque tu vida social desaparezca por ello.
Justo el buen panda me envió este artículo en el que se habla de lo que aquí comento, especialmente aplicado a programas que manejan acciones de empresas y de cómo pueden hacer perder millones por un simple error. Además de los tiempos, muchas empresas no toman en consideración las pruebas ya que representan un costo extra, y es casi verdad universal que quienes manejan las empresas piensan que con ver correr el prototipo de un sistema es suficiente para decidir si funciona o no.
Aclaro aquí algo: yo también he estado en la situación de que hay que acabar a como dé lugar sin importar cómo quede el código, y estoy seguro que mi forma de estructurar programas puede mejorar. En resumen: no me creo ni soy el mejor desarrollador del mundo. No obstante, estoy completamente seguro de que muchos me darían la razón si vieran el código del que estoy hablando.
De código de investigación ni hablamos. Me da pavor ver lo que hice durante mi estancia en la universidad…
Como quieran y gusten, terminé lo que tenía que hacer en el tiempo que me establecieron, pero para lograrlo me tuve que quedar hasta muy tarde en el trabajo (el lunes salí a las 11:30 pm y apenas alcancé tren a la casa). Sin embargo, hoy ha comenzado a otra parte del proyecto, y para los tiempos que manejan no me va a quedar de otra que echarme un clavado al código ya hecho, entender lo que hace (y viendo como hay valores que pasan por referencia, como las propiedades de los objetos están definidas como públicas… y mejor no le sigo) y reusar lo que sea posible. El problema a resolver es interesante, y de hecho me gustaría pensarlo en términos de probabilidad y hasta algoritmos como el Hill Climbing, pero todo indica que no tengo el tiempo que necesito para realizar el análisis que eso implica.
Con todo, es totalmente un placer decirles que la diferencia entre mi trabajo anterior y éste es como del cielo a la tierra. Compadezco a mis ex compañeros por tener que trabajar en una situación tan estresante.
Aquí seguimos.
Bienvenido al maravilloso mundo de la programación Windows XD. Justamente ahora estoy terminando una aplicacion que por motivos varios tuvimos que usar el MS-Access como base de datos, inicialmente habiamos usado el SQLite, pero debido a problemas en el momento de instalar la app acabamos migrando el banco de datos a access.
Desde el punto de vista de la creacion de app para ambientes desktop windows, el access te permite de forma nativa tener los manipuladores para el mismo sin la necesidad de tird party dlls ya que el System.Data.OleDB lo manipula perfectamente.
Sin duda no es una base de datos perfecta, pero sabiendo usarlo cumple con su cometido (aunque pudiendo mejor usar SQL, Oracle, MySQL, etc..)
Respecto a lo del código fuente no comentado, estoy completamente de acuerdo contigo, dado ese motivo odio coger código de terceros porque se pierde mas tiempo descifrando lo que quiso hacer el programador que nada.
Suerte!!
Mira con que estes mejor que donde antes, ya es ganancia. Y si ademas estas aprendiendo cosas nuevas, digo ademas de odiar Access… se agradece saber que estas bien y de vuelta por el blog.
Saludos.
Pues tomo tu artículo como un desahogo porque pues así es en todo el mundo y no veo como vaya a cambiar en un futuro próximo. De hecho, creo que más bien cada vez es más frecuente ahora que se ha “democratizado” el desarrollo de software.
También trabajo desarrollando software y lo he hecho en 4 países y -en mi experiencia- en todos lados es lo mismo.
Programar para Android y iPhone en proyectos donde el anterior programador se fue o desapareció es la muerte chiquita.
Ahora si que “ni modo”… がんばてください!!
Dias muy pesados , apuesto que todos los que llevamos un tiempo en esto hemos pasado por cosas parecidas asi que se de lo que hablas, si en algo te puedo apoyar yo uso C# desde hace algunos años, ojala pudieran migrar a SQL aunque sea la versión express, apuesto que aún con sus limitaciones sería mejor que Access, por cierto que lenguaje es el de arriba? perdonar mi ignorancia pero solo he programado en Java, C# y un poco de php 🙁