¿Cuáles son algunos desafíos que puedo plantearme si quiero convertirme en un gran desarrollador?

Creo que su premisa es defectuosa: que puede convertirse en un gran desarrollador sin pasar mucho tiempo en ello.

Probablemente necesite pasar casi 10,000 horas de práctica enfocada para ser grandioso, si cree en los estudios.

Dicho esto, aquí hay algunas tareas que completé para convertirme en un gran desarrollador:

  • Lea cualquier libro o artículo de programación que pueda tener en sus manos y que atraiga su atención.
  • En el idioma que elija, escriba programas cada vez más complejos escritos por otros y haga todo lo posible para comprender cómo funciona cada uno. (El método “Aprender Python de la manera difícil”).
  • Escriba un juego basado en texto donde el usuario pueda pasear por una ciudad virtual y hacer cosas interesantes en cada ubicación. Agregue soporte de red para que alguien pueda conectarse a su aplicación como servidor y explorar la ciudad. Luego, reescribe todo el juego para que varias personas puedan iniciar sesión a la vez y se vean mientras deambulan.
  • Escriba código que manipule gráficos: cargue una imagen, realice alguna transformación en ella y guárdela de nuevo.
  • Escriba un lenguaje ensamblador que pueda activar una llamada al sistema para escribir texto en la pantalla. Luego cargue un archivo desde el disco.
  • En lenguaje ensamblador, escriba un juego completo, manejando la entrada, los eventos, los gráficos y cualquier física usted mismo. Comuníquese directamente con el hardware cuando sea posible, pero realice llamadas al sistema cuando lo necesite. Para obtener puntos de bonificación, hágalo en una plataforma de 8 bits. Para obtener puntos de bonificación adicionales, prueba el Game Boy.
  • Lea acerca de cuánto tiempo lleva cada instrucción en lenguaje ensamblador (probablemente en Pentium o anterior, o 68000, o una CPU de 8 bits). Optimice su código de gráficos según lo que aprendió.
  • Escribe un analizador en C ++. Luego escriba otro, y luego escriba un compilador de C en C ++. (Esta fue mi primera exposición a C ++; ¿prueba de fuego?)
  • Lea sobre la metaprogramación de plantillas. Aprendí de http://www.amazon.com/Modern-Des…. Usa algunos de los conceptos más avanzados.
  • Aprende a codificar en LISP. Escribe un juego en él.
  • Aprende el idioma Lua. Tiene mucho poder de LISP con una sintaxis mucho mejor. Escribe juegos usando Lua.
  • Aprende Python, si aún no lo has hecho. Vale la pena tenerlo en su caja de herramientas.
  • Juega con algunas de las herramientas de aprendizaje automático en Python.
  • Escribe una aplicación. O tres Elija las herramientas que le parezcan adecuadas.
  • Aprende Arduino y escribe aplicaciones para esa plataforma.

Y, sobre todo, no haga preguntas, ni a mí ni a nadie, sobre cómo definir cualquiera de estas tareas. Parte del aprendizaje es la investigación. Hacer preguntas en el camino es hacer trampa.

O ignora la lista completa y simplemente ponte por tu cuenta y encuentra cosas que parezcan interesantes, y aprendelas. Ese es el verdadero secreto: debes inspirarte en el viaje, y no puedes caminar en los zapatos de otra persona y esperar estar inspirado de manera similar.

Leer blogs Lea los subs de programación en Reddit. Lea las noticias del pirata informático. Leer libros. Aprende lo que parece interesante. Establece tus propias tareas. No le pidas inspiración a la gente. Estar inspirado. Y luego aprende un poco más.

Sí, aprendí lenguaje ensamblador joven. Era la única forma de escribir un juego en aquel entonces. Y me da una gran comprensión intuitiva de cómo funcionan las computadoras. Pero hoy ni siquiera sé que ayuda: el ajuste manual que una vez tuvimos que hacer para que los juegos funcionen parece pintoresco en una época en la que tienes procesadores gráficos integrados en la CPU que pueden empujar píxeles más rápido que el ensamblaje mejor ajustado idioma. Y cuando puede ser flojo y simplemente enviar su aplicación en una descarga de 4 gb en lugar de tener que descubrir cómo encajarla en 128k de RAM.

Lo importante ha cambiado. Encuentra tu pasión y síguela. No intentes seguir a alguien más, porque el suyo podría no ser el camino correcto, ya sea porque los tiempos han cambiado o simplemente porque eres una persona diferente.

Buena suerte.

Depende de lo que un gran desarrollador signifique para usted: ¡todo será más fácil si define lo que quiere decir con excelente!

¿Has conocido o leído sobre alguien que consideras un gran desarrollador? Si es así, trate de entender lo que hacen y cómo lo hacen. Entonces hazlo tú mismo 🙂

Cuando era un joven programador hace muchos años, me inspiré por primera vez en las personas que hicieron cosas locas con sus Commodore 64 y Amigas. Pregunté qué se requería para hacer esas cosas y luego dediqué unos años de mi vida a aprender eso.

Lo siguiente que realmente me impresionó fueron los gráficos en 3D, así que pasé unos años aprendiendo álgebra lineal (matemáticas), algo de representación 3D básica, etc.

Después de eso, me sorprendió lo que la gente hacía en Internet, especialmente los juegos multijugador (MUD en particular), así que pase unos años aprendiendo todo sobre Ethernet, TCP / IP, sockets, etc.

Y así…

¿Me considero un gran programador? No, de ninguna manera. Incluso después de 20 años como programador profesional, siempre me sorprende lo que otros desarrolladores pueden hacer y siempre me siento como un novato.

Claro, cuando vuelvo a las cosas que hago (o hice) dominar, me siento bien (no genial) y algunas otras personas podrían incluso decirme que soy genial en esa cosa en particular.

Haz lo menos posible con la mayor cantidad de ganancia.

Bill Gates dijo que le gustaba la gente perezosa, pero realmente estaba hablando de contratar empleados que fueran muy eficientes y efectivos para resolver sus problemas. Un gran desafío sería resolver un gran problema con muy poco esfuerzo.

Aprenda un nuevo idioma y algunos marcos por año.

Recuerdo que una vez que alguien en un blog o respuesta de Quora mencionaba algunos desafíos: aprender un nuevo idioma cada año y un nuevo marco cada pocos meses. Esto parece un gran desafío, pero si desea ser un gran programador, podría valer la pena.

Ganar dinero.

Creo que el mayor desafío es descubrir cómo sacar el máximo provecho de sus talentos. También es una muy buena métrica de grandeza.

Primero que nada: para ser grandioso necesitas tiempo. Si no tienes mucho, ya estás muy limitado.

Volver al tema: ¿Qué tipo de desarrollador quieres ser? ¿Desarrollador web? ¿Quieres desarrollar aplicaciones locales? Desarrollador móvil? Como no mencionó lo que desea desarrollar o lo que le interesa, solo puedo recomendar hacer cosas que son muy generales. Aprenda sobre las estructuras de datos e impleméntelas. Busque algunos problemas complejos y cree heurística (p. Ej., Problema de vendedor ambulante, mochila). Piense en algunas aplicaciones que resuelvan algunos de sus problemas diarios e impleméntelos.