Ah, el síndrome del impostor, la perdición de mi existencia y la de todos los demás estudiantes. Llevo unos meses programando en C En esos pocos meses, aprendí a usar punteros para empujar la memoria y ver qué tan grande es algo que no es, si se ha cambiado, cómo apilar y detectar pérdidas de memoria, cómo aislar y jugar con bits individuales en un stream, y he hecho un pase para trasladar el Sudoku Solver de Norvig a C desde Python, incluye una restricción de desplazamiento que utiliza la clasificación por indirección de mi propio diseño.
Conozco de manera absoluta a Python, y esta es la primera vez que utilizo un lenguaje en un nivel inferior al de Java.
Actualmente estoy trabajando en un programa de encriptación de juguetes para una tarea y estoy a punto de iniciar un programa que genere árboles que se pueden ensamblar o desmontar a voluntad para hacer cosas como colas, o para crear un comportamiento priorizado. Al menos la mitad de las cosas que uso para las tareas, no las hemos cubierto. El TA me dice que tiene que ir a leer las páginas del manual para entender mi código lo suficiente para calificarlo.
La mayoría de las veces, estoy convencido de que soy demasiado tonto para que se me permita tocar las computadoras. Cada vez que no puedo compilar algo o no hace lo que quiero, me siento como el idiota más grande del mundo. También me sonrojo cuando me avergüenzo, lo que significa que si me olvido de una pregunta, podría hacer una imitación convincente de un tomate.
- ¿Cuáles son las principales dificultades que enfrentan las personas cuando aprenden Java con un fondo de C ++?
- Antes de empezar a aprender programación, ¿qué debo aprender primero?
- ¿Cómo empezar a aprender STM32? Vale la pena
- Cómo obtener una experiencia práctica en R
- Con habilidades de dibujo realmente amateur, pero con una gran pasión por el arte, ¿con qué universidad / tutor debo inscribirme para aprender bellas artes?
Me muevo por ahí sintiéndome como un fracaso colosal (mientras mi compañero me jura por ser tan negativo. Mi compañero, un físico de formación, tomó muchos exámenes en la escuela de posgrado que tuvo un promedio de clase de ~ 40%).
Entiendo el sentimiento. Íntimamente
Lo primero que debes hacer es tomarte un tiempo libre. Bajen los libros de texto y paseen. Es fácil dejarse acorralar por una combinación de pánico, sentirse como un fracaso y la sensación de desesperanza (dice ella, desde su propia esquina).
Cuando llegue a casa, tome un gran vaso de agua y bájese para una siesta. Cuando te levantas, hay algunas cosas que puedes hacer.
Así que las cosas no están funcionando para ti como son. De acuerdo, esto ocurre con regularidad en cualquier proceso de entrenamiento: los levantadores de pesas llegan a las mesetas, los corredores también los golpean y los académicos no son una excepción. Después de todo, estás entrenando tu cerebro.
La respuesta de Mallapur detalla muchos estilos de aprendizaje. Pruébalos para que puedas descubrir cuál te funciona mejor y no temas mezclar y combinar.
Déjame decirte lo que hago.
Soy uno de los obsesivos de la naturaleza; no puedo soportar no saber algo, y lo picotearé hasta que se abra para mí de una forma u otra. Esto es bueno y malo; junto con mi insomnio, significa que duermo cantidades ridículamente pequeñas y que me sentaré y codificaré / leeré páginas de manual / etc durante doce horas en una toma con muy poca provocación.
Sin embargo, mi cerebro hace cosas extrañas a la información; a menudo tengo que volver a verificar para asegurarme de que la ruta analítica natural para mí esté lo suficientemente cerca de la ruta analítica implícita en lo que sea que esté estudiando. Rara vez tomo una línea recta a través de un tema, por razones que no entiendo.
Esto significa que mi método de estudio es tanto tangencial como recursivo: voy y vuelvo, construyendo la siguiente pieza a partir de las piezas anteriores. Lo malo de estudiar muchas cosas es que a veces se construyen cosas a partir de partes que se supone que no deben estar allí. Funciona mejor para mí si dejo que mi cerebro siga al conejo, y vuelvo a verlo a menudo.
En el semestre de primavera de este año, estaba tomando un curso de Java. El proyecto final fue una reescritura completa de Space Invaders. Ya casi terminé, pero tuve un problema molesto. Cada vez que la nave era movida por el jugador, toda la maldita pantalla parpadeaba, hasta la tasa de actualización visible.
Leí sobre las tasas de actualización de monitores (tenga en cuenta que este es un curso Java de segundo nivel). Luego leí sobre tarjetas de video. Luego leí sobre varios tipos de temporizadores. Luego jugué con mi programa.
Luego le envié un correo electrónico al TA que tenía ese semestre, quien me dijo que dejara de intentar reinventar la rueda nuevamente.
Te ahorraré lo que dije (en voz alta, no al pobre TA).
Mi compañero, que me ha escuchado jurar más de lo que nadie debería, me convenció para que lo dejara y hiciera otra cosa por un tiempo. Protesté, me quejé, me quejé de mi carga de trabajo y finalmente me rendí.
Pasé algunas horas fragando y fui arrastrado a la cama, donde hice una imitación bastante buena de un cadáver durante diez horas impares (habían pasado tres días desde mi última noche de sueño).
El profesor del curso había mencionado la concurrencia brevemente antes de este punto. Sin embargo, los subprocesos múltiples generalmente no se cubren en detalle en ese nivel de trabajo de curso, y no pude entender la explicación, aparte de que la concurrencia tuvo algo que ver con la administración de la sincronización cuando ejecutas los programas.
Pero ahí estaba, ese parpadeo enloquecedor.
En este punto, estaba más allá del alcance requerido para el proyecto. Tenía un juego funcional en una GUI, y había agregado al menos uno de los elementos en la lista de bonificaciones (en realidad agregué casi todos). Pero no fue suficiente hasta que fue como yo quería. ser.*
También estaba tomando una (más que) carga completa de otros cursos, una carga de graduación a tiempo completo de teoría / métodos sociales, un curso de cálculo y el curso de segundo año de programación. Dejé el programa y comencé a trabajar en otras cosas. Tuve que terminar un montón de otros trabajos, pero sin importar qué otra cosa hiciera, una parte de la parte posterior de mi cabeza era reflexionar, y cómo hacer que varias cosas funcionaran en diferentes tipos de tiempo.
Mientras discutíamos la organización social, estaba pensando en el tiempo. Mientras discutíamos cómo se constituye un grupo demográfico, estaba pensando en el tiempo. Mientras discutíamos si hay una forma ética de usar la raza como categoría, estaba pensando en el tiempo. (Y, por supuesto, participando en la discusión.)
¿Cómo se puede hacer algo que se ejecute directamente a través de las instrucciones del programa, ejecutar las cosas en diferentes órdenes, o solo ejecutar algunas cosas en una larga lista de cosas? ¿Cómo se forma un conjunto coherente de instrucciones que anticipa las condiciones que requerirán que el flujo del programa cambie?
Mientras discutíamos los méritos e inconvenientes de usar distinciones categóricas para ver los diferentes resultados de los grupos raciales, estaba pensando en las distinciones sí / no (las personas que tienden a tratar la raza como usted es a, b, o c) – necesitamos algunas distinciones para recopilar datos nacionales sobre el efecto de la pobreza, o los resultados en el sistema de justicia penal, o para describir el agrupamiento en ciudades, o cualquier otra situación en la que lo que sucede sea diferente según quién se cree que es alguien, aunque las distinciones son a menudo espurio.
Qué demonios , pensé, solo haré una bandera para actualizar la nave en comparación con todo lo demás en la agrupación de actualizaciones debajo de mi temporizador. No es bonito, pero hará el trabajo .
Lo hizo, y poner una bandera allí me permitió crear una bandera para las peleas contra jefes y agregarlas como un nuevo “nivel” en el juego. (Por supuesto, descubrir cómo Java ordena la actualización de los componentes gráficos en el método de dibujo fue otro desagradable hervidor de peces, pero también lo descubrí por prueba y error, ya que las páginas man no son muy explícitas para esto. La respuesta es que es solo de forma secuencial, dependiendo de lo que haya reemplazado para obtener su método de pintura y lo que hay allí.)
He revisado la definición desde entonces, ahora que tengo más memoria y gestión de procesos en mi haber, y entiendo más. No tengo ninguna duda de que volveré a hacerlo una y otra vez a medida que trabajo para entender el tiempo como una variable en los procesos, y mientras trabajo para administrar cosas como en el tiempo de proceso de los hilos en lugar del tiempo a medida que lo experimentamos.
En orden, esto es lo que hice para entender el concepto de concurrencia:
- Investigué, leyendo como me gustaba más allá del alcance del curso.
- Hice la investigación basada en la resolución de problemas, con un problema concreto que podía probar en función de la codificación con mi código.
- Roté a través de los términos de búsqueda basados en la información que tenía. Lo primero que pensé que tenía era un problema de actualización de monitor.
- Tomé descansos y dejé que mi cerebro hiciera otras cosas en lugar de golpear mi cerebro contra él (o, más bien, mi compañero me arrastró pateando y gritando para que mi cerebro pudiera descansar).
- Me dejé ir y volví del tema, haciendo preguntas como “¿cómo podría algo tan lineal como una computadora hacer más de una cosa a la vez, o discriminar entre las cosas?)
- Me permití asociarme entre otro material y mi problema informático, aplicando enfoques de otras disciplinas al problema y dejando que mis cursos se informen entre sí.
- Me permití contemplar el problema y pregunté por qué los componentes funcionan de la manera en que lo hacen, o qué hace que ocurran ciertos tipos de comportamientos con respecto a los programas.
- Revisé el concepto según sea necesario o a intervalos, reconociéndolo como importante.
Por supuesto, esto significa que, entre mi trabajo en el curso y el intento de hacer el juego lo más bonito posible, acampé frente a mi computadora durante la mayor parte de las últimas semanas del curso, así que tuve un estudio intensivo. / practica continuando
Sin embargo, como lo dejó en claro, se me permitió ser un hilo conductor en mi vida, tejiendo mi trabajo en otras cosas, pasando por mi mente mientras caminaba, mientras cocinaba, o mientras leía algo más.
Como sé que me aburro, permití que mi interés informara cómo busqué y qué busqué. La información que reuní no siempre fue útil para el problema del parpadeo, pero resultó ser útil para otras cosas. Recomiendo tratar de encontrar enlaces entre el tema y sus intereses siempre que sea posible.
Encuentro que varias cosas realmente ayudan con el aprendizaje: la disposición a explorar (lo que incluye trabajar antes de los plazos para que tenga tiempo para explorar), la disposición a asociarse (para que lo que está aprendiendo se incorpore mejor a lo que sabe) ), la disposición a experimentar y / o jugar (hay, como sin duda ha descubierto, problemas que no surgen directamente en los libros de texto), la disposición a abordar el tema desde una variedad de ángulos diferentes (como alguien aprender a programar, como alguien a quien le gustan los conceptos abstractos, como alguien con un problema concreto, como un científico social que piensa acerca de la naturaleza de la categorización, como un estudiante de matemáticas que piensa en el proceso, etc.), y la voluntad de trabajar en lo que puedo ” Lo hago de inmediato.
Lo último es realmente importante para cualquiera que quiera aprender un tema. Ni siquiera lo clasificaría como paciencia en sí misma, no soy una persona paciente por naturaleza, aunque he aprendido a fingir con el propósito de hacer las cosas. Lo que sí tengo es la terquedad, la falta de voluntad para ser derrotado fácilmente, y un amor intrínseco del tema.
Aunque me siento como un idiota la mayor parte del tiempo, y desearía ser más inteligente, más rápido y pensar en patrones mucho más cercanos al camino del razonamiento indígena a los conceptos (tiendo a desviarme a lugares extraños), simplemente puedo ‘ No te dejes vencer por un concepto. Así que lo atacaré con cada herramienta que tenga, y aprenderé nuevas a medida que las descubro. Si tengo una pregunta sin respuesta, voy a desenterrar libros de texto, leer Stack Exchange, construir programas de juguetes, ver algoritmos, cualquier cosa y todo hasta que lo obtenga. **
Sin embargo, puedo cansarme y sentirme desesperado (como ahora, digamos).
Me pareces un luchador, alguien que está cansado en este momento, pero que está dispuesto a entrar y realmente luchar contra el concepto para dominarlo. Si no lo fueras, no publicarías aquí, tratando de obtener ayuda. Esto es excelente. Entender los conceptos de ciencias de la computación (o ciencias, o matemáticas, o ingeniería, o ser un artista realmente bueno, o hacer cualquier cosa bien) te lleva a luchar por ello. Tendrás que sudar para que las cosas se vean sin esfuerzo.
Si puedo prometerte algo, es esto: las personas a las que miras y piensan que simplemente “entienden” no solo lo entienden.
El conocimiento es acumulativo, requiere trabajo y está plagado de mesetas, momentos de desaliento, momentos de desesperación, frustración y, sin importar quién seas, vas a tener sentimientos de insuficiencia.
No estás solo, y trabajar para comprender conceptos es completamente normal en los cursos de informática (ni siquiera me refiero a personas que han estado programando durante décadas en el momento en que comienzan a tomar cursos, sino que pasan todo lo que hacen como ” talento natural.”)
Tómate un descanso, y tal vez intente mis sugerencias.
Definitivamente, debe utilizar la sugerencia de Mallapur y averiguar su estilo de aprendizaje, luego administrar sus estudios de acuerdo con ello.
Buena suerte matando al dragón.
______________________
* Este semestre en C ha sido sobre obligarme a dejar el código cuando funciona en lugar de reestructurarlo hasta que creo que es lo suficientemente bueno. Tengo la tendencia a tratar de hacer cosas realmente difíciles, cosas que están fuera del alcance de mi conjunto de habilidades actual, y de seguir luchando con las cosas de forma bastante indefinida.
** No dejes que nadie te engañe, si realmente quieren entender un concepto, en lugar de solo escupir una respuesta, tendrán que entrar allí y luchar contra la cosa hasta que obtengan las respuestas.
Soy lo suficientemente inteligente como para intuir la respuesta correcta a veces, pero simplemente saber (sin saber cómo o por qué) no es lo suficientemente bueno para mí.
También es peligroso, ya que le permite avanzar mucho más allá del punto en el que puede causar muchos problemas sin las herramientas que le permiten ver cuándo está a punto de crear problemas.