Hoy en día nos encontramos una variedad de lenguajes de programación, en donde cada uno de estos va mejorando y evolucionando conforme avanza el tiempo, y que también se enfocan y especializan cada vez más a través de frameworks y librerías nuevas, siempre en una búsqueda continua a la adaptación a nuevas plataformas, arquitecturas, infraestructura, entre otros aspectos.
El principal reto para la comunidad de profesionales en los sistemas informáticos, involucrando desde los aprendices hasta los expertos en las tecnologías de la información (TICs); es que cada uno de ellos debe de manera constante estar actualizándose en los cambios, nuevas librerías, en las instrucciones y nuevos algoritmos que hacen funcionar los diferentes componentes de un sistema, ubicadas en sus distintas capas, módulos y modelos, para que cada componente del sistema cumpla una función de manera específica y confiable.
En ese sentido, esta mencionada dinámica de actualización continua, en el mejor de los casos, obliga al personal de sistemas involucrado en su soporte y mantenimiento a dominar un lenguaje de programación a un nivel suficiente para poder operar, administrar y dar mantenimiento a uno o varios componentes de un mismo sistema homogéneo; esta situación posteriormente empujará al personal hacia una especialización y conocimiento cada vez más avanzado que le permitirá realizar tareas y modificaciones más complejas y profundas, también provocarán que cada uno de los bloques del sistema, o el sistema entero, en cada una de sus modificaciones que se realicen, vayan al mismo ritmo de mejora y actualización continua y constante que el lenguaje de programación con el que se construyó el sistema lleve en su evolución.
Por otra parte, en un escenario más adverso, teniendo como circunstancia un sistema complejo construido a partir de subsistemas realizados en diferentes arquitecturas y/o plataformas; aquí es donde se tiene la principal necesidad de que los usuarios, operadores, el personal de mantenimiento y de desarrollo requieran dominar los diferentes lenguajes de programación involucrados, además de conocer los montajes e implementaciones que existen en esa diversidad del sistema, tomando en cuenta hasta sus componentes o módulos más pequeños; de acuerdo a este entorno, es entonces donde el personal de TI empieza a tener muchos dolores de cabeza al respecto, porque existe la necesidad de dominar un gran número de aspectos técnicos diferentes, y a su vez, cada uno de ellos debe ser manejado con una experiencia y conocimiento avanzado si es que se pretende tener un dominio de un sistema así de diverso y disperso; esto exige que el personal de TI se divida y se incremente en el número de personas especializadas en cada parte o componente, creando una plantilla de personal relativamente grande y que puede complicar un poco la coordinación y la planeación en lo que respecta a los trabajos de mantenimiento del sistema o de los procesos de actualización de componentes del mismo, que impacta directamente en la manera como se puede llevar el ritmo de actualización conforme a la evolución de los lenguajes de programación involucrados.
En lo individual, hablando como apasionados de los sistemas, nos lleva a conocer en medida de lo posible un panorama amplio y diverso de las tecnologías, y por otra parte, nos lleva también a buscar y profundizar en cada tema para obtener una especialización en un mayor número de temas.
¿Entonces? ¿Habrá que volvernos unos especialistas de todo? ¿Eso es posible?
La respuesta de estas preguntas, nace de manera muy particular, empezando por reflexionar primeramente sobre conocer cuál es nuestro camino profesional y a donde queremos llegar, o hacia donde queremos desarrollarnos; también hay que tener siempre en cuenta las novedades y avances que van aconteciendo por parte de las empresas de vanguardia que llevan la batuta en la innovación.
Estos últimos principios de reflexión, nos van a llevar saber elegir que tanto podemos ser especialistas en algunos temas de nuestro interés, y también nos orientará a convertirnos en medida del tiempo en expertos de lo que hayamos elegido; buscando siempre que nuestra dedicación se concentre en ciertos ámbitos y que por consiguiente, nos empujará a especializarnos en algún lenguaje de programación o arquitectura que intervenga en esa especialización.
Como otra opción podemos tener de igual forma un amplio conocimiento sobre todo lo que hay disponible y en el horizonte de los sistemas, esto nos llevará a profundizar poco sobre cada opción; sin embargo, podremos estar en el constante ejercicio de la investigación de lo nuevo y el análisis de lo existente; dando como resultado el convertirnos en un profesional de conocimiento amplio con visión y varios puntos de vista panorámicos, que como habilidad profesional, nos permitirá crear sistemas con un mayor grado de distribución y la adaptación de componentes y módulos que sean creados en la tecnología adecuada.
Encuentra profesor de programación ahora
Si tu camino profesional está orientado a este último enfoque, entonces quizá podrás empezar por seguir estos puntos:
1.- Recordemos que la base inicial de cualquier lenguaje de programación es el pensamiento lógico y matemático, por lo cual antes de pensar en un lenguaje de programación para hacer un sistema, primero hay que pensar en que actividades y soluciones que pretendemos solucionar con dicho sistema, al final; el lenguaje de programación en muchos de los casos es lo último que se elige, siempre y cuando tengamos ya la idea clara y completa de lo que deseamos construir.
2.- Además de saber la lógica y la matemática mencionadas en el punto anterior, algo que también influye en la arquitectura de un sistema, es el alcance que debe tener, por ejemplo, el alcance físico o geográfico que este sistema tendría, sobre esta definición; tendremos elementos que nos ayudarán a saber si el sistema será solo diseñado para una sola computadora, una oficina pequeña o una red distribuida.
3.- Recordemos que en su gran mayoría, los lenguajes de programación son definidos por un paradigma y aparte, muchos lenguajes de programación provienen de otros lenguajes "ancestros", por ejemplo, podemos ver que C# proviene de su ancestro C++, incluso Java tiene como ancestro al lenguaje C mismo; entonces el conocer al lenguaje "ancestro" te permite a entender el paradigma, sintaxis y de codificación de los lenguajes herederos; por eso, encontrarás muchos profesionales en TI que coinciden en recomendar que para aprender a programar, empieces por el lenguaje C o C++, con este camino te abrirá puertas a muchos otros lenguajes.
4.- La programación, además de ser un proceso lógico y matemático como lo habíamos mencionado en puntos anteriores, también tiene grandes tintes de ser un proceso creativo basado en varias metodologías y procedimientos de planeación y diseño, sin embargo; no deja de requerir siempre de inspiración y un buen estado de ánimo para tener mejores resultados al momento de codificar, por lo tanto; es altamente recomendable que busques un lenguaje de programación o área dentro de los sistemas que te motive y provoque esa inspiración para lograr mejores resultados y avances en tu crecimiento profesional.
Existen muchas más recomendaciones, pero al final todo se resume a que siempre que quieras aprender a programar, tengas primero al menos estos cuatro puntos anteriores siempre presentes, para que sean las herramientas primarias que te lleven a aprender cualquier otra modalidad, paradigma o lenguaje de desarrollo.
¡Saludos!
Alfredo González Aguilar