Le compilateur libre GCC a 25 ans et il continue de bénéficier à tous

On a parfois tendance à l’oublier, mais le logiciel libre est là depuis un certain temps déjà. D’ailleurs si son histoire de l’intérieur vous intéresse nous vous suggérons l’excellente et enrichissante lecture de notre biographie de Richard Stallman.

L’intérêt de cette traduction est de venir nous le rappeler à l’occasion du vingt-cinquième anniversaire du célèbre compilateur GCC du projet GNU, en soulignant le fait qu’il est toujours utilisé de nos jours et qu’il ne faudrait pas oublier d’où il vient[1].

L’occasion aussi de constater comment l‘open source est évoqué dans la grande presse nationale, en l’occurrence australienne.

Renuka Prasad - CC by

Les bénéfices de l’open source

The benefits of open source

George Wright – 25 mars 2012 – The Sydney Morning Herald
(Traduction Framalang : Céline, Lamessen, Amine Brikci-N, Evpok, Goofy et Barbidule)

Les logiciels libres et open source ont un impact sur nos vies, qu’on le sache ou non. Souvent mal compris et éveillant la méfiance, de nombreuses sociétés profitent de leurs avantages sans reconnaître la communauté qui en est à l’origine. Avant d’aller plus loin, le logiciel libre n’est pas une question de prix, mais plutôt une idéologie qui prône qu’un logiciel est plus utile lorsqu’il est permis de l’utiliser, de l’améliorer et d’en étudier le code source librement.


Cette année marque le 25ème anniversaire de la naissance du compilateur C de GNU (abrégé en GCC). En 1987, un certain Richard M. Stallman bien plus jeune mais probablement déjà sacrément barbu sort ce qui est probablement l’une des plus importantes contributions à la culture informatique moderne – un compilateur C libre (autant en coût qu’en liberté). Pour faire simple, les compilateurs sont des logiciels qui traitent un ensemble d’instructions écrites dans un langage structuré humainement lisible (comme ici, le langage C) et le compilent en instructions qu’un ordinateur peut comprendre (appelé code machine). La sortie du compilateur est un assemblage de logiciels exécutables appelés bibliothèques, exécutables ou binaires.


Richard Stallman, souvent simplement surnommé RMS sur le Net, a fondé le projet GNU de façon à créer un système d’exploitation proche d’Unix complètement libre et ouvert. GNU signifie GNU’s not Unix. On retrouve souvent ce style d’acronymes récursifs dans le monde de l’informatique, qui en est malheureusement friand. À l’époque, Unix était un système fortement propriétaire et seulement utilisé par les grands centres de recherche, les entreprises, le gouvernement ou les installations militaires. Au début des années 80, Unix, alors qu’il constituait une technologie fermement établie, faisait l’objet de poursuites dans des affaires antitrust entre le Département de Justice américain et Bell Systems. AT&T tenta de commercialiser Unix System V mais cela représenta une menace pour l’entraide entre les chercheurs en informatique.


Un système similaire à Unix, créé avec pour principes la protection des libertés fondamentales des programmeurs et des utilisateurs que ce soit pour l’exécution, l’étude, la modification ou la distribution des logiciels sans avoir à craindre que votre travail soit contrôlé par d’autres, semblait souhaitable. Unix étant déjà une plateforme de recherche informatique importante (sur laquelle beaucoup de fonctionnalités que nous tenons pour acquises de nos jours étaient développées et expérimentées), les soucis légaux, la mauvaise gestion d’entreprise et les contrôles propriétaires menaçaient de ralentir sérieusement l’innovation.


Il n’est pas difficile de voir que sortir un système d’exploitation du laboratoire et former une communauté autour est essentiel pour que l’informatique bénéficie des rapides progrès qui ont été obtenus durant les trente dernières années. Au cœur de cette communauté se trouvait la chaîne d’outils de GNU et le joyau qu’est le compilateur du projet GNU.


Bon anniversaire GCC et merci à tous les chercheurs, les développeurs et les défenseurs de la liberté qui ont rendu cela possible au cours de ces 25 dernières années !


Assez parlé du passé. La communauté des logiciels libres est bien en vie et continue de contribuer à de nombreuses technologies et innovations qui peuvent être partagées par tous.


Pendant cette semaine, je parlais à un gros distributeur de logiciels en faisant une évaluation de l’une de leurs plateformes. La plateforme était excellente et dépassait mes attentes et alors que nous creusions plus profondément dans les sous-composants, j’ai demandé quels étaient les outils qu’ils utilisaient pour effectuer certaines fonctions de manipulation d’images. Presque embarrassés, ils m’ont répondu ImageMagick, une bibliothèque open source d’édition d’images développée par ImageMagick Studio. Il m’a semblé étrange de voir qu’il y ait encore une honte à admettre que les vendeurs de logiciels utilisent des logiciels open source dans le cadre de leurs offres.


Pourquoi une telle honte ?


Les systèmes sont plus que la somme de leurs composants. Si l’utilisation d’une bibiliothèque libre vous permet d’obtenir une fonctionnalité dont vous avez besoin et tant que vous vous conformez aux termes de la licence, c’est du bon sens. Pourquoi réinventer la roue et passer aux oubliettes ce qui est parfois un travail de plusieurs années de développement et de tests effectués par la communauté ?


Ce n’est pas une raison pour utiliser les logiciels libres à tort et à travers. Chaque activité commerciale se doit d’évaluer les avantages et les inconvénients de chaque bibliothèque ou sous-système selon ses besoins. Mais rejeter ces solutions potentielles à cause de préjugés sur les logiciels libres/open source, c’est de l’ignorance. Il y a des implications légales, si vous décidez par exemple de développer des extensions de ces bibliothèques, mais c’est loin d’être aussi problématique que cela est souvent affirmé.


Je ne vous demande pas de distribuer votre produit sous une licence open source. Si vous êtes dans le secteur du développement logiciel, souvent vos développeurs connaitront ces bibliothèques et outils. Ayez une discussion franche et ouverte avec eux sur le potentiel que peut apporter l’exploitation de ces bibliothèques. Dites quelles sont les bibliothèques libres que vous utilisez et quelle est votre politique concernant la contribution à apporter à la communauté par les améliorations réalisées ou même le parrainage des améliorations.


Finalement, si votre société utilise des plateformes et des bibliothèques développées par la communauté, fêtez-le. Vous êtes en bonne compagnie.

Initialement publié sur smh.com.au IT Pro.

Notes

[1] Crédit photo : Renuka Prasad (Creative Commons By)




Le Raspberry Pi sauvera-t-il le Royaume-Uni ?

Grand succès pour le mini ordinateur sous GNU/Linux Raspberry Pi, officiellement disponible à la vente depuis une semaine pour une trentaine d’euros. Plutôt que nous extasier (à juste titre) sur ses caractéristiques techniques, nous en avions souligné ses potentialités éducatives dans un article précédent.

Mais pour le mettre entre les mains des écoliers il faut bien le produire en masse. ce qui présente, d’après Pete Nelson, une belle opportunité économique pour le pays qui l’a vu naître.

Une traduction qui fait vibrer la fibre patriotique mais qui permet aussi en creux de s’interroger sur la situation française en cette période électorale. Angleterre et France, ces deux vieux pays rois de la Révolution industrielle[1], sauront-ils retrouver leur place dans le domaine du matériel et logiciel informatique ?

La réponse est peut-être une fois de plus à chercher du côté du Libre.

Katherine Johnson - CC by

Pourquoi le Raspberry Pi va sauver le Royaume-Uni

Why the Raspberry Pi will save the UK

Pete Nelson – 6 marc 2012 – Blog perso
(Traduction Framlang : OranginaRouge, ZeHiro, nh2, Lamessen)

Le Royaume-Uni a un riche passé d’ingénierie et d’industrie. La révolution industrielle y a commencé et depuis ce jour nous avons assisté au développement d’une ingénierie fiable, solide et bien pensée.

Malheureusement, durant le dernier quart du 20ième siècle, des décisions ont été prises pour mettre à mal l’assise de notre ingénierie et de nos industries de façon à ce que nous, société de consommation, puissions acheter des produits moins chers auquels nous ferions moins attention. Pour combler le déficit, nous nous sommes appuyés de plus en plus sur la City de Londres et nous l’avons dérégulée afin de s’assurer qu’elle attire les investisseurs du monde entier. Alors que la City générait de l’argent pour le pays, le reste d’entre nous se mettait au travail pour subvenir aux besoins de la nation – quelqu’ils soient – généralement en dépensant de l’argent dans de la nourriture de marque distributeur ou des débits de boissons. Pendant ce temps, ceux qui se démenaient à produire des biens réels perdaient leurs CDI au profit de contrats gérés par des sociétés de service afin que les entreprises puissent embaucher et licencier aussi vite qu’ils le souhaitaient, alors que ces suceurs de sang grattaient un gros pourcentage sur les salaires.

Mais il y a une industrie qui peut changer les choses au Royaume-Uni : le logiciel. Nous avons un solide héritage en matière de matériel informatique et de logiciel dans ce pays mais la beauté du développement logiciel est qu’il peut être réalisé par n’importe qui, à n’importe quel endroit avec un minimum d’investissement. Le coût le plus important est de loin la formation du personnel pour qu’il soit capable de développer un logiciel ; bien qu’il soit très simple d’acquérir les bases, ça reste un métier qui nécessite des connaissances en ingénierie et une expérience pratique.

C’est là que le Raspberry Pi peut nous sauver : il est désormais possible pour le gouvernement de fournir à moindre coût et à chaque enfant de ce pays une machine qu’il pourra emporter chez lui et avec laquelle il pourra jouer. En outre, si le gouvernement tient sa promesse d’arrêter de donner des cours sur l’utilisation de Microsoft Word et commence à enseigner des sujets dignes de ce nom, nous aurons bientôt une génération de travailleurs hautement qualifiés à portée de main, prêts à exporter des produits dans le monde.

La programmation n’est pas faite pour tout le monde, bien entendu, mais le développement d’un logiciel ne se résume pas à de la programmation, il y est aussi une question de conception , d’idées, de raisonnements et d’organisation. Nous avons déjà de super entreprises de design, de jeux, de développement web et logiciel dans ce pays (bien que minoritaires) – si les représentants de ces industries pouvaient aller dans cette direction et développer massivement ces industries au point de venir concurrencer les leaders américains alors nous serions sur la bonne voie.

C’est génial d’entendre que Nissan a créé de nouveaux emplois dans le pays mais je crois qu’il est nécessaire de commencer à s’éloigner de ces industries antiques et de créer une main d’œuvre locale, décentralisée et hautement qualifiée composée de créateurs, dans l’objectif d’exporter à nouveau.

Et nous devons commencer à donner à l’industrie du logiciel le respect qu’elle connaît aux États-Unis. Au moment où je vous écris, le Raspberry Pi se vend à 700 unités par seconde et cela me redonne confiance en ce monde – qu’une initiative à but non lucratif et une conception désintéréssée puisse avoir autant de succès. Et j’aime qu’il soit basé sur une autre technologie de Cambridge qui a changé le monde (et qui a confirmé que nous, britanniques, pouvons encore produire des choses) : la puce ARM.

Notes

[1] Crédit photo : Katherine Johnson (Creative Commons By)




Pourquoi les écoles devraient utiliser le logiciel libre et l’enseigner (R. Stallman)

Petite mise en lumière d’un article du site de Free Software Foundation de Richard Stallman.

Quand on regarde ce qui a été fait dans ce domaine à l’Éducation nationale française ces cinq dernières années (à savoir pas grand chose), on se dit qu’il y a encore du pain sur la planche…

On notera que l’on n’oppose pas outils et savoirs informatiques et que dans les deux cas le logicel libre est plus que pertinent[1].

Liz Poage - CC by

Pourquoi les établissements d’enseignement devraient utiliser le logiciel libre et l’enseigner

URL d’origine du document

Free Software Foundation – licence Creative Commons By-Nd
Version du 2 février 2012 – Traduction : Pierrick L’Ébraly

Les écoles devraient apprendre à leurs élèves à devenir les citoyens d’une société forte, compétente, indépendante et libre.

Ce sont les raisons principales pour lesquelles universités et écoles de tous niveaux devraient n’utiliser que du logiciel libre.

Partage

Les établissements scolaires doivent enseigner les valeurs du partage en montrant l’exemple. Le logiciel libre aide l’éducation, en permettant le partage des savoirs et des outils :

  • Savoirs. Beaucoup de jeunes élèves ont un don pour la programmation, ils sont fascinés par les ordinateurs et enthousiastes à l’idée d’apprendre comment leurs systèmes marchent. Avec des logiciels privateurs[2], cette information est un secret, donc les enseignants ne peuvent d’aucune façon les rendre accessibles à leurs élèves. Mais s’il s’agit de logiciel libre, le professeur peut expliquer les bases, et leur donner le code source pour qu’ils le lisent et apprennent.
  • Outils. Les professeurs peuvent fournir à leurs élèves des copies des programmes qu’ils utilisent en classe, pour qu’ils puissent les utiliser chez eux. Avec le logiciel libre, la copie est non seulement autorisée, mais encouragée.

Responsabilité sociale

  • L’informatique est devenue une partie essentielle du quotidien. La technologie numérique transforme notre société très rapidement, et les écoles ont une influence sur le futur de la société. Leur mission est de préparer les élèves à jouer leur rôle dans une société numérique libre en leur enseignant les savoir-faire qui leur permettront de prendre facilement le contrôle de leurs propres vies. Le logiciel ne doit pas être aux mains d’un développeur qui prenne des décisions unilatérales que personne d’autre ne puisse modifier. Les établissements d’enseignement ne doivent pas permettre aux entreprises du logiciel privateur d’imposer leur puissance sur le reste de la société et sur son futur.

Indépendance

Les écoles ont une responsabilité éthique : elles doivent enseigner la force, pas la dépendance vis-à-vis d’un seul produit ou de telle ou telle puissante entreprise. De plus, en choisissant d’utiliser le logiciel libre, l’école elle-même gagne en indépendance vis-à-vis de tout intérêt commercial et évite l’enfermement par un fournisseur.

  • Les entreprises du logiciel privateur utilisent écoles et universités comme tremplin pour atteindre les utilisateurs et de là imposer leurs logiciels à la société dans son ensemble. Elles proposent des réductions, voire des copies gratuites de leurs logiciels privateurs aux établissements d’enseignement, de manière que les étudiants apprennent à les utiliser et en deviennent dépendants. Une fois que les étudiants auront leur diplôme, ni eux, ni leurs futurs employeurs ne se verront offrir de copies au rabais. Fondamentalement, ces entreprises font des écoles et des universités des démarcheurs pour amener les gens à une dépendance permanente à vie.
  • Les licences libres n’expirent pas, ce qui veut dire qu’une fois que le logiciel libre est adopté, les établissements conservent leur indépendance vis-à-vis du vendeur. De plus, les licences libres donnent aux utilisateurs le droit, non seulement d’utiliser les logiciels comme ils le souhaitent, de les copier et de les distribuer, mais aussi de les modifier pour les faire répondre à leurs propres besoins. Ainsi, si une institution décide de mettre en œuvre une fonction spécifique dans un logiciel, elle peut demander ce service à n’importe quel développeur, sans avoir à passer par le distributeur initial.

Apprendre

Quand ils choisissent où ils étudieront, de plus en plus d’élèves prennent en compte le fait pour une université d’enseigner ou non l’informatique et le développement logiciel en utilisant le logiciel libre. Le logiciel libre signifie que les élèves sont libres d’étudier la façon dont fonctionnent les programmes, et d’apprendre à les adapter à leurs propres besoins. S’instruire au sujet du logiciel libre aide aussi dans l’étude de la pratique professionnelle et de l’éthique du développement logiciel.

Économies

C’est un avantage évident qui attirera tout de suite de nombreux administrateurs, mais c’est un bénéfice marginal. Le plus important, c’est qu’en étant autorisé à distribuer des copies du programme à faible coût ou gratuitement, les écoles peuvent en fait aider les familles ayant des difficultés financières, promouvant ainsi l’équité et l’égalité d’accès au savoir parmi les élèves.

Qualité

Des solutions libres stables, sûres et facilement installées sont disponibles pour l’éducation dès à présent. De toute façon, l’excellence des performances n’est qu’un bénéfice secondaire, le but ultime étant la liberté pour les usagers de l’informatique.

Notes

[1] Crédit photo : Liz Poage (Creative Commons By)

[2] Autre traduction de proprietary : propriétaire.




Raspberry Pi : Bien plus qu’un petit ordinateur pas cher sous GNU/Linux

Après des mois d’attente insoutenable, le petit ordinateur Raspberry Pi est enfin disponible à la vente !

Petit par la taille (et le prix autour d’une trentaine d’euros) mais grand par le talent et toutes les potentialités éducatives !

Je vous laisse parcourir l’article Wikipédia pour les caractéristiques techniques (tourne sous Debian mais d’autres distributions suivront). Ce qui est aussi voire surtout intéressant ici c’est la possibilité de mettre entre les mains de tous les bidouilleurs de 7 à 77 ans un objet qui leur permettra de soulever facilement le capot de la technologie pour mieux comprendre, apprendre, créer, partager.

Ce n’est pas autrement que nous reprendrons petit à petit possession du monde…

Raspberry Pi

Raspberry Pi : Sous le capot de l’informatique

Raspberry Pi: computing under the bonnet

Éditorial du Guardian – 1 mars 2012
(Traduction Framalang : Poupoul2, Lamessen, Goofy)

La prochaine génération doit avoir pour objectif d’apprendre à contrôler les ordinateurs, plutôt que d’être contrôlés par eux.

C’est un paradoxe de la technologie ; plus elle investit tous les domaines de notre vie quotidienne, plus elle en apparaît éloignée. Lorsque les voitures à moteur étaient rares, les premiers conducteurs devaient les démarrrer à la manivelle, mais aujourd’hui nous pouvons rouler sans la moindre inquiétude à propos de ce qui se passe sous le capot, jusqu’à ce que quelque chose ne fonctionne plus. Il y a une génération de cela, les utilisateurs d’ordinateurs devaient entrer au clavier des commandes dans une syntaxe technique pour réaliser les choses les plus simples ; aujourd’hui il suffit de toucher un écran du doigt et de lancer une application pour faire à peu près n’importe quoi.

Une informatique plus simple rend la vie plus facile, mais il se pourrait qu’elle rende la prochaine génération plus dépendante et plus ignorante de ce qu’est un microprocesseur. Le Raspberry Pi, cet ordinateur à petit prix dont la vente a démarré hier et qui pourrait bientôt faire son apparition dans les écoles, répond à cette préoccupation. Il est vendu sous la forme d’une carte de la taille d’une carte de crédit sur laquelle on trouve quelques composants à l’air libre, nous ramenant ainsi réellement aux origines, bien que pas totalement : sa vitesse d’horloge ferait honte à n’importe quelle machine des années 80. Mais les plus grands supporters du projet font partie de cette génération qui a appris l’art de la programmation à cette époque. Ce ne sont que des être humains, il s’agit donc un peu de nostalgie. Après avoir copié du code dans des pages de magazines et branché des moteurs de Lego Technic sur leurs Spectrums, ils sont tout attendris à l’idée que leurs enfants puissent revivre cette expérience concrète. Mais il existe également deux objectifs réellement sérieux.

Le premier point (et le plus évident) est – pour reprendre l’analogie avec la voiture – que la prochaine génération de mécanos du code devra venir de quelque part, et aura besoin de la connaissances des écrous et boulons de l’informatique. La difficulté de fabrication est déjà tellement importante que, malgré l’envie d’en faire un produit local, le PI est estampillé « Made in China ». En ce qui concerne les logiciels, personne, même le plus brillant, ne peut arriver comme une fleur sans avoir eu l’occasion de bricoler du code. Les plateformes propriétaires comme Windows rendent cela difficile – le capot est verrouillé – donc le Pi fonctionnera sous Linux, en open source.

Si quelques personnes qui iront concevoir des méta-langages et des jeux extraordinaires pourront plonger au cœur des systèmes d’exploitation, il faut admettre que cela restera une activité minoritaire. Mais le second avantage de mettre les mains dans l’informatique a une portée plus vaste. Lorsque de nouvelles pièces de moteurs débarquent dans des systèmes fermés, tous les langages informatiques doivent – comme Turing l’a prouvé – se conformer. Or ici, avec quelques connaissances sur la la procédure à suivre, un cerveau tout à fait ordinaire pourrait améliorer des tâches quotidiennes, comme par exemple synchroniser des agendas, réorganiser des informations ou faire passer des relevés bancaires d’un format pratique pour les banques vers un format qui soit plus facile à lire. En somme l’objectif devrait être pour la prochaine génération d’apprendre à contrôler les ordinateurs, plutôt que d’être contrôlée par eux.




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)




De l’impact politique d’apprendre aux enfants la libre programmation

Si vous parcourez les articles de nos tags Informatique et Code, vous vous apercevrez que nous sommes de ceux qui poussent pour que la programmation (avec du Libre dedans) entre dans les écoles française sans attendre l’Université[1].

Parce que cela a des implications politiques majeures et ceux qui ont tout intérêt à ce que la situation ne bouge pas l’ont très bien compris…

En Angleterre la prise de conscience est en train de se faire (quitte à ce que ce soit un Google qui vienne l’éveiller). Mais chez nous c’est franchement pitoyable. Tout au plus a-t-on réussi à obtenir une option pour la seule Terminale S l’année prochaine. Attention car, comme disait Barbara, le temps perdu ne se rattrape plus !

Lizette Greco - CC by-nc-sa

Apprendre les rudiments de la programmation aux enfants aura-t-il un impact politique ?

Will teaching children basic programming skills have a political impact?

Sam Tuke – 12 janvier 2012 – FSFE.org
(Traduction Framalang/Twitter : Yoha, Gatitac, Bl0fish, Sophie, Morphix, 0gust1)

La BBC m’a envoyé un courrier électronique la semaine dernière pour me demander mon avis sur la rumeur actuelle qui voudrait que le gouvernement britannique ajoute des compétences informatiques de base aux programmes scolaires en mettant l’accent sur un éventuel impact politique que ceci pourrait avoir sur la façon dont la société interagit avec les technologies. Voici ma réponse.

Question : Enseigner des rudiments de programmation à tous nous oriente-t-il vers une société plus critique et plus créative ?

Oui. Très souvent, les technologies, et en particulier les logiciels, voient leur utilité restreinte pour les intérêts de quelques-uns, comme les entreprises privées, afin de leur permettre de manipuler les consommateurs à leur avantage. Bien que la Grande-Bretagne utilise plus de logiciels et de produits numériques que jamais, seul un pourcentage restreint de la population est capable de participer à la création de ces produits, de les adapter à ses propres besoins, ou bien de créer les siens.

Cela a un impact extrêmement néfaste sur la société. Cela crée un déséquilibre de pouvoir entre les concepteurs des outils et tous les autres, dont le travail dépend de ces outils. Quel que soit le secteur dans lequel il travaille, un salarié a de fortes chances de devoir utiliser un jour ou l’autre un navigateur Web ou un client de messagerie par exemple, ne serait-ce que trouver un emploi. Mais la façon dont une personne interagit avec ces technologies est presque toujours définie par un groupe de personnes extérieures, sans aucun lien avec l’utilisateur final et qui pourraient n’avoir que très partiellement satisfait ses besoins.

Si notre société inculquait davantage les concepts de base de la programmation et de la création numérique, nous serions plus à même d’interagir en connaissance de cause avec notre environnement social et professionnel. C’est particulièrement vrai pour les sujets importants comme par exemple le journalisme citoyen, l’auto-hébergement et la publication. Une compréhension large de la façon dont fonctionnent les systèmes de vote électronique pourrait avoir un impact fort sur la politique future, par exemple.

Pour autant, avoir simplement des compétences en programmation ne suffit pas. Pour être compétitif, efficace et productif, la Grande-Bretagne devra également promouvoir une culture des libertés et du logiciel libre au sein de son industrie informatique. Et ce parce que les restrictions des copyrights et des brevets peuvent mettre au pas la créativité, y compris celle du plus doué des programmeurs, ou les forcer à réinventer constamment la roue avant qu’ils ne puissent commencer à innover.

Le logiciel libre a initié une véritable révolution technologique au cours des trois dernières décennies, nous apportant, entre autres avantages, Internet et des ordinateurs suffisamment abordables pour être distribués en masse dans le Tiers Monde.

Les écoles devraient favoriser la curiosité et l’esprit critique dans un environnement qui encourage les étudiants à apprendre. Une salle de classe exécutant des logiciels propriétaires ne peut fournir cela. « Comment ça marche ? », « Qu’est-ce qui se passe si je change ceci ou cela ? ». Ces questions restent fondamentalement sans réponse quand on enseigne aux enfants en utilisant des systèmes d’exploitation, des suites bureautiques ou des outils de robotique non libres.

Notes

[1] Crédit photo : Lizette Greco (Creative Commons By-Nc-Sa)




Mesures de R. Stallman pour une politique publique de promotion du logiciel libre

La « timidité » des pouvoirs publics vis-à-vis du logiciel libre est quelque chose qui en 2012 défie le bon sens.

Comme d’habitude avec Richard Stallman[1] c’est du sans concession mais je me prends à rêver que tous les candidats aux futures élections approuvent ces mesures et s’engagent en signant en bas de la page…

Au delà de ce crucial sujet de fond, ce billet a deux autres intentions. Rappeler l’existence du site Gnu.org qui accueille entre autres les écrits de Richard Stallman et de la Free Software Foundation et qui réalise un gros travail de traduction. Appeler à participer à la campagne de soutien dont il ne manque plus grand chose pour atteindre l’objectif fixé.

Christian Payne - CC by-nc-sa

Mesures à la portée des gouvernements pour promouvoir le logiciel libre

URL d’origine du document

Richard Stallman – GNU.org – version du 06 janvier 2012
Licence Creative Commons By-Nd

Cet article suggère des mesures pour une politique forte et résolue destinée à promouvoir le logiciel libre au sein de l’État, et à conduire le pays vers la liberté informatique.

La mission de l’État est d’organiser la société avec pour objectif la liberté et le bien-être du peuple. Un aspect de cette mission, dans le domaine informatique, est d’encourager les utilisateurs à adopter le logiciel libre.

L’État a besoin d’exiger le logiciel libre dans sa propre informatique pour garantir sa souveraineté dans ce domaine (c’est-à-dire le contrôle par l’État de son informatique). Les utilisateurs ont un droit légitime au contrôle de leur informatique, mais l’État est responsable envers les citoyens du maintien de son contrôle sur les travaux informatiques qu’il effectue pour eux. La plupart des activités de l’État se font actuellement par ce moyen, et son contrôle de ces activités dépend donc de son contrôle de son informatique. Lorsqu’il s’agit d’une agence dont la mission est cruciale, perdre ce contrôle sape la sécurité nationale.

La migration des organismes étatiques vers le logiciel libre peut fournir des bénéfices supplémentaires qui sont d’induire des économies budgétaires et de dynamiser l’industrie locale de support de logiciel.

Dans ce texte, « organismes étatiques » se réfère à tous les niveaux de gouvernement, et signifie les organismes publics y compris les écoles, les partenariats public-privé, les organismes en grande partie financés par l’État, et les sociétés « privées » contrôlées par l’État ou auxquelles l’État a attribué des privilèges ou des missions particulières.

Le domaine politique le plus important concerne l’éducation, dans la mesure où celle-ci détermine l’avenir d’une nation :

  • Les activités éducatives, du moins celles qui sont assurées par des organismes étatiques, doivent enseigner uniquement les logiciels libres (et donc ne devraient jamais conduire les élèves à utiliser un programme non libre), et devraient enseigner les raisons civiques de promouvoir le logiciel libre. Enseigner un programme non libre revient à enseigner la dépendance, ce qui est contraire à la mission de l’école.

Sont également cruciales les politiques publiques qui ont des conséquences sur le type de logiciel utilisé par les particuliers et par les organisations :

  • Les lois et les pratiques du secteur public doivent être modifiées afin de ne jamais obliger les particuliers ou les organisations à utiliser un programme non libre, ni les y pousser, même indirectement. Elles doivent aussi décourager les pratiques de communication et de publication qui impliquent de telles conséquences, y compris la gestion numérique des restrictions (DRM) EN).
  • Chaque fois qu’un organisme étatique distribue des logiciels au public, y compris des programmes inclus dans ses pages web ou exigés par elles, ces programmes doivent être distribués en tant que logiciels libres, et être aptes à fonctionner dans un environnement 100% libre.
  • Les sites web et les serveurs des organismes étatiques doivent être conçus pour fonctionner parfaitement dans des environnements 100% libres sur l’ordinateur de l’utilisateur.
  • Les organismes étatiques doivent utiliser uniquement les formats de fichier et les protocoles de communication qui sont bien pris en charge par le logiciel libre, et de préférence ceux dont les spécifications ont été publiées. (Nous n’énonçons pas cette règle en termes de « standards » parce qu’elle doit s’appliquer aux interfaces non standardisées aussi bien que standardisées.) Par exemple, ils ne doivent pas distribuer d’enregistrements audio ou vidéo dans des formats qui nécessitent de recourir à Flash ou à des codecs non libres, et les bibliothèques publiques ne doivent pas distribuer d’œuvres munies de dispositifs de gestion numérique des restrictions (DRM).

Plusieurs politiques affectent la souveraineté informatique de l’État. Les organes étatiques doivent exercer le contrôle de leur informatique, et ne pas céder celui-ci aux mains d’entités privées. Ces points s’appliquent à tous leurs ordinateurs, y compris les smartphones.

  • Tous les organismes étatiques doivent migrer vers le logiciel libre, et ne doivent installer ni continuer à utiliser aucun logiciel non libre, sauf exception temporaire. Une seule agence doit être compétente pour accorder ces dérogations temporaires, et seulement lorsque des raisons impérieuses sont démontrées. L’objectif de cette agence devrait être de réduire le nombre de ces exceptions à zéro.
  • Quand un organisme étatique finance le développement d’une solution informatique, le contrat doit exiger que ce soit une solution logicielle libre et capable de fonctionner dans un environnement 100% libre. Tous les contrats doivent l’exiger, de sorte que si les développeurs ne se conforment pas à cette exigence, leur ouvrage ne puisse être payé.
  • Quand un organisme étatique achète ou loue des ordinateurs, il doit choisir parmi les modèles qui se rapprochent le plus, dans leur catégorie de spécifications et capacités, d’un fonctionnement sans aucun logiciel privateur (non libre). L’État doit maintenir, pour chaque catégorie d’ordinateurs, une liste des modèles acceptables répondant à ce critère. Les modèles disponibles à la fois pour le public et l’État doivent être préférés aux modèles disponibles uniquement pour l’État.
  • L’État se doit de négocier activement avec les fabricants pour favoriser la disponibilité sur le marché (tant pour le public que pour l’État), dans tous les domaines pertinents, de produits matériels hardware appropriés qui ne nécessitent aucun logiciel privateur.
  • L’État devrait inviter d’autres États à négocier collectivement avec les fabricants la fourniture de produits matériels appropriés. Car ensemble ils auront plus de poids.

La souveraineté et la sécurité informatiques d’un État supposent le contrôle de l’État sur les ordinateurs effectuant des tâches de son ressort. Cela exige d’éviter le logiciel en tant que service (SaaS), à moins qu’il ne soit géré par une agence de l’État. (Cependant, pour respecter la séparation des pouvoirs, les travaux informatiques des services relevant respectivement de l’exécutif, du législatif et du judiciaire ne doivent pas être confiés à une agence relevant d’un autre pouvoir.) Plus généralement, cela exige d’éviter toute pratique qui diminuerait le contrôle exercé par l’État sur son informatique.

  • Tout ordinateur utilisé au service de l’État doit avoir été acquis ou loué par une entité relevant du même « pouvoir » (exécutif, législatif ou judiciaire) que l’administration utilisatrice ; aucune entité extérieure à ce pouvoir ne doit avoir le droit de décider qui a accès à l’ordinateur, qui peut en effectuer la maintenance (matérielle ou logicielle), ou quels logiciels doivent y être installés. Si l’ordinateur n’est pas portable, alors il doit être utilisé dans un espace dont l’État est propriétaire ou locataire.

Une autre politique concerne le développement de logiciels libres et non libres :

  • L’État doit encourager les développeurs à créer ou à améliorer le logiciel libre ainsi que tous ceux qui les mettent à disposition du public, par exemple au moyen d’exonérations fiscales ou de toutes autres incitations financières. Au contraire, aucune incitation ne doit être accordée pour le développement, la distribution ou l’utilisation de logiciels non libres.
  • En particulier, les développeurs de logiciels privateurs ne devraient pas être en mesure de « donner » des copies à des écoles et réclamer une déduction d’impôt basée sur la valeur nominale du logiciel. Les logiciels privateurs n’ont nulle légitimité dans les écoles.

Un tel train de mesures doit permettre à l’État de recouvrer le contrôle et la souveraineté de son informatique, ainsi que d’amener les citoyens, les entreprises et les organisations du pays à prendre le contrôle de leur informatique.

Notes

[1] Crédit photo : Christian Payne (Creative Commons By-Nc-Sa)




Pourquoi les codeurs sont des oiseaux de nuit ?

« Les développeurs travaillent la nuit parce que cela les dispense de contraintes horaires. Ils sont alors plus détendus, ne se dispersent pas, et la luminosité de l’écran neutralise la fatigue. »

Telles sont les hypothèses de Swizec Teller, jeune blogueur (et donc aussi et surtout développeur) slovène[1].

Et vous ? Travaillez-vous aussi principalement de nuit et si oui que vous inspire ce témoignage ?

Stuart Pilbrow - CC by-sa

Pourquoi les programmeurs travaillent de nuit

Why programmers work at night

Swizec Teller – 15 décembre 2011 – A geek with a hat
(Traduction Framalang : Deadalnix, Goofy, Martin, Pandark, DonRico, Antistress)

Il est d’usage de dire que les programmeurs sont des machines qui transforment la caféine en code.

Demandez donc au premier développeur venu à quel moment il est le plus efficace. Il y a de fortes chances qu’il reconnaisse travailler souvent très tard la nuit. Certains sont plus matinaux que d’autres. Une tendance répandue est de se lever à quatre heures du matin et de se mettre au travail avant que la folle agitation de la journée ne commence. D’autres préfèrent se coucher à quatre heures du matin.

L’essentiel, c’est d’éviter les distractions. Mais il est toujours possible de fermer la porte à clé, alors la nuit, qu’est-ce que ça apporte de plus ?

Je pense que cela tient à trois éléments : l’emploi du temps du créateur, le cerveau fatigué et la luminosité des écrans d’ordinateurs.

L’emploi du temps du créateur

C’est en 2009 que Paul Graham a écrit un billet au sujet de l’emploi du temps du créateur – en résumé, il existe deux grandes familles d’emplois du temps en ce bas monde.

D’un côté, l’emploi du temps traditionnel du manager, ou la journée est découpée en heures, et où dix minutes de distraction coûtent, au maximum, l’équivalent d’une heure de temps de travail.

De l’autre, on a ce que Paul Graham nomme l’emploi du temps du créateur – un emploi du temps pour ceux qui produisent quelque chose. Travailler sur des systèmes abstraits de grande envergure nécessite d’avoir l’ensemble dudit système en tête. Quelqu’un a un jour comparé ce processus à la construction d’une maison faite en cristal précieux. Dès que quelqu’un vous distrait, l’édifice s’écroule et se brise en mille morceaux.

Voilà pourquoi les programmeurs supportent si mal que l’on perturbe leur concentration.

À cause de cet investissement intellectuel important, nous ne pouvons tout simplement pas nous mettre au travail avant d’avoir quelques heures de tranquillité devant nous. Inutile de construire ce modèle dans notre tête pour le voir démoli une demi-heure plus tard.

En fait, en interrogeant de nombreux entrepreneurs, vous découvrirez qu’ils pensent ne pas être capables de véritablement travailler pendant la journée. Le flot constant d’interruptions, de choses importantes™ à régler et de courriels à rédiger l’interdit. Résultat, ils accomplissent en grande partie leur « vrai boulot » pendant la nuit, quand les autres dorment.

Le cerveau fatigué

Mais même les programmeurs ont besoin de dormir la nuit. Nous ne sommes pas des êtres supérieurs. Même les programmeurs sont plus attentifs le jour.

Alors pourquoi accomplissons-nous notre vrai boulot, complexe et exigeant, quand notre cerveau réclame du repos, et effectuons des tâches plus simples lorsque nous capacités intellectuelles sont les plus affutées ? Parce qu’être fatigué fait de nous de meilleurs codeurs.

De façon similaire au Ballmer Peak (Ndt : théorie selon laquelle les programmeurs sont plus efficaces avec un certain taux d’alcool dans le sang), la fatigue nous permet d’être mieux concentré, car le cerveau n’a alors d’autre choix que de se focaliser sur une tâche précise ! Il n’a pas assez d’excédent de capacités pour se permettre de vagabonder.

J’ai l’impression que les moments où je suis le moins efficace, c’est quand j’ai bu trop de thé ou une boisson énergisante à un moment mal calculé. La caféine ou les vitamines me rendent hyperactif, et je passe alors en permanence de Twitter au blog de tel ou tel, et j’ai l’impression de m’agiter dans tous les sens…

On pourrait croire que je travaillerais mieux à ce moment-là, quand j’ai de l’énergie à revendre et le cerveau en ébullition, mais non. Je ne cesse de me prendre les pieds dans le tapis, parce que je suis incapable de me concentrer plus de deux secondes d’affilée.

À l’inverse, lorsque je suis en état de fatigue légère, je ne bouge pas les fesses de mon siège et j’écris du code, rien d’autre. Je peux alors coder des heures entières sans même songer à consulter Twitter ou Facebook. C’est comme si internet cessait d’exister.

J’ai le sentiment que ce phénomène se vérifie chez la majorité des programmeurs. Nous disposons de trop de capacité cérébrale pour environ 80% des tâches qui nous incombent. Ne nous leurrons pas, l’écriture d’un tout petit algorithme bien corsé nécessite dix fois plus de ligne de codes que la construction de l’environnement dans lequel il pourra s’exécuter. Même si vous bossez sur l’apprentissage automatique (ou je ne sais quoi d’autre) le plus pointu, une grande partie du travail consiste simplement à nettoyer les données et à présenter les résultats de façon élégante.

Et quand le cerveau ne tourne pas à plein régime, il cherche à s’occuper. La fatigue vous abrutit juste ce qu’il faut pour que votre travail en cours lui suffise.

La luminosité des écrans

Là, c’est plutôt simple. Le soir, restez devant une source de lumière vive, et votre cycle de sommeil se décale. Vous oubliez la fatigue jusqu’à trois heures du matin. Ensuite, vous vous réveillez à onze heures, et lorsque le soir pointe le bout de son nez, vous n’êtes même pas crevé parce, je vous le donne en mille, vous vous êtes levé super tard !

Si cela se reproduit un certain nombre de fois, vous pouvez vous retrouver dans un fuseau horaire différent. Plus intéressant encore, il semblerait que le décalage finisse par stagner, car lorsqu’on atteint un rythme de croisière en se couchant à trois ou quatre heures du matin, on finit par se caler sur ces horaires.

À moins que ce ne soit tout bêtement à cause des radio-réveils, parce que la société nous renvoie l’image de grosses larves si on prend le petit-déj à deux heures de l’après-midi.

Fin

En conclusion, les programmeurs travaillent la nuit parce que cela les dispense de contraintes horaires. Ils sont alors plus détendus, ils ne se dispersent pas, et la luminosité de l’écran neutralise la fatigue.

Notes

[1] Crédit photo : Stuart Pilbrow (Creative Commons By-Sa)