Programmer ? Git ? GitHub ? Récursion ? Langage de programmation ? Frontend ? Backend ?
Le jargon de dev expliqué à ma nièce de 5 ans
If you can't explain it simply, you don't understand it well enough.
-- Albert Einstein
🤔 « Programmer c’est quoi ? »
C’est être le Chef qui écrit des recettes de cuisine super détaillés pour les cuistots.
Imagine que tu as trois personnes chargées de mettre au point un sandwich au roquefort et au coulis de chocolat.
Alice se charge d'apporter les ingrédients : le pain, le roquefort, le chocolat, le couteau, une planche, ...
Bob c'est le micro-manager qui doit décrire minitieusement les étapes exactes pour construire notre délicieux sandwich
Charlie lui va suivre aveuglement sans la moindre jugeotte ni initiative les instructions qui lui sont données par Bob.
Bob est un peu junior, veut aller trop vite et écris les instructions comme ceci :
Je coupe le pain en deux, j'étale le roquefort puis je met le coulis de chocolat.
Charlie s'exécute, et rien ne se passe.
Bob s'arrache les cheveux, avant de se rendre compte que le pain était encore dans son sac.
Et oui, Charlie qui est l'ordinateur, est bête comme ses pieds.
Par contre il est très travailleur et ça compense, à la rigueur.
Je sors le pain du sac, je coupe pain en deux, puis j'étale le roquefort puis je mets le coulis au chocolat.
Alors c'est mieux, mais avant de couper, il faut avoir un couteau et respecter les bonnes pratiques pour ne pas se couper avec.
Nouvelle itération.
Ah on avait oublier la planche.
Nouvelle itération.
Ah, le roquefort était toujours dans son emballage.
Poursuivre cette expérience de pensée jusqu'au bout vous permettra d'avoir un feeling d'à quel point le développeur fait un travail détaillé, concret et itératif.
En général tout ça pour se rendre compte à la fin du fin que le roquefort au coulis de chocolat ça n'est pas l'idée géniale qu'on pensait au départ !
🤔 « C'est quoi un langage de programmation ? »
C’est comme les langues naturelles.
"Mais non cela n'a rien à voir, qu'on s'adresse à un bête ordinateur et non pas à des humains."
Alors pas du tout, au contraire.
N'importe quel novice est capable d'écrire du code qui s'exécute sur un ordinateur.
Les bons programmeurs eux cherchent avant tout à communiquer clairement avec et pour leurs collègues.
Si on file l'analogie :
Livres : ce sont les programmes qui nous écrivons
Grammaire : c'est la syntaxe, elle diffère dans chaque langage mais c'est au fond les différences sont très superficielles
Vocabulaire : ce sont les mots, noms communs et verbes qui existent dans les différentes librairies du langage
Culture : chaque communauté a sa culture. Par exemple la communauté Python accueille les juniors bras ouverts alors que les devs C++ leur lancent des SegmentationFault à la gueule.
Fobie des fotes : les compilateurs sont des naz.s de l'orthograffe style Académie Française. La moindre erreur et BAM.
Familles linguistiques : de la même manière que le français, l'espagnol, l'italien... sont des langues latines, des langages comme C, C++, Java, Kotlin ont de grands airs de ressemblances parce que chacun s'inspire de ses prédécesseurs
Là où l'analogie s'arrête c'est que apprendre l'allemand quand on connait l'anglais c'est galère.
Mais apprendre Kotlin quand on connait Java c'est plus comparable à passer du français parisien au québecquois.
D'où un conseil important pour les recruteurs
👉🏻 Ne vous arrêtez pas aux buzzwords. Dans le doute, posez la question !
🤔 « C'est quoi Git et GitHub ? »
La gestion de versions, tu en fais comme M. Jourdain faisait de la prose.
Et oui, si tu as un fichier "Rapport de stage final.docx"
et un autre "Rapport de stage bis final copie promis jure.xls"
👉🏻 tu fais déjà de la gestion de version.
Dans Word/Google Docs/Wikipedia, il y a un historique des versions
👉🏻 c'est de la gestion de versions.
Jusqu'ici tu modifies directement le fichier sans contrôle à priori.
Oui mais un compilateur c'est pénible, il manque un espace quelque-part dans ton fichier de configuration et tous clients sont en PLS.
Pour éviter cela, Git/GitHub ont un système que tu peux comparer à l'élaboration des lois.
Ton programme complet c'est une législation en vigueur, le code civil par exemple.
En tant que dev dépité député, tu ne modifies pas le code civil directement, tu proposes un amendement à une loi.
Les devs se battent ensuite en commission et en assemblée plénière pour retoquer ton amendement, le rejeter initialement ou au contraire l'approuver au plus vite.
Par contre il ne faut pas s'enflammer, ce n'est pas parce que le l'amendement pull-request est adopté que la loi change immédiatement. Il y a tout un travail réglementaire d'application à faire derrière.
🤔 « C'est quoi un dev Frontend, Backend, Fullstack, Mobile ? »
C'est comme dans un restaurant.
Les serveurs sympas et bien habillés avec qui tu interagis, ils sont sur le front.
Dans les arrière cuisine, le back, il y a les cuisiniers qui font en sorte que tu ais une information qui soit délicieuse, pertinente et non avariée.
Les fullstacks ils savent à la fois préparer la cuisine et s'occuper du client, très utile pour les petits restaus sympas mais gare au surmenage.
Après il y a les gens mobiles qui veulent faire la même chose en Drive. Ils passent par l'appli Android et iPhone.
💡 La récursion, c’est les poupées russes
🤔 « Vous connaissez la super blague sur la récursion ? »
Voir la phrase ci-dessus 🔝
La récursion c'est un concept que ces paresseux de devs ont volé aux paresseux de matheux :
❌ factorielle(5) = 5 * 4 * 3 * 2 * 1
✅ factorielle(5) = 5 * factorielle(4)
C’est comme les poupées russes
Tu ouvres une poupée russe, tu vois qu'il y en a une autre à l'intérieur.
Tu ouvres une poupée russe, tu vois qu'il y en a une autre à l'intérieur.
Tu ouvres une poupée russe, tu vois qu'il y en a une autre à l'intérieur.
On peut même écrire cela sous forme de code
fonction plusPetitePoupée(poupée) =
Si (poupée.nEstPasVide())
plusPetitePoupée(poupée.intérieure())
Sinon
poupée
La seule différence c'est que dans le cas des poupées russes, on est sûr de trouver la poupée la plus petite.
Alors qu'une récursion mal faite t'amène sur une boucle infinie.
Et l'infini c'est long, surtout à la fin.
J'ai pas tout tout compris (certains sigles notamment), mais j'en sais plus qu'avant et c'était déjà pas gagné 🤭