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.
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)
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.
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.
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.
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