¿Cómo te entrenas para ser un experto o incluso un programador de computadoras decente?

Disculpe la respuesta sin refinar, pero tengo poco tiempo por minuto.

Soy un desarrollador web totalmente autodidacta, y he estado programando durante unos 4-5 años. Para educarse a sí mismo durante 5-10 años se requiere una gran pasión por ese tema.

¿Qué me falta por no haber asistido a la universidad? Tres cosas principales: algunos de los fundamentos, discusiones rápidas de ida y vuelta y contactos sociales. Diría que la falta de lo anterior ha impedido mi progreso hasta cierto punto, por lo que le aconsejaría que se concentre en crear un entorno que no los descuide.

Mi consejo sería:

  1. Leer: enséñese a programar en diez años
  2. Comprar: ¿Qué libro debería leer cada programador?
  3. Escuchar: Programación de podcasts
  4. Estudio: Introducción a la informática y la programación.
  5. Estudio: página en Labautopedia.org
  6. Grabar: recuerda todo con Evernote
  7. Salir: Encuentra grupos Meetup cerca de ti
  8. Unirse: Desbordamiento de pila (y hacer preguntas)
  9. CÓDIGO TODOS LOS DÍAS!
  10. Encuentre a alguien que esté dispuesto a revisar ese código (pagado o no)

Una vez que tenga confianza en sus habilidades, si tiene tiempo, participe con la comunidad (github), contribuya a algunos proyectos y haga que su código sea analizado.

Te recomiendo que te centres en un solo idioma al principio. Python y Java se usan en la mayoría de los cursos de CS, aunque he desarrollado bastante la relación con Ruby. Dejando de lado la elección del idioma, piense en el tipo de programación que desea hacer. ¿Desea crear aplicaciones web, aplicaciones de escritorio, aplicaciones móviles, juegos? Decida, luego investigue sobre cuál sería un buen idioma para comenzar.

La pasión por la programación es crítica; de lo contrario, estoy seguro de que te darás por vencido. Intenta estructurar tus estudios lo mejor que puedas. No se deje engañar: esta es una empresa enorme que lo hará llorar, apretar los puños y querer lanzar su monitor contra la pared. A medida que pasa el tiempo, esos momentos de frustración disminuyen y son reemplazados por momentos de claridad.

No puedes fallar si lees todos los días y codificas todos los días .

La práctica es tu mejor amiga. Todos los libros, tutoriales, podcasts, videos y demos no serán de mucha ayuda si nunca los aplica de verdad. No me refiero a resolver el tutorial y concluir que ahora conoce el tema: estoy hablando de experimentar e implementar vigorosamente todo lo que un tutorial o documentación cubre en un proyecto real y real. La forma de aprender a programar que estoy a punto de sugerir te hará llorar en un rincón si no eres resistente, pero el pago es tan grande que al final te reirás del coño frustrado que eras:

1. Encuentra una idea.
Piensa en un buen proyecto. ¿Quieres ser un programador de bajo nivel? ¿Hacer C o C ++ y aprender a crear otros lenguajes de programación o juegos AAA de alto rendimiento? ¿Desea ser un desarrollador web y producir sitios web que lleguen a millones en muy poco tiempo y muestre sus habilidades de diseño y experiencia de usuario o incluso la habilidad de JavaScript? Cualquiera sea su objetivo, simplemente elija un proyecto. Incluso si se trata solo de una aplicación ToDo o algo tan simple como Instagram donde tienes una parte móvil que no hace nada más que subir a un back-end, elige un proyecto y quédate con él. Le sugiero que piense en algo que realmente le gustaría tener como herramienta, pero no lo haga. Por ejemplo, estaba realmente descontento con los motores de blogs, así que me propuse hacer los míos.

2. Elija una pila de tecnología.
Observe cómo solo elige una pila de tecnología después de encontrar una idea. Esto se debe a que cualquier proyecto es factible en cualquier lenguaje de programación común; algunos obviamente son más adecuados para algunas cosas que otros, pero al final todo lo que importa en este proyecto específico es la cantidad de experiencia que se obtiene de él. Entonces, si decidiste hacer un editor de texto súper rápido para competir con Sublime Text, probablemente alcanzarías el nivel más bajo posible, tal vez incluso tan bajo como C ++. Si quisieras hacer un clon de Instagram, podrías hacerlo fácilmente en PHP. Es muy importante pensar detenidamente estos dos pasos antes de comprometerse: debe seguirlos hasta el final.

3. Obtén lo básico
Una vez que haya elegido un idioma, aprenda los conceptos básicos. Encuentre tutoriales, libros, muestras: no pase más de una semana (¡una semana muy intensiva!) En ellos, pero sea minucioso.

4. Prepare sus marcadores
Deberá conocer algunos de los mejores recursos disponibles. Sin dudas, no hay mejor sitio para aprender codificación que http://stackoverflow.com . Encuentre varias comunidades en Google+ y únase a ellas: hay una gran cantidad de grupos orientados a la programación listos para ayudar. Sigue a algunos bloggers decentes que se ocupan de los idiomas que te interesan. Básicamente, solo construye tu entrada, asegúrate de que sea filtrada, comprensible y útil. Participar en discusiones a nivel mundial en foros no tiene sentido, siempre habrá una multitud de personas luchando con lo básico y ayudarlos a lidiar con Hello Worlds no es ayudarlos. Ayúdese interactuando de manera activa o pasiva con los profesionales. Un buen recurso de mentoría para PHP es PHP Mentoring | Visión que te une con alguien más conocedor para una experiencia de aprendizaje práctico (de forma gratuita: es una comunidad impulsada por el trabajo en equipo).

5. Muerde y no te sueltes.
Comience su proyecto. Muévase 2 pulgadas, quédese atascado, pregunte cómo moverse. Google alrededor. Vaya a Stackoverflow y pregunte a la gente sobre su problema, pero solo DESPUÉS de buscar una respuesta a fondo. Simplemente no hay mejor manera de aprender que tus propios errores y mucha práctica. Un guitarrista puede conocer toda la historia y la teoría sobre las guitarras, o incluso leer notas musicales, pero no lo ayudará a tocar Flight Of The Bumblebee. Necesita practicar, durante meses, muchas horas todos los días. Maldecirá, sangrarán sus dedos, estropeará su guitarra más de una vez, pero al final todo valdrá la pena.

6. No intentes hacerlo perfecto, haz que funcione
Siga la filosofía del “producto mínimo viable”. Si el proyecto es lo suficientemente bueno, está hecho. Nitpicking no te ayudará a mejorar, a menos que trates con problemas de optimización muy específicos. Cuando llegue a esta etapa, revise todo su código nuevamente, formatee para que se vea bien (sí, el código limpio ES importante), comente todo para que otros que puedan verlo sepan qué está sucediendo dónde y por qué, y luego abra fuente de ella. No espere que su primer proyecto sea un éxito y, sobre todo, no espere que sea un éxito comercial. Tales ocurrencias son pocas y distantes en el medio. En cambio, concéntrese en publicarlo publicando en http://github.com o en Google Code y deje que las personas le den su opinión. Habrá trolls y probablemente terminarás siendo insultado por los Linuses del mundo, pero también habrá personas dispuestas a darte comentarios muy constructivos: escúchalos. Aprende de ellos. No tomes la crítica como algo malo, tómalo como algo increíble. Aquí es donde realmente comienzas a aprender de tus errores.

7. Hazlo todo de nuevo.
Cuantos más ciclos como este hagas, más aprenderás, obviamente. Después del tercer o cuarto ciclo, notará que ahora sabe ciertas cosas de memoria y puede comenzar a codificar sin pensar demasiado. Aquí es cuando puedes llamarte conocedor de un idioma y puedes comenzar a verlo como una carrera viable. No se llame a sí mismo desarrollador después de un proyecto, o después de terminar un curso de Coursera: realice al menos dos o tres de estos proyectos. Quién sabe, su preferencia de idioma podría incluso cambiar y podría hacer la transición a un área de desarrollo completamente diferente durante su segunda ejecución.

8. No te rindas.
Tú fracasarás. Muchas veces. Su entorno de desarrollo se descompondrá (especialmente en Ubuntu), su programa dejará de funcionar sin que usted haga nada, se quedará atrapado en un problema completamente incapaz de encontrar una respuesta en línea. Lo importante es no desanimarse y seguir intentándolo. Eventualmente tendrás éxito si sigues intentándolo, te lo prometo.

Dicho esto, ¡buena suerte!

PD Otro recurso nuevo y valioso es este: la forma más rápida de aprender un nuevo lenguaje de programación

“Para ser un buen programador, programe todos los días durante 2 años. Para ser un programador de clase mundial, programe todos los días durante 10 años, o programe todos los días durante 2 años y tome una clase de Algoritmos”.
– Prof. Charles E. Leisersen

¡Prueba codecademy y codeschool, ambos sitios geniales!