martes, septiembre 14, 2010

Feliz día del programador ( y 7 preguntas frecuentes )

¡Ayer fue el día del programador, felicidades a todos los que practican esta interesante profesión!.

Inspirado por este artículo, y recordando platicas con varios compañeros a lo largo de los años, redacte esta entrada con las preguntas más frecuentes con las que me he encontrado con respecto a esta profesión que me da de comer. Espero que les guste, y si tienen alguna otra que agregar o sugerencias, son más que bienvenidas:

1. ¿Programar es para todos?
No. Definitivamente no. Así como la gente que se desmaya viendo sangre y no se puede dedicar a asistir en una cirugía o en Emergencias, sucede lo mismo a la hora de programar. Programar no solo es aprender un lenguaje de memoria, y sentarse a digitar todo el día hasta que las cosas sirvan.
"Un programador (el buen programador) diseña con creatividad, la mejor lógica de la abstracción de la información para producir resultados útiles."
Y sobre todo, no pierde el tiempo re-escribiendo código. Un programador, es un individuo apasionado por resolver problemas, para hacer mejorar el diario vivir de los usuarios. Suele ser autodidacta, y no espera a que alguien más resuelva sus problemas, el procura resolverlos todos.

2. ¿Programar es una habilidad?
Si, tal como aprender a dibujar bien, o hablar en publico, programar es una habilidad, y como tal, requiere tiempo y dedicación para que alguien sea considerado un "maestro". Quizás no tengas la "habilidad natural" para programar (y no todos la tenemos), pero es valido recordar aquella frase que dice:
"Practice makes perfect" / "La practica hace al maestro".
 Si a ti te cuesta, pero te gusta o te apasiona, no dudes en practicar, leer, estudiar y practicar más, para llegar al nivel que deseas. Y no se olvide tampoco, de que las cosas buenas toman TIEMPO.
Lea, investigue, aprenda, y no deje de hacerlo.

3. ¿Cual es la actitud del programador?
La actitud correcta del programador, es "agarrar el toro por los cuernos". Es despedazar problemas, es simplificar procesos, es superar retos. Si eres un programador que se queja constantemente, esa actitud se vera reflejada en el código que escribas. Por eso es tan importante que un programador sea una persona feliz, tranquila, con ánimos de superación, positivo.
Quiero esta camisa :)
Escribir código es como escribir cuentos, y si el autor esta triste y escribe en ese estado, seguramente los cuentos serán un reflejo de los sentimientos del autor. Si usted se queja por el IDE, el OS, el compilador, así será el código que produce... esto yo he cometido ese error, y lo mejor que pude hacer fué cambiar de actitud, para no escribir código "lleno de quejas".

4. ¿Entiende los conceptos avanzados de la programación?
Ya sea con programación funcional u orientada a objetos, usted debe comprender los conceptos y los tecnicismos asociados a su estilo de programación favorito.
Estos conceptos ayudan a pensar "outside the box", y te ahorran trabajo (como los patrones de diseño).

Si tienes dificultad con los conceptos, lo mejor es "agarrarlo al suave" y aprender un paso a la vez, como los bebes cuando aprenden a caminar, un pasito a la vez.
Lea, pregunte, investigue, y practique con ejemplos hasta que domine el concepto por completo. Porque si no comprendes lo basico, ¿cómo vas a comprender lo avanzado?

5. ¿Qué recursos ocupa un programador en Internet?
Se los resumo en tres recursos que uso casi constantemente:
  • Google para buscar códigos de errores, y entender cuando surge un tipo especifico de "Exception".
  • Wikipedia para leer sobre leyes, teorías, conceptos.
  • StackOverflow para hacer las preguntas difíciles y también las preguntas tontas :)
  • La documentación del lenguaje que este usando, también le será muy útil, y las listas de correo, grupos y comunidades que se desarrollan alrededor.
StackOverflow.com
6. ¿Diseñar antes de programar?
Como Informatico, en algun momento nos enseñan la importancia de diseñar, y en otro momento caemos en la practica de codificar mientras se avanza (code as you go). Se necesita un balance entre diseñar el software, y el deseo de ponerse manos a la obra. Tenga al menos la idea de que va a hacer antes de sentarse a programar, piense y elabore un algoritmo, o un pequeño caso de uso, o un diagrama de ER, y le aseguro que va a terminar lo que tiene pensado hacer.
Un buen diseño, es hermoso.
Lo importante es no entrar en ese circulo vicioso de desesperación, aburrimiento, y cansancio tipico de los proyectos de software que no se diseñan con anticipacion. Al diseñar, se evita perder la direccion (resolver un problema), y se vuelve más facil el desarrollo (y la depuracion) del software.

7. ¿Cómo maneja un programador con el estrés?
Run!
Bueno, depende del individuo, muchos juegan o #Beben , y otros hacen ejercicio. El estres en este medio es bastante común, y se debe a varios factores, tanto internos como externos al programador. Lo mejor, suele ser encontrar un hobby totalmente diferente a la programación, y que de preferencia te aleje de la computadora. Practicar un deporte, dibujar o tocar un instrumento musical suelen ser excelentes formas de lidear con el estres asociado con la práctica.
Y claro, un cambio de actitud ayuda mucho también.

Muchas felicidades programadores, gracias a los que trabajan en los bancos, a los que contribuyen en el mundo del software libre, a los que enseñan sin recelo lo que aprenden, gracias a todos, porque nos hacen la vida más facil. ¡Saludos colegas!

Sunsetting Sr. Byte.

El Sr. Byte ha estado más de 5 años inactivo. Digamos que estaba en " code freeze ". Pero ahora es el último release. Quizas no...