El otro día leí en Versión Cero un artículo de Sergio Montoro, en el que se preguntaba por qué el programar estaba despretigiado hoy en día.
La idea del artículo es buena, y digamos que a grandes rasgos estoy de acuerdo con lo que Sergio comenta en él y solo añadiría que no es que programar esté despretigiado, sino que hoy en día cualquier profesión que necesite dedicación y tiempo para aprenderla está desprestigiada. Bueno pero a lo que yo iba, en el artículo y sobre todo en los comentarios, se monta una buena discusión sobre si la programación es un arte o una ciencia.
Y éste es un viejo tema de discusión que me gusta. Para mi un programador estaría más cerca de un artesano (que no artista…) que de un científico. Sobre todo si sus programas interactúan con personas. Es decir, para resolver un problema del mundo real (que es para lo que se supone que se programa) se necesita más amplitud de miras que la del frío científico o de la racional lógica científica en la mayoría de los casos.
Esto no significa que no se necesiten conocimiento técnicos para aprender a programar, pero para hacer buenos programas estos únicos conocimientos no son determinantes a la hora de conseguir buen software.
Un ejemplo tal vez haga que mi idea se entienda mejor; para construir una casa, necesitamos a un arquitecto que nos la diseñe. Está claro que el arquitecto tiene que saber matemáticas, cálculo… para que la casa no se caiga, que resista las inclemencias del tiempo… pero luego esta la parte del trabajo del arquitecto que nos van a llevar a decir si el edificio es bonito o no, si vivir en esa casa es mejor que vivir en otra (que puede que esté igual de bien diseñada, pero donde no estemos tan a gusto) y al final por muy bien que estén hechos los planos, si el arquitecto no visita la obra, y los albañiles, pintores, fontaneros… no son buenos artesanos, el resultado será una casa que no se cae, pero donde no nos guste vivir.
Yo puedo conocer la gramática y la semántica, la ortografía de una lengua, además sé meconografía, pero si no tengo algo de arte mis libros nunca serán un éxito. La actividad humana nunca es automática. Por ello la creación de buenos programas… es eso creación humana; y por tanto tendremos humanos que lo harán mejor que otros, independientemente de que tengan mejor o peor base. No discutiré que un buen corpus de conocimientos teóricos vienen bien, pero para mí no son determinantes, serían más importantes la imaginación, el orgullo por el trabajo bien hecho y el respeto al usuario final.
Claro que se sigo pensando el programas, programadores… tal vez debiese hablar del trío de la benzina, del usuario->analista->programador y como sus relaciones son las que de verdan al final van a marcar el resultado de un proyecto de software, pero eso para otro día.
5 Comentarios
Comentarios Cerrados
Programar es un arte y es ciencia. Para saber programar, debes saber matemáticas, pues las sentencias que se usan no son más que funciones matemáticas.
Al igual que en la escritura, cualquier persona puede programar, pero para aprender se necesita tiempo y paciencia (al igual que cuando aprendemos a escribir). Dominar todos los elementos de un lenguaje puede llevar años. Pero no todas las personas que saben escribir son escritores. Un escritor es una persona que tiene tal dominio de la lengua, que es capaz de describir algo en pocas líneas, o despertar un sentimiento que nadie podría. Lo mismo pasa con los programadores. Hay programas y programas, pero cuando un tío es un crack en eso, y lees su código, te q
Programar es un arte y es ciencia. Para saber programar, debes saber matemáticas, pues las sentencias que se usan no son más que funciones matemáticas.
Al igual que en la escritura, cualquier persona puede programar, pero para aprender se necesita tiempo y paciencia (al igual que cuando aprendemos a escribir). Dominar todos los elementos de un lenguaje puede llevar años. Pero no todas las personas que saben escribir son escritores. Un escritor es una persona que tiene tal dominio de la lengua, que es capaz de describir algo en pocas líneas, o despertar un sentimiento que nadie podría. Lo mismo pasa con los programadores. Hay gente que hace programas que son bonitos, funcionales y ocupan muy pocas líneas, y siempre le ponen un toque personal.
Buenas,
En la diana: ARTESANO, yo siempre digo q somos de todo menos ingenieros.
Mi opinion de por que esta desprestigiado lo de programar: por gente como yo (por lo menos en parte jejeje):
– Yo siempre digo q “pico” codigo, soy un “pikata”.
– Me importa mas bien poco la “calidad” de mi codigo… de hecho creo q una de las razones pq pienso q no es una ingenieria es la falta de metricas (efectivas) de calidad… de gestion …
– Tiene poco valor el trabajo de programador (o por lo menos en el mercado), la diferencia salarial con puesto de gestion y gerencias … y no te cuento en marketing. Asi q en muchos proyectos (no todos) la casa se empieza por el tejado, se vende, se aplica el porcentaje de beneficio… y a cuadrar!!!
– Si la calidad del codigo importara se gastaria mas dinero en pruebas.
– En fin, todo el codigo se ve horrible a traves del “vi”.
Un saludo.
paco
Pufff, no sabria decirte. En general estoy deacuerdo con todo lo que escribne. El problema es que actualmente sale mucha gente que se dedica a picar código sin saber programar, es decir, hay gente que ha pasado por una academia de programación y después de 360 horas, los sientan en una oficina a implementar cosas.
Eso no se puede hacer. Para ahcer un programa de reducidas dimensiones, bien sirve, pero para progrmar para una empresa, necesitas saber mucho más.
Por un lado están las modas de los lenguajes; que si ahora todo en C que si eso está anticuado y queremos Rubi, que si el Java es lo mejor que hay… No se por que la gente no se da cuenta que la diversidad de lenguajes es debido a que cada uno es más potente para un tipo de programamción, que no es cuestión de modas, que es cuestión de utilidad, que cada lenguaje tiene sus puntos débiles y sus puntos fuertes.
Por otra parte, como bien dicen todos, para aprender a programar se necesitan años. Yo programo desde ahce dies años, pero como no le dedico horas, pues digamos que mejor no pongais en mis manos cosas importantes, al menos sin supervisión. No se puede hacer de verdad un buen programa sin saber de verdad como funciona un ordenador. La diferencia enetre un codigo y un buen programa pueden ser unas líneas, pero unas líneas muy importantes. No todo es velocidad, hay que proteger la memoria, evitar desbordamientos de buffer y esas cosas, y todo eso no te lo enseñan en una academia en seis meses.
En general el fallo está en que las empresas creen que lo de programar es sencillo, como lo hacen chavales de 12 años… Si, programar es sencillo, de echo es realmente sencillo, pero programar BIEN, al nivel que se exige en el mercado, es realmetne dificil, y eso no lo quieren entender. Quieren todo el software barato y para ayer, y eso es imposible.
El soft libre triunfa por que en muchos casos lo escribe gente en sus ratos libres que realmetne sabe programar, y que no tiene presiones del jefe para terminarlo mañana, y de esa manera dedican las horas que sean necesarias a corregir esas dos líneas de código que no terminan de verlas bien. Las miran, si, bien, eso funciona, pero no tan bien como deberia, y lo escriben y reescriben de nuevo.
Para poder ahcer esas cosas tienes que saber mucho, y haberte pasado realmetne muchas horas programando. Un buen programador no es el que se tira horas pensando como se hace un algoritmo, si no el que se tira horas decidiendo cuald e las tres o cuatro opciones que ha decidido es la mejor, y para saber realmetne cual es la mejor, tienes que saber de verdad como trabaja un ordenador, y podder hacer blaance de riesgos en cada caso.
Tengo que entregar otra practica el martes, por lo que, para mi, en estos momentos, ni arte ni nada, programar contra reloj, en fin de semana de fiestas, sin poder salir y encima con mil cosas máss que hacer, es un suplicio.
Ale, el que llegue al final de este tostón se ha ganado una invitación a unas tapitas… en Saint Louas :-D.
Reproduzco mi opinion expresada con aterioridad en un foro al que pertenezco. http://runsolve.blogspot.com/
Date: 4 Feb 2005 09:37:39
Reply-To: Ingeniería de Software
He escuchado a muchas personas prominentes decir que todos los seres humanos somos iguales y que tenemos las mismas capacidades, sin embargo creo que es irrefutable que existen cualidades y destrezas especiales con las cuales la naturaleza (o Dios) nos ha dotado en mayor o menor medida a cada persona.
Comparto la opinión de Francisco Simó en que existe el “don”, así ha sido siempre en todas las esferas en las que se desempeña el hombre(política, deporte, ciencia, arte) y en cada una de ellas existen esos genios irrepetibles que supieron potenciar sus habilidades naturales con la técnica. Discrepo con Francisco cuando dice que para hablar de arte es necesario haber practicado alguna disciplina artística, porque quien crea arte no lo hace para el goce del exclusivo círculo de “los artistas” si no para todos los hombres, incluidos aquellos que no hemos nacido con el don de expresar a través de una manifestación artística los sentimientos y emociones que surgen cuando ha conmovido nuestra sensibilidad una pintura, un libro, una melodía o una buena película. Si no es así, que clausuren las galerías, que cierren los teatros y quemen las editoras. El arte no es egoísta ni petulante.
-Programar es un arte? Sí, y también es una ciencia. Cuando escribescódigo (hay que dejar fuera de esta discusión a los muñequitos de las interfaces) combinas el don natural para encontrar soluciones creativas con el conocimiento formal para sustentar la implementación de esas soluciones creativas.Que tanto de ciencia y que tanto de arte tiene la programación? Pienso que eso lo defines tu como programador en la medida en combines estos ingredientes y eso se verá en el resultado: Una aplicación eficiente pero fría o una aplicación con personalidad.
Eduardo Yaguar M.
GUAYAQUIL-ECUADOR