[JAVA] 8 sélections de mon apprentissage de la programmation de style

De manière inattendue, j'ai commencé à faire de l'informatique mon entreprise. Je fais du PM pour les produits informatiques maintenant, mais au début, je devais tout rattraper, même si j'étais "inexpérimenté".

Je pense que la première étape pour «littérature / inexpérimenté» pour comprendre et acquérir la technologie est de l'assigner à un projet de développement et d'obtenir des retours. Dans mon cas, je n'avais pas beaucoup de personnes / d'informations sur lesquelles compter, j'ai donc appris la programmation après essais et erreurs, et je suis toujours là. J'espère que cet article vous sera d'une certaine aide en revenant sur un tel apprentissage de la programmation assez égoïste.

En passant, j'utilise souvent Java pour le travail et Kotlin et JavaScript pour un usage privé. Ci-dessous, sauf indication contraire, pensez-y comme impliquant Java.

À la fin de l'article, j'ai résumé la référence des livres et des sites utilisés pour l'apprentissage, veuillez donc vous y référer également.

De l'apprentissage de l'histoire

J'ai fait quelque chose, utilisé du matériel pédagogique et utilisé des références autant que je pouvais en énumérer, mais j'en ai énuméré huit qui, à mon avis, étaient particulièrement efficaces pour l'apprentissage.

  1. Décidez et créez une application Web simple
  2. Google Tech Dev Guide
  3. Projets spectaculaires de "développement de loisirs" et dérivés
  4. Lisez le code source du partenaire de développement
  5. Mathématiques
  6. Langage C
  7. Creusez l'API standard du langage de programmation
  8. Créer un environnement AWS

Au début, je traite également avec Progate, etc. séparément, et le thème est de savoir comment progresser à partir de là.

1. Décidez et créez une application Web simple

Méthode d'apprentissage la plus ancienne. Dans l'étape «J'ai compris la grammaire à l'école de programmation et le matériel pédagogique en ligne, mais que dois-je faire ensuite?», Je pense qu'il est très bon de décider de ce que vous voulez faire et de le développer. Vous pouvez tout faire, mais l'essence de 1. est de «calculer à partir des livrables et de comprendre les concepts et la logique nécessaires».

Par exemple, le développement de LINE Bot est fortement recommandé lorsque vous souhaitez créer quelque chose au tout début du niveau "débutant". Il s'agit simplement "d'essayer de créer un script qui reçoit une entrée de LINE et de le traiter".

Il y a trois raisons principales de le recommander.

Je me demande si le troisième est particulièrement important. C'est assez facile à faire, mais il est facile d'avoir un sentiment d'accomplissement. Vous pouvez profiter de la combinaison de Google Apps Script (celui appelé GAS) et LINE Bot même après avoir pu le faire pendant un certain temps. Si vous recherchez sur le net, vous trouverez divers exemples d'implémentation. Si vous considérez une feuille de calcul comme une simple base de données et que vous la configurez comme "recevoir des entrées de LINE et renvoyer des données", vous pouvez également créer une base pour "UI --logic --DB" et apprendre beaucoup.

  1. Google Tech Dev Guide Le guide des développeurs Google Tech existe depuis un certain temps.

À mon avis, Google Tech Dev Guide est un site de matériel de programmation thématique organisé par Google. Il est facile pour les débutants de travailler car il est classé en fonction de l'objectif et du niveau.

Je pense que le niveau de difficulté de ce matériel pédagogique est parfait si vous essayez après avoir terminé 1. Bien que le contenu soit suffisamment solide pour paraître tel qu'il est, il existe du matériel pédagogique sur lequel même les débutants peuvent travailler avec une certaine quantité de tête. Après avoir tout fait, j'ai pu créer moi-même un petit algorithme.

"1. Décider et créer une application Web simple" a "du plaisir à terminer quelque chose", mais présente l'inconvénient de devoir réfléchir fréquemment à ce qu'il faut faire. Si le cours est décidé comme en 2., il sera plus facile de procéder à partir de la fin, donc je pense qu'il y a un aspect qui facilite la concentration sur l'apprentissage.

3. Projets spectaculaires de "développement de loisirs" et dérivés

Un projet spectaculaire de "développement de passe-temps". C'était vraiment magnifique, et je faisais quelque chose comme "créer un SPA que vous utiliseriez normalement".

J'en fais depuis moins d'un an, principalement les samedis et dimanches ... Les extrémités avant et arrière étaient largement séparées et les deux projets étaient en cours en même temps. Depuis que j'ai procédé avec le projet sur la face avant et le projet sur la face arrière en parallèle, j'ai l'impression que la quantité de code a triplé. La motivation à ce moment était de concevoir et de publier systématiquement la façade, la logique et la base de données (rires), et je l'ai implémentée et testée de manière cohérente.

Je me suis souvent trompé dans ce projet, donc je suis content de l'avoir fait. Pour vous donner quelques bons points,

«Je l'ai écrit assez sérieusement, donc la base de code était suffisamment sophistiquée pour être réutilisée ailleurs. ――E2e a créé ce que vous avez certainement envisagé ―― J'ai créé ma propre plate-forme de déploiement et ma configuration serveur / réseau, et j'ai littéralement «lancé le système» ―― J'ai pu extraire une partie du code source écrit ici et en faire une petite bibliothèque ――Un sentiment d'accomplissement qui a créé quelque chose qui fait du bien ―― Vous pourrez imaginer l'avant et l'arrière des services dans le monde, et la structure de haut en bas.

etc. Il semble y en avoir un peu plus.

Ce projet a produit beaucoup de code, alors j'en ai coupé une partie et je l'ai conservé comme ma bibliothèque préférée. Il est mémorable car les sources créées par une telle dérivation restent également des actifs.

4. Lisez le code source du partenaire de développement

Mon entreprise n'a pas de rôle d'ingénieur (à proprement parler), je demande donc à un associé qui a un poste informatique résident. Et tout le code source en cours d'exécution dans l'entreprise est placé dans le système de contrôle de version interne afin que tout le monde puisse le lire à tout moment. Pendant un moment, j'ai appris en lisant les sources de divers projets sans m'en lasser, et je les ai listés ici.

Cette méthode d'apprentissage peut être une tâche un peu délicate. Le code source des gens n'est absolument pas clair en le lisant. Je n'ai pas vraiment compris ... Il y a quelques points à prendre en compte lors de la lecture des sources accumulées par d'autres en position assise, je vais donc les énumérer.

Choses à faire attention 1 "Recherche approfondie des classes inconnues".

Il y a beaucoup de classes dans la bibliothèque standard et les bibliothèques dépendantes dont vous n'avez pas entendu parler. J'ai lu le code source par le haut et j'ai cherché la classe que je ne comprenais pas avec "Java 〇〇" (où 〇〇 est le nom de la classe). C'est une bonne idée de continuer avec la documentation officielle ici. La documentation officielle est rarement omise et peut être difficile à comprendre à première vue, mais elle fournit juste la bonne quantité de connaissances. À l'avenir, lorsque vous commencerez quelque chose d'autre, la "capacité de décodage de documents officiels" sera votre propre force. Je lis tout le temps Javadoc ...

Choses à faire attention 2 "Continuez à rechercher la classe / méthode / propriété appelée"

C'était aussi foiré ... Je ne peux pas comprendre le contexte dans lequel le code a été écrit en premier lieu même si je lis la source d'une personne. Le contexte empilé de la source n'est pas très clair à partir de la seule source, "Qui êtes-vous (classes, méthodes, propriétés que vous ne connaissez pas) ..." Ça s'améliore. A ce moment-là, j'étais à l'agonie parce que j'étais "trop enveloppé et je ne sais pas ce que c'était" ... Pour le moment, je pense que c'est une bonne idée de suivre la classe appelée plusieurs fois et de revenir au point où une implémentation concrète sort. L'impression est que la "structure inconnue" a été appelée et implémentée / étendue environ 4 à 5 fois.

Mais 2 ne connaît toujours pas la meilleure pratique, j'ai encore du mal.

Choses à faire attention 3 "Comprenez que tout est un" exemple d'implémentation ""

Selon le projet, la différence entre une logique / structure cool et non est énorme.

En tant que débutant, j'étais souvent confus parce que je ne pouvais pas décider quel type de logique / structure était bon. Vous voulez souvent faire quelque chose de similaire, mais la logique est différente d'un endroit à l'autre.

Dans mon impression personnelle, à moins qu'il ne s'agisse d'un framework ou d'une implémentation de bibliothèque bien connu, je pense qu'il y a peu de projets qui suivent la «route super royale», et en ce sens, «toutes les sources sont des exemples d'implémentation». Je vais le comprendre. Toutes les sources en cours de production ne sont pas organisées le long de la route royale (rires)

Et c'est vrai. Tous ne sont pas si cool (avec diverses restrictions).

5. Mathématiques

C'est l'étude des mathématiques qui m'a donné les informations les plus précieuses par rapport aux autres méthodes d'apprentissage. C'était une méthode avec une efficacité d'apprentissage très élevée, commençant par quelque chose comme "Je suis devenu capable de faire une petite application Web tout en la recherchant." Parmi les huit méthodes d'apprentissage répertoriées, l'effet d'apprentissage était particulièrement élevé.

Pour ceux qui sont diplômés du système d'information, il est naturel que les mathématiques soient importantes, donc ce n'est pas discutable, mais c'est vrai, l'ordinateur (général) lui-même est conçu sur la base de l'idée de mathématiques discrètes. C'est fait. C'est pourquoi je pense que les mathématiques sont indispensables pour travailler avec des ordinateurs.

En ce qui concerne ce que j'ai fait, j'ai fait des manuels et du matériel sur le Web que les étudiants liés à l'information pour les étudiants de premier cycle font, principalement des conférences en classe. J'ai fait diverses choses ici aussi, mais pour donner quelques exemples

Quel domaine du programme étudiez-vous? Est sélectionné en fonction de la gamme de questions de l'examen d'ingénieur en technologie de l'information appliquée.

À ce moment-là, après être rentré chez moi, je suis rentré chez moi plusieurs heures par jour pendant plusieurs mois pour ouvrir des manuels et résoudre des problèmes de mathématiques (rires). Même quand j'étais étudiant, j'utilisais l'algèbre linéaire et l'intégration différentielle simple, donc je ne me sentais pas très bon en mathématiques, et j'ai eu beaucoup de chance. J'ai ressenti le besoin et étudié, mais la conférence elle-même était purement intéressante. C'était un domaine que je n'avais pas abordé auparavant, donc c'était très intéressant de ressentir l'odeur unique des mathématiques discrètes.

Je suis curieux de savoir le principe de gérer quoi que ce soit, et je veux continuer à courir après "Pourquoi est-ce?" Même en programmation. J'ai appris ici (enfin) que les mathématiques sont un outil très important pour l'auto-résolution "pourquoi est-ce?" En programmation, et j'étais excité chaque jour quand je faisais le texte. Je pourrais comprendre de la partie principale que la structure manipulée en mathématiques serait une telle structure en essayant de l'exprimer dans une classe.

D'un autre côté, il est plein de sentiment d '«étude à l'école», et si vous ne vous asseyez pas, il y a de fortes chances que ce ne soit pas amusant en chemin ... Non recommandé pour tout le monde.

6. Langage C

C'est une route royale sur la route royale, il est donc étrange d'énumérer "Le langage C est super bon!" Comme on le dit souvent, le langage C a influencé de nombreux autres langages, et je me demande si c'est correct de le faire une fois.

Lors de la programmation dans le but de créer quelque chose et de le faire fonctionner, je pense qu'il est souvent plus facile d'utiliser d'autres langages et outils, donc apprendre le langage C consiste à "définir correctement et le faire fonctionner correctement". J'ai appris dans ce but. Le but du langage C était de "connaître le principe" en étudiant avec les mathématiques de 5. Par conséquent, en regardant l'échantillon du site d'apprentissage, je ne le touche qu'à la profondeur de l'écriture légère, en le compilant et en le déplaçant.

Bien que je n'ai pas pu approfondir cela, j'ai essayé d'implémenter l'algorithme et la structure de données en parallèle avec le langage C.

La zone autour du pointeur, qui est souvent dite "facile à trébucher", ne fuyait pas, et j'ai également remarqué "Est-ce un zo profond?!" Sur le chemin. Seul le pointeur a été étudié dans un livre séparé, et O'Reilly était bon.

Je me réfère encore fréquemment à ce livre. Cela a été très utile en ce sens qu'il a expliqué le "côté avant" que les humains peuvent voir et le "côté arrière" des mouvements physiques d'une manière modérément abstraite. J'aime particulièrement la merde de gestion de la mémoire.

7. Creusez l'API standard du langage de programmation

Je pense que c'est une bonne idée de se référer à l'API standard d'un langage de programmation à chaque fois. Dans mon cas, j'utilise Java pour le travail et touche souvent Kotlin pour un usage privé, je lis donc souvent la source JDK.

Une fois que vous vous y êtes habitué, vous pouvez penser qu'il est naturel de lire l'API standard ou la source de la bibliothèque, mais en tant qu'impression personnelle, "être la famille principale" est un obstacle de taille.

Je pense que c'est bien de faire cela dans le sens où vous pouvez voir directement ce que fait la famille principale. Au contraire, ce que vous pouvez obtenir autrement peut être petit. Cela peut être un effet secondaire que lorsque vous utilisez certaines classes ou méthodes API standard, vous serez plus convaincu et éviterez les abus. L'utilisation peut être résolue en lisant le document.

Par ailleurs, 7. est proche de "4. Lisez le code source du partenaire de développement". Tout ce que vous avez à faire est de trouver une classe ou une méthode qui vous intéresse ou que vous souhaitez comprendre davantage, et de trouver "Qu'est-ce que c'est?" La différence avec "4. Lecture du code source du partenaire de développement" est que l'API standard est plus abstraite et que la structure de classe est lourde, ce qui la rend difficile à suivre.

8. Créer un environnement AWS

Non seulement l'application, mais aussi l'élément «Essayons de contrôler la plate-forme d'application par vous-même». Qu'il s'agisse d'Azure ou de GCP au lieu d'AWS, vous pouvez choisir votre IaaS préféré. Il n'est pas nécessaire que ce soit IaaS, et c'est bien si vous pouvez préparer un environnement dans lequel vous pouvez facilement configurer "réseau et serveur".

Il y a longtemps, il fut un temps où je travaillais à la fois en tant qu'équipe d'infrastructure et en tant qu'équipe d'application, et je faisais quelque chose comme assembler un serveur et le mettre au milieu, alors j'ai travaillé dessus en complément de mon travail. J'ai également créé la base pour déployer la magnifique application de loisirs créée dans "3. Magnifique" développement de loisirs "et projets dérivés", et l'ai construite au point où elle peut être exploitée. Configurez un réseau, placez-y un serveur, placez-le au milieu et déployez l'application.

AWS a beaucoup de documentation et de didacticiels (même si je ne le dis pas), donc je pense que vous pouvez faire beaucoup de choses en lisant et en assemblant la documentation.

Depuis que je suis entré dans AWS pour travailler, je ne connaissais pas le tutoriel, et après avoir ouvert mon compte, j'ai été surpris qu '"Y a-t-il un tutoriel si puissant ...". C'est vraiment incroyable, n'est-ce pas ... Quand je le lis, je veux le proposer. J'ai essayé certains des thèmes qui apparaissent dans le tutoriel, et il était facile de comprendre ce que je voulais expliquer et ce que je voulais faire, et c'était amusant comme d'habitude (rires).

Du point de vue du développement d'applications, il est préférable de préparer votre propre VPC et votre sous-réseau tout en regardant des tutoriels, etc., de configurer un serveur dans le réseau et de suivre une série d'étapes pour assembler l'infrastructure d'exploitation.

Je suis toujours dans la discussion d'architecture pendant que je suis PM, et ce que je ne comprends pas est très utile pour lancer une petite démo avec mon compte et étudier.

finalement

Bien sûr, la méthode d'apprentissage est importante et je pense que divers essais et erreurs doivent être faits, mais à moins d'avoir de la "curiosité", vous ne vous y habituerez pas facilement. En écrivant ceci, pensez-vous à Pourquoi autant ou mieux que Comment? Je pense que c'est un gros problème. Même si vous regardez les gens autour de vous, ceux qui élaborent ou étudient habituellement une sorte de programme ne devraient pas sentir que leur curiosité est plus que leur obligation ou nécessité. Et même si j'ai eu l'opportunité et le besoin de le toucher dans mon travail, je n'ai jamais pensé que j'y serais aussi absorbé.

Tout va bien, c'est donc une bonne idée de commencer par explorer les techniques qui vous intéressent.

référence

Ceux qui apparaissent dans le texte et ceux qui n'apparaissent pas sont utiles.

  1. Décidez et créez une application Web simple

2.Google Tech Dev Guide

  1. Magnifiques projets de "développement de passe-temps" et dérivés
  1. Mathématiques
  1. Langage C
  1. Creusez l'API standard du langage de programmation
  1. Créer un environnement AWS

Recommended Posts

8 sélections de mon apprentissage de la programmation de style
Programmation apprentissage jour 3
Mon dossier d'apprentissage
L'histoire de l'apprentissage de Java dans la première programmation
Mon matériel de référence pour l'apprentissage Android
java learning day 4