Cómo convertirse en un programador superior (o al menos bueno) en cinco años si empiezo desde cero

Observando a los mejores programadores, creo que son en su mayoría influyentes, introvertidos y sociables cuando es necesario. Pueden ver el futuro y mantenerse alejados de tendencias terribles como Angular.js.

Son obstinados en el buen sentido. Hablan generalmente en conferencias o escriben un libro, o ambos. Personalmente me gustan estas personalidades y los mejores programadores:

  1. Matt Aimonetti (CTO de Splice). Él escribió Go Bootcamp. Es uno de los primeros en fusionar mis contribuciones abiertas en 2009.
  2. Chris McCord (Programador Senior en el astillero). Creó el marco Phoenix que ahora uso mucho.
  3. Jeremy Ashkenas (Creador de Backbone.js). No me gusta CoffeeScript, pero este tipo se destaca por sus formas obstinadas, que generalmente son buenas. Lo vi dar una charla hace unos años.
  4. Nathan Esquenazi (miembro del equipo Padrino Core y educador en CodePath). Como él, no me gusta mucho Rails. Padrino o simplemente Sinatra es suficiente para la mayoría de las aplicaciones. Simplificaron muchos métodos que se abstraen demasiado en Ruby on Rails.

En mi opinión, los mejores programadores tienen una intuición de nivel superior que muchos de los mediocres no tienen. Los mediocres siguen las tendencias todo el tiempo, porque su único propósito en toda su carrera es mantener un trabajo. Eso, por sí mismo, no es un mal objetivo. Pero de alguna manera revela intenciones y tendencias naturales. Estos mediocres no son científicos. Simplemente van con la corriente.

Supongo que obtuviste un título en Ciencias de la Computación si sabes lo básico. Eso incluye habilidades básicas de programación en estructuras de datos, algoritmos, diseño de hardware, etc.

La respuesta de Mat Na es muy buena (aunque el tiempo dedicado a cada tema, en mi opinión, está bastante comprimido y supone un estudio a tiempo completo). Esto es lo que sugeriría que sus objetivos “suaves” son:

  • No dejes que tus habilidades se vuelvan obsoletas. La tecnología ahora tiene una vida útil corta y es flexible y abierta a nuevos servicios y herramientas. Por ejemplo, las bases de datos relacionales son la norma ahora, pero permiten un tiempo para comprender las bases de datos NoSQL y las ventajas que tienen en algunos casos de uso. Cinco años o antes es un buen marco de tiempo para reevaluar sus habilidades técnicas.
  • No programe en un ambiente en solitario. Para mejorar, encuentre algunos programadores en su empresa que le gustaría modelar y trabajar en su proyecto. Obtenga revisiones de código y use el control de código fuente (como Subversion) y aprenda a trabajar en grupo. Trabajar en el vacío no le brinda una retroalimentación adecuada de su progreso para ser un programador superior
  • Tenga cuidado cuando se especialice en una tecnología porque puede “pintar en un rincón” en su carrera y terminar siendo un experto en una tecnología que nadie quiere o necesita. No puedo decir cuántos programadores de Struts están sin trabajo ahora. Las redes neuronales y la IA tienen más valor académico que comercial (en mi opinión) y puede caer en esta trampa, así que tenga cuidado.
  • Aprenda a guiar a otros para convertirse en un programador de primer nivel. Convertirse en un programador superior es una cosa, pero debe aprender de sus mentores cómo aconsejar a otros que sigan el camino correcto. A los cinco años, debería ser más observador sobre cómo difundir el evangelio de la programación desde sus mentores; Puede ser demasiado pronto para actuar como un experto. Concéntrese en sus habilidades de comunicación aquí.

Su pregunta es difícil y compleja.

Primero, es bueno concentrarse en algo. Así que quiero aprender a programar en redes neuronales e IA. Buen punto…

Lo que tienes que hacer es practicar. Decimos: “La práctica hace la perfección”.

Tienes que aprender más conceptos teóricos sobre redes neuronales e IA. Me refiero a algoritmos, programación eficiente, estadísticas, redes, matemáticas relacionadas con redes neuronales e IA.

Entonces tienes que recoger y lenguaje de programación. Depende si desea escribir código que es rápido en la ejecución pero largo para escribir, elija Assembler o C. Si desea escribir código más rápido, intente lenguaje como C #, Java o lenguajes funcionales como Haskell, Ocaml o lisp.

Le sugiero que elija un proyecto en el que esté interesado y trabaje en él. También puede unirse a un código abierto, participar en foros como Quora, stackoverflow.

En resumen, aprende todos los días.

Creo que mi respuesta te ayudará.

No creo que sea posible convertirse en un programador superior en cinco años. Sin embargo, lo que puede hacer es convertirse en un buen desarrollador.

Veo algunos consejos sobre líderes de equipo y PM. Definitivamente, ese no es el camino para convertirse en un desarrollador realmente bueno, pero más del camino de llegar más rápidamente a un salario decente.

Si quieres convertirte en un programador verdaderamente superior, debes dedicar 20k horas y también sumergirte en los fundamentos de las abstracciones y la teoría del lenguaje informático, creo. Y sí, como siempre sugiero: debe leer y comprender el SICP 😉 También debe trabajar en * múltiples * idiomas, preferiblemente desde distintos paradigmas. Si hace eso durante cinco años y domina al menos tres idiomas algo ortogonales, de hecho es un buen desarrollador.

Luego, continúe haciendo eso, ampliando y profundizando sus esfuerzos, durante los próximos 15 años y podría convertirse en un programador superior.

Por mi sincero consejo, no establezca el límite de tiempo. Puede convertirse en un programador de primer nivel dentro de 2 años. Lo que debe hacer es seguir el camino correcto y la preparación para las tendencias laborales actuales. Sigue practicando mucho. Si continúa programando durante los próximos cinco años, puede convertirse en Analista / Arquitecto de sistemas / Líder de equipo / Gerente de proyecto / Gerente o puede abrir su propia casa de software o puede convertirse en un maestro competente. Simplemente manténgase con la tecnología que ha elegido.

Nunca serás un “programador superior” porque no existe tal cosa. Incluso las personas consideradas “principales programadores” no se ven a sí mismas como tales. Hacemos lo que hacemos Somos buenos en algunas cosas y no muy buenos en otras.

Tampoco hay realmente “buenos programadores”. Hay quienes pueden construir un producto y quienes pueden hacerlo. El código más limpio, que funciona perfectamente, pero que no tiene ningún uso, es peor que el código incorrecto, aceptablemente estable, pero tiene problemas (no respondo por eso tampoco, pero …)

Puedes convertirte en un diseñador superior. O un muy buen diseñador. Los programadores no son simuladores de llaves que producen código mágico de nuestros dedos mágicos. Creamos nuestros propios productos u obtenemos especificaciones de otros diseñadores y creamos el producto. Somos artesanos O constructores. Como quieras verlo. Pero nuestro arte no se refleja en el proceso, sino en el producto final. A NADIE LE IMPORTA EL PROCESO. Solo otros desarrolladores.

Cual es el camino Elija su idioma, diseñe su producto y comience a construirlo. Practica, practica, parctice. iteraciones, iteraciones, iteraciones. Así es como creces.

iTunes University tiene algunos buenos cursos de Stanford. Busca a Karel el Robot. Es infantilmente simple, pero te lleva a lo más básico.

– Decide la plataforma / idioma en el que quieres trabajar.

– Inscríbase en un curso relevante para obtener un conocimiento de nivel avanzado.

– Practica, practica y practica

– Haz alguna certificación auténtica.

– Únase al foro de soporte, ayude a la comunidad proporcionando soluciones a sus problemas. De esta manera también aprenderás y practicarás.

Ahí tienes …

Simplemente sigue codificando, únete a reuniones, participa en hackatones y vive y respira el enfoque articulado por Edmond Lau en “El ingeniero eficaz”

¡Salud!