Cuando comenzamos a... ¿programar?

Cuando comenzamos a... ¿programar?

Ingeniería de software

¿Recuerdas tus primeras líneas de código? Tal vez no las recuerdes con exactitud, sin embargo, es posible que recuerdas los sentimientos, la incertidumbre o las dudas técnicas que surgieron en ese momento...

¿Será correcto lo que hago? ¿Por qué muestra ese error? ¿Ahora qué hago? ¡No sé como solucionar el problema! ¿Con qué empiezo?

Es común que cuando se inicia en esta área se comience con fundamentos de programación, como los siguientes:

  • definición, diseño y representación de algoritmos
  • lenguajes de programación
  • paradigmas de programación
  • estructura de un programa
  • ejecución de un programa
  • estructuras secuenciales, selectivas, iterativas
  • tipos de datos
  • estructuras de datos
  • entre otros...

Además, es posible que tus primeros programas fueran de un solo archivo con todo el código ilegible con variables que ahora, si lo lees, no reconoces lo que almacenan y tal vez con hasta 5 niveles de "indentación". Lo anterior tal vez provoque un sentimiento parecido al remordimiento o vergüenza y consecutivamente te llevara a explorar diferentes formas de mejorar.

Pero, ¿qué sigue después? Claro que depende de distintos factores para saber con qué continuar. Aunque; de cierta manera, uno de los caminos en los que te puedes enfocar es "seleccionar una tecnología" y estudiarla a detalle.

Frecuentemente, escucho a compañeros dar consejos a estudiantes de áreas relacionadas sobre qué estudiar, siendo el consejo popular:

Estudia Python. Estudia Ruby. Estudia Javascript.

Y la mayoría coincide en:

Estudia algoritmos y estructuras de datos en ese lenguaje.

Claro que no desmerito estos consejos. Quiero destacar la incógnita que he tratado de desarrollar en estos artículos:

¿y la Ingeniería de Software? ¿En cuál plano dejamos a la Ingeniería de Software? ¿Qué consejos podemos dar sobre Ingeniería de Software?

Hace unos años mi enfoque estaba en la programación competitiva, algoritmos y estructuras de datos. Claro que mi perspectiva en ese momento era prepararme para entrevistas de trabajo. En algún momento pensé trabajar en empresas como Google, Facebook, IBM, Uber, por mencionar algunas. Pero, esta idea cambió cuando conseguí mi primer cliente a principios de mi carrera universitaria, fue cuando me di cuenta que para "desarrollar" un proyecto de Software no me bastaba con conocer un lenguaje o dominar algoritmos y estructuras de datos. Ahora, necesitaba conocer sobre diseño de sistemas, arquitectura de software, redes, gestión de proyectos, gestión de RRHH, gestión de recursos financieros, entre otros tipos de conocimientos.

En cierta forma, causa nostalgia recordar la etapa en la que solamente se necesitaba solucionar un problema en específico de manera ágil y "poco mantenible"; al final lo que importaba era solucionar el problema. Pero, en retrospectiva, ¿te has preguntado que hubiera sido de tus primeros programas si le hubieras dado un enfoque formal? Al menos en especificar lo que debe de hacer y cómo. Ahora bien, ¿qué sería de tus actuales o futuros desarrollos si le das este tipo de enfoque?

En lo personal, cada vez que termino un desarrollo o una parte de alguno, siento que pude haberlo realizado mejor, mejorar mis estimaciones, mis procesos, mis estándares de calidad. Aunque; como ya hemos mencionado, la calidad cae en la arbitrariedad.

No busco que esto pueda dar pie a que se diga que "estudiar una tecnología no basta, ni algoritmos o estructuras de datos", realmente dependerá de distintos factores para poder seleccionar lo que se debe de estudiar. Busco que; al menos, puedas considerar a la Ingeniería de Software en tus temas de estudio.

Ahora bien, ¿tú qué opinas? deja tus comentarios y; si es posible, las referencias.

Did you find this article valuable?

Support Arturo Villalvazo by becoming a sponsor. Any amount is appreciated!