Apprendre à coder seul ou via une école

Note : 5

le 22.08.2013 par FK

10 réponses / Dernière par Constant99 le 26.08.2013, 10h39

Le taf, on y passe 8h par jour minimum, et c'est loin d'être facile tous les jours. Ce forum est là pour échanger autour de tous les sujets en lien avec votre vie professionnelle.
Ce topic est un fork du topic initial

=> ce topic est consacré à l'apprentissage du code, en autodidacte ou non, facile ou non
=> pour la conversation initiale sur le choix d'un master : orientation-poursuite-d-etudes-en-maste ... 32599.html


******




Constant99 a écrit :Sinon, je n'ai pas d'opinion particulière sur le meilleur master à faire, mais j'ai quelques doutes sur la possibilité de s'auto-former aux technos web d'aujourd'hui, qui n'ont plus grand chose à voir avec le PHP/MySQL d'il y a dix ans. Se former à bricoler un site à partir d'un Wordpress/Joomla/Autre, oui, mais se former à faire du développement Web, c'est devenu compliqué sans aide.
Au contraire, il n'y a jamais eu autant de tutos et de sites d'apprentissage, et il n'a jamais été si facile de s'y mettre. La profusion de sources et de langages peut faire peur, mais c'est en réalité plus accessible que jamais.

Quand j'ai commencé, Wikipedia n'existait pas, Google non plus, la doc PHP était quasi inexistante, et aucun site de tuto sérieux n'existait.

Et c'est comme tout : on commence par les langages de base (PHP / MySQL, qui n'iront nulle part tant ils sont fondamentaux et omniprésents - contrairement à ce que tu penses, les technos web se simplifient et s'appuient toutes sur les bases posées par PHP & SQL).

... On commence d'abord avec du code moche et "linéaire" ("je fais ça puis ça, et si ça, faire ça : c'est ce qu'on appelle du code "procédural"); puis on gagne en technicité, on se met au code "objet", et ça ouvre les portes de davantage de langages et de frameworks (des environnements pré-codés dans lesquels on peut construire ces projets pour ne pas avoir à réinventer la roue à chaque fois).

Pour un débutant qui veut faire du WEB (pas les mêmes langages que le dev mobile)
- CSS / HTML (pour la partie "visible", le "front-end")
- PHP/SQL (pour la partie "backend", l'intelligence derrière les pages)

... restent tout à fait accessibles en autodidacte.
Faut juste ne pas se laisser effrayer, oser se plonger dedans et décoder la matrice (elle n'est pas si hermétique que ça une fois qu'on a compris les règles de base).

Ensuite, la progression est corrélée au temps que vous passez à vous former, à tester et à veiller. Faut pas se leurrer : devenir bon vous demandera plusieurs années, et nécessitera que vous y passiez du temps chaque jour. Si vous ne vous prenez pas de passion pour le code, vous décrocherez avant d'être devenu bon.

A défaut de pouvoir le faire via une bonne école, vous pouvez le faire gratuitement (mais plus lentement) par vous-même.

Mais même sans vouloir devenir un dev, le fait de gratter la surface des choses vous permettra de comprendre les enjeux et rouages du code, et ainsi de pouvoir vous faire un vernis / une culture qui permettra de manager ou travailler avec des devs (ce que très peu de non-devs arrivent à faire, tant c'est une culture et des individualités particulières).



NewStart a écrit :Et (de mémoire), diplôme non reconnu par l'état (au moins pour le moment).
Autant pour les autres métiers c'est primordial, autant quand tu fais du dev, tu t'en bats les couilles d'avoir un diplôme reconnu par l'état.
L'Etat a 20 ans de retard.

Ce qui compte, c'est d'avoir des compétences reconnues par les employeurs.

(ça veut pas dire que toute école de dev est bonne à faire : il y en a de très mauvaises, parce que montée par des pignoufs qui veulent surfer sur la vague, mais qui ne comprennent rien au dev et aux métiers du dev)


T'inquiète qu'en sortant d'Epitech ou de l'école de Xavier, vu l'ambition affichée de l'école, t'as pas de pb à trouver du taf, en France ou à l'étranger - avec ou sans estampille bleu blanc rouge sur ton diplôme.

Ce que les mecs regarderont, c'est si tu es une brute en code ou pas - et si tu maîtrises les derniers langages à la mode (type Ruby ou Python, en ce moment).


Je traîne avec beaucoup de devs, dont certains sont de véritables génies; et aucun ne gagne moins de 2000€ par mois net (certains gagnent BEAUCOUP plus).

(Je précise que les devs que je fréquente principalement des salariés de startups ou des indépendants - ceux qui ont été s'enterrer dans des SSII souffrent nettement plus).

La plupart ont régulièrement des offres d'emploi qui tombent (le dernier auquel je pense a refusé un entretien proposé par Google), bossent de chez eux, et n'ont aucun problème à changer de taf quand ils veulent changer d'air.


Je sais pas si la sélection est si énorme que ça, ils convoquent 4000 personnes pour faire la piscine après passage d'un entretien il me semble, après la piscine ils prennent 1000 élèves sur les 4000.
Sauf qu'apparemment, à la fin des 2 premières piscines, y'avait que 1/3 du quota espéré encore en course (j'ai plus les chiffres en tête, et je veux pas dire de conneries) : la barre est élevée pour les candidats à l'entrée, ça écrème bien plus que prévu.


Autre possibilité, aller dans un autre pays que la France. Par exemple où au lieu de te payer en fonction de tes titres, on te paye en fonction de la qualité de ton travail (oui, je sais, cette notion peut paraitre incroyable
Oui ! Mes potes formés en France (formations respectables mais pas ouf) ont une progression incroyable dans leur carrière depuis qu'ils sont partis (à Londres notamment, où on t'évalue sur ta motivation, ton potentiel - et pas tes diplômes ou ta couleur de peau).
    Notes et commentaires reçus par ce post :
  • [+1] Intéressant le 22.08.13, 16h31 par Reborn
FrenchKiss a écrit :Au contraire, il n'y a jamais eu autant de tutos et de sites d'apprentissage.
Et il n'a jamais été aussi difficile de faire le tri entre les différentes technos.
PHP / MySQL, qui n'iront nulle part tant ils sont fondamentaux et omniprésents
PHP a sûrement plus longtemps à vivre que MySQL, qui est en train de se faire tuer par Oracle, mais ni l'un ni l'autre ne sont l'avenir du web...
contrairement à ce que tu penses, les technos web se simplifient et s'appuient toutes sur les bases posées par PHP & SQL
Euh ouais, non en fait. Quand j'ai commencé on faisait son petit script, qui générait du HTML, et ça suffisait. Aujourd'hui, quand tu utilises un framework moderne, t'as un serveur d'applications, une manière codifiée de structurer ton code, un moteur de template, des requêtes asynchrones et du javascript pour l'interactivité, plus des CSS de plus en plus complexes. C'est nettement plus efficace, mais c'est aussi beaucoup plus compliqué à apprendre, ou en tout cas c'est très spécifique au framework choisi.

Si tu ajoutes à ça le fait que les frameworks naissent et meurent régulièrement, ou sortent de nouvelles versions qui invalident les précédentes, le simple choix de la techno à apprendre nécessite un peu d'expérience dans le milieu. Si tu veux juste faire ton site à toi, tu peux prendre n'importe quelle techno, mais si tu veux te faire un CV qui fera envie aux recruteurs dans 2/3 ans, c'est autre chose.

Edit: je ne dis pas ça pour décourager les aspirants autodidactes, mais je pense que le rôle des formations devient plus important que simplement t'apprendre à coder; elles orientent dans le choix des choses à apprendre, pour ne pas se figer dans des technos qui seront vites obsolètes ou passées de mode.
S'il y a des gens qui sont intéressés par le sujet des autodidactes, ce serait bien de forker.
Sinon, sujet intéressant.
    Notes et commentaires reçus par ce post :
  • [0] +1 le 22.08.13, 16h30 par Reborn
Outkast a écrit :S'il y a des gens qui sont intéressés par le sujet des autodidactes, ce serait bien de forker.
Ça ne me semblait pas HS, dans la mesure où certains lui conseillent de s'autoformer sur la technique, et de faire un master d'autre chose...
Sans vouloir rajouter de l'huile sur le feu, Constant, je t'assure que tu vois la montagne, mais pas les (nombreux) sentiers très bien balisés qui permettent de la gravir, aujourd'hui bien mieux qu'avant.

Mais bon, à chacun de se faire son idée sur la question. Si un mec veut se mettre à coder, avec un peu d'efforts et de persévérance, il a largement de quoi atteindre un niveau suffisant, par ses propres moyens.

Il devra apprendre à faire le tri dans ses priorités, et prendre le temps d'apprendre à coder (et à naviguer dans la doc et les tutos), mais c'est très loin d'être insurmontable.
Je sais pas trop FK, rien que html et css c'est devenu un brin compliqué avec l'arrivée de toutes les tailles d'écrans et le besoin de faire du responsive design (pour au final un résultat pas bien fou, parce que si tu ne sais faire que html et css tu es limité).

Tous les frameworks c'est mignon mais ça impose à chaque fois d'apprendre la syntaxe du framework en plus de la syntaxe du langage. Même javascript est devenu compliqué parce que maintenant on en fait côté serveur, on fait du jquery (il faut connaitre JS + jquery), ...

Rien que pour un site utilisant bootstrap par exemple il faut connaitre :
HTML CSS PHP SQL Javascript
La syntaxe de bootstrap
LESS si tu veux personnaliser ton bootstrap
jQuery
Éventuellement la syntaxe d'un framework PHP
Le PHP Objet c'est mieux
Le découpage du code selon le pattern MVC c'est mieux

Codecademy ou le SdZ c'est bien pour apprendre la syntaxe du langage mais pas assez pour voir vraiment les choses poussées, la mise en pratique d'un vrai projet...
Possible que je sois atteint du syndrome "c'était mieux avant", mais je vois qu'aujourd'hui je galère pour me maintenir à niveau, alors que je sais déjà coder dans les langages à la mode, que j'ai fait du développement web professionnellement, et que j'ai enseigné des technos web en IUT.

Je suis sûr qu'on peut toujours apprendre à monter un site soi-même, mais pour devenir un vrai professionnel avec un CV accrocheur, je pense quand même qu'il vaut mieux être guidé. Surtout si on veut le faire en deux ans.
Constant99 a écrit :Possible que je sois atteint du syndrome "c'était mieux avant", mais je vois qu'aujourd'hui je galère pour me maintenir à niveau, alors que je sais déjà coder dans les langages à la mode, que j'ai fait du développement web professionnellement, et que j'ai enseigné des technos web en IUT.

Je suis sûr qu'on peut toujours apprendre à monter un site soi-même, mais pour devenir un vrai professionnel avec un CV accrocheur, je pense quand même qu'il vaut mieux être guidé. Surtout si on veut le faire en deux ans.
Là par contre je suis d'accord ... mais on parle plus de la même chose ;)

Se former suffisamment pour être capable de faire des trucs efficaces, je maintiens, c'est très faisable.
Par contre, se maintenir à niveau une fois le niveau de base atteint : de plus en plus difficile à cause de la profusion de langages, des nouveaux et des évolutions des anciens, ça exige soit l'acceptation du fait que "t'es pas un pro" ... soit, si t'es un pro, justement : accepter le fait que tu devras passer un temps significatif de ta vie pro à te former et à te maintenir à niveau, en plus de la partie "productive".

Mais au final, c'est de toutes façons le cas (plus ou moins) pour tous les métiers intellectuels : quand l'art et / ou la technique évolue, il faut se former sinon on est largué (et la pression est + / - forte en fonction du dynamisme du secteur).


Je forke cette discussion.
Si je devais conseiller un débutant qui veut apprendre à coder, voilà ce que je lui dirais (sachant que je suis moi même autodidacte, et très loin d'être une brute)


- Décide d'abord ce que tu veux faire (ou par quoi tu veux commencer) : front-end ou back-end ? Si tu t'intéresse à la partie visuelle / interactive, c'est du front. Si tu t'intéresse à la partie invisible (la logique, le traitement des données), c'est du back. Sachant que l'un et l'autre sont profondément entremêlés, tu devras forcément avec le temps passer la frontière et t'intéresse à l'autre côté. Mais pour débuter : choisis un côté.


De quoi tu as besoin ?

- D'un logiciel pour écrire ton code.
Adobe Dreamweaver, pour ma part. Mais tu peux aussi faire ça dans le bloc-note.

- D'un serveur sur lequel balancer ton code
(ça peut être un serveur loué à un hébergeur, ou un serveur "local" = émulé sur ton ordinateur)

- D'un navigateur (Firefox, Chrome, IE, Safari, ...)
pour appeler le code stocké sur le serveur, et afficher le résultat


Après les pros on d'autres outils et méthodos, mais je suis pas assez bon pour en parler (et un débutant peut de toutes façons s'en passer, tu pourras toujours t'y mettre après)


Si tu veux commencer par le front-end :

1. Apprends le HTML (temps requis estimé : 1 à 3 mois suivant le temps que tu y passes)
C'est facile. C'est basique. Le HTML, c'est le langage qui te permet de construire une page. De dire que ici, c'est un titre 1, et que là, c'est du texte normal, et que telle portion de texte est en gras, et que celle-ci est un lien.

Une page web est composée de deux parties :
- le HEAD (l'en-tête) => on y met en HTML les infos dont le navigateur et les moteurs de recherche ont besoin pour bien comprendre, interpréter et classifier la page. Hormis quelques infos retranscrites par le navigateur (typiquement : le titre de la page qui apparaît dans l'onglet du navigateur), ces infos sont invisibles pour l'internaute.

- le BODY (le corps) => c'est le contenu visible de la page. Ce que le navigateur va afficher à l'internaute.

  • Sur n'importe quelle page web, tu peux faire clic droit => Afficher la source
    Tu verras le code HTML (et probablement, d'autres langages dont je parle plus loin) qui permet de remplir et structurer la page.
    Tu verras la partie HEAD (délimitée par les balises <head>....</head> et la partie <body>...</body> ... le tout, délimité par la partie <html>...</html> qui permet au navigateur de comprendre que c'est une page web HTML classique.
Difficultés : aucune. C'est juste des "balises" à apprendre. Une balise = le code dont tu englobes ton texte pour définir si c'est un titre <h1>, <h2>, ... un paragraphe <p>, une image <img src=URL>, ...

Exactement comme le bbcode sur un forum comme celui de FTS - juste, un peu différent et plus complet (le bbcode est une simplification du HTML, prévue exprès pour les forums)


2. Quand tu maîtrises le HTML, apprends le CSS (temps requis estimé : 2 à 6 mois, suivant le temps que tu y passes)
Le CSS, c'est ce qui permet de faire que ta page HTML ne ressemble pas à une bête page Word.
C'est ce qui permet de structurer et de styliser le HTML brut.
C'est ce qui va te permettre de dire que "tous les titres 1 de ma page doivent être de telle taille et dans telle police, et de telle couleur".
Et de dire "cette partie de ma page, et tout ce qu'elle contient : elle va là, et elle doit être large de X pixels, et être haute de X pixels"
Etc.

Si tu veux voir à quoi ressemble du CSS, tu peux regarder celui (dégueulasse et obsolète) du forum : styles/2Unilever/theme/stylesheet.css

Tu constates que la forme classique est :

[QUELQUECHOSE] { règles : plein de trucs séparés par des point-virgules; }

[QUELQUECHOSE], c'est le sélecteur : c'est ce qui permet de dire à qui (ou à quoi) s'appliquent les règles

qui : parce que parfois un élément HTML peut avoir un nom précis (si je lui ai mis un truc du genre id="JeanMichel", il me suffira de déclarer une règle CSS de type

#JeanMichel { font-size:16px; } pour que le texte qu'il contient ait une taille de 16 pixels.

Si je lui ai mis un truc du genre class="rouge", il me suffira de dire que
.rouge { color:rouge; }
pour que tous les éléments de la page ayant dans leur HTML class="rouge" aient leur texte en rouge.

La différence entre ID et Class, c'est qu'ID doit n'apparaitre qu'une fois sur la page (ça ne concerne qu'un élément) et class peut être attribué à plusieurs éléments.


Je m'arrête là pour pas trop compliqué. C'était les notions de base pour pouvoir lire / comprendre ce qu'on voit quand on regarde du CSS.

Ah, et toutes les parties entre /* et */ sont des commentaires : mis là par le codeur, pour se rappeler de pourquoi il a fait tel ou tel truc. c'est juste pour lui et ses collègues : le navigateur ne se sert pas de ces infos là.

Difficultés :
- intégrer les différentes règles CSS (pour définir la police, les dimensions d'une zone, les arrières plans, le positionnement)
- intégrer les techniques qui permettent de faire des trucs plus compliqués, tout en évitant les bugs liés aux spécificités de chaque navigateur (qui n'interprète pas toujours le CSS comme il le faudrait)

Au final, c'est la combinaison HTML+CSS qui fait qu'un site ressemble à ce à quoi il ressemble.


3. Quand tu auras maîtrisé HTML et CSS : apprends le javascript et jQuery (temps estimé : 3 à 12 mois suivant le temps que tu y passes)

Javascript (et son amélioration jQuery) est un langage qui permet de rendre interactif le HTML/CSS de base.

De base, HTML et CSS sont statiques : ils ne bougent pas. Ils ne réagissent pas (ou peu) en fonction de ce que tu fais (ou alors, au survol de la souris, et pas beaucoup plus).

JS / jQuery permet de déclencher des évènements et des réactions sur la page.
Par exemple : par défaut, je masque une zone de texte. Et je ne l'affiche (par un "déroulement progressif") que si je clique sur tel titre. Pratique pour faire des FAQ en accordéon comme ici : http://www.frenchtouchseduction.com/sex ... ire-lamour

Difficultés : pas vraiment. Il faut juste apprendre les règles et la syntaxe du JS et du jQuery, pour les écrire correctement, et faire en sorte que ça fonctionne, au lieu de faire buguer la page.



CERISE SUR LE GATEAU : développer ton talent / tes compétences de graphiste, pour devenir capable de maquetter tes pages web dans photoshop, et de générer les différent éléments graphiques dont tu pourrais avoir besoin.

Aujourd'hui le combo "webdesigner + intégrateur" est très recherché.
webdesigner = celui qui est capable de designer de jolis sites => Photoshop, Illustrator
intégrateur = celui qui est capable de créer ce que la maquette du webdesigner représente => HTML, CSS et JS /jQuery





... et si c'est la partie back-end qui t'intéresse

- Commence par t'intéresser aux principes de PHP et de SQL.

PHP est le langage qui permet de récupérer des données dans une base de données SQL (ou autre), de traiter, de manipuler et d'afficher ces données sur ta page Web.

SQL c'est le langage qui permet de stocker, de mettre à jour ou de récupérer des données (via des commandes écrites en PHP) dans une base de donnée. C'est aussi la base de données SQL qui détermine comment chaque donnée est liée à tel autre type de données.


Par exemple : sur le forum FTS, il y a :

- des messages
- qui sont chacuns rattachés à un topic topic
- qui sont rattachés à un forum unique

en parallèle, chaque message a un auteur
mais chaque auteur peut avoir 0 ou plusieurs topics qu'il a créé, et 0 ou plusieurs messages

=> SQL va stocker tout ce contenu, en faisant en sorte que chaque message est bien attribué au bon topic, et au bon utilisateur, afin qu'on puisse à tout moment récupérer tous les messages de l'auteur, et afficher le contenu d'un topic en récupérant tous les messages dans le bon ordre (en affichant à chaque fois qui est l'auteur de quoi).


Tout cela peut paraître complexe, mais c'est en réalité assez simple dans la logique.
SQL n'est pas si compliqué. Ce qui prend un peu de temps, c'est intégrer les méthodes pour structurer ses données et les relations entre elles, puis ensuite, stocker, modifier, récupérer ou supprimer ces données. ... tout en respectant de bonnes pratiques qui permettent d'éviter les risques de piratage.


PHP est un peu plus long à apprendre, en raison de tout ce qu'il permet de faire.
- il faut apprendre les règles syntaxiques de base (si tu ne mets pas un ; à la fin de chaque ligne, le code te balance une erreur, par exemple)
- et les mécanismes de base
- puis les fonctions qui, mises bout à bout, te permettent de faire des opérations complexes


Au final, le code peut faire peur, mais ce n'est jamais qu'une succession d'étapes.
D'abord ça, puis si ça : ça, sinon ça. Et ensuite ça. Et ensuite ça, puis si ça : ça, sinon ça.

Juste, il faut apprendre les règles syntaxiques et la façon dont on manipule chaque langage, mais c'est très loin d'être insurmontable si on a du temps et de la patience : il n'a jamais existé autant de sites d'apprentissage et d'explications (j'ai donné des liens fiables et très bien faits en début de topic).
    Notes et commentaires reçus par ce post :
  • [+2] Post de qualité le 26.08.13, 10h14 par Reborn
  • [+3] Constructif le 06.09.13, 16h43 par Boubou
Pour moi, le problème n'est pas juste de se maintenir à niveau. Si le langage majoritaire changeait tous les deux ans, et qu'il fallait tout le temps en apprendre un nouveau, ça demanderait du travail pour se maintenir au top, mais pour le débutant le travail serait toujours le même (apprendre un langage dominant). Par contre, quand les techniques et les langages se diversifient et se complexifient, ça devient plus difficile pour tout le monde.

Si je devais conseiller un chemin à un autodidacte, pour moi ce serait plutôt:
1- HTML
2- CSS
3- choisir un framework, genre Rails ou Django
4- apprendre le langage concerné (mais pas PHP)
5- apprendre le framework en faisant des sites sur son PC
6- apprendre à déployer un site utilisant ce framework
7- éventuellement se mettre au javascript

À moins de vouloir être codeur polyvalent, je zapperais complètement le PHP. À moins de devoir connaître PHP spécifiquement, il vaut mieux passer du temps sur un vrai langage, et comprendre l'architecture d'un framework. D'autant plus si l'idée est ensuite d'être plutôt manager que codeur.

Pour le SQL, ça viendra sûrement à un moment, mais dans une certaine mesure, un framework permet de ne pas apprendre la syntaxe du SQL pour les tâches les plus courantes.
Répondre