La carrera de un programador es una experiencia interesante llena de altibajos. Dada su pronunciada curva de aprendizaje, es totalmente previsible que atravieses períodos de frustración, iluminación, arrogancia y todo tipo de estados emocionales intermedios. En este artículo, relajémonos y repasemos cada una de estas etapas a través de una serie de divertidos GIF.
Etapa 1: Novato

En tus primeros días en el mundo laboral, todos estamos llenos de pasión. Durante este período, no tienes ni idea de qué hacer. Como un pez fuera del agua, cada línea de código es un misterio para ti. ¿Doctype? ¿Eh? ¿Diablos, para qué sirve este <div>? La primera etapa es abrumadora, angustiosa y a la vez emocionante. ¿Cuántos malditos lenguajes hay que aprender?
Sin embargo, tu mayor ventaja quizás sea que no sabes lo profunda que es el agua.(Nota del traductor: el texto original dice "you have no idea how deep the rabbit hole goes", una referencia a Alicia en el País de las Maravillas, en la que Alicia cae en una madriguera de conejo sin fondo.)Aprender HTML es solo un pequeño paso hacia adelante.
Etapa 2: Primeros pasos

Aunque te costó un poco de trabajo, al final aprendiste lo suficiente para dar tus primeros pasos en el mundo de la programación. Aunque la primera etapa fue un completo desconcierto del tipo "¿cómo lo hago? / ¿por dónde empiezo?", en la segunda etapa ya empiezas a construir lentamente tu conjunto de habilidades. Por supuesto, la sintaxis de CSS para definir estilos todavía te resulta extraña, pero al menos puedes modificar el código en el editor que acabas de comprar y ver el efecto de los cambios en el navegador. ¡Es una sensación maravillosa!
Etapa 3: Frustración extrema

Imagina que estás perdido en una cueva, iluminando cada túnel con una linterna para encontrar la salida. Con cada paso, esperas ver un destello de luz. Desafortunadamente, la curva de aprendizaje en nuestro sector es muy pronunciada. Lamento decirte que ese destello de luz no durará mucho. Debes prepararte para pasar cientos de horas en esta etapa. Cuando intentas desesperadamente entender qué significan esas cosas que te vuelven loco, necesitas leer libros técnicos una y otra vez, sin parar.
Si te sientes demasiado frustrado como para soportarlo, tranquilízate y piensa que todos hemos sentido lo mismo en una u otra etapa de nuestra carrera. No estás luchando solo. Persiste y pronto llegarás a la etapa de la "iluminación".
Etapa 4: El momento de la iluminación

El momento de la "iluminación" es una de las mejores sensaciones del mundo: de repente, de pronto, "lo lograste": "¡Ohhh, ahora por fin lo entiendo!". En mi caso, he descubierto que los grandes avances en programación suelen ocurrir de noche, cuando los demás están durmiendo. Después de leer el código ocho veces, lo que antes era incomprensible, ahora al menos se aclara un poco.
En esta etapa, todas las técnicas y lenguajes que has aprendido empiezan a ser útiles.
Etapa 5: Código frágil

Igual que las etapas anteriores, la etapa "frágil" también es bastante larga. En esta fase, construyes aplicaciones con éxito y logras el resultado que deseas, pero el código subyacente no puede soportar cambios repentinos en los requisitos del cliente.(At this point, you are successfully building applications and achieving your desired end result, but the underlying code is one client feature-request away from popping. Nota del traductor: la segunda parte de la oración, después de "but", es bastante difícil de traducir; espero que algún experto pueda ayudar.)En este punto, los métodos que escribes tienen decenas de líneas, y el concepto de pruebas aún no se ha formado en tu mente.
Pero al menos estás haciendo algo real. Por ahora, limita tus pull requests en GitHub a escribir documentación y corregir errores ortográficos. No subestimes la ayuda que estos trabajos pueden aportar a los demás.
Etapa 6: Imitación

La etapa de imitación es muy importante. No hay mejor manera de aprender las técnicas de programación adecuadas que imitar el código escrito por los gurús que admiras, incluso copiarlo línea por línea. No te desanimes: toda carrera con un componente artístico incluye una etapa de imitación. Afortunadamente, GitHub hace que esta admiración silenciosa sea más fácil que nunca. Claro, copiar código solo te ayuda hasta cierto punto, pero es un buen comienzo. Imita a quienes te inspiran y, con el tiempo, empezarás a desarrollar tu propio estilo.
Etapa 7: Arrogancia
En este punto, por fin empiezas a encontrarte en una situación en la que, por supuesto, todavía tienes un enorme margen de mejora, pero tu confianza también se está inflando rápidamente... ¡quizás demasiado rápido! Se dice a menudo que en los primeros años uno no es capaz de darse cuenta de lo ignorante que es.
En esta etapa, evita la tentación de volverte demasiado arrogante. La arrogancia no le hace bien a nadie; solo hará que tu yo futuro, más brillante, niegue con la cabeza al recordar el pasado. Cuando quieras dejar un comentario sarcástico en GitHub, Reddit o StackOverflow como "Amigo, aprende a programar", no lo hagas. Hace muy poco tú también eras un completo novato. Transmite energía positiva en lugar de desanimar a los demás. Estamos en la misma trinchera, solo que en diferentes etapas.
Etapa 8: Aprender Vim

Si alguna vez has observado a un desarrollador con el que trabajas y te ha sorprendido su velocidad operando en el editor de código, es probable que esté usando Vim. Aunque la curva de aprendizaje de Vim es muy pronunciada, una vez que lo dominas, tu flujo de trabajo parecerá mágico ante los ojos de los demás.
Esta es la etapa en la que empiezas a dominar tus habilidades de programación y tu flujo de trabajo; las herramientas adecuadas son tan importantes como las propias habilidades.
Etapa 9: Cuando el código se convierte en arte

Aunque requiera miles de horas, un día miras tu código, lo lees con la misma facilidad con la que operas la línea de comandos, y te das cuenta de que es casi como una obra de arte. Tu código tiene control de versiones, buenas abstracciones, una testabilidad perfecta, escalabilidad y es fácil de leer. En algún momento de tu carrera, quizás te enorgulleciste de poder escribir código misterioso, confuso pero funcional. Sin embargo, usar todos los trucos y características ocultas de un lenguaje de programación, o reducir una lógica compleja a una sola línea solo para presumir de tu inteligencia, no son señales de un desarrollador maduro. Al contrario, muestran a un desarrollador arrogante que no piensa en absoluto en quienes mantendrán el código en el futuro.
Cuando la legibilidad del código te importa tanto como lo que hace, el código se convierte en arte. En esta etapa, escribes código para los seres humanos, no para las máquinas.
Etapa 10: Experimentado

Cuando la programación se convierte en un instinto, llegas a la siguiente etapa de tu carrera. En este punto, ya no piensas en el nivel de los lenguajes o frameworks; simplemente identificas el problema y eliges la herramienta correcta de tu caja de herramientas de desarrollo para ofrecer una solución. Un desarrollador experimentado sabe por qué el enfoque de "vaquero solitario" rara vez es el camino correcto. Discutir cada nueva característica con todos los miembros del proyecto, preparar la pizarra, escribir historias (nota del traductor: "story") y generar pruebas: son trabajos que se completan antes de escribir la primera línea de código real.
A estas alturas, ya te has convertido en un desarrollador maduro, reflexivo y con quien todos quieren trabajar. ¡Felicidades!
Etapa 11: Estrella de rock

Además de tu trabajo diario, hablas a menudo en seminarios y te conviertes en un líder detrás de innumerables proyectos de código abierto; te tomas tiempo para participar y contribuir al futuro de la web a través de listas de correo, y al mismo tiempo ayudas a los novatos en IRC. Eres de esas personas que disfrutan escribiendo compiladores y analizadores sintácticos.
Los demás te llaman "estrella de rock" o "ninja", pero detestas ese tipo de etiquetas. Sabes mejor que nadie que el aprendizaje no tiene fin.
Fuente: http://blog.jobbole.com/56252/