Comment j’ai appris à programmer ou le témoignage qui donnait envie de s’y mettre

Randall a 23 ans et il nous explique ici comment il est devenu un bidouilleur de code pour son plus grand plaisir. Il a découvert la programmation par lui-même et nous livre ici son témoignage et le fruit de sa jeune expérience.

Tout le monde ne partagera pas sa passion avant autant d’intensité. Nous espérons cependant que nombreux seront les enfants et leurs parents à tomber par hasard sur cet article (d’autant que cette sensibilisation est toujours absente de l’école d’aujourd’hui)[1]. Et, qui sait, peut-être que cela suscitera de nouvelles vocations ?

Sur le même sujet on pourra parcourir ces récents articles du Framablog illustrant l’enjeu majeur d’une éducation informatique (libre et ouverte) dans nos sociétés en mutation : De l’impact politique d’apprendre aux enfants la libre programmation, Les codeurs sont la nouvelle élite politique, Le code deviendra-t-il le latin du XXIe siècle ? et surtout Exercice de la citoyenneté et culture informatique.

Francisco Osorio - CC by

Comment j’ai appris à programmer

How I Learned to Program

Randall Degges – 4 février 2012 – Blog perso
(Traduction Framalang/Twitter : Calystod, Twix, kinou, HgO, monsieurab, Spartition, ametaireau, Grom, alaindalche, Evpok, Grom, Fred)

Programmer est, sans aucun doute, la chose la plus gratifiante intellectuellement que j’ai jamais réalisée. Programmer m’a appris que la vie se devait d’être amusante, remplie de créativité et vécue au maximum de son intensité. Programmer m’a appris que tout était possible ; je peux faire ce qui me plait en utilisant seulement mon esprit.

Programmer m’a également enseigné qu’apprendre est drôle et ludique. Cela m’a montré que plus vous en savez, plus vous comprenez et êtes acteur du monde qui vous entoure. Programmer m’a confirmé qu’une vie en apprentissage continu est une meilleure vie à vivre. Programmer m’a révélé qui je suis au fond de moi, m’a donné une bonne estime de moi et m’a continuellement aidé à arriver à mes fins.

Je me sens extrêmement chanceux d’avoir eu la volonté et l’opportunité d’apprendre à programmer tôt dans la vie. Et si mes méthodes ne sont certainement pas les meilleures pour tout le monde, elles ont marché pour moi.

Je n’ai aucun regret.

Alors je me suis dit que j’allais partager mes méthodes avec vous, en espérant qu’un débutant lise cet article et en tire quelque chose.

Si vous n’avez pas le temps de le parcourir retenez avant tout ceci : l’important est de s’amuser.

Mtellin - CC by

Installer GNU/Linux sur votre machine

Bien que plus jeune, j’ai découvert les rudiments informatiques sur des ordinateurs MS-DOS Windows grâce aux jeux vidéos, mon véritable apprentissage a commencé le jour où j’ai installé un système GNU/Linux sur mon ordinateur personnel.

Ce n’est pas fondamental d’utiliser ou non Windows (ou Mac OS X) sur votre machine, il y a ainsi beaucoup de programmeurs qui travaillent sous système d’exploitation propriétaires. Mais GNU/Linux est imbattable pour apprendre.

Contrairement aux idées reçues, les développeurs ne font pas que pisser du code. On tape quelque chose, ce qui déclenche autre chose. Il y aurait des entrées et des sorties. Cette vision est erronée.

La programmation est un mode de vie

Les programmeurs sont obsédés par la connaissance. Ils utilisent cette obsession pour alimenter leur soif d’apprendre, de découvrir et de créer. Voilà la vraie définition d’un programmeur.

Une principale raison d’utiliser Linux pour travailler au quotidien est qu’il vous aide à apprendre progressivement et pratiquement la programmation. Sur Windows, si vous voulez copier un fichier d’un dossier à un autre, vous faites du glisser-déposer à la souris. Sur Linux, vous pouvez aussi en faire de même désormais, mais vous pouvez également utiliser scp ou rsync. Parce qu’apprendre à utiliser la ligne de commande vous enseigne des techniques basiques de logique et améliore votre capacité à résoudre des problèmes.

La pratique régulière de l’OS GNU/Linux permet d’acquérir des compétences importante à commencer par l’autonomie. Contrairement à d’autres activités, la programmation ne demande ni de grands efforts de mémorisation, ni de répéter encore et encore les mêmes routines. Ce qu’il faut, c’est surtout énormément de motivation et de détermination. . Même les meilleurs programmeurs n’ont généralement aucune idée précise de ce qu’ils vont faire lorsqu’ils débutent un nouveau projet. Si une seule chose peut résumer mon activité, ce serait la recherche. Les programmeurs se doivent de savoir où trouver l’information, comment la digérer et s’en servir d’une manière utile. Cette compétence demande du temps et de la patience mais il est clair que GNU/Linux aide à cela.

Utiliser Linux vous poussera à rechercher activement des solutions aux problèmes que vous rencontrez. Si vous ne savez pas comment mettre en place un tunnel SSH, et bien vous allez l’apprendre tout simplement. Utiliser Linux vous amènera à découvrir de nouvelles choses auxquelles vous n’auriez jamais pensé en utilisant Mac ou Windows. Apprivoiser petit à petit GNU/Linux fera de vous un meilleur et plus pragmatique développeur. Vous apprendrez à travailler collaborativement pour résoudre un problème, à aller à la chasse aux erreurs, à mobiliser vos connaissances pour créer de nouvelles choses et rendre votre vie (et celle des autres) plus simple.

De plus, en tant que projet libre (tant le système d’exploitation que les logiciels disponibles), GNU/Linux offre un accès privilégié à la culture de la programmation. À coup sûr, vous allez :

  • Trouver un bogue dans une application que vous utilisez
  • Chercher des réponses sur internet
  • Trouver un système de tickets ou un forum sur le logiciel en question
  • Soumettre un ticket concernant le bogue ou poster dans un forum un sujet sur le problème rencontré
  • Interagir avec d’autres utilisateurs pour aidez à le résoudre

Tout cela n’a pas l’air très cool, mais patientez. Une fois ces points achevés, vous aurez fait connaissance avec la communauté hacker. Trouver des problèmes, en discuter avec d’autres personnes, résoudre ces problèmes ensemble et vous voici membre de cette communauté.

Si tout était parfait et qu’il n’y avait pas un seul problème à résoudre dans ce monde la vie serait morne. Mettre le nez dehors et corriger des choses, combattre le chaos, donne un sens à la vie. Alors profitez-en !

Linux peut vous apprendre tout cela, et bien plus encore.

Jon Rawlinson - CC by

Avoir un désir intense

Pourquoi voulez-vous programmer ? Quelles sont vos motivations ? Si vous n’avez pas cette envie pressante d’apprendre à programmer, vous échouerez.

J’ai commencé à coder parce que j’avais une très grande envie de créer des jeux vidéo. Quand j’étais un enfant, les jeux vidéo étaient ma passion. Je rentrais le plus rapidement possible de l’école pour rester scotcher sur l’ordinateur à jouer à des vieux classiques. Mes épiques batailles de Starcraft contre mon frère font parties de mes meilleurs souvenirs.

Plus que tout, je voulais être capable de maîtriser ces jeux. Je voulais les dominer, je voulais rendre servile mon ordinateur esclave afin qu’il fasse ce que je désirais.

Ces vieilles motivations me semblent maintenant un peu idiotes mais je les ressentais alors de manière intense. J’en rêvais la nuit, j’y pensais durant le jour et en était obsédé alors que j’étais derrière mon ordinateur les après-midis.

Quand j’ai décidé d’apprendre à programmer, je savais que je pouvais le faire. Je savais que quoi qu’il arrive dans ma vie, j’apprendrais coûte que coûte à programmer, alors même qu’au début je n’avais aucune idée de comment y arriver et ne connaissais personne dans ce domaine.

Mais j’ai trouvé un moyen. J’ai lu sur le Web des dizaines et des dizaines de pages de documentation. J’ai dépensé sans compter des centaines d’heures à fouiller au hasard les forums à la recherche de bribes d’information. J’étais tellement motivé et entier dans mon désir que cela me semblait facile et m’a aidé à devenir un programmeur à moitié convenable.

Kalyan Kanuri - CC by-sa

Faire de petits programmes en ligne de commande

Aujourd’hui, il semblerait que la majorité apprenne la programmation en plongeant la tête la première dans le développement Web. Même si ça peut marcher pour certaines personnes, ça me semble vraiment fou. Non seulement les technologies Web sont vastes, complexes et vite démodées (construire un site Web moderne requiert des tonnes de compétences différentes qui nécessitent plusieurs années de maturation), mais elles sont souvent frustrantes et décourageantes pour les nouveaux développeurs.

Je suis peut-être de la vieille école (j’ai seulement 23 ans :x), mais il n’y a rien de plus satisfaisant et formateur que d’écrire des tonnes de programmes simples en ligne de commande. J’écrivais des tonnes de choses :

  • Un script simple qui prenait en entrée des noms de fichiers pour les stocker dans des dossiers hiérarchisés et organisés en fonction du type de fichier
  • Un bot IRC qui enregistrait toute l’activité d’un channel dans un fichier texte.
  • Un programme simple qui télechargeait toutes les images d’une page Web donnée.
  • Un outil permettant de convertir des nombres en base dix vers n’importe quelle autre base en CLI
  • Un script compilant et mémorisant d’un coup toutes mes personnalisation graphiques : fonds d’écran, thèmes, etc.
  • Un programme basique qui téléverse automatiquement des captures d’écran sur un hébergeur d’images et en copie automatiquement l’adresse dans mon presse-papier.
  • Et un million d’autres choses encore.

J’ai tiré grand bénéfice de ces petits exercices. Chacun d’eux était suffisamment simple pour être écrit en quelques heures (pas plus), et ils m’ont tous appris quelque chose : un nouveau language, nouvelle bibliothèque ou stratégie. J’ai sans aucun doute gagné une grande partie de mes compétences informatiques en construisant là ces applications.

Mais cela joue également au niveau de la confiance. Chaque application créée aura été une petite satisfaction personnelle dont j’étais fier. J’y revenais du reste en les tenant à jour mais surtout en tentant de les modifier sans cesse par du nouveau code et de nouvelles stratégies. Cela m’a appris les bases de la programmation par itération (améliorer au fil du temps) tout en contribuant effectivement à la communauté du logiciel libre.

Si vous êtes un nouveau programmeur, il n’y a rien de mieux et de plus amusant que d’écrire ces petits utilitaires en ligne de commande. Vous ne me croyez pas ? Essayez, et dites moi si vous ne vous retrouvez pas accro dès la première ligne !

Erin Kohlenberg - CC by

Écrire, Écrire, Écrire

L’écriture est controversée. Lorsque j’ai commencé à programmer, les nerds avaient une réputation d’être inaptes à tout sauf aux ordinateurs. Pendant une période, j’ai supposé que comme étant bon avec les ordinateurs, j’étais naturellement mauvais pour tout le reste : même pour écrire.

C’était idiot.

J’en suis venu à réaliser avec le temps que les programmeurs sont, au contraire, d’excellents auteurs. La capacité à penser logiquement et à résoudre les problèmes est un avantage indéniable pour écrire, alors qu’il est parfois si difficile de coucher ses idées sur le papier. Et réciproquement l’exercice d’écriture m’a aidé à devenir un meilleur développeur. En outre nous savons qu’il est important de bien documenter son code.

Posséder un blog par exemple est une excellente manière de pratiquer l’écriture, pour garder une trace de ce que vous apprenez, et aide à s’assurer d’un progrès constant en particulier sur les sujets techniques.

Si vous écrivez une très très utile application en ligne de commande pour commander des pizzas chez Dominos, il vous sera alors difficile d’en parler sans aller dans le détail pour décrire la technologie que vous utilisez, comment l’API de Dominos fonctionne, etc. En prenant le temps d’écrire en structurant votre pensée, en relatant votre expérience, vous en apprendrez forcément davantage.

L’écriture peut être incroyablement utile lorsqu’elle est utilisée pour décrire des choses techniques, puisqu’elle simplifie et clarifie la cause du problème, vous forçant à réfléchir à ce problème de la manière la plus simple possible pour mieux la communiquer.

Un des mes plus grands regrets est de ne pas avoir conservé mes articles. Au fil des réécritures de mon site Web, d’erreurs de gestion de serveurs, j’ai petit à petit perdu la majeur partie de mes écrits. Le blog que vous lisez actuellement existe principalement suite à la décision que j’ai prise de remédier à cela. Ne faites pas la même erreur !

John Vetterli - CC by-sa

Rejoindre une communauté en ligne

Internet est un vaste lieu. Programmer est un vaste sujet. Il est tout à fait possible de devenir un excellent programmeur tout seul dans son coin mais il est beaucoup plus facile de le faire avec l’aide d’autrui.

Lorsque j’ai commencé à programmer j’ai eu la chance de rencontrer grâce au Net d’autres programmeurs fascinants avec qui j’ai partagé des jours durant des idées via IRC. Ces personnes ainsi rencontrées comptent parmi les individus les plus brillants et passionnés que je n’ai jamais rencontrés dans ma vie. Nous sommes devenus amis et le sommes encore !

Avoir des amis aussi motivés a décuplé ma propre motivation, et m’a aidé à tirer le meilleur de moi-même. Nous écrivions ensemble des articles pour partager les choses que nous avions apprises, nous critiquions nos codes respectifs, nous parlions des projets sur lesquels nous travaillions et sur la meilleure manière de les mener à bien.

Connaître un groupe qui partage la même passion et la même envie que vous est inestimable.

Sham Hardy - CC by-sa

Amusez-vous

Programmer est amusant. Programmer est vraiment, vraiment très amusant. Le simple fait d’en parler me met en joie ! Il est difficile de cacher mon excitation 🙂

Le plus important quand on apprend à programmer c’est de toujours S’AMUSER ! Peu importe que vous commenciez tout juste à programmer ou que vous soyez un programmeur aguerri et confirmé : vous ne devez jamais perdre du vue cette dimension fondamentale de l’informatique.

Supposons que vous veniez de commencer à apprendre le Python (à propos, Dive Into Python reste l’un des meilleurs livres sur le sujet), ne démarrez pas par un projet ennuyant. Écrivez quelque chose de nouveau ! Un truc qui vous semble fun et quelque part utile. Amusez-vous avec, et lancez-vous des defis.

Si votre motivation première pour travailler sur un projet est de le terminer alors vous faites fausse route. Pour devenir un bon programmeur il faut bidouiller des trucs que VOUS trouvez sympa. Le monde est rempli de logiciels tristes alors qu’on a besoin de logiciels GENIAUX. Et la seule façon de faire un logiciel génial c’est de s’éclater en le créant !

Je pourrais déblatérer pendant des heures ainsi. Mais à la place et pour conclure je veux VOUS mettre au défi (oui vous !). Pensez à quelquechose que vous adoreriez faire. Un site de partage ? un éditeur vidéo ? Peu importe ce qui vous exalte et vous transporte. Vous avez saisi ?

OK, maintenant allez-y fabriquez-le !

Notes

[1] Crédit photos : Francisco Osorio, Mtellin, Jon Rawlinson, Kalyan Kanuri, Erin Kohlenberg, John Vetterli, Sham Hardy (Creative Commons By et By-Sa)