En busca del HowTo del buen programador

Hola chicos! Bienvenidos de vuelta a mi rincón. Esta vez quiero hablar sobre programación. Todo empezó en mi ultima clase. Cuando entré al salón, había una cita escrita en el tablero con letras grandes que decía:

“Controlar la complejidad es la esencia de la programación computacional.”
                                                            Brian Kernighan

Mi profesor de programación suele escribir frases celebres como esa en cada clase, pero debo confesar que esta vez, el mensaje me impresionó bastante y además, me inspiró a escribir este post.
Actualmente, conozco las bases de algunos lenguajes de programación, no es la gran cosa en realidad, pero ahora, quiero aprender los secretos que hay detrás de la buena programación. No me refiero a los trucos específicos sobre algún lenguaje o paradigma específico, no, hablo sobre la esencia de un buen programador. Es como cuando ves a un crack de fútbol jugando y reconoces su talento único, su estilo particular. Definitivamente, quiero desarrollar mi propio estilo de programación… pero, cómo lograrlo? existe un HowTo para ser un buen programador?

Ok, soy un novato y necesito aprender a gatear antes de aprender a caminar, eso lo tengo muy claro. Por el momento, tengo algunas habilidades básicas trabajando con scripts en Bash, C, C++, Python, Perl, Java, C# y una vez le di una rápida probada al lenguaje Ensamblador por una hora (una experiencia algo ruda para mí).
Mi propio balance me dice que voy a necesitar años y años de práctica. De todas maneras, no me importa cuanto tiempo tome; desde el comienzo, quiero hacer las cosas bien.

Algunos de mis compañeros de clase, creen que la clave para ser un buen programador está en el IDE (Ambiente de Desarrollo Integrado). A mi juicio, ellos decidieron renunciar a su responsabilidad como desarrolladores y se la dieron a su herramienta de programación. Pueden creerlo? Yo no puedo estar de acuerdo con esto. Entiendo que un buen IDE puede ayudarte a ser más productivo, pero dónde debería estar el talento? en el computador o en mi cabeza? Cuál es el papel que desempeña un IDE? La idea de depender de una aplicación especifica de software para obtener mi primer trabajo dentro de algunos años, me vuelve loco! :S Quiero desarrollar mis propias habilidades como informático y definitivamente, no quiero ser un zombie detrás de una etiqueta como Microsoft .NET Framework o algo por el estilo. Quiero ser contratado por mi currículum, quiero recibir un pago por mi trabajo y no por las herramientas que utilizo… estoy pidiendo demasiado?

Mi vecino Billy, de otro lado, dice que el secreto de la buena programación es sencillo: debo aprenderme la API completa del lenguaje que quiero utilizar. Él dice que si conoces todas las funciones o métodos, entonces puedes escribir la pieza de código que quieras y eso te hace un buen programador. Por supuesto, no estoy de acuerdo con Billy.
Creo que la programación es en gran parte diseño, de otra manera si todo dependiera de las API’s, crear un programa podría convertirse en una tarea para otros programas y no para seres humanos. No te parece?

He leído que algunos científicos se encuentran trabajando en el tema, utilizando Inteligencia Artificial (IA) para crear desarrolladores virtuales, y quizás algún día, lo logren. Suena genial, sin duda alguna, es más, puedo imaginarlo: enormes maquinas de alto desempeño creando algoritmos para resolver problemas complejos en un puñado de nanosegundos. Algunos de ustedes podrían estar pensando: “ese no es el futuro, es el presente!” y yo digo: si… pero, ya pueden resolver cualquier clase de problema? No lo creo, además, la verdad es que no me asusta. Por qué? bueno, en mi opinión personal, creo que programar es un arte, como escribir una novela o pintar… se necesita poner algo de tu alma, de sentimiento en eso que haces. Cómo podría hacerlo una maquina?
Por supuesto, también entiendo el punto de vista del mercado: el código fuente solo es un conjunto de mensajes extraños detrás del software, y el único punto que importa es vender (el dinero habla de nuevo). “Si compila, véndalo!” es una de las frases favoritas de mi profesor de programación cuando nos habla sobre la forma en que las grandes compañías de software operan.

Pensar como un artista cuando trato de escribir una pieza de código, es un error? Quién debería ser un buen programador? ese que crea grandes programas rápidamente? o aquel que escribe el software preciso para resolver un problema? Cuál es la clave del buen software? millones de lineas de código? A quién le importa la belleza del código por estos días? Si tienes alguna pista al respecto, por favor, avísame!

En mi clase de programación, aprendí algunas cosas básicas sobre “Aseguramiento de la Calidad del Software” (SQA en inglés). Según lo que entendí, esta técnica te ayuda a detectar los errores en el software que te encuentres desarrollando, lo cual es bueno, porque no deseo crear programas de computadora para generar nuevos problemas, sino para resolverlos. El punto es, puede una pieza de código estar libre de errores y ser código feo al mismo tiempo? Me gustaría pensar que es imposible, pero no tengo suficiente experiencia para dar una buena respuesta.
La única cosa que puedo decir es que no quiero escribir código feo. A propósito, quién hizo las pruebas de SQA para Windows Vista? Alguien lo hizo antes de que Microsoft comenzara a venderlo? Aún recuerdo leer en los sitios Web de Dell: “Dell recomienda Windows Vista” en esos días cuando el mundo entero comenzó a protestar por la inestabilidad del producto y el pésimo soporte del hardware (Vista capable te recuerda algo?). El mercadeo es un arte oscuro, no te parece?

Por ahora, estoy tratando de encontrar mi propio estilo estudiando el código de famosos programadores como Linus Torvalds, Alan Cox y Miguel de Icaza. He estado revisando algunos de sus proyectos y creando mis propios programas, poniendo atención en las características del código que ellos escriben. El proceso es lento y necesitaré de toda mi vida para obtener una gran habilidad, lo sé y tengo que lograrlo porque es mi naturaleza, después de todo, soy un g33k y me encanta programar!

Si tienes algún consejo sobre este tema, cualquier ayuda es muy muy bienvenida!🙂

print “Nos vemos luego amigos! Hora de patinar! :P\n”

PD: A propósito, te recomiendo leer el artículo “Cómo reconocer un buen programador” (en inglés). Buen material!😛

Tags: ,

4 Responses to “En busca del HowTo del buen programador”

  1. ceronman Says:

    Muy chévere tu post. Ser un buen programador es algo que toma mucho tiempo y que tal vez nunca se alcance completamente. Siempre hay algo que se pueda mejorar. Mi amigo Alejandro Forero, uno de los mejores programadores que conozco, empezó un extenso artículo explicando algunos principios de la buena programación. Te recomiendo que le des una leída:

    http://wiki.freaks-unidos.net/weblogs/azul/

  2. soloidx Says:

    Mira que es tan interesante tu post que me veo obligado comentar al respecto🙂 (por que casi nunca lo hago), llega el momento en la vida de un programador en la que aparece una voz interior que te plantea la situacion que acabas de exponer estoy muy seguro que a todos no pasa y ya depende de cada uno si decide acallar esa voz y hudirse en el conformismo o decide emprender un largo camino rumbo a su perfeccion (juasss ya hasta paresco maestro espiritual oriental jeje XD), hace un tiempo me decidi buscar el mejor libro de programacion para ver como piensa un programador de verdad y tras una busqueda por horas en internet me tope con TAOPC (The Art of the Computing Programing) escrito por Knuth (Me alegra que lo hayas citado) y me sorprendio mucho que en el libro no encuentre mas que pseudcodigo creo que para ser programador no tienes que depender de lenguajes ni de IDEs (eres un programador, no un productor de codigo) http://conocimientolibre.wordpress.com/2007/11/29/programador-no-productor-de-codigo/ .
    Entre los blogs que me gusta leer (aparte de cibertito claro😉 ) me gusta mucho el de PicandoCodigo en especial me gusto su reflexion en cuanto a los dos tipos de programadores que existen http://picandocodigo.net/2007/11/los-dos-tipos-de-programador/

    En conclusion espero que mi comentario sea muy constructivo y no dejes que se apague tu voz interior, esa vos que senti oir desde el post en donde mencionaste el Manifiesto del Hacher

    El mejor programador no domina lenguajes, domina su mente

  3. cibertito Says:

    Hola Ceronman!
    Que bueno que estés de vuelta! siempre tienes algo nuevo que enseñarme😛
    Acabo de darle una mirada al blog de Alejandro, y ese post sobre desarrollo está genial! Tal parece que estaba en lo correcto, va a tomarme una vida aprender a dominar todos los detalles relacionados con la buena programación… es toda una disciplina, como un arte marcial :O
    Pues nada, a seguir practicando🙂

    No te pierdas Ceronman!😛

  4. cibertito Says:

    Hola Soloidx!

    Tu comentario me deja bastante contento, pues por un momento pensé que estaba sólo en el universo… quiero decir, creí que estaba siendo demasiado romántico al pensar que como desarrollador, tenía que procurar poner algo de arte en el código, de alguna manera.
    Eso que dices de la voz interior, es totalmente cierto, es algo que uno no puede ignorar… está allí! yo la sentí! no estoy loco!!! je je je

    Oye, muchas gracias por dejarme un comentario. Se me hizo un gran honor, teniendo en cuenta que nunca comentas🙂

    Soloidx, siempre bienvenido a mi blog!😀

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: