Le codage n'est pas facile. ou au moins, apprendre à coder n'est pas, surtout quand on part de zéro. Cela peut prendre des années de travail dévoué pour devenir un bon programmeur; Y a-t-il un moyen de choisir la bonne langue pour commencer aujourd'hui, afin d'être embauché dans quelques années?
Pour le savoir, j'ai posé cette question à notre panel d'experts résidents: Alors que nous écrivons tous, plusieurs d'entre nous ont aussi une expérience de codage. Ce qui s'ensuivit fut une discussion intéressante que vous voudriez lire avant d'entreprendre votre voyage pour devenir un pro codeur.
Une méthode à la folie?
Ce n'est pas la première fois que nous discutons de choisir un langage de programmation: En 2011, nous avons discuté du langage de programmation que vous devriez apprendre pour le développement de logiciels. Quel langage de programmation devez-vous apprendre pour le développement logiciel? Quel langage de programmation devez-vous apprendre pour le développement logiciel? Lorsque vous démarrez sur le chemin de la programmation, il est important que vous investissiez judicieusement votre temps dans le choix d'apprendre quelque chose qui vous sera bénéfique dans l'avenir immédiat avec des résultats visibles sur votre plateforme de ... Lire la suite, ainsi que celui que vous devriez apprendre pour la programmation Web Quel langage de programmation pour apprendre - Programmation Web Quel langage de programmation pour apprendre - Programmation Web Aujourd'hui, nous allons jeter un oeil aux différents langages de programmation Web qui alimentent Internet. C'est la quatrième partie d'une série de programmation pour débutants. Dans la partie 1, nous avons appris la base de ... Lire la suite.
Mais il ne s'agit pas d'un conseil (comme "aller avec JavaScript") mais d'une méthodologie - quelque chose que les gens pourraient utiliser dans deux ans à partir d'aujourd'hui, théoriquement . Comment déterminer réellement quelles langues sont en hausse? Quels sont les métriques de popularité de code à faire confiance et à qui se méfier (et pourquoi)? Quels sont les meilleurs sites de projection de salaire? GitHub est-il une indication ou non?
Par exemple, vous ne trouverez personne à propos de PHP ces jours-ci, mais beaucoup de développeurs font du codage PHP, et c'est toujours la majeure partie de ce qui fonctionne sur le Web. Alors l'apprentissage de PHP est-il une mauvaise idée? (Probablement…)
Il n'y a pas une seule langue
C'est là que James, notre développeur Web résident et technicien, est intervenu pour dire ceci:
Les programmeurs n'apprennent généralement pas une seule langue de toute façon. Quiconque suit la voie CompSci classique se retrouvera avec beaucoup de Java, un peu de Haskell, du Prolog s'il suit un cours en IA, du Node s'il suit un cours de start-up, du PHP s'il apprend le traditionnel. Les CMS, certains .NET s'ils s'entrainent dans un bureau d'entreprise sans valeur, du JavaScript s'ils font du design web, du C ++ s'ils font du design de jeu, et enfin du Ruby s'ils veulent gaspiller leur vie avec des langages obscurs que personne utilise réellement.
Il n'y a pas de "méthodologie", et vous ne choisissez pas une langue à apprendre: elle vous choisit!
Apprendre une langue, c'est comme manger des digestifs pendant un an quand il y a toute une allée de biscuits. Et sérieusement, qui choisit des emplois en fonction du salaire projeté?
Mais que faire si vous n'apprenez pas CompSci?
J'ai répondu à James en disant:
Voici la chose: Ce n'est pas pour quelqu'un qui prend la voie classique CompSci. A en juger par l'explosion du MOOC et le nombre de cours de programmation en ligne, beaucoup de gens commencent à coder à partir de zéro. Et quand vous commencez comme ça, vous avez besoin d'une langue pour commencer. Peut-être que vous vous en éloignerez plus tard, mais cette première langue sera un investissement crucial en temps et en efforts - alors cela en vaut la peine.
Ce qui m'a le plus marqué, c'est ce dernier petit bout de phrase qu'il a dit - qui choisit un emploi en fonction du salaire projeté . Je pense que certaines personnes le font, mais je pense aussi que ce n'est pas un excellent moyen de s'y prendre.
En fin de compte, les gens essaient de comprendre quelle langue commencer, et l'usage que le langage fait dans le monde réel a du poids dans cette décision (pas seulement à quel point il est facile d'apprendre - Pascal ...).
Choisissez un projet d'abord, puis une langue
James est revenu avec ceci:
D'accord, peut-être que l'un des points de cette méthodologie devrait être: ne pas avoir de méthodologie. Quand je suis tombé sur PHP, c'était à travers WordPress. J'ai eu une expérience CompSci en programmation et une expérience de conception web, mais je n'avais jamais vu de PHP auparavant. Je l'ai appris parce que WordPress semblait assez facile, et je voulais jouer avec WordPress. Pas parce que j'avais regardé une liste de technologies tendances, ou envisageait un changement de carrière, mais parce que quelque chose de cool que je voulais savoir sur l'utiliser.
Si quelqu'un cherchait à apprendre une programmation uniquement pour un travail, il échouerait. S'ils regardaient simplement parce qu'ils aimaient apprendre à programmer quelque chose, peu importe la langue qu'ils choisiraient, tant que cela pourrait déclencher leur passion.
Une autre raison pour choisir un projet d'abord
C'est alors que Simon est intervenu avec quelques conseils pragmatiques:
Tout d'abord, cela dépend si vous voulez développer pour le Web ou un logiciel "standard".
Pour ce dernier, Java est plutôt bon:
- Simple OO
- Multi-plateforme (Linux, Windows, Mac, Android)
- Syntaxe similaire à beaucoup d'autres langages de programmation (JS, C #).
Je ne peux pas en dire beaucoup sur le développement Web, bien que HTML / JS / CSS / PHP / MySQL semble fonctionner pour beaucoup de gens. Python aussi.
Mais oui, le "pour vous faire du bon boulot en 2 ans" me gêne aussi. Souligne le mauvais aspect de l'apprentissage de la programmation. Une fois que vous pouvez programmer, il est assez facile de maîtriser un autre langage.
Être embauché pour connaître une langue spécifique est similaire à être embauché en tant que PA pour savoir comment gérer MS Excel. Si c'est la qualification principale, ce sera probablement un mauvais travail.
Ne pas apprendre une langue: apprendre la conception de logiciels
Un consensus commençait à se former. Bruce Epper, de la renommée MakeUseOf Answers, avait ceci à dire:
La langue elle-même n'a pas vraiment d'importance. Quand il s'agit de programmer des travaux, les aspects les plus importants ont tendance à comprendre la conception et l'architecture logicielle de base, le processus de codage en général, connaître les modèles de conception, savoir quand les utiliser et appliquer un modèle spécifique à la tâche à accomplir. tous sont indépendants de la langue. Une fois qu'un codeur sait cela, choisir une nouvelle langue est un jeu d'enfant.
Il y a même des compétences de gestion de projet, de documentation et d'écriture qui sont plus importantes pour un programmeur que de connaître un langage spécifique.
La base sur laquelle vous construisez les choses: anglais ou latin?
C'est à ce moment-là que Guy est intervenu pour nous rappeler à tous que le langage importait, dans une certaine mesure:
La langue elle-même n'est pas la chose la plus importante pour obtenir un emploi, je suis d'accord. Cependant, la base sur laquelle vous construisez le fait. Depuis que j'ai fait les deux routes, je vais comparer les langages de programmation aux langages humains.
Python semble être l'anglais d'aujourd'hui. De plus en plus, je vois Intro CompSci et les cours de programmation vous démarrez avec Python au lieu de Java, qui semblait être le plus populaire pendant environ 10 ans. Vous pouvez faire beaucoup de ce que vous voulez faire avec Python.
C ++ est le latin du monde de la programmation. Si vous l'apprenez, vous pouvez apprendre les principes sous-jacents d'une multitude de langues et les apprendre plus facilement. Python serait un cakewalk si vous êtes bien fondé en C ++.
Qu'est-ce qu'un "travail de programmation", de toute façon?
Ce fut le tour de Matthew, maintenant, de nous rappeler que le fait d'être un codeur peut signifier des choses très différentes pour différentes personnes:
Une chose dont on n'a pas beaucoup parlé est le genre de travail de programmation que vous voudriez.
Ne vous inquiétez-vous pas des avantages offerts aux employés de Startup? Vous voulez la stabilité et un paquet de salaire décent, mais pas d'équité? Aimez-vous porter des vêtements d'affaires? Apprenez C #, Java ou COBOL. COBOL a aussi l'avantage d'avoir toutes les applications bancaires jamais conçues (hyperbole, mais vous avez l'idée) ayant été écrites dedans. Avec la plupart des développeurs COBOL, retraités ou décédés, il y a une forte demande pour les développeurs COBOL avec quelques salaires à six chiffres! Cependant, vous travaillerez sur des bases de code énormes, mal écrites, créées sur plusieurs décennies. Ce n'est pas amusant.
Mais que faire si la sécurité d'emploi n'est pas votre truc? Vous voulez travailler sur des produits intéressants, mais êtes-vous prêt à perdre votre emploi lorsque le modèle d'affaires ne fonctionne pas? J'ai trouvé que continuer (Hacker News) est un moyen infaillible de trouver les langues utilisées par les startups. Quand j'ai été interné dans un premier emploi, nous avons utilisé un mélange de Go, Python et CoffeeScript. D'autres startups utilisent Rails et Groovy et toutes sortes de frameworks et de langages obscurs. Choisissez-en un et vous trouverez un emploi intéressant quelque part.
Nouveau code, ou ancien?
Ecrire un nouveau code est une expérience très différente du maintien d'une application existante, comme Bruce a ajouté:
Avec vos commentaires sur COBOL, vous avez une autre idée: voulez-vous travailler sur un nouveau code ou maintenir le code de quelqu'un d'autre? Cela peut être un élément énorme lorsque vous décidez de la direction à suivre. Pour les plus petits projets, maintenir une base de code écrite par quelqu'un d'autre n'est peut-être pas si mauvais, mais j'ai vu quelques sections de code où plusieurs personnes le regardaient pendant des heures demandant: "Que pensait ce type?" Le programmeur profitait d'une fonctionnalité spécifique ou d'un bogue dans le compilateur (qui peut avoir été corrigé dans le compilateur en cours) pour accomplir quelque chose.
Que faire si vous n'avez pas le choix?
Guy est revenu pour nous rappeler que tout le monde n'a pas un large choix:
Matthew pose une bonne question avec: « Quel genre de travail de programmation voulez-vous? "
Bizarrement, je n'ai jamais vraiment pensé que j'aurais beaucoup de choix en la matière. Je savais que je voulais faire du développement web quand j'ai commencé, ayant fait d'autres programmations récréatives. Mais je me suis dit que je devrais être prêt à accepter n'importe quel travail et être prêt à apprendre au fur et à mesure. Maintenant, je suis un homme à tout faire, compétent dans plusieurs technologies - maître de rien.
Pour déterminer où vous voulez travailler, déterminer le type de style de vie que vous voulez est important. Regardez ensuite les offres des entreprises qui semblent répondre à vos critères et voyez ce qu'elles recherchent en général. Mettre en place un portefeuille de choses similaires à ce qu'ils font peut être très utile, surtout si vous n'avez pas de formation formelle sur les technologies qu'ils utilisent. Peut-être que vous avez appris Java à l'école, mais ils utilisent C #. Donc vous vous enseignez C # et faites quelques programmes avec lui comme preuve que vous savez ce que vous faites et que vous avez une intelligence fluide.
Aucune réponse simple
S'il y a quelque chose que cette discussion montre, c'est que les questions simples n'ont pas toujours des réponses simples. Et pourtant, après avoir lu les opinions de tout le monde, je me suis senti beaucoup plus informé - ils ont changé d'avis.
Je suis sûr que nous n'avons pas capturé tous les points de vue possibles ici - c'est ce que la section des commentaires est pour. Je serais très intéressé d'entendre votre opinion sur cette question, que vous soyez un pro codeur ou non. Comment choisiriez-vous un langage de programmation pour obtenir un bon travail dans deux ans? Est-ce même un bon moyen de choisir une langue? Partagez vos pensées ci-dessous.