JavaRush /Blog Java /Random-ES /Kay Horstmann y sus 1500 palabras sobre cómo convertirse ...

Kay Horstmann y sus 1500 palabras sobre cómo convertirse en un mejor programador de Java

Publicado en el grupo Random-ES
Probablemente ya hayas oído el nombre Cay S. Horstmann. Es una persona bastante destacada en el mundo Java y autor de numerosos libros sobre nuestro querido lenguaje. Entre ellos se encuentran el curso clásico "Core Java" (publicado en ruso en el libro de dos volúmenes "Java. Professional's Library" ) y una serie con un breve resumen de la esencia de "Java para impacientes" (publicada en ruso "Java SE 8. Curso Introductorio” y “Java SE 8. Curso Básico " ). Lleva el orgulloso título de "Campeón de Java". Y en este enlace podéis encontrar su web de la vieja escuela con información interesante.
Kay Horstmann y sus 1500 palabras sobre cómo convertirse en un mejor programador de Java - 1
Le informamos sobre una traducción de un artículo para el recurso InformIT , en el que Kay ofrece varios consejos para programadores principiantes y continuados sobre cómo mejorar en su profesión. Un día, Jennifer Bortel, directora editorial de InformIT, me pidió que le contara cómo convertirse en un mejor programador de Java. Ella sugirió que yo, el autor de Core Java para impacientes, podría saber algo al respecto. “No hay nada más fácil: cómprate un libro”, pensé al principio. Pero esta respuesta no funcionó, porque tengo que encajarla en 1500 palabras, y hasta este momento solo hay 62 * ( por supuesto, al traducir el artículo, no intentamos mantener el número de palabras - aprox. traducción ). Recientemente recibí un correo electrónico de un amigo desarrollador a quien le preguntaron en una entrevista por qué el siguiente código no era seguro para subprocesos:
class ThreadSafeClass extends Thread
{
     private static int count = 0;

     public synchronized static void increment()
     {
         count++;
     }

     public synchronized void decrement()
     {
         count--;
     }
}
Mi amigo decidió que el código en este ejemplo era seguro para subprocesos y estuve de acuerdo con él, señalando que faltaba una palabra clave staticen el segundo método y, una vez insertada, el acceso estaba controlado por el bloqueo integrado del objeto de clase. También dije que esta no es una buena pregunta para la entrevista porque si necesitas un contador de hilos, es mejor que uses AtomicInteger. Pero luego, en medio de la noche, me desperté y me pregunté: ¿y si esta palabra staticse omitiera por alguna razón? ¿Quizás algún entrevistador astuto estructuró deliberadamente este ejemplo de tal manera que engañara a los candidatos? Entonces le respondí al desarrollador que hizo la pregunta y le dije que probablemente estaba equivocado antes: en un universo paralelo llamado Preguntas de entrevista, la respuesta a esta pregunta es: "El segundo método contiene un bloqueo de objeto". Después de esta respuesta, el chico me preguntó si tengo un canal de YouTube donde enseño cómo manejar este tipo de problemas de entrevistas. Por desgracia, yo no hago esto. Enseño informática y escribo libros, pero mi principal objetivo no es ser mejores “solucionadores de problemas de entrevistas”, sino hacer de mis alumnos mejores programadores. Érase una vez, Peter Norvig ( científico estadounidense en el campo de la inteligencia artificial, director de investigación de Google - aprox. trans. ) escribió un artículo maravilloso en su blog. Sostuvo que los libros que prometen enseñarle Java en 24 horas o 21 días son simplemente ridículos. Es difícil no estar de acuerdo con él: se necesitan 10 años, o quizás 10.000 horas, para convertirse en un experto en cualquier campo. Y es bien sabido que los expertos procesan la información de manera diferente que los novatos. En un experimento clásico, a jugadores de ajedrez experimentados y novatos se les mostró un tablero con una determinada disposición de las piezas durante unos segundos, y luego lo ocultaron y les pidieron que ordenaran las piezas como estaban. Los principiantes no hicieron muy bien la tarea, pero los expertos no tuvieron ningún problema. Pero sólo bajo una condición importante: la disposición de las piezas debe corresponder al juego real . Si las piezas se colocaban al azar, los expertos no eran mejores reconstruyendo el tablero que los novatos.
Kay Horstmann y sus 1500 palabras sobre cómo convertirse en un mejor programador de Java - 2
Por eso respondí la pregunta de la carta exactamente como lo hice. Mi experiencia es en programación real, no en entrevistas, por lo que instintivamente agregué la palabra clave que faltaba y llegué a la conclusión "equivocada". Me gustaría pensar que todavía me contratarían después de explicarle lo que sucedió y por qué nunca escribiría código como el del ejemplo sin mi adición. Quizás, si esa respuesta no los satisficiera, yo mismo no querría trabajar con ellos.
Ahora bien, no creo que estudiar para exámenes de certificación o entrevistas te convierta en un mejor programador. También estoy seguro de que comprar una gran cantidad de libros sobre programación y luego leerlos de principio a fin tampoco funcionará (aunque a mí, como autor de estos mismos libros, ¡no me gustaría admitirlo!). De hecho, una forma realmente buena de convertirse en un mejor programador es crear la mayor cantidad de software posible . De vez en cuando imparto un curso de introducción a la informática en mi universidad. Este es, con diferencia, el curso más difícil que he impartido jamás. Es incluso más difícil que el curso de posgrado. Cuando comencé a trabajar como joven profesor, di diligentemente conferencias a estudiantes en las que cubría diligentemente cuestiones de programación, como la diferencia entre bucles fory whilebucles do. Luego asigné a los estudiantes cuatro proyectos de tres semanas. Y esta materia se ha enseñado así desde el principio de los tiempos en todas las universidades. Después de mi primer intento, el profesor del curso del segundo semestre se quejó de que la mayoría de mis antiguos alumnos no entendían ni siquiera los bucles más simples después del primer semestre de programación. Y tales resultados también se han producido desde el principio de los tiempos. ¿Recuerdas el artículo “FizzBuzz o por qué los programadores no saben programar” ? Cuando aprendes un idioma extranjero, la mayoría de las tareas son ejercicios y práctica, no teoría en absoluto. Es extremadamente importante "empujar" el conocimiento al subconsciente. El punto de inflexión llega cuando ya no es necesario pensar activamente en cada ciclo o (en el caso del francés), en cada verbo irregular. Si ha llegado este momento, entonces estás listo para pasar al siguiente nivel. Y no hay nada revolucionario en esta idea.
Kay Horstmann y sus 1500 palabras sobre cómo convertirse en un mejor programador Java - 3
La clave de todo es la retroalimentación instantánea. Algunos psicólogos creen que podríamos hacer mucho más con el aprendizaje basado en computadora con retroalimentación instantánea. Por ejemplo, en otro experimento clásico, los aspirantes a pilotos en formación se sometieron a una sesión de entrenamiento en la que debían mirar el panel de instrumentos una y otra vez y describir el movimiento del avión. Al mismo tiempo, recibieron retroalimentación instantánea que les indicaba si lo habían hecho correctamente o no. Después de dos horas de entrenamiento, superaron a los pilotos experimentados. Por supuesto, esto no significaba que pudieran enviarlos inmediatamente a un vuelo real, pero ya no estaban nerviosos por los variados y numerosos diales del panel de instrumentos. Entonces, si recién estás comenzando a aprender Java, la mejor idea es hacer muchos ejercicios de práctica para practicar. Existe una gran cantidad de sitios web y cursos en línea que verifican automáticamente la exactitud de su código. Elija uno que ofrezca desafíos reales en lugar de palabrerías. Después de todo, quieres que tu subconsciente sea bueno en el código que realmente escribirás en la práctica. Es por eso que no me interesan mucho los ejemplos de programación que utilizan situaciones artificiales, como clases de animales con métodos que maúllan y ladran. Después de un tiempo, dominarás los conceptos básicos de la programación. Para pasar al siguiente nivel, puedes escribir un par de proyectos. Hace varios años, el portal InformIT hizo una pregunta a programadores experimentados: "¿Cuál es la mejor manera para que un programador aprenda un nuevo idioma?" Si resumimos sus respuestas, podemos concluir lo siguiente: “usa este lenguaje en tu proyecto actual”. Así que piensa en lo que siempre has querido implementar y sigue adelante. Hace veinte años, cuando Java todavía era muy joven,mi amigo y en algún momento coautor Gary Cornell me llamó y me dijo: "Kay, vamos a escribir un libro sobre Java". Mi respuesta fue que ni él ni yo sabemos realmente nada sobre este Java, a lo que él replicó: “¿Y qué? Ya tenemos un contrato para el libro". Nada que hacer. Tuvimos que darnos prisa porque alguien más anunció el inminente lanzamiento del libro "Aprende a ser un tonto de Java en 24 horas" ... Creo que se llamaba algo así ( Kay se burla de la serie de libros "Para tontos" - "para tontos", la palabra "tonto" se puede traducir como "tonto" - nota del traductor ). Para aprender un nuevo idioma, comencé con proyectos: escribir un programa que creaba una interfaz de usuario para la planificación de la jubilación y luego un programa que se conectaba a un sitio meteorológico y mostraba un informe meteorológico. Después hay un programa que simula el movimiento de los coches en la carretera. ¡En ese momento, estos programas eran simplemente increíbles!java.awtjava.nety hilos ( threads). Y tuve que aprender cómo hacer que esto realmente funcionara, no solo lo que decía la documentación. En aquella época eran cosas completamente diferentes. Por eso Core Java [1] fue un éxito: no era para tontos.
Kay Horstmann y sus 1500 palabras sobre cómo convertirse en un mejor programador de Java - 4
En ese momento, aprender Java era mucho más difícil. No teníamos sitios como Stack Overflow ( y tampoco teníamos JavaRush, nota del editor ). En este punto, paso a formular los siguientes consejos para mejorar su “habilidad” de programación. Entonces, cuando trabajas en tu propio proyecto, es probable que te quedes estancado en alguna parte. En este caso, acude a un foro especializado e intenta encontrar respuestas. Créame, esta es una gran idea . Primero, hará preguntas que ya se han hecho muchas veces antes. Pero pronto adquirirá conocimientos y sus preguntas serán más exclusivas. ¡Esta es una manera increíble de aprender! Por supuesto, no se trata simplemente de copiar y pegar un fragmento de código y preguntar: "¿Qué debo hacer con esto ahora?" Debes llegar al fondo del asunto, explicar qué intentos ya has hecho para resolver el problema antes de quedarte atascado. Por cierto, en la mayoría de los casos, mientras formulo una pregunta por escrito, encuentro la respuesta yo mismo y todo lo que tengo que hacer es decirme: "¿Cuál es el problema aquí? Es una obviedad" incluso antes de enviar la pregunta. . Pero incluso si esto no sucede... Créame, las preguntas reflexivas tienden a atraer respuestas reflexivas. Sólo recuerda devolver el favor social respondiendo las preguntas reflexivas de otras personas. Tanto hacer preguntas como responder preguntas bien pensadas te convierten en un mejor programador. “Entonces, ¿qué pasa con los libros? - usted pregunta. "¿Realmente se han vuelto completa e irrevocablemente obsoletos gracias a Google y Stack Overflow ?" Siempre que navego por una nueva tecnología, creo que soy una persona valiente y que puedo superar todas las dificultades por sí solo. Pero una hora de tormento sin sentido da paso a una hora de cordura y compro un libro. Los libros técnicos son una ganga impresionante hoy en día. Si pago $40 por un libro electrónico y solo obtengo una respuesta rápida a una pregunta, ya recuperé mi dinero. Odio decepcionar a mis compañeros escritores, pero nunca he leído un libro técnico de principio a fin. Empiezo donde creo que está escrito mi problema y su solución, y leo hasta que entiendo cómo solucionarlo. Por esta razón, actualmente estoy intentando escribir libros que se puedan leer de esta manera. Este enfoque dio origen a la serie "Para los impacientes". Y aquí debería detenerme: excedí el límite editorial de 1500 palabras. Permítanme agregar que para convertirse en un mejor programador, comience por reconocer que existen muchos niveles de conocimiento.
  1. Primero, "tire" de las estructuras básicas del lenguaje a su subconsciente, es decir, lleve su conocimiento al automatismo resolviendo una gran cantidad de ejercicios.

  2. Empiece a trabajar en proyectos reales que le interesen lo más rápido posible.

  3. Luego únete a una comunidad donde podrás hacer y responder preguntas.

  4. Una vez que haga esto, podrá hablar con conocimiento y experiencia en las entrevistas. Y realmente no importa si resuelves el rompecabezas ideado.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION