domingo, 11 de marzo de 2018

¿Qué es la programación? Definición formal y no tan formal...


Y muchos dirán: “No tiene sentido que describas esos términos, todo está en Wikipedia” y sí, es cierto, Google es nuestro mejor amigo (y en mi caso particular, Stackoverflow por sobretodo).



Volviendo al punto, si bien existen numerosos sitios (y otros foros o blogs) que describen qué cosa es la Ingeniería de Software o qué involucra la programación, yo trataré de hacerlo de forma simple (aunque tal vez me explaye un poco... o me enrede en el proceso xD).

Es por ello que quiero empezar a definir qué es programación antes de pasar a definir un poco qué es ingeniería de Software.

Entonces... ¿Qué es la programación?
Para que no se confunda, programar no es sólo escribir código, se involucra mucho más que eso. 
Programar involucra un proceso de análisis y diseño para poder pasar a codificar (implementar) código que sirve para resolver algún problema o satisfacer una necesidad.


¿Por qué digo esto? 
Simple, muchas personas creen que programar es sentarse en una computadora y comenzar a escribir, de forma arbitraria, una serie de comandos y palabras con el fin de obtener un resultado. 

En mi experiencia como docente, lo veo muchas veces: 

Propongo un caso para resolver y los alumnos inmediatamente se ponen a escribir el código sin siquiera leer cuál es el problema que deben resolver, es decir, se basan en algún ejemplo anterior mostrado en clase y usan la técnica favorita de muchos: “copiar” y “pegar” (abreviado como “ctrl + c” y “ctrl + v” … Aunque yo prefiero llamarlo de forma más sutil como “re-utilización de componentes” :v)


A lo que voy es que convierten la programación en algo mecánico, monótono y, en mi opinión personal, sin mucha diversión; cuando programar es un proceso analítico, creativo, desafiante para la lógica y divertido 

(Sí, digo todo esto porque me apasiona programar).

Viéndolo desde una definición “académica” y formal, podemos decir que la programación es un proceso en el cual se analiza, diseña, codifica, depura, prueba y se mantiene un programa de Software, o como la gran mayoría lo llama ahora, las famosas “apps”.

Desde un punto de vista más casual, la programación es un arte, ¿por qué digo esto? 
Porque, aunque no tenemos un pincel, acuarelas o algo similar; nosotros estamos en la capacidad de crear algo que surge de nuestra creatividad. 

¿Y no usamos la lógica? 
Claro que sí, pero hay muchas formas de escribir código y cada una de ellas lleva un toque de nosotros; porque si bien hay mecanismos o “estándares” para resolver un problema, no necesariamente cada programador lo va a escribir de forma idéntica.

Entonces, creo que se ha definido la programación desde dos puntos distintos, como para que se den una idea de qué involucra. 

No se trata de, simplemente, mirar un tutorial de Youtube o copiar y pegar el código de algún otro sitio. 


Va más allá, la programación es desarrollar Software, y como ya lo mencioné antes, el “desarrollo” es un proceso que demanda una cosa en particular: pensar.

Es por ello que a veces encuentro insultantes ciertas cosas en mi entorno, por ejemplo: “aprende a programar en una semana” o “vuélvete programador avanzado en un mes”. 

No digo que no se puedan aprender las bases del código en un tiempo reducido o que no puedan escribir un módulo pequeño para un juego sencillo, a lo que voy es que no esperen escribir un juego complejo que involucre conceptos de concurrencia o una aplicación de banca que gestione millones de transacciones en ese tiempo; todo sigue un proceso. 

Entonces, ¿toda esa publicidad que me venden de aprender a programar en corto tiempo es una mentira? :( #lauraSad

Lo que pasa es que muchas “casas de estudio” o “docentes virtuales” enseñan que programar es mirar unas líneas de código y copiarlas o simplemente abrir un programa, dar una serie de “clicks” y generar automáticamente una “app”.

Y eso, estimada audiencia, no es programar, es simplemente replicar de forma mecánica código o que la computadora realice nuestro trabajo, lo cual no está mal, de hecho, estoy a favor de muchas herramientas que facilitan la codificación de procesos rutinarios puesto que le ahorran tiempo en ciertos escenarios.

El problema viene cuando una persona en aprendizaje o que ya es formalmente un programador o programadora, se mal acostumbra a sólo copiar el código de otros o permitir que un programa tome el control de su creatividad y su lógica, más allá de que eso ya no es programar, puede generar inconvenientes que iré mencionando conforme este blog vaya avanzando.

(Sí, ése soy yo cuando veo a alguien abusando del "copy" y "paste" o de los asistentes de auto-generación)

En las siguientes entradas, iremos viendo un poco más a fondo los términos que se irán empleando, por ejemplo, “algoritmos” y también un poco de qué es la Ingeniería de Software.

De igual modo, si he podido ayudar a absolver alguna duda y generado algo de interés por este apasionante tema, responderé algunas de las preguntas que muchos alumnos (y personas, en general) me han hecho a lo largo de mi carrera.

Por ahí tal vez vaya contando un poco de mi historia, cómo decidí estudiar o involucrarme con el tema de la tecnología cuando no era algo tan popular (sí, ahora se ha vuelto muy popular por diversas razones, pero eso lo veremos en otra entrada).

Gracias por leer este post y si tienes alguna duda o comentario, házmelo saber para poder mejorar en algo o comparte algo de conocimiento conmigo y con los demás.
¡Vibras!


No hay comentarios:

Publicar un comentario

Me ha gustado todo el rollo de la programación, Ingeniería de Software y Computación… pero ya estoy estudiando otra carrera…

Bien, un caso que puede ser complicado, mucho o no tanto dependiendo de cuánto hayas avanzado en tu carrera (aparte de l...