¿Cuál es la mejor manera de mejorar rápidamente mis habilidades de programación?

En lugar de sugerir formas particulares de dominar ciertos tipos de programación, me gustaría abordar la abrumadora situación que parece estar experimentando. Después de leer la descripción de su pregunta, parece que tiene dos problemas:

    1. No conoces el “lugar óptimo para centrar tu atención”.
    2. Te preguntas cómo puedes mejorar una vez que conozcas ese enfoque.

    Dónde enfocar su atención es lo más importante para hacerlo bien. Usted querrá dedicar tiempo a mejorar en las áreas que le interesan, y menos tiempo a convertirse en una parte de los intercambios que no le interesan. Puede aclarar su dirección haciendo una lluvia de ideas sobre qué es lo que quiere evitar con la programación. Programación es un término general para muchos tipos de actividades que comprenden una variedad de habilidades diferentes. Si está interesado en resolver problemas matemáticos difíciles algorítmicamente, no se preocupe demasiado por obsesionarse con HTML / CSS. Si está interesado en crear excelentes aplicaciones web como Quora, quizás piense en el procesamiento del lenguaje natural en el futuro pero no lo convierta en un foco aún. Si está interesado en convertirse en un trabajador competente, quizás se centre en las cosas que sugirió Jonas Bruun Nielsen.

    Tenga en cuenta que su enfoque es su dirección y que no debe intentar aprender todo lo que hay para aprender sobre programación. Al menos no todavía. (Sugerencia: no puede). En una línea similar, aunque personalmente creo que una educación en informática es fundamentalmente útil para los curiosos algorítmicos y para aquellos interesados ​​en la cultura académica, no creo que un enfoque general de aprendizaje de todo bajo El sol es, en general, la mejor forma de dominar cualquier cosa. Conozco buenos desarrolladores de aplicaciones web que no pudieron comenzar a sugerir la mejor estrategia ganadora para el primer jugador en una configuración dada de Nim .

    Una vez que sepas cuál es tu enfoque, llegar allí es mucho más fácil. Es cierto que aquí hay una paradoja de elección; Todas las diferentes habilidades, tecnologías y metodologías que puede elegir para practicar no se sienten liberadoras cuando tiene que preocuparse por tomar una mala decisión. Pero la cantidad de opciones es buena porque cuando las has reducido por el enfoque, ninguna de las opciones es terrible , son efectivas (ya que te ayudan a alcanzar tu objetivo) incluso si resultan no ser las más eficientes ( una opción puede ser una forma un poco más rápida de llegar que otra). Pero en lugar de tratar de encontrar la manera más eficiente de llegar allí, comience a practicar lo que más le emociona y ahórrese un poco de tiempo en la parálisis de análisis. La ruta particular a la que recorres probablemente no sea tan importante como el hecho de que, independientemente de lo que elijas, aprenderás lo suficiente como para acercarte a tu objetivo específico.

    Los pequeños proyectos con los que está entusiasmado son excelentes para mejorar las habilidades en la mayoría de las áreas. Es preferible que sea pequeño y manejable, pero para mantener los niveles de motivación, es aún más útil si está entusiasmado con el resultado final. Podría rayar una picazón personal, resolver un problema para su empresa o simplemente ser algo de lo que se sentiría orgulloso de presumir ante la gente. Puedes crear un proyecto que use casi cualquier tecnología sobre la que te gustaría aprender más. De esa manera, la finalización del proyecto es un indicador medible de si ha alcanzado su meta de aprendizaje a corto plazo. Los proyectos también pueden ser una gran oportunidad para ver una imagen más grande que sus subrutinas y variables, traer colaboradores, establecer una cartera o contribuir con algo a la comunidad de código abierto.

    Aquí hay algunos consejos:

    1. Localice algunos buenos recursos para materiales de aprendizaje . ¿En qué tipo de programación estás? ¿web? ¿móvil?
    2. Encuentre un mentor cualificado que pueda ayudarlo con sus comentarios sobre su trabajo. Las personas en grupos de usuarios de todo el mundo (por ejemplo, brigada de rubíes) suelen ser muy útiles.
    3. Aprenda cómo probar los programas y cómo hacer el desarrollo guiado por pruebas. Tener su código probado aumenta su confianza, y la retroalimentación continua es buena para su proceso de aprendizaje.
    4. Obtenga una comprensión profunda de los buenos procesos de desarrollo y la programación orientada a objetos. Tenga cuidado antes de recoger un libro que le prometa el conocimiento más reciente que existe. Búscalo en Amazon y lee comentarios y calificaciones. Recomiendo Domain Driven Design ( http://www.amazon.com/Domain-Dri… )
    5. Suscríbete a múltiples blogs de desarrollo de software. (Aquí hay algunos http://robots.thoughtbot.com/ relacionados con Ruby / Rails, http://pivotallabs.com/blabs , http://avdi.org/devblog/ ) Esto es muy útil para obtener acceso a más Recursos de calidad.
    6. Trabaja en mejorar tus habilidades de comunicación. No puedo enfatizar esto lo suficiente. La colaboración es el desarrollo de software requiere buenas habilidades de comunicación.

    No quiero decepcionarte, pero esto es prácticamente imposible de hacer. Incluso las personas más talentosas del mundo deberían dedicar 10.000 horas para dominar un oficio.

    En vez de eso, enséñate a programar en diez años .

    El artículo de Peter Norvig es un clásico ahora y lo ayudará a mejorar sus habilidades de programación.

    ¿Cuál es la prisa de todos modos? ¿Querría volar un avión que fue diseñado por ingenieros que aprendieron rápidamente ingeniería aeronáutica?

    Tómate tu tiempo y disfruta del viaje.
    ¡Buena suerte!