Grandes Temas en Dos Volumenes
Yo no soy un gram programador, creo que nunca lo he sido, aunque por mucho años me dedicara a programar profesionalmente. No me entiendan mal, no es que no me guste programar ni que mi código apestte, en realidad me gusta mucho y he tenido muy buenos momentos programado, pero el trabajo no me deja mucho tiempo para hacerlo.
Por otra parte he conocido muchos programadores, la mayoría mediocres, muchos regulares, algunos buenos y unos pocos brillantes. Reconozco un buen programaodr cuando lo veo.
He sido responsable de formar a muchos programadores, particularmente en Java, en un pasado lejano, y en Ruby y Ruby On Rails más recientemente. Y he podido ver de cerca el proceso de aprendizaje de un paradigme, lenguaje, framework nuevo en una gran variedad de personas y ambientes.
Aquí van unas pocas recomendaciones libres de paja, idioteces, pendejadas, boludeces, tonterías o como lo quieran llamar en su variación local del español, para todos aquellos que quieran ser mejores programadores.
Asegúrate De Que Programar Es Lo Tuyo
Sueno complicado, pero es sencillo: si programar es como una droga para tí, entonces programar es lo tuyo. De lo contrario, cambia de trabajo o al menos quítate esa etiqueta de la cabeza para que vivas una vida más plena y feliz.
Si cuando eras un niño quería programar, si apenas pudiste te compraste un computadora para programar y no la soltabas, si durante tus estudios te comías los libros de algoritmos, y estructuras de datos adelantándote a los profesores, si te despiertas en medio de la noche con la solución al problema que no lograste resolver durante el día, si logras entrar en “la zona” y te cuesta salir de ese trance hipnótico, entonces, programar es lo tuyo.
Cubre Lo Básico
Dependiendo de qué carrera hayas estudiado, y el nivel que hayas alcanzado tus conocimientos de programación vas a variar en un rango bastante grande. Conocer los diferentes paradigmas de programación, algoritmos y estructuras de datos, así como los escenarios donde es ventajoso utilizar uno u otro es extremadamente importante porque el que sólo tiene un martillo, todo lo ve como un clavo.
Si hoy en día no sabes que son Patrones de Diseño ni como aplicarlos, o los acrónimos BDD y TDD son un misterio para tí, o no estás usando control de versiones, hay un buen chance que esto no sea lo tuyo o de que no estés en el ambiente adecuado.
Busca Un Trabajo Donde Se Aprecie A Los Programadores
Programadores hay regados por todos lados, y en todas las industrías, pero en pocas se aprecia el trabajo de los programadores. Nuestros programas rara vez constituyen un fin último en si mismos, pero hay organizaciones y personas que desprecian olimpicamente el trabajo de un programador, los sintomas suelen ser evidentes:
- Todo “es sencillito” y “puede hacerce rapidito”
- Se establecen metas poco realistas sin consultarte.
- Nadie te orienta o discute contigo como resolver un problema.
- No hay otros programadores buenos en el equipo con los que discutir.
- Nadie revisa tu código nunca.
- Siguen utilizando las mismas tecnologías y prácticas año tras año.
- Y así, ustedes ya me entienden.
Corre y pon tu renuncia, en ese ambiente no vas a poder crecer como programador, si eso es realmente lo que quieres hacer.
Se Orgulloso
Los buenos programadores son orgullosos, en serio. Si te reunes con otros programadores y no sientes la más mínima necesidad participar en la competencia de ver si tu chorro de orina llega más lejos, entonces tienes un problema de actitud.
El puro orgullo te va a llevar a hacer cosas interesantes, la mayor parte de ellas increiblemente estúpidas, pero divertidas e interesantes. No confundas orgullo con soberbia.
Aprende A Ser Humilde
Créeme no inventaste la rueda, y las posibilidades de que la inventes son pequeñas. Ser humilde significa dejar siempre abierta tu mente a la posibilidad de que estes equivocado, de que hay una mejor forma de resolver el problema y que pedir la opinión y ayuda a otros es algo completamente válido.
Ser humilde no significa ser inferior, ni tener un problema de autoestima, significa que sientes un gran respeto por quienes te rodean, como personas y profesionales. Significa que “no saber” no es un pecado, y es algo que puedes reconocer sin problema.
Haz La Tarea
Antes de empezar a echar código, piensa en otras alternativas para atacas el problema al que te enfrentas.
- ¿Existen problemas similares en la literatura? (Cubre Lo Básico)
- ¿Revisaste el código prexistente?
- ¿Qué es lo último que se ha escrito sobre el tema?
- ¿Realmente eres el primero que se enfrenta a este problema? (Sería raro)
- ¿Puedes aprovechar alguna librería existente?
No te quedes sólamente con el primer resultado en el resultado de la búsqueda en Google. La mayor escuela de programación que existe son llas millones de líneas de código abierto regadas por interner, busca en github, revisa el código, aprende de los grandes.
PREGUNTA
La escuela nos enseña que preguntar es malo, porque pone en evidencia “que no sabes”, cuando generalmente ese es el punto. Atrévete a preguntar, pregunta una y otra vez hasta que las respuestas te satisfagan. Por supuesto, asegúrate de haber hecho la tarea primero.
Insisto, deja el puto miedo a parecer un tonto, y PREGUNTA. A tus clientes, a tus compañeros de equipo, en las listas de correos, en el IRC en Twitter o en Stack Overflow, atrévete a preguntar. Para tu gran sopresa vas a encontrar a mucha gente más que dispuesta a responder y ayudar.
El Resultado De Tu Comunicación Es La Respuesta Que Obtienes
Este es un principio de la Programación Neurolinguística, muy posiblemente no lo entiendas en este momento, no importa. El punto básico que si tienes que enteder es que al final la parte más compleja e importante de todo es asunto del desarrollo de software es la comunicación.
La comunicacióm interpersonal es extremadamente compleja, comunicarse en forma eficiente te va a ayudar mucho más que tus destrezas mecanografiando porque muy rara vez el trabajo de programación sucede a solas, en una isla.
Más allá del nivel interpersonal, está el código y si bien los intérpretes y compiladores dejan poco margen para errores, la posibilidad de que en el futuro otra persona tenga que revisar tu código es muy alta. Tomando conciencia de que alguien va a estar del otro lado de tu commits:
- ¿Qué tal expresivo es tu código?
- ¿Mantienes un buen estilo para hacer el código legible?
- ¿Colocas comentarios útiles?
- ¿Tus commits incluyen sólo los cambios relavantes?
- ¿Tus mensajes de commit ayudan a entender la evolucón del código?
NO Es Rock En Tu Idioma
Para finalizar quiero decirte que por más que encanta el español como idioma, con toda su riqueza expresiva, tienes que aprender inglés. El inglés es la lingua franca del desarrollo de software, es la lengua que permite a programadores dispersos por todo el mundo compartir lo que saben y trabajar juntos día a día.
Si cuando tipeas http://google.com en tu navegador la págína que aparece está en español tienes problemas muy, muy serios. Estás viviendo al margen de una inmensa cantidad de blogs, proyectos Open Source, cuentas de Twitter, listas de correo, discusiones en IRC que son el cutting edge de la tecnología.
El hecho de que cualquier estudiante complete una carrera en el área de Ciencias de la Computación, Ingeniería de Sistemas o alguna otra asociada sin tener almenos la capacidad leer y escribir fluidamente en inglés sólo puede ser entendido como una discapacidad desde el punto de vista profesional.
Bueno amigos, eso es todo. Suerte!
-
yronu reblogged this from anibalrojas and added:
empezar este blog,...artículo excelente...programador...
-
nickthejam liked this
-
e3matheus liked this
-
e3matheus reblogged this from anibalrojas
-
ebriceno liked this
-
guillee liked this
-
zentraedi reblogged this from anibalrojas
-
zentraedi liked this
-
notangenerico liked this
-
romanandreg reblogged this from anibalrojas and added:
Great post by one of my menthors back in Venezuela, hopefully at some point...will...
-
romanandreg liked this
-
mcigs liked this
-
chiguire reblogged this from anibalrojas
-
chiguire liked this
-
juanrules reblogged this from anibalrojas
-
juanrules liked this
-
anibalrojas posted this