¿Cuánto tiempo le tomaría a una persona promedio sin experiencia en programación convertirse en un desarrollador de pila completa? Quiero ser competente en las tecnologías front-end y back-end. Tengo un conocimiento muy básico de HTML y estoy aprendiendo CSS.

La respuesta más simple:
Aproximadamente 1000 horas.

Para mayor aclaración:
Me gradué de un programa de bootcamp de 9 semanas en SF en enero de 2013 después de una carrera anterior que incluía muchas hojas de cálculo Excel y algunas macros, pero no codificación “real” o material web. Actualmente * ejecuto The Odin Project (http://theodinproject.com), un plan de estudios gratuito y de código abierto para el aprendizaje del desarrollo web. Ambos programas están diseñados para llevar a las personas de cero a la posibilidad de ser empleados como desarrolladores web, por lo que supongo, por el bien de esta pregunta, que su objetivo también es convertirse en “empleables”. Cualquier cosa menos simplemente se encuentra un poco más cerca en el mismo espectro. Algo más y probablemente deberías conseguir un trabajo primero para aprender las mejores prácticas de todos modos.

Para ser utilizable como “pila completa”, debe tener fuertes habilidades en una variedad de cosas: HTML, CSS, Javascript, jQuery, idealmente un marco de front-end, un lenguaje de back-end (por ejemplo, Ruby o Python), un back-end framework (por ejemplo, Rails o Django), Bases de datos / arquitectura de datos, implementación y pruebas. Es mucho para masticar, pero también es muy factible si está estructurado en su enfoque.

Cuando suma el total de horas requeridas no solo para leer todo el material, sino también para construir los proyectos necesarios para comprender el material y demostrar a los demás que sus habilidades son suficientes para que lo contraten, suman aproximadamente 1000 horas. Eso es 6 meses de trabajo “a tiempo completo (40 horas / semana)”, 3 meses de trabajo “intensivo (80 horas / semana)” o un año de “tiempo parcial (20 horas / semana)”.

Sin embargo, es importante tener en cuenta que también importa cómo desglosas esas horas. Si está haciendo 2 horas al día, sufre los costos de cambio para que su cerebro regrese y salga del problema todos los días, por lo que terminará tomando más tiempo. La mejor opción es encontrar períodos de tiempo largos e ininterrumpidos para operar como fines de semana o días completos (si no está trabajando / estudiando).

Su mayor eficiencia vendrá cuando trabaje con otros y tenga acceso a mentores. Incluso emparejarse con alguien que esté a su nivel puede ahorrarle decenas a cientos de horas en el transcurso de su viaje de aprendizaje porque no se queda atascado durante 4 horas tratando de googlear su mensaje de error con la misma frecuencia. Sin mencionar los beneficios motivadores de sentarse al lado de alguien que se esfuerza tanto como tú.

Entonces, mi consejo para cualquiera que esté considerando esto es:

  1. Ten un plan : no sigas aprendiendo lo siguiente que la gente te dice o terminarás trabajando muy duro y no sentirás que has logrado nada. Debe diseñar la hoja de ruta de las cosas que le gustaría aprender. Comuníquese conmigo directamente si necesita ayuda con eso o visite nuestro sitio web.
  2. Encuentre un amigo : haga lo que tenga que hacer, pero encuentre a alguien en algún lugar que tenga un objetivo y un nivel de motivación similares y asóciese. Uno de los objetivos del Proyecto Odin es reducir la fricción en ese proceso.
  3. Crea cosas : no solo leas. Te estás engañando a ti mismo si lo haces … necesitas construir proyectos que no sean tutoriales en tu propia computadora para tomar posesión de tus habilidades. Además, es mucho más divertido de esa manera.
  4. Identifique dónde puede pedir ayuda : Google es un gran comienzo, pero trate de encontrar reuniones locales o grupos en línea o salas de chat donde pueda acceder a la ayuda en vivo si la necesita desesperadamente. Si eres respetuoso y atento en la forma en que preguntas, generalmente te señalarán en la dirección correcta.
  5. Diviértete ! Si se siente como un desastre total, tómese un descanso y tal vez intente construir algo fácil que le resulte divertido. Luego vuelve cuando estés renovado. Mantenerse motivado, especialmente por su cuenta, puede ser la parte más difícil.

¡Espero que sea útil! No dude en comunicarse si tiene alguna pregunta o si puedo mejorar esto.

* Editar 2015: para abordar las necesidades planteadas por esta pregunta, actualmente dirijo la Escuela Viking Code , un programa de capacitación y desarrollo de desarrollo web completamente en línea donde los estudiantes elegibles solo pagan la matrícula cuando consiguen un trabajo. Cubrimos 1000 horas de aprendizaje apoyado en un formato intensivo con el objetivo final de hacer que la educación que cambia la vida sea más accesible. ¡Compruébalo si estás buscando sumergirte con los dos pies!

No sé cómo se define “persona promedio”, pero puedo decirte esto. No tenía experiencia en programación antes de graduarme de la universidad, en 2007. Comencé a aprender programación ese verano y tuve la suerte de tener mi primer trabajo de software en 2009. Diría que era un desarrollador competente de pila completa cuando salí de ThoughtWorks, que fue a principios de 2012. Por lo tanto, se puede hacer en unos cinco años.

Ese es un límite superior. Me imagino que hay algunas personas muy talentosas que podrían hacer lo mismo en un período de tiempo mucho más corto. Sin embargo, también me imagino que para muchas personas, 5 años no serían suficientes.

Hay algunas variables bastante importantes aquí. Creo que estos son los dos mejores:

  • Nivel de interes . Siempre me pierdo en los artículos de Wikipedia sobre estructuras de datos y algoritmos, leyendo blogs de software, etc. porque me encantan estas cosas. Si realmente te gusta el software, te esforzarás por seguir aprendiendo y crecerás mucho en un corto período de tiempo. Si es más una tarea para usted, progresará más lentamente e incluso puede chocar contra una pared.
  • Empleo / experiencia laboral . No puedo exagerar la diferencia que esto hace. Antes de mi primer trabajo, estaba leyendo libros, trabajando en proyectos personales, etc. Lo cual es genial, pero no le da el mecanismo de retroalimentación de trabajar directamente con personas que saben mucho más, o trabajar en una base de código con otros desarrolladores Una vez que comencé a trabajar 8 horas / día, escribiendo código todo el día y entregándolo a alguien , descubrí que mi crecimiento como desarrollador se aceleró enormemente.

Por supuesto, cualquier línea que dibujemos aquí es muy difusa. Puedo llamarme un “desarrollador de pila completa” sin sentirme un mentiroso; eso no significa que haya alcanzado algún tipo de objetivo final. Probablemente haya desarrolladores que mirarían mis habilidades y se reirían. Pero puedo entrar en una entrevista de trabajo para un rol de desarrollador completo y no sentirme como un impostor.

Aquí está mi historia corta.

Comencé a aprender Linux, Python y HTML / CSS el año pasado en octubre de 2014. Tenía una experiencia de TI previa de alrededor de 4 años, de los cuales 2 años de soporte y 2 años de gestión de TI. Renuncié a mi trabajo anterior para quedarme en casa y aprender. ¡Y funcionó! Desde hace 2 meses trabajo como desarrollador junior de código abierto.
Es increíble … pero estoy inmerso en muchos proyectos usando Django, Twitter Bootstrap, frameworks JS, PostgreSQL, etc.
Entonces podría decir que YA soy un desarrollador web full stack incluso si mi nivel de conocimiento es 0,5 en una escala de 1 a 10. Y me llevó solo medio año.

Naturalmente, me siento como un gran impostor … pero todos a mi alrededor están literalmente impresionados con la velocidad que puedo entender y adquirir conocimiento. Y tengo 30 años. A los 25 años todavía era cantinero.

¡Puedes hacer cualquier cosa que te propongas! Deja de pensar en cuánto tiempo llevará alcanzar un cierto nivel y concéntrate en el trabajo duro y en la forma en que te sientes al piratear.

Toma una pila de LAMP.

Linux: un individuo con conocimientos de informática podría aprender a usar bash shell en 1 semana.
Apache: configuración, implementación y mantenimiento. La mayoría de las distribuciones de Apache vienen con las opciones más críticas preconfiguradas. Aprender las otras opciones más útiles podría tomar una semana para casos regulares. Se pueden investigar casos especiales a medida que aumenta la demanda.
MySQL: con el aumento de los marcos, cada vez es menos necesario. Pero también podría recoger comandos básicos de SQL en una semana.
PHP: PHP procesal podría llevarle un tiempo, pero podría elegir Cake PHP en 2 semanas, lo hice. Django tal vez un mes.

Hay backend stack hecho. 1 mes 3 semanas. Por supuesto, nadie lo empleará con menos de dos meses de experiencia.

Frontend – HTML y CSS. Otro mes. Menos si usas Bootstrap.
JS – Otro mes (Scripting y AJAX)
Desarrollo web realizado 2 meses.

Conceptos de IU para análisis móvil, JSON y XML, 2 semanas
Java u Objective C: 2 meses (para J2me, iOS o Android).

Allí también eres un desarrollador móvil.

9 meses después eres un desarrollador full stack. No eres lo suficientemente bueno pero sabes cómo mejorar.

Respuesta corta: más de 6 años

Fui a la universidad para el diseño gráfico. Eso naturalmente condujo al diseño web. Comenzó con HTML / CSS / JS simple. Luego Joomla! / WordPress / Drupal en PHP y MySQL. Tomó alrededor de 1-2 años para sentirse cómodo allí.

Luego descubrí cómo modificar las soluciones PHP de código abierto para que hicieran lo que yo (o mi jefe) necesitaba. Luego salté a los frameworks PHP y aprendí cómo hacer un software mejor y más fácil de mantener. Esto marcó el año 3-4 y no me sentí completamente cómodo o sentí que había “dominado” ninguno de esos durante otros años.

Comencé a aprender más sobre bases de datos y administración de servidores para escalar cosas para manejar más tráfico. Tuve la suerte de estar en un trabajo donde trabajábamos en sitios con mucho tráfico. Fue estresante y difícil mantener los servidores activos y codificar rápidamente … Pero aprendí mucho de esta manera y, naturalmente, estimuló mi interés en hacer un software más rápido y usar mejores / las herramientas adecuadas para el trabajo en cuestión y esto significó entender cómo configurar un servidor web, base de datos, motor de búsqueda, etc.

Este fue el año 6. A estas alturas, estaba muy cómodo y podía construir todo lo que quería en la web. Aunque sabía que había áreas que necesitaba mejorar. Necesitaba escribir mejores pruebas para mi código. Necesitaba mejorar en la refactorización de mi código y escribir un código más breve y breve. PERO, podría hacer el trabajo.

Para el año 10, estaba completamente pulido por esas deficiencias y me había diversificado a otros idiomas de back-end. Con los años, fue importante mantenerse al día con las habilidades de front-end y las mejores prácticas de UI / UX en diseño web y de aplicaciones.

Es el año 12 ahora. No me estoy quedando sin cosas que hacer o aprender … Pero me estoy quedando sin buenos desafíos. Entonces comencé a dedicarme un poco más al marketing.

Solo tenga en cuenta que requiere MUCHA dedicación y trabajo duro. DEBE estar dispuesto a pasar su tiempo libre aprendiendo. DEBE estar lo suficientemente motivado como para buscar respuestas a sus preguntas y encontrar comunidades donde pueda crecer y aprender. Puede aprender mucho de la gente de estos sitios / foros / Slack / IRC.

Desde casi cero, dentro de los 6 meses de comenzar a aprender JAVA, hice esta aplicación: Wow Music Player (Audio) – Aplicaciones de Android en Google Play.
Podría haber sido solo de 3 a 4 meses si estuviera trabajando solo en esta aplicación.
También estoy trabajando en el back-end (en el marco de Pyramid que se basa en python) en mi inicio: la gestión de la escuela es fácil (sitio ERP: Iniciar sesión – Edufits).

Entonces, la respuesta corta es: en 6-8 meses, puede ser un desarrollador decente (con habilidades establecidas de 4 a 6/10 en plataformas e idiomas seleccionados). Esto es suficiente para conseguir un buen trabajo. Tomará otros 1-2 años (supongo, mirando a mis amigos) para convertirse en un desarrollador realmente bueno (conjunto de habilidades 7-8 / 10). Al respecto, el viaje es interminable con incrementos y cambios graduales.

Ahora un breve resumen de mi viaje:
Soy B.Arch se desmayó y no tenía conocimientos de programación (excepto html básico y poco C ++ de días escolares) hasta enero ’15.
Empecé a aprender JAVA y lo aprendí durante 1 mes (básico). Luego, en febrero y marzo, hice una pasantía como desarrollador de Android y comencé a aprender Android. Comencé a hacer la aplicación de reproductor de música como proyecto de aprendizaje. El desbordamiento de la pila siguió siendo mi guía definitiva. También seguí aprendiendo conceptos de JAVA cuando era necesario (algoritmos básicos y estructura de datos).
A partir de mayo, nosotros (yo y mis amigos) comenzamos a preparar un software ERP para escuelas / instituciones educativas. Trabajé en el servidor (bajo la guía completa de mi amigo) durante 2 meses.
Ahora he comenzado a trabajar en el desarrollo de aplicaciones para nuestro ERP (ya no funciona en el backend). Además, ahora estoy manejando las ventas de nuestro producto (básicamente lo estoy aprendiendo, ya que los tres no tenemos esa experiencia)

Entonces, dado 9-10 horas / día, creo que 6 meses es un tiempo decente para aprender algo hasta un nivel decente (incluida la programación).
¡salud!

Bogdan Tanase tiene una respuesta perfecta para ti. Me gustaría agregar algunos puntos más aquí.

Para responder en una oración, es muy directamente proporcional a cuánto practicas todos los días.

Una pequeña respuesta larga :    Creo que ha tomado una buena decisión al elegir Python como su opción de desarrollo principal. Debes ser lo suficientemente bueno para convertirte en un desarrollador de stack completo tan pronto como 3 a 4 meses si practicas razonablemente bien y tocas diferentes tipos de marcos.

  • La sintaxis de Pythons es mucho más fácil en comparación con otros lenguajes como Java o C ++ (gracias a los inventores). Entonces es fácil ponerse en marcha. También hay un gran soporte en línea para cualquier tipo de problema.
  • Hay una buena cantidad de marcos estables como Django , Flask , etc. para trabajos relacionados con aplicaciones web típicas y NumPy , Pandas , etc. para tareas relacionadas con la manipulación de datos. La mayoría de estos marcos son fáciles de usar y crear aplicaciones. Por ejemplo, he trabajado en Springs durante algún tiempo en Java, lo que llevó mucho más tiempo para ser flexible. Es solo una sintaxis pesada.
  • Doctests . Adquiera el hábito de escribir pruebas unitarias. Me encanta escribir pruebas unitarias para mi código. Tener Doctests en el código real es algo increíble a diferencia de JUnit (marco de prueba) (todavía me encanta Java). Comience a escribir pruebas unitarias para cada pieza de función que tenga. ‘a + b’ puede tomar un mínimo de 5 pruebas unitarias 🙂
  • Clase ‘ ify su código. Tener piezas de código en ‘main ()’ y funciones de llamada no es una moda típica orientada a objetos. Cree clases, clases en clases, comunicaciones entre clases, etc. para mejorar su comprensión de cómo se puede hacer.
  • A menudo, es posible que desee tener algún conocimiento sobre buenas técnicas de visualización también. Si trabaja para una startup, es posible que desee hacer muchas cosas solo. Adquiera algunas herramientas excelentes como D3.js y cómo comunica su backend con el frente.
  • No sé su perspectiva sobre los errores de tiempo de compilación vs tiempo de ejecución. Python no se queja en tiempo de compilación, mientras que el código se grabará en tiempo de ejecución. Por lo tanto, realice algunas buenas pruebas unitarias para evitar problemas de tiempo de ejecución.
  • Hay un dicho que dice: ” La diferencia entre un buen programador y uno malo es la documentación “. No puede ser más cierto. Controle herramientas como Sphinx, que es una herramienta de documentación súper fácil y Pylint que lo ayuda a escribir un código limpio. Intenta mantener la puntuación de pylint de 6 o más.
  • Tener algún tipo de perfilador. Python tiene un perfilador interno llamado Cprofile . Es genial. No tengo quejas de mi parte. Puede que no sea tan analítico y extenso como ‘yourkit’ pero es decente.

Es muy importante ser un buen programador y al mismo tiempo no es difícil. Lo más importante de todo es: ” Nunca dejes de practicar y nunca dejes de ser analítico”. Siempre desafíate a ti mismo con nuevos algoritmos.

La verdadera pregunta que debe hacerse es, ¿qué significa ser un desarrollador de pila completa?

Es importante preguntarse la cantidad de horas que llevará llegar a ese lugar, pero también se está perdiendo el punto. Si realmente quieres perseguir ese dominio, algo alrededor de 1,000 horas es realmente el comienzo de esa etapa en tu vida.

La tecnología cambia constantemente, al igual que los idiomas y las bases de datos que utilizará en su trabajo diario. Tienes que dar la bienvenida al cambio. Eso significa un deseo de mejorar, aprender y admitir que aprender es parte del trabajo.

Dicho todo esto, esto se puede dividir en múltiples componentes: tiempo (tendrá que comprometer mucho para llegar a un nivel profesional de entrada), tema (aunque se trata principalmente de aprender a aprender más que cualquier otra cosa), y la imagen más grande (todo lo que haces que completa las habilidades que estás tratando de aprender).

Con eso en mente, estas son las tres principales cosas a tener en cuenta si quieres convertirte en un desarrollador de pila completa:

HORA

Medido en horas, días y meses, dependiendo de cuándo puede pasar el tiempo:

Meses:
3-4
60 horas a la semana, aproximadamente 10 horas / 6 días a la semana

4-5
40 horas a la semana, aproximadamente 8 horas / 5 días a la semana

7-10
20 horas a la semana, aproximadamente 4 horas / 5 días a la semana

Si alguien le dice que puede convertirse en un desarrollador de pila completa en dos meses, sea escéptico. Es más que aprender diferentes líneas de código o cómo hacer algo bonito. También está aprendiendo cómo aplicar lo que has aprendido a un marco teórico y práctico. Es por eso que el otro elemento esencial para esto es cómo pasas esas horas.

CONTENIDO

La pila completa es solo eso: todo el paquete. Tanto el desarrollo front-end como el back-end implican el aprendizaje de varios idiomas diferentes y el uso de los programas que los unen en esos hermosos sitios web que se examinan todos los días.

Aquí hay otro desglose del tipo de contenido que lo ayudará a llegar a donde desea estar:

HTML: el lenguaje de programación más fundamental del mundo, que se encuentra en todos los sitios web existentes.
CSS: el lenguaje de hoja de estilo que hace que esos sitios web sean tan atractivos y estilizados.
Ruby : un lenguaje dinámico y de código abierto que es simple y poderoso en su uso
SQL: diseñado para gestionar datos y transmitir datos de proceso a un sistema de gestión
Postgres: otro sistema de gestión de datos de código abierto
Sinatra: una biblioteca de aplicaciones web de código abierto para marcos de aplicaciones
Rails: otra aplicación web para frameworks
JavaScript: un lenguaje de alto nivel que programa el comportamiento de las páginas web

La belleza de aprender este tipo de lenguajes y programas también es que te enseñará a pensar como lo hace un desarrollador profesional. Algunos, por supuesto, no son negociables (como HTML). Pero si decide usar Python en lugar de Ruby, por ejemplo, seguirá aprendiendo cómo usar un lenguaje de fondo, y eso siempre será un uso valioso de su tiempo.

LA FOTOGRAFÍA MÁS GRANDE

Aquí hay otra pregunta para evaluar cuando te estás acercando a esto: ¿cómo estás aprendiendo? ¿Lo estás haciendo solo, estás viendo una inmersión en persona o estás tomando una inmersión en línea? Eso determinará también lo que significan esas horas, y es importante que si está haciendo ya sea # 1 o # 3, encuentre una comunidad en línea de apoyo para ayudarlo. No solo para obtener información, sino para evitar el desgaste y darle un propósito con el código que está escribiendo.

No importa qué camino de aprendizaje esté tomando, aquí hay algunos consejos concretos si también desea ser empleado al final de esto:

1. Comience con un historial de trabajo transparente desde el primer día
Si está practicando programación en sitios web aleatorios, no se documentará nada de ese trabajo duro, ¡y no podrá usarlo para su cartera más adelante! Asegúrese de elegir un programa que le permita documentar su historial de trabajo en GitHub: aumentará su legitimidad y dejará una práctica sólida para que los empleadores vean en qué han estado trabajando duro. El programa de pila completa de Learn hace un buen trabajo al integrar esa característica.

2. Encuentre una comunidad de apoyo.
Si ha decidido asistir a una inmersión en persona, esto no será tan difícil. Sin embargo, si está aprendiendo en línea o solo, es especialmente importante que encuentre personas con quienes compartir su experiencia. Esto se debe a varias razones: no solo es bueno para la moral, sino que ayudará a aumentar su conocimiento general e incluso le dará conexiones laborales potenciales más adelante. ¡Nunca subestimes el poder de una comunidad! Tal vez esa comunidad está integrada en la plataforma en línea que está utilizando. Si no es así, intente encontrar algunos foros interactivos, chats de Slack o hilos que le ayuden a brindarle la comunidad que hace que el código sea real y efectivo.

3. Blog sobre tu experiencia.
En realidad, esto va bastante de la mano con el historial de trabajo transparente. A los empleadores les encanta ver que estás activamente involucrado en tu trabajo y que estás aprendiendo constantemente. Un blog no solo es una excelente manera de mostrar en qué está trabajando, sino que también es el lugar perfecto para resaltar sus pensamientos críticos, demostrar que realmente está involucrado en esto en el futuro y puede ayudarlo a ponerse en contacto con otros programadores Eso también construye la comunidad de la que acabo de hablar en el número dos.

4. Preséntese a posibles empleadores desde el principio.
Esto también vuelve a la comunidad. ¿Estás involucrado en la escena tecnológica de tu ciudad? Comienza a ir a reuniones. Habla con personas en la vida real. Aprende junto con ellos. En realidad, es posible que te estés presentando a amigos de posibles empleadores y estableciendo esas conexiones sin siquiera saberlo al principio. Una vez que esté cerca de terminar esas 1,000 horas (o lo que considere que está preparado para convertirse en un desarrollador completo), invítelos a tomar un café para tener una idea de qué tipo de empleado están buscando. Puede que te sorprendan los resultados.

5. Aumenta tu motivación con la imagen más grande en mente.
¿Por qué finalmente quieres convertirte en desarrollador? Debe haber algún proyecto más grande que haya tenido en mente. Tal vez esté creando una nueva aplicación para conectar a las personas con una causa que le interese, o tal vez sueñe con ser el CTO de su propia empresa algún día. Independientemente de cuál sea ese sueño, tome medidas incrementales para trabajar hacia ese objetivo, de modo que pueda medir las formas en que está haciendo un progreso real.

6. Reconoce qué tan lejos has llegado.
Convertirse en desarrollador de software no es fácil. Mira el trabajo que has hecho cada dos semanas y date crédito por saber lo que no sabías antes. Algunos progresos son mejores que ninguno, y algunos días serán más difíciles que otros. No significa que no estés progresando.

Cuando se trata de eso, siempre se trata de dedicación y valor. Si realmente quieres encontrar una manera de convertirte en un desarrollador de stack completo, esas horas desaparecerán y encontrarás una carrera que realmente te apasiona. Ahí es cuando comenzará el verdadero trabajo. ¡Te deseo la mejor de las suertes en construir ese futuro para ti!

Como puede ver por la gran variedad de respuestas dadas, no hay un marco de tiempo real definible. Todos tienen una experiencia diferente, y la mayoría de las personas tienen una definición diferente de lo que hace que un desarrollador de pila completa.

Existe una idea bastante común de que un desarrollador de pila completa debe saber todo sobre todo y, en general, ser increíble. Creo que esto no tiene sentido, y como en la mayoría de las cosas, hay niveles de experiencia. Hablo más sobre esto aquí: ¿Qué es un desarrollador de pila completa?

En resumen, debe poder codificar el front-end de un sitio web, el back-end también, y también implementarlo en una URL en vivo.

Su nivel de habilidad en todas estas cosas mejorará con el tiempo, y aprenderá constantemente si continúa trabajando en el campo. Siempre surgen nuevas tecnologías, tendencias y mejores prácticas. Todavía estoy aprendiendo después de 16 años.

El factor más importante es su aptitud y deseo de aprender. Si tiene una aptitud natural para la lógica y el proceso, esto será de gran ayuda.

Recuerde, no tiene que convertirse directamente en un desarrollador full stack a menos que tenga una razón convincente para hacerlo. Puede centrarse primero en el front-end y luego en el back-end (o al revés).

  1. Conceptos de programación: Emacs / VIM + Python + Estructuras de datos + Algoritmos + GIT
  2. Bootstrap HTML / CSS / Twitter
  3. JavaScript / JQuery
  4. MySQL o PostgreSQL
  5. Marco web: Django o Node.JS
  6. Aprendizaje de aplicaciones web de muestra y prácticas de construcción.

Los anteriores son el conjunto mínimo de habilidades necesarias para ser un ingeniero de pila completa. Suponiendo que cada componente necesita un tiempo de estudio promedio de 3 meses, el tiempo total de estudio es de aproximadamente 18 meses.

Free Code Camp ( http://www.freecodecamp.com/ ) ofrece un curso completo, prometiéndole aprender la mayoría de las cosas que necesita saber para convertirse en un desarrollador completo de javascript.
Ellos estiman que tomará 800h para el curso y 800h adicionales para la práctica, que toma la forma de ayudar a organizaciones sin fines de lucro, lo cual es una gran causa. Creo que sus estimaciones son bastante precisas, especialmente para las personas que recién comienzan.
Si está interesado, le recomiendo que comience con sus cursos (a su propio ritmo), hicieron un muy buen trabajo.

Me gustaría comenzar con una broma.

Para aprender cosas básicas, necesitarás al menos un año. Supongo que estás muy motivado y dispuesto a aprender.
Sin embargo, dado que los lenguajes de programación se están desarrollando y cambiando a tiempo *, literalmente tomará una eternidad aprender.

* HTML (Consulte el subtema “Cronología de versiones de HTML” y vea cómo HTML ha cambiado en años).

Hay muchas variables que deben tenerse en cuenta para entender a esta “persona promedio”, formando convenientemente el acrónimo TEAM :

  • Tiempo : ¿esta persona dedica todo el tiempo posible (al menos el equivalente a un trabajo de tiempo completo) a la programación de aprendizaje, o si está reservado para las noches y los fines de semana?
  • Educación : ¿esta persona está aprendiendo por sí misma a través de recursos gratuitos, o está en un programa con plan de estudios, un instructor y otras formas de compromiso estructurado?
  • Aptitud : ¿tienen una comprensión natural de la lógica de la programación, o se siente desafiante y frustrante con cada intento?
  • Motivación : ¿qué tan interesados ​​y apasionados están con la programación? ¿Simplemente quieren incursionar en ello, o están dispuestos a hacer una carrera seria de ser un programador?

Incluso si construye su EQUIPO a los niveles óptimos de éxito, aún le llevará unos seis meses, comenzando desde cero con un instructor calificado, para aprender los fundamentos de la programación completa. Este es el objetivo del programa Full Stack de Galvanize. Te enseñamos los fundamentos de HTML, CSS, desarrollo front-end y back-end basado en Javascript (Angular, EmberJS, Node.js, etc.) y Ruby on Rails. Al final del curso, tendrá la capacitación y la experiencia equivalente a la de un desarrollador junior.

A partir de ese momento, requerirá al menos otro año a 18 meses de desarrollo continuo hasta que se lo considere lo suficientemente competente como para manejar los rigores de un rol más importante en la industria actual. Al igual que aprender un idioma extranjero, aprender un lenguaje de programación (o varios) en su caso requiere tiempo, rigor y repetición para seguir siendo competente.

En su caso, ya tiene una ventaja inicial con sus antecedentes básicos en HTML, CSS y Python, pero como todo lo demás, sus posibilidades de éxito aumentarán con un EQUIPO más fuerte

Divulgación: Soy un evangelista con sede en Seattle para Galvanize , que lleva a cabo un curso de desarrollo completo de seis meses en varios de sus campus.

Me llevó 18 meses sin experiencia en CS convertirme en un desarrollador de Django de pila completa “malo” mientras trabajaba a tiempo completo como fundador de startups [no ingeniero]. Comencé con HTML / CSS, luego un poco de PHP, luego jQuery, luego me mudé a Django (curiosamente desarrollé una buena comprensión de Django y pude desarrollar aplicaciones / proyectos básicos sin una fuerte comprensión de la sintaxis de Python o la programación orientada a objetos) Probablemente esta sea una forma inversa de hacerlo, pero aprendo construyendo cosas, así que funcionó para mí aprender primero el marco de la aplicación con la cantidad suficiente de Python para hackearlo. Creo que también habla de la calidad, simplicidad e intuición de Django. ) Después de poder crear aplicaciones básicas de Django, comencé a aprender Python / OOP para crear aplicaciones web cada vez más complejas y con funciones completas.

Espero pasar al menos otros 12 meses estudiando Python (así como el servidor y el javascript del lado del cliente) para llegar al punto en que me sienta cómodo llamándome un verdadero desarrollador de pila completa. Entonces, contribuyendo a mí mismo como un punto de datos de tamaño de muestra n = 1 2.5-3 años

¡Hola!

Realmente no podemos saber el tiempo exacto que puede tomar ser bueno en la programación. Puede tomar una década para alguien o puede tomar de 3 a 9 meses para alguien. Ser desarrollador de pila completa no significa conocer los conceptos básicos y la sintaxis, pero significa que puede implementarlo en aplicaciones de la vida real que necesitan un pensamiento algorítmico y mucha determinación.

Es fácil pensar que conocer una arquitectura de lenguaje de programación es todo lo que se requiere para ser un desarrollador profesional, pero se requieren más de una habilidad como habilidades para resolver problemas , comunicación , conocimiento de control de versiones , habilidad para aprender una muy buena. Por lo tanto , en lugar de ser específico para el tiempo , es más prudente verificar si cumplimos con ciertos criterios para ser un buen programador o no.

Le sugiero que siga diferentes pasos que incluyen:

Conocer los conceptos básicos, la sintaxis y el patrón de diseño.

Este es el paso importante ya que sin una descripción general básica, realmente no puede saber cómo usar su lógica para crear impactos.

Pensamiento algorítmico / habilidades para resolver problemas

Intenta resolver diferentes problemas usando tus conocimientos de programación. Tómelo como aprendizaje orientado a proyectos para que pueda crear un vínculo entre programación y lógica. Repasar las habilidades para resolver problemas es lo más importante.

Comprensión de los pueblos / Comunicación

El programa que escribirá involucra a una persona, sociedad o problemas de la vida real, incluso si usted es el único, por lo que es importante comprender el mundo real.

Estabilidad tecnológica cambiante

La tecnología está cambiando y nunca sabrá lo que será exigente e importante mañana, por lo que debe dedicarse a actualizarse a la tecnología cambiante.

Pero, ¿por qué tomar décadas aprendiendo programación si hay una manera de aprender más profundamente en un período corto de tiempo con ayuda experta y aprendizaje progresivo?

Entonces, si desea aprender progresivamente, le sugiero que eche un vistazo a la Escuela Holberton de Ingeniería de Software en San Francisco, que le enseñará a ver los principios subyacentes y las conexiones entre cosas aparentemente dispares para reconectar su cerebro. Esta escuela de programación ofrece un programa de dos años compuesto por tres partes diferentes:

  • 9 meses de intensa capacitación en fundamentos de ingeniería de software,
  • Una pasantía de 6 meses y
  • 9 meses de estudio in situ o remoto en una especialización de su elección.

Esta escuela cubre todos los criterios como el aprendizaje entre pares , aprender a aprender , aprendizaje orientado a proyectos , habilidades blandas , conocimiento completo , ayuda de mentores , lo cual es muy importante para ser bueno en la programación al no tomar demasiado tiempo.

¡Gracias por leer!

Depende

Si puede concentrarse todo su tiempo en estudiar y trabajar con código, entonces llegará mucho más rápido que alguien que tiene que tomar largos descansos o tiene una familia o un trabajo que ocupa una cantidad significativa de su tiempo.

Es por eso que escuchas sobre Teender Coder creando aplicaciones increíbles. Ellos tienen el tiempo Menos responsabilidad significa más tiempo codificando o jugando videojuegos.

Convertirse en un desarrollador de pila completa puede llevar de 6 meses a varios años. Ahora, esto no significa que hayas dominado cada idioma. Solo que sabes cómo trabajar con cada idioma para armar un sistema. Recuerde, dominar cualquier cosa lleva 10,000 horas.

Su plan de ataque estará determinado por su horario. Pero no te desanimes. Hay muchas pilas llenas de talento y vienen de todos los ámbitos de la vida. Si ellos pueden hacerlo, tú también puedes. Nunca es demasiado tarde.

Te recomiendo que practiques durante varias horas todos los días. Crea algo que sea útil para ti.

Recuerde, si disfruta lo que está haciendo, aprenderá más rápido, así que asegúrese de divertirse.

Espero que esto ayude.

Depende, supongo. Comencé a enseñarme a programar en C ++ a la temprana edad de 14 años (hace 7 años). En el momento en que comencé y durante mis años de escuela secundaria, estaba principalmente haciendo programación de juegos (de ahí la elección de C ++) y luego en la universidad usé principalmente C # y Java para hacer cualquier proyecto asignado a la clase. Entonces, al final de eso, tengo aproximadamente 5 años de experiencia en programación y … absolutamente ninguna experiencia en programación web . Ninguna de las dos universidades a las que asistí tenía un plan de estudios real para algo que pudiera estar relacionado con la “programación web de pila completa”, excepto por los idiomas enseñados.

Ahora soy un desarrollador web a tiempo completo que hace de todo, desde escribir los scripts del entorno del servidor en Vagrant / Puppet hasta escribir la aplicación Angular front end y CSS desde cero. Entonces, ¿cuándo aprendí a hacer esto? En 2 años. En 2 años aprendí las complejidades de la programación de sistemas / bases de datos / backend / frontend / javascript, pero en las circunstancias más simples pude verme haciéndolo mucho menos tiempo, pero también con mucha menos efectividad. En otras palabras, bastante temprano en esos 2 años pude construir cosas más simples, mientras que ahora puedo hacer aplicaciones más complejas y, en general, tener una comprensión más profunda. Pero también, por supuesto, estoy aprovechando los 5 años de aprendizaje sobre programación en un nivel más fundamental.

Entonces hay muchas variables allí. Y, por supuesto, como otros han mencionado, nunca he dejado de aprender y nunca dejaré de aprender. Estoy motivado porque me encanta escribir aplicaciones y servicios web y con ese tipo de motivación, entonces quién sabe, puede llegar incluso antes. El hecho de que el panorama web cambie tan rápido tiende a mantenernos frescos a todos, pero una vez más, ese conocimiento y experiencia fundamentales son útiles regularmente.

Llevo 20 años desarrollando, mis 2 centavos son:

1. Parece que todo el mundo ama la forma html5 / css, ya que su concepto es el primer paso que sugeriría para comprender lo que hace un webmaster. Scripts como WordPress, Joomla, Drupal, hacen que el aprendizaje sea más fácil y comprensible de cómo funciona la tecnología web. Esta etapa dura de 1 a 6 meses para cualquier ser humano.
2. Luego puede comenzar a señalar al “desarrollador potencial” a alguna especialización. Digamos Python, Java, C ++. Esta etapa puede tardar entre 3 y 5 años en convertirse en un desarrollador estándar.
3. Para el concepto de pila completa, no creo en esa basura, o eres un especialista … o un mediocre.

Esta es una pregunta enorme con muchas variables y condiciones contingentes. Algunas entradas básicas para preguntarse incluyen:

1. ¿Harás esto por tu cuenta sin ningún contacto para vivir experiencias interactivas de personas?
2. ¿Qué tipo de alumno eres? Si no sabe, descúbralo y vea si se aplica a lo que está buscando en CompSci.
3. ¿Eres muy autodirigido y puedes avanzar fácilmente durante obstáculos y resultados inesperados? Algunos conceptos arbitrarios requieren horas / días de investigación hasta que hagan clic: consulte el consejo de “tipo de alumno” que figura más arriba.
4. ¿Con qué frecuencia has renunciado a este esfuerzo en el pasado? El rendimiento pasado no es garantía de resultados futuros.
5. ¿Cómo define ‘convertirse en un desarrollador de pila completa? es decir, ¿qué objetivos o problemas podrás responder o resolver o simplemente estás buscando construir un sitio de piedra / papel / tijera? ¿Serás el mejor desarrollador de stack completo del mundo? No es difícil, solo pregúntate tus metas y objetivos.
6. ¿Realmente sabes lo que estás preguntando? Probablemente no, y deberá reducir sus objetivos y tipos de proyectos en los que intentará trabajar. Si lo sabe, comience el proyecto ahora y tropiece y frustrarse en el camino. Así es como aprende y comprende su umbral y tolerancia.
7. Cuando te enfrentas a conceptos desconocidos, ¿los ignoras esperando que nunca surjan o buscarás conocimiento para conquistar las preguntas internas que tienes? Esas preguntas nunca desaparecen.
8. ¿Con qué frecuencia has gastado hasta ahora en este esfuerzo?

Buena suerte y persigue tus sueños; después de todo, si no lo hace, ¿quién lo hará? – Yo

No define lo que es un codificador para usted. Convertirse en un mono de código es probablemente simple (pero eso no asegurará un trabajo para usted, tales trabajos se subcontratan).

Pero sí creo que la programación de aprendizaje lleva diez años. Porque convertirse en experto en cualquier campo lleva mucho tiempo. Algunas personas no están de acuerdo con esa posición.

Necesitará aprender muchas cosas (varios lenguajes de programación, muchos conceptos, algunos algoritmos, mucha informática, algunas matemáticas, etc.); necesitará una gran cantidad de conocimiento (incluida la teoría) y necesitará mucha práctica y conocimiento.

Eso no es específico de la codificación. Aprender música (por ejemplo, tocar bien en un violonchelo), o aprender a cocinar, o incluso caminar (para bebés), o matemáticas, o química, o cazar también lleva mucho tiempo (muchos años).

Por lo tanto, mejor aprenda algo que le apasione o al menos le interese. Es cuestión de gustos (y también de motivación y habilidades).

Por cierto, también necesita mucho sentido común , algo de cultura general y conocimientos generales de procedimientos. Como ejemplo, si codifica un software para una biblioteca de libros, debe tener una idea bastante buena de cómo funciona dicha biblioteca, saber (o ser capaz de encontrar) sobre sistemas de clasificación como Dewey’s, etc.

More Interesting

¿Cómo se comercializan los desarrolladores de software independientes?

¿Vale la pena ir a Alemania desde la India, con una visa de buscador de trabajo? Tengo 5 años de experiencia como desarrollador de software.

¿Qué debe pedirle a un desarrollador de iOS que haga para que otros desarrolladores entiendan el código que hacen?

¿La mayoría de los desarrolladores de software odian las patentes de software?

¿Cuál es la forma más fácil de mudarse a Canadá como desarrollador de software?

¿Dónde puedo encontrar excelentes desarrolladores de iOS?

¿Los lenguajes de programación funcional se entienden mejor y es más probable que los usen personas con conocimientos de matemáticas?

¿Cuáles son algunas startups que se centran en productos para desarrolladores?

¿Qué va a tener más demanda en los próximos 5-10 años en la industria del juego? ¿Diseñadores de juegos, desarrolladores de software o artistas?

¿Qué deben hacer los desarrolladores de aplicaciones móviles para mantenerse a la vanguardia?

¿Cómo son las primeras semanas para los pasantes desarrolladores de software?

¿Dónde puedo calificar a los desarrolladores?

¿Es legal el raspado de datos en el Reino Unido?

He sido desarrollador de software durante 4 años, trabajé con organizaciones en el lado del cliente y en el extranjero. ¿Soy elegible para el examen CSM?

Tengo menos de 18 años y quiero una cuenta de desarrollador de Apple. ¿Mis padres tendrían que inscribirse en el programa para desarrolladores de Apple y luego publicar mis aplicaciones?