La respuesta a esta pregunta depende en gran medida de sus antecedentes y sus objetivos de aprendizaje. Específicamente,
- ¿Eres nuevo en la programación, has incursionado un poco en la programación o eres actualmente un programador en un campo diferente?
- ¿Estás aprendiendo por diversión o afición, o estás buscando entrar en el desarrollo de software como una carrera, en un plazo de, digamos, 6-12 meses?
Vamos a desglosarlo:
Si eres un programador en ejercicio y quieres aprender desarrollo web para divertirte y expandir tu horizonte, te recomiendo lo siguiente:
- Cómo hacer múltiples páginas para un sitio web
- ¿Cuál es la mejor manera de organizar el trabajo de un equipo de desarrolladores que trabajan de forma remota en un gran proyecto web?
- ¿Hay alguna manera fácil de entender los elementos de posicionamiento en HTML?
- ¿Cómo serán los navegadores web en 2018?
- ¿Cuál es la mejor estrategia para crear un menú principal dinámico de un software en ASP .NET MVC?
Considere aprender un nuevo idioma que sea muy diferente de su idioma de trabajo actual. Por ejemplo, si eres un programador en C, aprende un lenguaje dinámico de alto nivel como Ruby; Si eres desarrollador de Android que usa Java, revisa un lenguaje funcional como Clojure o Erlang / Elixir. Esos lenguajes te abrirán la mente y te ayudarán a crecer como desarrollador. Busque libros o cursos escritos por desarrolladores para desarrolladores, por ejemplo, la serie “Aprenda el código difícil” de Zed Shaw es bastante buena; Pragmatic Bookshelf y No Starch Press también tienen libros para desarrolladores experimentados. Haga algunos ejercicios de código o emprenda un proyecto simple para practicar con el nuevo lenguaje (por ejemplo, Dave Thomas escribe un analizador Markdown cada vez que aprende un nuevo idioma). Debería ser productivo con el idioma en unos días.
Encuentre cursos basados en proyectos que lo lleven a lo largo de la construcción de aplicaciones, a menudo con un marco. Una vez que aprenda el idioma, probablemente pueda acceder a los marcos rápidamente y solucionar problemas a medida que avanza con Google o Stack Overflow. Como desarrollador experimentado, es probable que te distraigas constantemente con las nuevas tecnologías, por lo que ser capaz de armar las cosas rápidamente te mantendrá motivado y entretenido, para que puedas seguir adelante.
Si usted es un programador en ejercicio actual que quiere hacer la transición profesional al desarrollo web
Si tiene experiencia en el desarrollo de software en otros campos, cuando busca trabajos, generalmente se espera que pueda aumentar y contribuir rápidamente, y puede trabajar como desarrollador web de nivel intermedio. Para prepararse para cumplir con esta expectativa, su enfoque de aprendizaje no debe ser “divertido” y “crecimiento personal” centrado como el primer escenario, sino apuntar a tener una comprensión profunda de la pila web y las mejores prácticas actuales de una pila de desarrollo.
Si es posible, elija un idioma más cercano a su idioma de trabajo actual y uno con muchas oportunidades de trabajo. Al escribir estas líneas, consideraría Java, JavaScript, Ruby y Python. Si ya programa en uno de estos idiomas, quédese con eso y aprenda muy bien. No encuentro muchos cursos en línea que enseñen idiomas más allá del nivel de principiante, por lo que le sugiero que elija un “libro canónico” de su idioma de elección. (ver una lista a continuación)
Conozca los fundamentos de los conceptos de desarrollo web: HTML, CSS, JavaScript, HTTP y bases de datos. Este es un paso importante: no salte a los marcos de inmediato. Esta es la base en la que se basan todas las prácticas de desarrollo web, por lo que si comprende bien estos temas, entrar en las abstracciones de alto nivel de los marcos será mucho más fácil, y descubrirá que tiene mucho menos para memorice, porque comprende la maquinaria web central. (vea una lista de recursos de aprendizaje a continuación)
Si quieres convertirte en un desarrollador web profesional, debes tener una comprensión sólida de los fundamentos. Udacity tiene un gran curso que cubre este nivel que debe consultar: Curso en línea de desarrollo web.
Aprenda la pila líder en el idioma que elija (Grails, Node / Express / Angular / React, Ruby on Rails, Django) y estudie las abstracciones. Como desarrollador experimentado, los empleadores esperarán que usted no sea solo un usuario de marcos, sino que pueda tener una comprensión conceptual más profunda y puede doblegarlos a su propia voluntad. No se quede en la superficie, es importante comprender cómo los marcos se asignan a preocupaciones de nivel inferior (HTTP, SQL, HTML, CSS y JavaScript). Si no tiene preferencia en ninguna pila en particular, vaya con Ruby o JavaScript: tienen los recursos educativos más abundantes disponibles. Busque cursos o tutoriales que lo guíen a través de la creación de una aplicación significativa con suficiente complejidad para que pueda ver la necesidad de introducir las mejores prácticas y las restricciones para forzar los patrones arquitectónicos.
Recursos para desarrolladores experimentados:
“Libros canónicos” sobre lenguajes de programación:
- JavaScript: la guía definitiva
- Javascript: The Good Parts (como su segundo libro de JavaScript)
- Programando Ruby
- Programación Core Python
- Java efectivo
Cursos en línea sobre desarrollo web general
- Curso de desarrollo web de Udacity (en Python, gratis)
- Lanzar el curso de desarrollo web de la escuela (en Ruby, pago, totalmente compatible)
Cursos en línea sobre bases de datos y SQL
- Curso de base de datos en línea de Stanford (Gratis)
Cursos en línea sobre pilas de desarrollo
- Node School (Node.js, Gratis)
- Udacity’s Front End Nanodegree (Front End, Paid, totalmente compatible)
- Tutorial de Rails (Ruby on Rails, Gratis pero el video curso es realmente bueno)
- Poseer rieles (Ruby on Rails, pago, video curso)
- Desarrollo rápido con Ruby on Rails (Ruby on Rails, pago, totalmente compatible)
Cursos en línea sobre mejores prácticas para construir software
- Software de ingeniería como servicio (gratuito)
- Cree aplicaciones robustas y de calidad de producción de Launch School (pago, totalmente compatible)
Si eres un principiante y quieres aprender tu primer lenguaje de programación y entrar en el desarrollo web, tu plan será MUY diferente.
Primero, su perspectiva no debería ser encontrar el “mejor” curso o material de aprendizaje, sino planear aprender de tantas fuentes como sea posible. De cada libro o curso en línea podrá recoger algo nuevo y la repetición lo ayudará a retener el conocimiento más fácilmente.
Debes tener las expectativas adecuadas. El desarrollo web implica muchas tecnologías. Si recién está comenzando a aprender a programar, debe estar preparado para dedicar una cantidad significativa de tiempo y esfuerzo a estudiar para alcanzar la competencia requerida para un desarrollador profesional. Tampoco será todo “divertido” y “emocionante”, como prometen algunos cursos en línea. Espere que el proceso sea incluso “aburrido”, donde tiene que trabajar duro y practicar mucho.
Le recomiendo encarecidamente que tome un programa estructurado de extremo a extremo, en lugar de tratar de juntar sus conocimientos de varias fuentes. Intentar aprender varios temas de desarrollo web como principiante es un desafío en sí mismo, es aún más difícil saber cuáles son todos los temas que necesita saber, cuál es la secuencia en la que necesita aprenderlos y cómo evaluar si ha sabido lo suficiente para progresar en este camino. Encontrar un buen programa con un plan de estudios sólido con cursos que encajen bien te ahorrará mucho tiempo.
Le recomiendo que busque programas totalmente compatibles. Si bien los desarrolladores más experimentados podrán aprender por su cuenta, como principiante puede beneficiarse enormemente de los comentarios regulares y obtener respuestas a sus preguntas rápidamente. Estar en un entorno amigable y de apoyo para principiantes también te mantendrá motivado y comprometido. Si puede permitírselo económicamente y en cuanto al estilo de vida, asistir a un campamento de programación será una excelente opción. Acelerará su aprendizaje y le brindará asistencia integral para encontrar su primer trabajo. Si asistir físicamente a un campo de entrenamiento de codificación no es una opción para usted, Launch School, donde enseño desarrollo web, también tiene un campo de arranque en línea diseñado como un programa integral para llevar a los principiantes serios a la preparación para el trabajo.
Cursos en línea amigables para principiantes y recursos de aprendizaje
Escogí los siguientes cursos y recursos que son ideales para principiantes. En general, son menos ambiciosos en su alcance, no asuman experiencia previa e introduzcan temas de forma aislada en lugar de presentarlos en la integración, por lo que es fácil para usted avanzar.
Primero debes aprender HTML y CSS:
- Curso “Aprenda a codificar HTML y CSS” de Shay Howe
- Curso HTML y CSS de Codecademy
- HTML5 funcional y CSS3
Luego aprenda JavaScript y un lenguaje enfocado en el back end. Debes conocer bien JavaScript para trabajar con la web. Luego, recomendaría elegir un lenguaje enfocado principalmente en el back-end para convertirse en un desarrollador más completo. Miraría a Ruby o Python para obtener los mejores recursos de aprendizaje y oportunidades de trabajo.
JavaScript:
- Curso JavaScript de Codecademy
- Curso JavaScript de Code School
- El primer libro de JavaScript de OReilly’s Head
- Libro de JavaScript elocuente
Ruby (o aprende Python)
- Introducción a la programación con Ruby por Launch School
- Aprender a programar, por Chris Pine
- Aprende Ruby de la manera difícil
Python (o aprende Ruby):
- Learn Python – Tutorial interactivo gratuito de Python
- Aprende Python de la manera difícil
Aprenda HTTP y conceptos web generales:
- Lanzar el libro HTTP de la escuela
- Curso de desarrollo web de Udacity
- Lanzamiento del curso de desarrollo web de la escuela
Base de datos y SQL:
- Curso SQL de Codecademy
- Prueba SQL de Code School
- Introducción con SQL de SQLBolt
jQuery y el DOM:
- Code School – Prueba jQuery
- jQuery en Codecademy
Después de esos cursos básicos, estará listo para aprender con marcos y crear aplicaciones. Puede consultar la lista que hice arriba sobre cursos y recursos para desarrolladores experimentados.
Le sugiero que aprenda tanto las pilas de back-end de Ruby / Python como la pila de back-end de Javascript / Node para maximizar sus oportunidades de trabajo. Puede parecer mucho, pero si tienes los cimientos bajos, cuando llegues aquí, realmente disfrutarás del proceso de aprendizaje. Después de dominar una pila, el tiempo que lleva recoger la segunda pila será una fracción de eso para su primera pila, pero ampliará significativamente su horizonte.
Por lo tanto, es fundamental que cuando aprenda su primera pila, tome tiempo para dominar los fundamentos y no se apresure a los marcos y abstracciones más altas demasiado pronto. Pagará varias veces en una larga carrera. Si no dedica tiempo a solidificar los fundamentos, pasará de un marco a otro y nunca comprenderá realmente los fundamentos más profundos del desarrollo web.
¡Espero que esta respuesta sea útil! Si tiene algún comentario, agregue a continuación y le responderé aquí. Si desea saber más sobre nuestra filosofía de enseñanza y el plan de estudios, consulte aquí: Launch School – Is This For Me?