JavaRush /Blog Java /Random-FR /Kay Horstmann et ses 1500 mots pour devenir un meilleur p...

Kay Horstmann et ses 1500 mots pour devenir un meilleur programmeur Java

Publié dans le groupe Random-FR
Il y a de fortes chances que vous ayez déjà entendu le nom de Cay S. Horstmann. C'est une personnalité assez éminente dans le monde Java et l'auteur de nombreux livres sur notre langage bien-aimé. Parmi eux figurent le cours classique « Core Java » (publié en russe dans le livre en deux volumes « Java. Professional's Library » ) et une série avec un bref résumé de l'essence de « Java for Impatient » (publiée en russe « Java SE 8. Cours d'introduction » et « Java SE 8. Cours de base " ). Il porte le fier titre de « Java Champion ». Et sur ce lien, vous pouvez trouver son ancien site Web d'école avec des informations intéressantes.
Kay Horstmann et ses 1500 mots pour devenir un meilleur programmeur Java - 1
Nous attirons votre attention sur la traduction d'un article pour la ressource InformIT , dans lequel Kay donne plusieurs conseils aux programmeurs débutants et permanents sur la façon de devenir meilleurs dans leur profession. Un jour, Jennifer Bortel, directrice éditoriale d'InformIT, m'a demandé de lui dire comment devenir un meilleur programmeur Java. Elle a suggéré que moi, l'auteur de Core Java for the Impatient, en savais peut-être quelque chose. « Il n’y a rien de plus simple, il suffit d’acheter un livre », ai-je d’abord pensé. Mais cette réponse n'a pas fonctionné, car je dois l'insérer dans 1500 mots, et jusqu'à présent, il n'y en a que 62* ( bien sûr, lors de la traduction de l'article, nous n'avons pas essayé de maintenir le nombre de mots - environ trad. ). J'ai récemment reçu un e-mail d'un ami développeur à qui on a demandé lors d'un entretien pourquoi le code suivant n'était pas thread-safe :
class ThreadSafeClass extends Thread
{
     private static int count = 0;

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

     public synchronized void decrement()
     {
         count--;
     }
}
Mon ami a décidé que le code de cet exemple était thread-safe, et j'étais d'accord avec lui, notant qu'il manquait un mot-clé staticdans la deuxième méthode et qu'une fois inséré, l'accès était contrôlé par le verrou intégré de l'objet de classe. J'ai également dit que ce n'était pas une bonne question d'entretien car si vous avez besoin d'un compteur de threads, il vaut mieux utiliser AtomicInteger. Mais ensuite, au milieu de la nuit, je me suis réveillé et je me suis demandé : et si ce mot staticavait été laissé de côté pour une raison ? Peut-être qu'un intervieweur sournois a délibérément structuré cet exemple de manière à induire les candidats en erreur ? J'ai donc répondu au développeur qui a posé la question et lui ai dit que j'avais probablement tort plus tôt : dans un univers parallèle appelé Questions d'entretien, la réponse à cette question est : « La deuxième méthode contient un verrouillage d'objet ». Après cette réponse, le gars m'a demandé si je dirigeais une chaîne YouTube où j'enseigne comment gérer ce type de problèmes d'entretien. Hélas, je ne fais pas ça. J'enseigne l'informatique et j'écris des livres, mais mon objectif principal n'est pas de devenir de meilleurs « résolveurs de problèmes d'entretien », mais de faire de mes étudiants de meilleurs programmeurs. Il était une fois Peter Norvig ( scientifique américain dans le domaine de l'intelligence artificielle, directeur de recherche Google - environ trans. ) a écrit un merveilleux article sur son blog. Il a fait valoir que les livres qui promettent de vous apprendre Java en 24 heures ou 21 jours sont tout simplement ridicules. Difficile d'être en désaccord avec lui : il faut 10 ans, voire 10 000 heures, pour devenir un expert dans n'importe quel domaine. Et il est bien connu que les experts traitent les informations différemment des novices. Dans une expérience classique, des joueurs d'échecs expérimentés et novices ont montré pendant quelques secondes un échiquier avec une certaine disposition des pièces, puis il a été caché et on leur a demandé de disposer les pièces telles qu'elles étaient. Les débutants n'ont pas très bien fait face à la tâche, mais les experts n'ont eu aucun problème. Mais seulement à une condition importante : la disposition des pièces doit correspondre au jeu réel . Si les pièces étaient placées au hasard, les experts n’étaient pas meilleurs que les novices pour reconstruire le plateau.
Kay Horstmann et ses 1500 mots pour devenir un meilleur programmeur Java - 2
C'est pourquoi j'ai répondu exactement comme je l'ai fait à la question de la lettre. Mon expérience est dans la programmation réelle, pas dans les interviews, j'ai donc instinctivement ajouté le mot-clé manquant et tiré la « mauvaise » conclusion. J'aimerais penser que je serais toujours embauché après avoir expliqué ce qui s'est passé et pourquoi je n'écrirais jamais de code comme l'exemple sans mon ajout. Peut-être que si une telle réponse ne les satisfaisait pas, je ne voudrais moi-même pas travailler avec eux.
Maintenant, je ne pense pas qu'étudier pour des examens de certification ou des entretiens fera de vous un meilleur programmeur. Je suis également sûr qu'acheter un grand nombre de livres sur la programmation et les lire ensuite d'un bout à l'autre ne fonctionnera pas non plus (même si moi, en tant qu'auteur de ces mêmes livres, je ne voudrais pas l'admettre !). En fait, un très bon moyen de devenir un meilleur programmeur est de créer autant de logiciels que possible . De temps en temps, j'enseigne un cours d'introduction à l'informatique dans mon université. C'est de loin le cours le plus difficile que j'ai jamais enseigné. C'est encore plus difficile que le cours d'études supérieures. Lorsque j'ai commencé à travailler en tant que jeune professeur, j'ai donné avec diligence des conférences aux étudiants dans lesquelles j'ai consciencieusement abordé des questions de programmation, telles que la différence entre les boucles foret whileles boucles do. J'ai ensuite assigné aux étudiants quatre projets de trois semaines. Et cette matière est enseignée de cette manière depuis la nuit des temps dans toutes les universités. Après ma première tentative, l'instructeur du cours du deuxième semestre s'est plaint que la plupart de mes anciens étudiants ne comprenaient pas vraiment même les boucles simples après leur premier semestre de programmation. Et de tels résultats ont également eu lieu depuis la nuit des temps. Vous vous souvenez de l’article « FizzBuzz ou pourquoi les programmeurs ne savent pas programmer » ? Lorsque vous apprenez une langue étrangère, la plupart des tâches sont des exercices et de la pratique, pas du tout de la théorie. Il est extrêmement important de « pousser » la connaissance dans le subconscient. Le tournant arrive lorsqu’il n’est plus nécessaire de réfléchir activement à chaque cycle, ou (dans le cas du français), à chaque verbe irrégulier. Si ce moment est venu, alors vous êtes prêt à passer au niveau suivant. Et il n’y a rien de révolutionnaire dans cette idée.
Kay Horstmann et ses 1500 mots pour devenir un meilleur programmeur Java - 3
La clé de tout est un retour instantané. Certains psychologues pensent que nous pourrions faire beaucoup plus avec l’apprentissage par ordinateur avec une rétroaction instantanée. Par exemple, dans une autre expérience classique, les aspirants pilotes ont suivi une séance de formation au cours de laquelle ils devaient regarder encore et encore le tableau de bord et décrire le mouvement de l'avion. Dans le même temps, ils ont reçu un retour instantané indiquant s’ils l’avaient fait correctement ou non. Après deux heures de formation, ils ont surpassé les pilotes expérimentés. Bien sûr, cela ne signifiait pas qu'ils pouvaient être immédiatement envoyés sur un véritable vol, mais ils n'étaient plus nerveux face aux cadrans variés et nombreux du tableau de bord. Donc, si vous commencez tout juste à apprendre Java, faire de nombreux exercices pratiques pour vous entraîner est la meilleure idée. Il existe un grand nombre de sites Web et de cours en ligne qui vérifient automatiquement l'exactitude de votre code. Choisissez-en un qui offre de vrais défis plutôt qu’un charabia. Après tout, vous voulez que votre subconscient soit bon dans le code que vous écrirez réellement dans la pratique. C'est pourquoi je n'aime pas beaucoup les exemples de programmation utilisant des situations artificielles, comme les classes d'animaux avec des méthodes qui miaulent et aboient. Après un certain temps, vous maîtriserez les bases de la programmation. Pour passer au niveau suivant, vous pouvez écrire quelques projets. Il y a plusieurs années, le portail InformIT posait une question aux programmeurs expérimentés : « Quelle est la meilleure façon pour un programmeur d'apprendre un nouveau langage ? Si nous résumons leurs réponses, nous pouvons conclure ce qui suit : « utilisez ce langage dans votre projet actuel ». Alors réfléchissez à ce que vous avez toujours voulu mettre en œuvre et allez-y. Il y a vingt ans, alors que Java était encore très jeune,mon ami et parfois co-auteur Gary Cornell m'a appelé et m'a dit : « Ok, nous allons écrire un livre sur Java. » Ma réponse a été que ni lui ni moi ne savons vraiment rien de ce Java, ce à quoi il a rétorqué : « Et alors ? Nous avons déjà un contrat pour un livre." Rien à faire. Nous avons dû nous dépêcher car quelqu'un d'autre a annoncé la sortie imminente du livre "Apprenez-vous à être un mannequin Java en 24 heures" ... Je pense que ça s'appelait quelque chose comme ça ( Kay se moque de la série de livres "Pour les nuls" - "pour les nuls" le mot "Dummy" peut être traduit par "factice" - note du traducteur ). Pour apprendre une nouvelle langue, j'ai commencé par des projets : écrire un programme qui créait une interface utilisateur pour la planification de la retraite, puis un programme qui se connectait à un site météo et affichait un bulletin météo. Après cela – un programme qui simule le mouvement des voitures sur l'autoroute. À cette époque, ces programmes étaient tout simplement incroyables !java.awtjava.netet les fils ( threads). Et j'ai dû apprendre comment faire fonctionner cela, pas seulement ce que dit la documentation. A cette époque, c’étaient des choses complètement différentes. C'est pour cela que Core Java [1] a connu un succès : ce n'était pas pour les nuls.
Kay Horstmann et ses 1500 mots pour devenir un meilleur programmeur Java - 4
À cette époque, apprendre Java était beaucoup plus difficile. Nous n’avions pas de sites comme Stack Overflow ( et nous n’avions pas non plus JavaRush – ndlr ). À ce stade, je formule les conseils suivants pour améliorer vos « compétences » en programmation. Ainsi, lorsque vous travaillez sur votre propre projet, vous êtes forcément coincé quelque part. Dans ce cas, rendez-vous sur un forum spécialisé et essayez de trouver des réponses. Croyez-moi, c'est une excellente idée . Tout d’abord, vous poserez des questions qui ont déjà été posées à plusieurs reprises auparavant. Mais bientôt vous acquerrez des connaissances et vos questions deviendront plus uniques. C'est une façon incroyable d'apprendre ! Bien sûr, il ne s’agit pas simplement de copier-coller un morceau de code et de se demander : « Que dois-je en faire maintenant ? » Vous devez aller au fond des choses, expliquer quelles tentatives vous avez déjà faites pour résoudre le problème avant de vous retrouver bloqué. D'ailleurs, dans la plupart des cas, lorsque je formule une question par écrit, je trouve moi-même la réponse et je n'ai qu'à me dire : « C'est quoi le problème ici, c'est une évidence » avant même d'envoyer la question. . Mais même si cela n’arrive pas… Croyez-moi, les questions réfléchies ont tendance à attirer des réponses réfléchies. N'oubliez pas de rendre la faveur sociale en répondant aux questions réfléchies des autres. Poser des questions et répondre à des questions réfléchies font de vous un meilleur programmeur. « Alors, et les livres ? - tu demandes. « Sont-ils vraiment devenus complètement et irrévocablement obsolètes grâce à Google et Stack Overflow ? Chaque fois que je découvre une nouvelle technologie, je crois que je suis une personne courageuse et que je peux surmonter seule toutes les difficultés. Mais une heure de tourments insensés cède la place à une heure de raison - et j'achète un livre. Les livres techniques sont une bonne affaire de nos jours. Si je paie 40 $ pour un livre électronique et que je n'obtiens qu'une réponse rapide à une seule question, j'ai déjà récupéré mon argent. Je déteste décevoir mes collègues écrivains, mais je n'ai jamais lu un livre technique du début à la fin. Je commence là où je pense que mon problème et sa solution sont écrits, et je lis jusqu'à ce que je comprenne comment le résoudre. C’est pour cette raison que j’essaie actuellement d’écrire des livres qui peuvent être lus de cette façon. Cette approche a donné naissance à la série « Pour les Impatients ». Et à ce stade, je devrais m'arrêter : j'ai dépassé la limite éditoriale de 1 500 mots. Permettez-moi simplement d'ajouter que pour devenir un meilleur programmeur, commencez par reconnaître qu'il existe de nombreux niveaux de connaissances.
  1. Tout d'abord, « tirez » les structures linguistiques de base dans votre subconscient, c'est-à-dire amenez leurs connaissances à l'automatisme en résolvant un grand nombre d'exercices.

  2. Commencez à travailler sur de vrais projets qui vous intéressent le plus rapidement possible.

  3. Rejoignez ensuite une communauté où vous pouvez poser et répondre à des questions.

  4. Une fois que vous aurez fait cela, vous serez en mesure de parler avec connaissances et expérience lors d’entretiens. Et peu importe que vous résolviez le puzzle artificiel.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION