Gabrielle Barboteau

Développeuse Full-stack

Autodidacte, université, formation : Comment apprendre à programmer ?

by Gabrielle


Posté le Aug. 26, 2020, 2:15 p.m.



J'ai tapé, si l'on ne compte pas cette tentative infructueuse d'apprendre le C lors de mon adolescence, ma première ligne de code à 22 ans. A cette époque, la programmation ne m'intéressait pas en tant que telle : je la voyais simplement comme un moyen de faire ce que je souhaitais, c'est-à-dire développer le jeu vidéo que j'avais en tête. En six ans, j'ai développé un certain amour pour l'art de résoudre des problème et pour cet artisanat qu'est la conception d'un objet numérique, que cela soit un jeu vidéo, un site, ou une application : mon approche a évolué en même temps que mon apprentissage de la programmation, qui fût un chemin relativement tumultueux.

Je ne prétends pas ici livrer la vérité absolue sur la bonne manière d'apprendre, simplement mon expérience. Expérience qui commença par :


 

I) L'apprentissage en autodidacte : l'enfer est pavé de cours sur Udemy

J'ai commencé à apprendre la programmation afin de développer un jeu vidéo sous le moteur Unity. Un moteur assez complexe, touffu, utilisant le C# : des technologies pas vraiment adaptées à une débutante, mais ça, je ne le savais pas à l'époque. Mon objectif était de développer un puzzle-game dont le gameplay était centré autour de couleurs à mélanger afin de remplir une grille prédéfinie. Un concept assez simple (avec le recul, je réalise que j'ai eu le nez creux : beaucoup de développeurs débutants se lancent dans des projets beaucoup trop ambitieux, ce qui n'était pas mon cas ici), que je mis un total de 5 mois à concevoir, développer, débuguer et commercialiser sur iOS et Android. Et pour tout cela, je me suis aidé d'une seule ressource : les tutoriels officiels d'Unity.

Et ces tutoriels m'ont énormément appris ! Les résultats parlent d'eux-mêmes : j'ai réussi à créer et sortir un jeu complet en quelques mois sans jamais avoir programmé (et en ayant des à-priori négatifs sur mes capacités à programmer !) : une ressource qui permet cela ne peut qu'être considéré comme une bonne ressource...

Mais, après quelques années d'expérience, je me rends compte à quel point mon code était, pardonnez-moi mon langage, complètement fini à la pisse. Si je ne devais citer qu'un seul de mes crimes, ce serait l'absence totale de listes dans tout le programme.

Pas. Une. Seule. Liste. Dans un jeu vidéo. Avec le recul je ne comprends toujours pas comment ce jeu a pu fonctionner, mais il marchait (à peu près) ! Et à l'époque, cela me suffisait. Mais ce n'était pas une question de paresse ou de manque de rigueur : j'ignorais simplement que je pouvais faire mieux. Et comment connaître une chose dont on ne soupçonne pas l'existence, si personne ne nous guide ?

Après avoir fini le développement de Hiroba, je me suis mise en tête de continuer mon apprentissage d'Unity, en essayant d'aller plus loin. J'ai ainsi acheté quelques cours sur Udemy, j'ai commencé à les suivre, et au bout de quelques mois, je me suis retrouvée dans ce qu'on peut appeler un Tutorial Hell.

Je n'avais aucun mal à reproduire ce que j'avais fait, mais de là à l'utiliser pour mes propres créations, il y a un pas que je n'arrivais pas à franchir, car il me manquait toujours quelque chose, il y avait toujours un élément que je ne connaissais pas et qui bloquait toute progression (Unity étant un outil extremement touffu). Cette période n'a duré que quelques mois (j'ai eu de la chance : beaucoup d'autodidactes y sont restés bloqués des années), car quelques mois après j'ai été à...


 

II) L'université : l'enfer est pavé de parenthèses dans des parenthèses dans des parenthèses dans des parenthèses

A 23 ans, j'ai décidé de suivre les cours en ligne (ce détail à son importance) de l'université Paris 8. Ayant déjà une petite expérience, je ne savais pas trop à quoi m'attendre. Le résultat est sans appel : en trois mois, j'ai fait un bon de géant dans mon apprentissage de la programmation ! La preuve, j'ai appris ce qu'étaient les listes (et j'ai, par la même occasion, pris conscience de mes coding crimes) !

L'une des choses qui me laissait perplexe au départ m'a finalement beaucoup apporté : l'apprentissage de langages peu communs. Vous connaissez Lisp ? Si non, c'est un langage dont la syntaxe pourrait engendrer un stress post-traumatique chez le plus calme des programmeurs : l'ensemble du programme est entre parenthèses, parenthèses contenant elles-mêmes des séries d'instructions entre parenthèses, dont les paramètres sont entre parenthèses, dont des opérations nécessaires sont entre parenthèses...

Vous avez compris ? Oui, c'est aussi horrible que ça en à l'air, et à l'époque je ne comprenais pas l'intérêt d'apprendre ce... Ce... Cette chose. Mais avec le recul, l'apprentissage de ce langage (et de tous les autres éléments de mon cursus) m'a fait devenir une meilleure programmeuse. J'ai appris à me détacher du langage et de la syntaxe pour me concentrer sur la résolution de problèmes, le cœur même de la programmation, et à m'adapter à la situation et aux contraintes pour arriver à un résultat donné.

C'est après quelques mois d'apprentissage à Paris 8 que je me suis vraiment sentie confiante en mes capacités, et que j'ai commencé à dire que j'étais programmeuse. Mais, et il y a un mais, j'y ai rencontré un autre obstacle : le manque de moyen de l'université.

Tout, absolument tout, prenait mille ans. Faire valider un exercice pouvait prendre des semaines selon notre interlocuteur, obtenir les cours, entrer en contact avec d'autres élèves pour s'entrainder (la plate-forme « communautaire » datant d'un autre temps)... Tout prenait un temps absurde, au point où ce que j'aurais pu valider en moins d'un an a mis deux ans à se faire.

Et, que ce soit clair, ce n'est pas la faute du personnel enseignant, ni même celle de l'université. Si les établissements étaient mieux financés, je pense sincèrement que ces problèmes n'auraient pas existé.

Mais après trois ans, et une seconde année de licence que je ne pouvais valider malgré mon travail, j'ai mis de côté l'université pour me consacrer à d'autres choses. Je n'ai pas pu obtenir ma licence, mais je ne regrette absolument pas le temps que j'y ai consacré. En commençant les cours de Paris 8, j'étais une bidouilleuse : j'étais capable de faire fonctionner quelque chose, même si cette chose tenait difficilement sur ses propres jambes. Après ces quelques années, j'étais capable de résoudre des problèmes, de chercher par moi-même les infos, de combiner différentes connaissances et ressources afin de créer exactement ce que je voulais : j'avais atteint l'objectif que je m'étais fixé, qui était d'être capable de me débrouiller seule.

J'ai donc poursuivi mon chemin, je me suis consacré à d'autres projets et j'ai vécu d'autres aventures, jusqu'au début de cette année 2020. A ce moment, je m'étais mise définitivement en tête de changer de métier : j'étais auparavant journaliste et formatrice, et je voulais désormais travailler dans le développement web. Je me suis tout d'abord dit que j'allais me former seule, ayant déjà des connaissances préalables, mais je n'étais pas 100% à l'aise avec cette idée (j'y reviendrai). Je voulais également quelque chose qui, depuis des années, me faisait... Fantasmer ? Rêver ?

Cette chose, c'était un diplôme. Car j'ai beau avoir travaillé depuis dix ans, accompli des choses que peu de personnes ont fait, participé à des aventures ayant eu un impact sur la vie des personnes qu'elles ont touché... J'avais toujours ce complexe de n'avoir rien de plus que mon bac. C'est pourquoi en Janvier, je me suis décidé à suivre une...


 

III) Formation professionnelle : l'enfer est pavé de start-up disruptives benchmarkant un bulletproof-of-concept

Je me suis inscrite au parcours de développeuse d'applications Python d'Openclassrooms fin Janvier 2020, en espérant décrocher un titre professionnel de niveau licence. J'ai choisi ce parcours car, et c'est une raison peut-être très basique, j'adore Python ! J'avais eu l'occasion d'en faire un petit peu à l'université, j'ai eu l'occasion de participer à un atelier de Django Girls, et j'avais dans mon entourage beaucoup de développeuses Python : les astres étaient allignés pour que moi aussi je rejoigne le club !

J'ai mis six mois (officiellement cinq mois et trois semaines) à compléter la formation, et j'ai obtenu mon diplôme quelques semaines après, une fois que le jury s'est réuni. Et, après des années à chercher la bonne méthode, il semblerait que je l'eusse enfin trouvé !

Pour faire court, un parcours chez Openclassrooms est divisé en projets concrets à effectuer (cela va de la création d'un petit jeu vidéo à la conception d'une application web complète, en passant par la gestion de la documentation), projets qui doivent être montrés en soutenance avant d'être validés. Des cours et des pistes d'apprentissage sont donné à chaque fois, et une session avec un mentor est prévue chaque semaine pour faire le point sur la progression (et gérer d'éventuels blocages).

Cette manière de faire est celle qui me convient le mieux de toutes celles que j'ai expérimenté : on est suffisamment libre pour avancer réellement à son rythme, tout en étant gentiment dirigé. Et, pour la troisième fois, j'ai pu voir un bond entre mes précédentes pratiques et les nouvelles. Je n'ai pas tellement appris en terme de résolution de problème ou de recherche d'informations, mais j'ai franchie la ligne séparant la développeuse de la développeuse professionnelle : j'ai appris à faire un sorte que mon code, au-delà de marcher, puisse être utilisé et comprise par une personne tierce, que les bonnes pratiques soient respectés, bref, que je puisse m'intégrer à un environnement de développeurs et non plus juste bosser dans mon coin.

J'ai également eu la chance de tomber sur un mentor en or, sans qui je n'aurais jamais pu finir ce parcours aussi vite et qui m'a toujours guidé de la meilleure des manières.

Mais, car il y a un énorme mais, je ne peux pas conseiller Openclassrooms. J'aurais aimé le faire, mes résultats parlant d'eux-mêmes : j'ai énormément progressé, pris confiance en moi et obtenu un diplôme en six mois. Ca m'a couté moins cher qu'une thérapie, et ça m'a bien plus apporté !
Mais le gros problème d'Openclassrooms, c'est Openclassrooms lui-même. Je ne parle pas des mentors, je ne parle pas des cours (c'est un autre sujet), je ne parle pas de la méthodologie : je parle de la structure.

Sans rentrer dans trop de détails, Openclassrooms a souhaité changer les conditions d'utilisation de ses services en plein pendant mon cursus (et en plein confinement), les changements les plus importants étant la baisse du temps de mentorat, mais surtout, un nombre maximum de soutenances de projet par mois. Ayant prévu un budget précis pour un nombre de mois précis (inférieur au nombre de projets, sinon ce ne serait pas drôle), cette situation risquait de me sur la paille.
Heureusement, cette situation a été résolue et aucune limite n'a été instaurée, mais le mal a été fait : j'ai perdu une semaine à me battre contre l'équipe administrative et à stresser comme jamais, et une fois cette événement terminé, je ne pouvais décemment accorder une quelconque confiance à la structure Openclassrooms, et c'est bien dommage. J'aurais aimé être capable de conseiller leurs formations, j'aurais voulu leur donner de nouveau mon argent, mais la situation que j'ai décrite étant vouée à se reproduire...

Et, que les choses soient claires : je ne pense pas que les autres formations soient meilleures. Ces dernières années, on a pu voir l'émergence d'un nombre impressionnant de formations avec des arguments marketing plus variés les uns que les autres (satisfait ou remboursé, apprentissage à son rythme, école « féministe »...), et il est important de garder en tête que ces formations sont un business pour celles et ceux derrière. Ce n'est pas une mauvaise chose dans l'absolu, mais il faut s'en souvenir avant de succomber à de belles promesses ou de s'engager dans une formation. Par exemple, en ce qui concerne Openclassrooms, je n'avais aucune protection contre des changements abusifs, et ce à cause d'aspects légaux liés à leur modèle économique. Mais je suis persuadée que c'est partout pareil : les problèmes sont juste différents à chaque fois.


 

Et donc, comment apprendre la programmation ?

Je n'ai évidemment pas abordé tous les moyens d'apprendre à programmer : je n'ai pas parlé des formations en présentiel, qu'elles soient publiques (licence, DUT), ou privées (des écoles comme Epitech ou des formations comme Le Wagon). Gardez également à l'esprit qu'avant ma formation à Openclassrooms, j'apprenais toujours à mi-temps : je travaillais à côté, et j'avais toujours d'autres projets, faisant que je ne consacrais jamais 100% de mon temps à l'apprentissage.

Ce que j'aimerais que l'on retienne de mon parcours, c'est qu'il n'y a pas de bonne manière d'apprendre à programmer, mais que des mauvaises ! Ou plutôt, que peu importe ce que vous ferrez, vous finirez par être bloqué, par rencontrer les obstacles inhérents à chaque méthode. Et ce n'est pas grave !

Au risque de paraître clichée, l'une des choses que j'ai apprise durant toutes ces années, c'est que le chemin est bien plus important que la destination. Vous ferez des erreurs, aurez parfois l'impression de perdre votre temps, d'être bloqué, mais avec du temps et un investissement régulier, vous progresserez. Et si vous êtes vraiment face à un mur, tentez une nouvelle méthode !

Maintenant, nous vivons dans un monde qui est ce qu'il est, et tout le monde ne peut pas prendre son temps pour apprendre. Les contraintes économiques sont telles que qu'un des arguments principaux des formations est désormais la rapidité à laquelle les élèves sont formés : cela en dit bien plus sur notre société que sur les personnes derrière ces initiatives.

Mon seul conseil applicable sera donc : commencez en auto-didacte, ne serait-ce que pour quelques semaines. Suivez un parcours sur Codecademy, prenez un cours populaire sur Udemy, suivez même un cours au pif sur Openclassrooms ! Je pense qu'il est important que vous voyiez si c'est un domaine qui pourrait vous plaire avant de vous lancer dans des mois, voir des années, d'apprentissage. Pour le reste : faites ce que vous pouvez, ce sera déjà pas mal !