martes, 17 de septiembre de 2013

Hola, bienvenidos de nuevo a mi blog, hoy con esta nueva entrada y siguiendo mi linea de "una entrada por día hasta ver donde aguanto" jajaja, voy a hablar sobre el concepto básico y clave que manejamos los programadores y que posiblemente mucha gente que dice ser programador, o mucha gente que está aprendiendo no tiene idea.

En resumen, ¿que es la programación? ¿qué es un programa? ¿que tipos de programadores y programación hay? ¿realmente nos comprenden?, responderé todas estas preguntas y quizá más en el texto que se encuentra a continuación, pero antes les quiero recordar...



ADVERTENCIA: probablemente mucha gente esté en desacuerdo con lo que expreso en las entradas de mi blog, la idea del blog siempre fue, como todo blog, la de presentar textos que muestren un poco de mi "día a día", en mi caso en el mundo de la programación y la informática.
No obstante, todos mis textos están basados en la normativa vigente, y en toda mi experiencia hasta el momento, aquellos que estén en desacuerdo, probablemente sea por ignorancia o desconocimiento, y también podríamos mencionar engreimiento, creer que saben todo, pero tampoco podemos dejar de lado que quizá esté equivocado en algunas cosas, pero con el tiempo me daré cuenta y lo aclararé en nuevas entradas al blog.

Vamos entonces al tema en cuestión.-

La programación (o programar) es una actividad realmente compleja, muchos creerían que la programación en si, es simplemente escribir ordenes, tal como una receta escrita por un cheff, para que el microprocesador ejecute. Éste pensamiento es realmente incorrecto, la programación va mucho más allá de escribir un código, que en el ciclo de desarrollo (Metodología diseñada por Winston Royce en la década del '70) es simplemente la implementación de una solución dada por el analizáis de un proceso. Como podrá apreciar el lector, en la linea anterior inferí un proceso que resulta en la escritura del código. Ésto nos lleva a pensar que la programación es un proceso, un proceso que implica pensar, analizar, diseñar y finalmente escribir código en algún lenguaje.

Además de lo anteriormente dicho, la idea de que el código es como una receta es completamente inválida, porque si nos ponemos a pensar podemos deducir, que cuando alguien ejecuta un .exe el resultado de esas ordenes (con ingeniería inversa) pueden devolvernos el código de fuente, no obstante, si utilizamos el ejemplo de la receta, una torta cocinada, no se puede con solo saborearla, poder obtener las cantidades e ingredientes originales, ni mucho menos el orden con el que se prepararon los ingredientes, en cambio, con ejecutar un .exe podemos deducir el código original (no exactamente igual, pero muy parecido).

Entonces hasta aquí tenemos 2 razones por la que programar no es simplemente escribir código, como mencionamos, requiere de un proceso cognitivo, que dará por resultado una solución a un problema dado y eso terminará a la larga siendo nuestro código, y por otro lado, que no son simples ordenes que hay que escribir como si fuese una receta de cocina.
Además de ésto hay una tercer razón, programar representa una actividad económica (salvo en casos que explicaré más adelante), cada vez que se inicia un proyecto que requiere programación, hay un factor económico en medio, que representa el costo de implementar ciertas cosas, en base al tiempo que nos cuesta implementarlas, y no nos olvidemos que en todos los proyectos de desarrollo, el factor tiempo/dinero es muy limitado para lo que queremos hacer, por lo que nos lleva a la conclusión de que no solo hay que pensar en como solucionar el problema, sino también en decidir si aplicar o no ciertos factores, por su costo y por los beneficios según la ocasión que presentan.
En fin de cuentas, la programación resulta ser una actividad sumamente compleja.

Entonces, podemos deducir, por toda la explicación previamente dada, que un programa son dos espacios, el primero es el espacio del problema o la especificación, y el segundo es el espacio de la solución o el código ejecutable en si.
Entonces, un programa no es simplemente un conjunto de ordenes a seguir, va mucho más allá de eso, es un compuesto muy complejo, de muchos factores que le dieron origen tal y como es, y quizá el mismo programa, con el mismo problema en una situación diferente de desarrollo, sería un programa diferente que haría lo mismo, además de ser el resultado o solución a un problema dado por un cliente.
Pero no podemos decir que todos los programas que existen en el mundo están basados en un factor económico, hay dos tipos de programación, programación por oficio, y programación por hobby, podemos inferir entonces, que hay dos tipos de programadores, los verdaderos que trabajan de ellos, y los que pasan el tiempo haciendo cosas para si mismos. Volviendo al tema de la cocina, no podemos inferir que alguien que cocina por hobby es un cheff, solo aquel que trabaja de eso y que estudió para ello. Entonces aquí está la razón por la que programas propios, o hechos sin factor tempo/económico, no pueden considerarse para absolutamente ningún analizáis, ni aquellos que programan por hobby pueden autodenominarse programadores, esto no ocurre solo en la cocina y en la programación, en el resto de las áreas, alguien que hace las cosas por hobby sin un estudio no puede autodenominarse de la misma forma que un profesional.

Dada ésta explicación, no hay razón alguna para tener en cuenta el segundo grupo, por lo que los verdaderos programadores son aquellos que programan por oficio, que estudiaron más allá de leer textos en internet, y que realmente conocen las normas, y demaces, el resto no existe. Aclaro que, los saqué a tema para que quede explicado la razón por la que no se puede tomar enserio al grupo de los programadores por hobby.

Quiero finalizar el texto, expresando la respuesta al último interrogante, ¿realmente nos comprenden?, en el mundo, están los programadores, los clientes, los usuarios, y los "programadores truchos" los clientes nos piden x, los usuarios usan x, los programadores hacen x, y los programadores truchos hacen lo mismo pero cobran menos. Los clientes dan la especificación y junto con los usuarios ven el producto final, pero ignoran el proceso por el que pasó un producto, las decisiones, el refinamiento sucesivo, los criterios de calidad, la normativa, y etc. que se aplican al producto, por lo que para el cliente un programa hecho por alguien que no tiene idea de nada podría ser igual a un programa hecho por un profesional, no obstante, ésto no es así, a gran escala y en proyectos realmente serios, el software hecho por alguien que no tiene idea de ninguna normativa ni conceptos claves, se cae a pedazos mientras que el de un profesional, puede evolucionar, crecer, y pasar la "prueba del tiempo", en fin, en primera instancia, no nos comprenderían porque la gente cree que programar es simplemente escribir lineas de código, pero a la larga los clientes terminan dándose cuenta por que un programador profesional vale lo que cobra.

Un saludo para todos mis lectores!

0 comentarios:

Publicar un comentario