Cómo reavivar mi pasión por la programación.

Así que aquí está lo que me llamó la atención:

Cada vez que me meto en algo poco avanzado o complejo, huyo y salto para aprender otro idioma.

Aún no has aprendido ningún idioma.

Asi que.

El único rasgo que tiene como ingeniero de software es una tolerancia extraordinariamente alta al fracaso. Cuando alcanzas el bit avanzado y complejo, debes poder seguir golpeando, fallando una y otra vez hasta que finalmente lo descubras. Si te emocionas con tus fracasos, eso no va a suceder.

¿Entonces lo que hay que hacer?

Consigue un trabajo, cualquier trabajo. Hazlo bien. Luego retomar la programación como un hobby. Juega con ello. Si no entiende algo, su carrera ya no está en el equilibrio y no tiene que estresarse por eso. Si está atrapado en un problema, puede dejarlo por unos días y volver a él más tarde sin preocuparse de lo que dirá el jefe. Haga una cantidad significativa de progreso en algunos proyectos, ayude con otros proyectos de código abierto y quizás comience a jugar con codificación competitiva (de nuevo, está jugando, no compitiendo). Cuando las cosas empiezan a ser fáciles, comienza a pensar en ir a la escuela para obtener un título de maestría en CompSci y reinicia tu carrera como desarrollador.
En ese momento, tendrás acres de fallas detrás de ti, y los acres de fallas que tienes por delante no parecerán tan intimidantes.

Y una lista de lectura para inspirarse:

Cómo convertirse en un hacker
Cómo hacer preguntas de manera inteligente
Al principio estaba la línea de comando (en CRYPTONOMICON)
El alma de una nueva máquina
Cerca de la máquina: la tecnofilia y sus descontentos

¡Buena suerte!

Tengo la sensación de que realmente sabes poco o nada acerca de la programación. Especialmente cuando dices “Sé que necesito aprender la estructura de datos y los algoritmos … … pero no sé: cómo resolver problemas complejos problemas de programación”

Si entendiera la programación al nivel que reclama, sabría que los problemas de programación complejos se resuelven dividiéndolos en tamaños manejables y escribiendo módulos que cumplan con las tareas clave. También sabría que las estructuras de datos se desarrollan en función de los requisitos de datos: entrada, manipulación y salida. En cuanto a los algoritmos, son tan fáciles o tan difíciles como los creas, en esencia, son poco más que recetas para producir un resultado dado basado en una fórmula.

Cuando comencé (a los seis años) con un programa escrito en Fortran, no tenía sentido hasta que el programador me llevó a través de él (en papel) al mostrarme cómo funcionaba. Tal vez lo que necesita es un tutor, yo hubiera dicho mentor, pero no parece haber nada que guiar en esta etapa.

Después de que termines de sentir lástima por ti mismo, ¿qué te parece buscar un proyecto que valga la pena y sumergirte en llevar a cabo esa única cosa? A lo largo del camino, aprenderás más sobre ti mismo y el arte y la ciencia de la programación. Todos tenemos pasión por lo que hacemos con éxito y disfrutamos haciéndolo porque lo logramos.

En cuanto a lo que será nuevo en el mercado laboral == buena suerte. Cada día aparecen nuevos lenguajes y las plataformas de programación de expertos hacen que la codificación de arrastrar y soltar esté disponible para todos. Elija el idioma que funcione para resolver su problema, envíe el proyecto y, si es necesario, vuelva a escribirlo para obtener velocidad, compacidad y corrección de errores.

Hay una gran división entre percepción y realidad. Parece que tienes un problema psicológico basado en tus propias expectativas. Le sugiero que desee obtener asistencia psicológica profesional para determinar una dirección y aprender algunas habilidades de afrontamiento para ayudarlo en su viaje.

Odio sonar como un imbécil, pero después de leer tu pregunta, sentí que estabas viviendo en el pasado y posiblemente no te abres a nuevas oportunidades que no tuvieran que ver con la programación. Créeme, esta es la versión educada de lo que te diría si me lo contaras en persona.

Envíeme un mensaje privado y podremos determinar un curso de acción que funcione para usted.

La sugerencia de la enseñanza de David Williams es acertada. Has tenido tantos ejemplos de cómo hacerlo mal que un poco de lluvia de ideas y algunas iteraciones de refinamiento y tienes que haber encontrado algo mejor.

Otra posibilidad: eche un vistazo a un nuevo idioma, preferiblemente uno que proporcione un choque cultural. Por lo que dice, aparte de algunos BÁSICOS al principio, se ha centrado en lenguajes orientados a objetos. Buena idea, aún creo que son el enfoque principal de la programación a nivel empresarial en este momento, pero solo para su propia edificación personal, y para realmente romper su mentalidad y obligarlo a pensar de nuevas maneras, consulte los idiomas que funcionan en un paradigma diferente: un lenguaje de programación funcional como Haskell, un lenguaje de procedimiento como PASCAL, o incluso profundizar en IL o ensamblados. (Aprender a ensamblar para programadores es como aprender latín para personas que hablan inglés; pasarás años pensando que nunca harás nada con eso, pero gradualmente te darás cuenta de que conocer los componentes básicos del lenguaje de más alto nivel que usas realmente afecta TODO lo que haga; todavía le doy crédito a mis años de latín por convertirme en un estudiante de inglés.) Aprender a hacer las cosas que está haciendo de diferentes maneras, viéndolos desde una nueva perspectiva, es una excelente manera de rejuvenecerse.

Quería abordar otro punto en su publicación: trabajos de programación en el mundo real, en lugar de lo que todos pensábamos que serían los de programación cuando estuviéramos en la universidad. Sí, todos nosotros, y a juzgar por lo que dices aquí, creo que soy unos veinte años mayor que tú. Los idiomas han cambiado, los delirios no. Salí de la escuela entusiasmado con este nuevo negocio llamado C ++ (je, sí …), y cuando comencé a buscar trabajo, todos querían personas que conocieran los códigos JPL y FORTRAN heredados. (Sigo hablando un poco de JPL, honestamente.) Eso, desafortunadamente, es la vida, y usted hizo exactamente lo que hice. Entró en (* &% () ((* $ (soporte técnico. Inserte la historia de aquí) (solo tuve para volver al soporte técnico durante cinco años y medio cuando la economía se derrumbó, solo he estado en un trabajo de programación durante tres semanas. TAN FELIZ). Estoy seguro de que es diferente para todos, pero les diré que La forma en que rompí con el soporte técnico y el ensamblaje de hardware y todos los otros trabajos duros la primera vez fue que empecé a buscar ciertas palabras clave en los anuncios. La “migración” es el verdadero disparador. Una compañía que está anunciando un ingeniero de migración está buscando para alguien que tiene suficiente conocimiento del código heredado para poder transformarlo en el nuevo código. Si conoce C # y ASP Dot Net (no, Quora, no vincule automáticamente a Microsoft allí …), tiene el lado de la nueva tecnología es aproximadamente un tercio (según mi experiencia, la mayoría de las personas todavía buscan VB.NET, pero seamos honestos, si eres bueno con C # puedes elegir hasta VB en su sueño) de personas que desean migrar. Recoger los conceptos básicos de los idiomas antiguos en los que las personas buscan migrar no debería ser tan difícil (y de mi párrafo anterior, debido a esto, busque lenguajes de procedimiento y cualquier idioma vinculado específicamente a paquetes de software; le sorprendería. la cantidad de personas que siguen ejecutando bases de datos de nivel empresarial en FoxPro y Access …)

Realmente espero que funcione para usted. La codificación es el mejor trabajo del mundo, en lo que a mí respecta. Un flujo constante de nuevos rompecabezas para resolver y viejos rompecabezas cuyas piezas están fuera de conjunto.