Ingénieur logiciel version 2.1.0

Non, vous ne savez pas tout. Moi non plus d’ailleurs. Même l’expert du dév avec 40 ans d’expérience ne connait pas tout sur le logiciel. Le domaine de l’ingénierie logicielle est bien trop vaste, en passant du réseau, à de l’OS, à de l’embarqué jusqu’à une architecture micro services ou du Big Data… Il ne sera jamais possible de tout connaître concernant ce domaine. Et nous n’avons pas besoin de tout apprendre, pas en détails du moins. Mais il est important d’en savoir le maximum. Pourquoi ?

Exemple

Vous devez coder un simple script qui copie un fichier à travers le réseau, car une application a besoin que ce fichier se trouve à cet emplacement, cette application n’ayant pas les droits pour aller chercher ce fichier la ou il est, ce script est indispensable (c’est un exemple hein). Ce fichier est mis à jour toutes les 3 secondes, la copie doit donc être relancée toutes les 3 secondes, pour que l’application consommatrice de ce fichier ait toujours la dernière version. Vous ne vous posez pas de questions et faîtes donc un petit script python qui ressemble à ça :

import time.sleep as sleep
import sys
import shutil.copyfile as copyfile

try:
while True:
copyfile(source, destination)
sleep(3)
except:
print("Unexpected error: "+sys.exc_info()[0])
raise

Puis vous l’installez en tant que service et tout roule, pendant 6 mois.

En effet, au bout de 6 mois le CEO vous appelle et vous dit : “Tu te rappelles le script de copie de fichier que tu nous a fait? La copie a planté, le fichier est corrompu et donc notre application [consommatrice de ce fichier] a également planté, on vient de perdre 100 000€”.
Merde.
Vous rappelez votre CEO 30 minutes plus tard et lui dites “Mon script est tout simple, aucune raison que ça soit de ma faute ! Y’a rien non plus dans les logs, tout s’est bien passé, le fichier était sûrement comme ça avant que mon script le copie !” Votre CEO appelle donc l’équipe X chargée du développement et de la maintenance de l’application qui produit ce fichier, cette équipe vérifie donc ses logs et les archives du fichier en question, tout est parfait de leur côté.
Merde. C’est bien votre script qui a tout fait planté.

En effet, il y a eu un petit problème lors de la copie en réseau. Durant le transfert du fichier, un bit a été perdu. Le protocole TCP/IP fait bien une vérification que tous les bits ont été transmis correctement, mais il y a une chance sur 2^16 que ce protocole ne détecte pas l’erreur.

100 000€ perdus (sans compter le temps perdu par l’équipe X) parce que TCP/IP n’est pas parfait. Vous auriez pu éviter à votre entreprise cette perte en connaissant simplement une des bases de l’ingénierie réseau et en ajoutant une petite validation par checksum après la copie.

Apprenez

Je n’écris pas tout ça pour avertir sur l’imperfection des protocoles réseau, mais bien pour illustrer que nous ne savons, et ne saurons, jamais tout, et qu’il y a des conséquences. Nos applications évoluent dans un ensemble, qu’il nous faut comprendre, du moins les notions les plus basiques.

Vous pouvez bien sûr ignorer ce conseil, me dire que de toute façon il ne sera jamais possible de tout savoir, que mon exemple n’est pas représentatif de votre rôle au sein de votre société, pourquoi perdre son temps ? Je vous répondrai que vous pourrez commencer à arrêter d’apprendre lorsqu’il y aura plus de choses que vous connaissez que de choses que vous ne connaissez pas. Et je citerais Tony Robbins en disant : Progress equals happiness.

Peu importe comment vous apprenez, que ce soit via des blogs, livres, conférences, Twitter… Ce qu’il faut c’est que l’apprentissage soit une habitude.

Ne pensez pas qu’à vos hard skills

Vous ne passez pas 100% de votre temps de travail à coder seul devant votre clavier. Vous passez beaucoup de temps à réaliser des tâches administratives, participer à des réunions, à expliquer à votre stagiaire comment s’utilise le framework maison… Coder n’est qu’une partie du job.

Donc oui, vos soft skills sont importantes. Vous devez ainsi travailler votre communication, votre écoute, votre capacité d’adaptation, votre travail d’équipe ou bien votre esprit critique et bien d’autres choses encore.