Salut Si vous lisez cet article, vous avez très probablement une question sur la façon de devenir programmeur. Vous avez peut-être même décidé d'apprendre le langage de programmation Java, mais vous ne savez pas par où commencer à apprendre. J'ose aussi avouer que beaucoup se sont posé la question: est-il possible d'apprendre Java en 1 an? Et si je n'avais pas étudié à l'université en tant que programmeur? Je n'ai même pas de spécialité technique. Pourrai-je le faire? Combien de temps devrai-je consacrer à cette leçon? Qu'allez-vous apprendre? Par où commencer la formation? Si vous avez au moins une de ces questions, vous êtes maintenant au bon endroit.
Il n'est pas surprenant que beaucoup de gens se perdent au tout début, ne sachant pas par où commencer, car il y a tellement de langues autour, beaucoup de livres de programmation, différents types de formations, des cours vidéo et même du mentorat individuel. Comment choisir ce qui vous convient et comment obtenir des résultats dans un délai adéquat? Parlons de tout dans l'ordre.
La motivation
Avant de commencer une tâche difficile qui nécessite beaucoup de temps et d'énergie, vous devez comprendre pourquoi cela vous convient. Chacun de nous doit répondre à trois questions importantes:
Pourquoi? Est la question la plus difficile. Il sous-tend la motivation. Vous devez clairement comprendre quel est votre objectif et ce que vous recherchez. L'argent ici ne devrait pas être une raison clé, mais simplement un ajout important. Si vous aimez les technologies modernes, vous aimez créer quelque chose, vous pouvez vous asseoir pendant des heures dans votre entreprise préférée, vous êtes prêt à le faire gratuitement et vous avez une pensée logique, alors il est probable que ces cours sont juste pour vous. Vous devez pouvoir apprécier le travail. Ce n'est que dans ce cas qu'il est possible d'obtenir de très bons résultats.
Quoi? - C'est une question assez logique. Ce qui doit être fait pour réussir dans cette affaire. Ici, la même question peut se poser, quelle langue choisir et quels matériaux seront nécessaires pour l'étudier.
Comment? - Comment obtenir des résultats significatifs dans un délai adéquat.
Si tout le monde doit répondre à la première question de manière indépendante, alors nous pouvons traiter les deux dernières ensemble.
Quelle langue choisir?
Supposons qu'avec la motivation, tout va bien et nous pouvons passer à la question suivante. Avant de choisir une langue, vous devez savoir s'il y a des postes vacants sur le marché du travail, s'ils seront au moment où vous maîtriserez le niveau de base et commencerez votre recherche d'emploi. De plus, la complexité du langage de programmation joue un rôle. Plus la langue est complexe, plus vous aurez besoin de temps pour la maîtriser. En revanche, choisir ce qui est le plus facile n'est pas toujours bon non plus, car la concurrence peut être plus forte ici que dans les autres catégories. Afin de déterminer les perspectives de la langue, vous devez analyser où elle est utilisée, sa portée et la fréquence à laquelle de nouveaux cadres sortent dans la langue de votre choix. Ici, l'évaluation des langages de programmation peut nous aider.
Je pense qu'il est temps de sauvegarder les mots avec des chiffres. Selon divers sondages, les cinq leaders sont Java, JavaScript, C ++, C et Python.
Des exemples d'enquêtes peuvent être trouvés en abondance sur Internet. En voici quelques-unes:
Par exemple, selon la version de tiobe.com , qui publie régulièrement un classement des langages de programmation, Java est resté un leader depuis de nombreuses années. Les cinq premiers ont également C ++ et Python.

Une autre source de statistiques faisant autorité, le site Web Stackoverflow , qui a mené des enquêtes auprès de ses utilisateurs, affirme que JavaScript est en premier lieu, tandis que Java est sur la cinquième ligne de la note. Mais ici, les langages de balisage HTML et CSS ont également été pris en compte.

Il convient de considérer le fait que de nombreux programmeurs Java peuvent dans une certaine mesure connaître JavaScript. Parmi les développeurs JavaScript, il y a moins de personnes qui connaissent également Java. Cela ajoute quelques points à JavaScript dans une enquête précédente.
Examinons maintenant le nombre de postes vacants et les réponses des candidats dans différentes langues. Afin de ne pas m'expliquer longtemps, je ne donnerai que quelques liens. Par exemple, le site Web DOU.ua publie régulièrement diverses statistiques sur les postes vacants, les salaires, etc. Par exemple, vous pouvez observer des tendances intéressantes dans l' augmentation du nombre de postes vacants dans les principales langues, et là vous pouvez utiliser divers filtres qui montrent le ratio du nombre de postes vacants dans différentes villes et dans différentes langues. Les données sont disponibles sous forme tabulaire et graphique. Parmi les favoris ici, comme d'habitude, sont Java, Python, C ++, .NET. De plus, le ratio du nombre de postes vacants / réponses pour 2018 est le meilleur pour C ++, 2-3 personnes par place. Malheureusement, je n'ai pas pu trouver de statistiques similaires pour d'autres pays. Mais sur Habré, il y a un bon article avec des infographies spécifiquement sur Java.
En général, vous devez choisir l'une des meilleures langues, puis au moment de l'obtention du diplôme, vous aurez une bonne chance de trouver un emploi.
À mon humble avis, une bonne option pour commencer une carrière est Java. Langage pas trop compliqué, large champ d'application et nombre suffisant de postes vacants. Il s'agit de Java qui sera la seconde moitié de notre article. Si je devais tout recommencer maintenant, Python pourrait devenir une bonne alternative, car il gagne activement en popularité.
Présentation de l'écosystème Java
Afin que vous ayez une meilleure compréhension de ce que vous devez traverser pour devenir programmeur Java, nous vous donnerons un petit aperçu de l'écosystème Java. Je suggère de regarder l'illustration suivante. Il ne couvre certainement pas tous les aspects, mais il vous donnera une certaine compréhension.

Au centre de l'univers, comme d'habitude, nous avons le langage Java lui-même. Plus précisément, Java Core. Au moment de la rédaction de cet article, Java JDK 10 a vu le jour. Oracle a changé la politique de travail avec les versions Java et maintenant il n'y a plus une telle différence entre les versions que lorsque Java 8, par exemple, a été publié. C'est cette version qui reste la plus populaire et la plus utilisée dans la grande majorité des entreprises et des projets. Vous pouvez en toute sécurité commencer à apprendre la langue avec cette version, et apprendre de nouvelles puces en les imposant sur une connaissance de base. L'étude de cette partie est peut-être la tâche la plus difficile pour un débutant. Vous devez maîtriser un nouveau type d'activité et commencer à penser différemment. Une grande quantité de matériel à acquérir y est également superposée. La plupart de ceux qui commencent tout juste à abandonner sont précisément à ce stade. Tout dépend de votre motivation.
Si l'apprentissage de Java est satisfaisant, vous aurez besoin d'outils supplémentaires, tels qu'un système de contrôle de version (Version Control System) et un système de construction de projets. En tant que VCS, je recommande d'utiliser Git, qui est le leader absolu parmi eux. Tous les autres systèmes, tels que Subversion et Perforce, appartiennent au passé. De plus, vous pouvez utiliser gratuitement les référentiels Github ou GitLab pour votre code. Avec une forte probabilité dans l'entreprise, vous utiliserez le BitBucket d'Atlassian. Mais ce n'est qu'une coquille. Si vous apprenez à utiliser Git, tout le reste ne sera pas essentiel. Atlassian est également fournisseur de produits tels que Jira et Confluence, mais cela ne joue aucun rôle dans vos études.
En ce qui concerne les outils de construction de projets, il existe deux options: Maven et Gradle. À mon avis, Maven est préférable, mais d'autres développeurs peuvent avoir leur propre opinion. En principe, les deux cadres sont équivalents.
Après vous être familiarisé avec les choses ci-dessus, il vaut la peine de réfléchir à la façon de procéder. Dans la figure ci-dessus, vous voyez quatre directions principales de mouvement: Front-End (HTML, CSS, JS), Back-End (Hibernate, Spring, SQL), Android et Big Data. Ces quatre parties, bien que séparées sur la figure, sont en fait assez étroitement liées. Par exemple, si vous décidez de devenir développeur Java Full-Stack, vous devrez bien étudier la partie Back-End et avoir une compréhension générale des bases de la partie Front-End. Vous ne devez pas vous attendre à être impliqué dans la mise en page du site, mais vous devez connaître le HTML. Je dois également noter que dans la section Back-End, Spring se réfère principalement à Spring Core. C'est avec cette partie du cadre que vous devez commencer. Maintenant, il s'est développé à un point tel qu'il couvre tous les aspects du développement Java. Alternativement, Oracle essaie de promouvoir la spécification Java EE, mais ils ne fonctionnent pas très bien.
Quant à BigData, il existe également une pile de technologies assez importante. Fondamentalement, ils sont tous conçus pour le stockage distribué et le traitement distribué des données en utilisant l'approche Map-Reduce. La technologie la plus ancienne et la plus célèbre ici est Hadoop.
Je pense qu'Android ne vaut pas la peine d'être expliqué. Je peux seulement dire que pour écrire des applications pour cette plate-forme mobile, vous devrez apprendre Java.
Comme vous l'avez peut-être remarqué, il existe de nombreuses applications pour Java, donc dans un avenir prévisible, après avoir appris Java, vous ne serez pas laissé sans travail.
Par où commencer? Que lire?
De toute évidence, vous devez commencer par les bases, c'est-à-dire avec Java Core. Puis Maven, Git, puis la direction que vous préférez.
Ici, vous avez trois options. Nous ne considérons pas la situation lorsque vous avez choisi cette spécialité à l'université. Elle n'exclut toujours pas les options décrites plus loin.
Première option - Java BooksLa manière la plus ancienne, traditionnelle et jusqu'ici la plus éprouvée. Avantages: la plupart des livres d'éditeurs bien connus sont écrits par des auteurs professionnels, dont beaucoup ont des dizaines d'années d'expérience dans le développement et l'enseignement dans de prestigieuses universités occidentales. Ces livres sont également soigneusement vérifiés par les éditeurs eux-mêmes, de sorte que la probabilité d'erreurs est très faible. Surtout quand le même livre est republié encore et encore à mesure que la langue se met à jour. Après avoir lu les livres de base, vous devez passer à des livres plus avancés. Il y a peu d'endroits où vous pouvez trouver des sujets de programmation avancés considérés avec la même profondeur. Inconvénients: de nombreux livres sont écrits dans une langue académique sèche et ressemblent davantage à des livres de référence. Le célèbre auteur Kay Horstmann lui-même a admis à plusieurs reprises qu'il ne lisait pas complètement ces livres, mais seulement les chapitres qui l'aident à résoudre le problème actuel.
Les livres les plus populaires et les meilleurs pour les débutants sont les suivants (les noms sont en anglais, dans les cas où le livre n'a pas été traduit en russe ou la traduction n'a pas été trouvée):
- Programmation Java - Paul Daytel et Harvey Daytel. Ce livre a survécu à un tas de réimpressions et est peut-être le tutoriel Java le plus complet. En plus du langage lui-même, les bases des algorithmes y sont encore assez bien expliquées.
- La philosophie Java - Bruce Eckel - a également gagné une place d'honneur dans la bibliothèque des programmeurs. Explications accessibles et compréhensibles. Bon pour les débutants.
- Head First Java, 2nd Edition - Bert Bates, Kathy Sierra - un livre qui est devenu populaire pour sa capacité à expliquer des concepts complexes avec des exemples de vie simples. Pas trop profond dans le contenu, mais toujours intéressant.
- Java Bibliothèque professionnelle. Volume 1.2 - Kay Horstmann. Ce livre de référence s'est également installé depuis longtemps sur les étagères de nombreux développeurs Java. Il s'agit simplement de la catégorie de ces livres à partir de laquelle des chapitres séparés sont lus pour résoudre les problèmes, et non du livre entier.
- Java 8. Guide du débutant - Herbert Shildt. Je n'ai pas lu ce livre moi-même, mais j'ai entendu plusieurs critiques positives. Lisez ou non - décidez par vous-même.
- Structures de données et algorithmes en Java - Robert Laforet. L'un des meilleurs livres sur les structures de données.
- Java Programmation efficace - Joshua Bloch. Un livre Java légèrement plus avancé. Il contient une multitude de trucs et astuces pour améliorer votre code. Récemment publié la 3e édition de ce livre. Je recommande vivement la lecture.
- Concurrence Java en pratique - Brian Goetz. Est un bon vieux guide multithreading en Java qui ne se démode pas.
Je recommande de lire les trois derniers livres à ceux qui connaissent déjà les bases de la programmation Java, mais prévoient de poursuivre leur développement. Des exemples de livres sur différents types de cadres ne seront pas donnés. Ils ont également été écrits à plusieurs reprises.
La deuxième option - des cours vidéo sur la programmation et pas seulement ...Les cours vidéo et divers types de leçons vidéo ont maintenant commencé à gagner en popularité. L'idée elle-même est très bonne et je l'aime personnellement. Ce type de matériel de formation est particulièrement adapté aux visuels, pour les personnes qui perçoivent mieux l'information visuellement. De plus, vous pouvez également utiliser la compréhension orale. Un avantage est le prix abordable. De plus, sur YouTube, vous pouvez trouver un grand nombre de leçons gratuites, parmi lesquelles il y en a de très bonnes. Parmi les lacunes des leçons sur YouTube, je dois noter la fragmentation fréquente et le manque de systématisation, ainsi que le fait que le contenu qu'ils contiennent est présenté de manière assez superficielle. Mais même ici, il y a des exceptions dans le bon sens du terme.
Les leçons YouTube alternatives peuvent être de tels sites:
Safari O'Reilly - une énorme collection de livres, didacticiels vidéo et webinaires sur divers sujets. La qualité des matériaux est un atout majeur. Les livres et les formations vidéo sont enregistrés par des professionnels reconnus dans le domaine. Le principal inconvénient ici est le prix. 400 $ par année si vous payez immédiatement ou 480 $ si vous payez mensuellement. Tous les documents sont en anglais. Si vous décidez de vous abonner, je recommande des documents préparés par la maison d'édition O'Reilly elle-même, ils sont généralement meilleurs que les leçons des autres éditeurs.
Pluralsight est un bon endroit pour les didacticiels vidéo. Le choix des matériaux sur les sujets est large, mais ils sont surtout plus superficiels que dans le cas précédent. Tous les documents ici sont également en anglais. Le prix de l'abonnement est de 29 $ par mois, ou 299 par an. Ici, comme dans le cas précédent, il y a accès au matériel en payant l'abonnement. Vous ne pouvez pas acheter un ou deux cours pour toujours.
Udemy est une grande bibliothèque de divers cours. Il diffère en ce sens que les cours ici ne sont pas seulement en anglais, mais aussi en russe. La politique de prix ici est complètement différente des ressources précédentes. Ici, vous pouvez acheter un cours et il restera avec vous pour toujours. En choisissant un cours sur Udemy, vous devez faire attention au nombre d'heures de cours vidéo, à la qualité sonore (généralement plusieurs conférences sont disponibles sans inscription), aux critiques d'autres auditeurs. Ici, je veux recommander le cours «Java. Du simple au complexe . ” En termes de qualité (nombre d'heures) par rapport au prix, c'est peut-être le cours Udemy le plus rentable en russe. En suivant le lien, vous obtenez un prix fixe avec une remise de 90%. Seulement 10 avec un petit dollar pour 33 heures d'excellent contenu vidéo. Au cours de la préparation du cours, l'auteur a analysé un grand nombre de cours, de livres et de matériel de formation, et a également appliqué une expérience de sept ans dans le développement d'applications de niveau entreprise.
Troisième option - Cours à temps pleinUne autre option de formation qui peut vous conduire à votre objectif chéri. Tout est ambigu ici. D'une part, en allant à des cours à temps plein, vous vous attendez à ce qu'on vous montre et vous dise tout ce dont vous avez besoin. D'un autre côté, vous devez tout de même vous apprendre. Aucun enseignant ne peut simplement vous montrer à quel point il est bon. Ici, comme partout ailleurs, tout dépend de la motivation personnelle et de la perspicacité personnelle. Je dis donc avec confiance qu'il n'y a pas d'échappatoire aux livres et aux cours vidéo. L'avantage peut être qu'un bon professeur vous aidera à comprendre ces choses que vous ne pourriez pas comprendre par vous-même et accélérera un peu le processus d'apprentissage.
Ici, comme dans le cas des cours vidéo, vous devez aborder soigneusement le choix. Comme dans d'autres domaines, la demande crée l'offre et il est prévu qu'il y aura de nombreux cours à temps plein de faible qualité sur le marché. Les raisons de la mauvaise qualité sont différentes et la raison n'est pas toujours l'enseignant. Un problème courant est que pour augmenter les revenus, les cours scolaires gagnent trop d'élèves et même le meilleur formateur ne pourra pas consacrer suffisamment de temps à chaque élève. Plus le groupe est grand, plus les élèves seront diversifiés dans le groupe. Au final, le groupe est divisé en plus fort et plus faible. En fin de compte, soit vous piétinez sur place, car l'enseignant doit expliquer la même chose plusieurs fois ou si la plupart du groupe a plus d'expérience que vous, vous commencez désespérément à prendre du retard. Après un court laps de temps, les intérêts sont perdus et il devient clair que l'argent a été gaspillé. Lors du choix des cours, faites attention aux avis de ceux qui ont déjà suivi les cours, au nombre d'heures de cours, au nombre de personnes dans le groupe. Un indicateur important est la disponibilité des tests d'entrée et une description des exigences minimales.
Quelle option choisir?Ici, tout le monde devrait avoir sa meilleure option. Selon l'auteur, la meilleure option est une combinaison des trois options à un degré ou à un autre. Certainement sans livres, cela ne fonctionnera pas. Si vous décidez de suivre un cours de programmation à temps plein, vous devez d'abord comprendre si cette activité vous convient. Si oui, avant de vous y rendre, lisez au moins un livre, regardez quelques tutoriels vidéo. Premièrement, vous comprendrez clairement le vôtre ou non. Deuxièmement, avec une base minimale, vous pouvez poser les bonnes questions et finalement retirer le maximum du cours. Troisièmement, vous pouvez suivre un cours où un étudiant est requis un peu plus que des compétences informatiques de base.
Une fois que vous aurez acquis un minimum de connaissances, ce serait bien de trouver un mentor. Le plaisir n'est pas bon marché, mais si le mentor est bon, cela vous fera gagner beaucoup de temps. , — , , , , , .
?
. , . , . . Hello World , . . , . — , .
. , . . . , .
— . , . , . . , .
hackerrank . , . .
GitHub GitLab. , . - . , . , , , , . , . .
À ce niveau, vous pourrez probablement passer en contrebande en open source. S'il n'y a pas encore de travail, entraînez-vous. Vous en profitez, la société en profite.
Parallèlement au référentiel, il est temps de préparer un CV et de commencer à dépasser les seuils des entreprises. N'oubliez pas d'inclure des liens vers des projets dans votre référentiel. Obtenez autant d'entretiens que possible. La capacité de les réussir est une compétence très importante qui vous apportera un revenu supplémentaire à la fin.
En conclusion, je vous souhaite bonne chance. N'oubliez pas que Facebook et Apple étaient également de petites entreprises avec quelqu'un dans un garage ou un dortoir. Juste besoin d'apprendre. Peu importe combien d'heures par jour vous étudiez, mais combien de jours d'affilée vous le faites.