Codificación / Programación: ¿Por qué es que de vez en cuando o incluso a menudo me siento frustrado y paso horas tratando de programar una función para mi juego y falla?

Abraza la frustración y deja que te enseñe.

Una verdadera historia:

Entonces, hace unos tres años, entendí que quería hacer un editor como JSFiddle, pero quería que funcionara: A) como un solo archivo HTML B) sin bibliotecas C) casi como JSFiddle o Code Bolígrafo, D) sin conexión a internet.

No tenia las habilidades

El único problema fue que solo había estado escribiendo JavaScript durante aproximadamente … 6 meses cuando me decidí por McSandy. Y cuando digo “escribiendo JavaScript”, quiero decir, “escribiendo jQuery”. Entonces, en abril de 2012, traté de construir McSandy en jQuery, ya violando uno de mis objetivos principales.

En mayo de 2012, me rendí. No sabía cómo construir muchas de las características que quería sin usar jQuery. E incluso con jQuery, yo solo … no pude hacerlo

No sabía lo suficiente .

Ni siquiera podría haberte dicho qué era lo que necesitaba aprender. Me di cuenta de que lo que quería hacer era mucho más allá de mi conjunto de habilidades que ni siquiera sabía qué habilidades necesitaba. No podría concebir cómo hacer esto sin jQuery.

Así que seguí mi camino alegre:

  • Aprendí a escribir algunos plugins de jQuery.
  • Y luego escribí unos cuantos.
  • Aprendí sobre los patrones de JavaScript,
  • y aprendí sobre la POO, la SECA e incluso la idea básica de la “separación de preocupaciones”.
  • Usé jQuery cada vez menos. Y luego dejé de usarlo por completo.
  • Y dejé que McSandy simplemente se sentara en el fondo de mi mente, no como un fracaso, sino como un “proyecto en espera”

Luego, unos dos años después:

Estaba construyendo alguna aplicación. Y se hizo clic: “Holy Crap, sé cómo hacerlo!”

Así que volví a visitar McSandy en febrero de 2014, conociendo node.js, cómo usar Grunt, cómo usar patrones y módulos, y construí mi primera versión completamente funcional ese mismo mes. Y luego, durante los próximos seis meses, construí todas las funciones increíbles que realmente quería fuera de mi aplicación.

¿Por qué te frustras, pasas horas en una función y fallas?

Porque es posible que no tengas las habilidades para hacerlo. O puede que no sepa lo suficiente como para ver una forma alternativa de hacer su tarea.

Qué puedes hacer:

  1. Pasemos de esa tarea,
  2. ve a otro que puedas hacer,
  3. y si sigues haciendo eso, y te das cuenta de que no tienes ninguna tarea que puedas hacer para tu juego,
  4. poner su proyecto en espera.
  5. Aleja tu mente de tu proyecto,
  6. y en otros proyectos,
  7. pero deja que cada uno de esos otros proyectos te enseñe cómo construir un juego.

Pero no hagas

  • Etiquetar la falta de conocimiento o la falta de habilidades como un fracaso
  • Rendirse

Ah, y para lo que vale, aquí está McSandy:

paceaux / McSandy – the-HTML5-offline-Sandbox

McSandy | En línea

Por lo menos que yo sepa, es el único editor de código y vista previa que funciona de la misma manera sin Internet, permite arrastrar código y arrastrar código. Y sí, descarga esa página, y funciona exactamente de la misma manera. No es hermoso, no está libre de errores, pero estoy muy orgulloso de decir “lo construí”.

Imagina a la dama más encantadora que jamás hayas visto. Usted comienza en su mejor francés (y suponiendo que no habla nada) con la intención de establecer una fecha y en su lugar le pregunta a ella cuál es el precio de la mantequilla de maní. Eso podría ser frustrante.

Así que primero que nada: un juego es, por definición, algo que no se ha hecho antes. Así que no es como si pudieras obtener fácilmente una plantilla de sitio web, rellenar un texto y venderlo como algo completamente nuevo.

Algunos problemas serán difíciles. Recuerdo haber pasado semanas para descubrir cómo utilizar un método eficiente de ruta más corta en un juego basado en células en el que los barcos debían navegar alrededor de los obstáculos y enemigos.

Y si la comprensión de su idioma aún no está completamente desarrollada, entonces podrá hacer que la mayoría de las cosas funcionen, pero ese rara vez es la meta final. Al igual que el lenguaje normal, hay un poco de formas de hacerlo. Algunos horribles ineficientes, algunos altamente condensados ​​y posiblemente difíciles de leer y otros elegantes y rápidos. La libertad de expresarse en un idioma aumenta dramáticamente si se sale de los bucles y asignaciones variables y se introduce en el material menos utilizado.

El problema real, sin embargo, es este: la frustración es una reacción, no es una respuesta válida. La frustración es un sentimiento que permites simplemente porque en tu mente todo esto debería ser fácil. Y como eres invencible y omnipotente, no debería haber nada que no puedas simplemente desear que exista, ¿no es así? Bueno, lo dudo. La realidad es que los programadores reciben un alto pago exactamente porque la codificación es a menudo difícil y eso significa que debes estar dispuesto a luchar con ella. Usted podría sentirse desafiado. O podrías intentar hacer las cosas más fáciles. Pero solo caminar frustrado porque sientes que tienes derecho a estar molesto parece ser inválido y absurdo.

No se trata de dominar los idiomas. Solo he programado durante 42 años y, a excepción de algunos lenguajes ensambladores que ni siquiera he visto en décadas, no he dominado ninguno de ellos. Pero me gané la vida escribiendo programas y codificándolos durante 40 años.

Tu problema es que has aprendido idiomas, pero no programación. La programación es “aquí hay un problema, ¿cómo lo resuelvo?”, En inglés. Si no puedes averiguar cómo hacerlo, no puedes codificarlo.

Determine la FUNCIÓN que necesita primero. Entonces simplemente codifica esa función, esa es la parte fácil.

Si no ha aprendido a programar, tómese unos meses para escribir juegos y empiece a estudiar Algoritmos y Estructuras de datos (el nombre original era Algoritmos + Estructuras de datos = Programas). Es gratis, es un archivo pdf. Y sobre el mejor curso de programación que he visto. (Ignore el hecho de que el código de ejemplo es Pascal: Wirth necesitaba ALGUNO lenguaje de programación para demostrar el código, e inventó Pascal [entre otros idiomas], ¿por qué inventar uno nuevo solo para el libro?)

En primer lugar, debes saber por qué has fallado. Usted mencionó no dominar el idioma o los idiomas, por lo que podrían ser errores de compilación o simplemente no funciona cuando el programa se estaba ejecutando.

Su frustración puede ser percibida por muchos programadores en estos días, incluso el experimentado. Enfrenté mi propia frustración cuando las funciones en las que trabajé no funcionan y tuve que pasar horas para averiguarlo. Eventualmente, aprendí a tomarme un descanso del problema y fui a hacer otras cosas. Eventualmente vendría a mí. Creo que esto también se aplica a la mayoría de la gente.

Solo una nota interesante, la mayoría de mis soluciones provienen de mis “sesiones” en los baños …

Haga copias o confirmaciones regulares de su código para que pueda revertir.

Dar un paso.

Toma un trago, toma un descanso.

Cuando vuelva, vuelva a buscar en Google, investigue o vuelva a examinar lo que estaba viendo.

9 veces de cada 10 resuelvo un problema que me está volviendo loco cuando llego al día siguiente o de regreso después del almuerzo. Y siempre es increíblemente estúpido, pero mi cerebro estaba tan conectado que ignoraba algún hecho. Entra con los ojos frescos.

Tómese un descanso, cene en buena compañía o salga a caminar. Deje que su mente subconsciente mastique el problema. Al igual que cuando olvidas lo que ibas a hacer, si intentas recordar conscientemente la frustración evitarás que lo recuerdes, pero después de un tiempo, una vez que dejes de pensar en ello, la respuesta aparecerá en tu cabeza.