Programación y Especificidad

Puede que el título del post no sea el más adecuado, o tal vez existe un mejor concepto para explicar lo que intento expresar, pero en lo personal creo que para el contexto en el que he estado trabajando este último tiempo podría tener un significado bien particular. Últimamente he tratado de concentrarme lo más que he podido en mis actividades y responsabilidades, especialmente que casi todo está relacionado con la iniciativa personal que espero cambie mi vida y mi futuro.

Pero bueno, sin desviar la atención de lo principal, yo he seguido trabajando en programación, y actualmente tengo tareas relacionadas con herramientas que necesito construir para apoyo en otros proyectos. En este tipo de programación continuo aplicando todos los conocimientos que he aprendido a lo largo de los años y también he seguido aprendiendo nuevas materias. Aunque uno trate de aplicar todo lo que uno sabe y trate de seguir estrictamente ciertas metodologías o patrones de programación, siempre apareceran nuevos problemas que resolver, y personalmente los nuevos desafíos y problemas que ahora estoy enfrentando en programación no están tan relacionados con formas de hacer las cosas ni funciones que me hacen falta que hay que construir, sino que ahora el problema se centra en el camino que seguirá el proyecto, la evolución a lo largo del tiempo y las decisiones de ingeniería que se tienen que considerar antes de comenzar una nueva implementación, en especial en un concepto que últimamente he estado pensando en llamar “especificidad”. Por ello este último tiempo me he puesto a recordar cuando estuve programando aplicaciones a medida de ciertas necesidades; Aplicaciones con requerimientos fijos y objetivos concretos. Aplicaciones que sólo estaban diseñadas para cumplir propósitos especificos. Aprendí hartas cosas nuevas como cuando programaba proyectos personales; muchas metodologías, muchas técnicas interesantes adecuadas en ciertas situaciones, y muchas formas de trabajar en función del propósito del proyecto. Pero también aprendí que algunas cosas podrían provocar contradicciones ante ciertas prácticas habituales, que en general no se puede ser muy específico con un proyecto. En ingeniería uno aprende que siempre hay que pensar en un cierto nivel de libertad, en objetivos que posiblemente en el contexto actual no son necesarios pero que van apareciendo a lo largo del tiempo. Eso te hace pensar que al final todo cambia, la vida, los proyectos, las personas, las planificaciones. Todo tiende a querer mejorar y abarcar más casos y experiencias. El problema es que tampoco se puede dejar mucha libertad, porque comienza a aparecer otros problemas que podrían afectar la planificación de un proyecto. Pensar en mayores casos de uso e implementar un mejor diseño requiere un costo adicional que muchas veces esta traducido en tiempos de desarrollo. Hay situaciones en la que el costo de mejoras no es mayor cuando se tiene pensado un nivel de especificidad bajo, pero también hay casos donde esa situación se da al reves y ahi está el momento donde uno busca un equilibrio entre los objetivos actuales frente a las aplicaciones futuras.

En general trato de siempre buscar ese equilibrio buscando objetivos más pequeños y especificaciones no tan detalladas aunque concretas. En general importa que las metas sean claras de entender y con tareas que permitan ser alcanzadas. Cambiar una arquitectura posterior a un lanzamiento podría no ser lo más adecuado o recomendado, pero cuando se usan patrones que permitan escalabilidad aún cuando hay un nivel de especificidad alto, igual es posible reducir esos costos adicionales que uno podría pensar que son innecesarios. En otras palabras, los costos que uno podría tener es mejor enfrentarlos al principio de alguna implementación que en los momentos más críticos de un proyecto.

Puede que no sea un concepto adecuado trabajar con especificaciones a ese nivel, pero en general me cuesta todavía adaptarme a tanto tecnicismo, en especial cuando mis objetivos principales estan más enfocados en los resultados mas que en los medios. Planeo cumplir mis objetivos de la mejor manera, aún cuando tenga que tomar ciertas decisiones que podrían parecer las menos adecuadas.