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