Un prólogo rápido
Aprender haciendo: conocimiento vs know-how
Hay una gran diferencia entre conocimiento y know-how. Es un error común que los nuevos alumnos piensen que debido a que pueden "entender" un programa mientras lo leen, realmente entienden el razonamiento para que el programa se escriba de la manera en que está.
Y la única forma de llegar a esa segunda parte es practicando. Siéntate, abre un editor de texto, una línea de comando y ponte manos a la obra.
Es probable (y esperado) que en esta etapa su capacidad de comprender cómo interactúan entre sí varios componentes de software complejos sea limitada. Y en realidad es algo bueno, ya que te obliga a comenzar desde lo básico. No salte el arma y muévase al ritmo correcto: comience con ejercicios pequeños para tareas pequeñas.
Para ser honesto, nunca he estado convencido de que comenzar a aprender programación con Java es el camino a seguir (solía enseñar programación para vivir en la universidad, y todavía hago clases particulares ocasionalmente). Es en sí mismo demasiado complejo para comenzar, y la mayoría de los libros de Java parecerán bastante desalentadores. Sin embargo, seguramente se puede hacer (al menos para algunas áreas de ese conocimiento global que esperamos de los programadores), siempre y cuando se limite a aprender paso a paso.
Libros
Como está configurado en Java, y si necesita un libro decente de Java, le recomiendo:
- Pensando en Java . Está bien, aunque ahora un poco anticuado.
- El tutorial de Java . No es exactamente el mejor compañero del alumno, pero es una gran referencia para tener a mano, ya que cubre todos los conceptos básicos y proporciona ejemplos. El Aprendizaje de Java Language Trail probablemente debería estar en su lista de lectura, aunque creo que puede ser desalentador para principiantes completos, ya que presenta conceptos que pueden ser difíciles de entender al principio.
- Effective Java . No es un gran libro para aprender, pero también es una referencia increíble que deberías tener a mano para más adelante. No para leer de una vez, sino en trozos pequeños.
Solo menciono esto, ya que no sé lo que usas en clase. Hay muchos otros libros. Algunos son buenos. Algunos paralizarán a los estudiantes durante años.
Su proceso de estudio
El flujo de trabajo básico
A partir de ahora, te aconsejo que sigas este proceso de 2 pasos para todos los ejercicios y ejemplos de código que has visto en clase:
- Lee y estudia
- lee los ejercicios
- asegúrate de entenderlos
- código
- cierra el libro
- sentarse frente a una computadora con ese editor de código y línea de comando
- intente reescribir el programa usted mismo
En caso de fallo
Si falla y siente que necesita echar un vistazo al libro, es probable que su fracaso sea:
- (muy probablemente) que realmente no entendiste la solución,
- (menos probable) que haya olvidado cómo se ve una parte particular de la solución: sintaxis, uso de API, ...
Es probable que la primera causa sea la que enfrenta con más frecuencia. El segundo es anecdótico. Ambos se abordan mediante la práctica recurrente.
Cada vez que no pueda implementar uno de estos primeros ejemplos, mire el libro nuevamente y luego vuelva a cerrarlo. No codifique mientras mira el libro. Incluso te aconsejo que elimines toda tu solución y comiences de nuevo. La repetición es una parte molesta pero importante del proceso de aprendizaje.
No te lo tomes a la ligera. Cada vez que sientas la necesidad de decirte "sí, está bien, lo sé " o "estoy 90% allí, es casi tan bueno como lo he hecho" y quieres pasar a otra sección, luchar contra esa necesidad y comenzar de nuevo. Es muy difícil tener la honestidad de admitir que no entendiste completamente un concepto.
Nota al margen: considero que es un gran mal servicio que la mayoría de los programas escolares ahora intenten "iniciar" los cursos de programación simplificando demasiado las cosas y proporcionando herramientas demasiado avanzadas para los estudiantes: el objetivo no es hacer que su vida sea miserable o que usted también aprenda de memoria cosas que más adelante en su carrera serán automatizadas por sus herramientas y que a veces apenas recordará. Es para enseñarte todas las partes que flotan.
En caso de éxito: ¡vaya más allá!
Si logra implementar su ejercicio, no necesariamente salte directamente al siguiente. Intenta ver qué puedes hacer para mejorar eso. ¿Se puede cambiar la salida que se solicitó? Añadir una pequeña característica? ¿Una opción? Intenta hacerlo, ya que ahora estás en esa zona divertida donde pasaste la dificultad principal, y estos pequeños requisitos autoimpuestos son más propensos a mantener tu ánimo un poco.
Sin embargo, no vaya demasiado lejos: no pasa de imprimir el alfabeto y revertirlo para que aparezca de repente en una diagonal en la pantalla con un degradado de colores. Da pequeños pasos. El aprendizaje es un proceso largo e iterativo, y debe abordar los problemas con niveles crecientes de dificultad (por ejemplo, vea cómo pienso generalmente en explicar la recursividad ).
Es solo aprendizaje: una comparación
Su problema en realidad no está relacionado con la programación en absoluto. Es el mismo problema que miles de personas encuentran cuando intentan aprender matemáticas.
Si les da un problema, no ven cómo trabajar para llegar a la solución. Sin embargo, si escribe la solución para ellos, la mayoría lo entenderá y pensará "¡maldición, eso fue muy simple!". Sin embargo, les dará un problema similar con diferentes medidas e hipótesis y no podrán resolverlo: no entendieron la lógica detrás de esto, y necesitan práctica para poder hacerlo ellos mismos.
Tenga en cuenta que este es un problema común con las matemáticas, pero en mi opinión, lo ve en toneladas de otros campos donde se requiere cierta lógica: solfeo de aprendizaje, gramática del lenguaje, física, etc. Y no se trata de una habilidad "natural". para entender estas cosas: todo se reduce a la práctica (ya sea en esa área o en otras que llevan al individuo a comprender los conceptos en este campo más fácilmente).
No hay razón para que no puedas aprender a escribir código. Solo tienes que seguir intentándolo hasta llegar a ese "¡ah AH!" / Eureka momento. Luego pase al siguiente problema, más difícil.
Estos también pueden ayudar (más adelante):