Christian P se sentait plutôt mal. Sa société venait d'obtenir un contrat de maintenance d'une application (faite maison) pour une société financière assez importante. Non seulement six développeurs de cette société étaient licenciés sur le champ, mais les trois autres restant devaient assurer la transition avec la nouvelle équipe avant d'être licenciés. Pour son premier jour, Christian s'était préparé à des réactions de colère, de tristesse, de désespoir et même de haine. Mais rien de tout ça. Bien au contraire, les développeurs sur le départ semblaient tous soulagés.
Après son premier jour de formation, Christian se sentait beaucoup moins mal vis à vis des employés licenciés. En fait, il les enviait presque. Et pour cause! Le système qu'ils devaient maintenir pouvait se résumer en un mot : miraculeux. Pas "miraculeux" comme dans, un ensemble impressionnant d'application métier qui transforment la productivité et qui créent des profits jusqu'au ciel. Plutôt "miraculeux" comme survivre après s'être fait tiré dessus douze fois,avant d' être jeté d'un avion, atterrir dans les ronces, se faire traîner dans une rivière par un ours, descendre des rapides et finir dans l'océan dérivant pendant trois jours. En effet, cette définition collait mieux au système que Christian allait devoir affronter. Au passage, cela expliquait aussi pourquoi aucun des développeurs n'étaient intéressé par le poste de prestataire proposé, pourtant payé 50% plus que leur actuel salaire.
Le cœur du système était le "Processing Engine", une application complexe qui était responsable de la communication avec des courtiers financiers, d'analyser les applications financières, de créer des règles d'assurances et toutes sorte d’autres choses. Cette application avait été développée quelques années plus tôt par le "développeur ultra dédié au projet", un employé connu pour passer de 80 à 100 heures par semaine pour "son Processing Engine". Après avoir déclaré que le système était "parfait" (rien que ça), le développeur ultra dédié au projet quitta soudainement la société en disant à ceux restant de simplement "bidouiller quand c'est nécessaire". Les autres développeurs passèrent donc l'année suivante à "bidouiller" le système et à essayer tant bien que mal de le faire fonctionner comme il était supposé le faire.
L'une des premières choses que les développeurs sortants mentionnèrent était que le "développeur ultra dédié au projet" avait bâtit le système pour être multithread. Pour des raisons inconnues, il n'était jamais capable de comprendre la source d'obscures erreurs causées par le multithreading, il conçu alors un correctif. Un gestionnaire de thread fut créé pour n’autoriser qu'une seule exécution de thread par application. Lorsque la tâche d'un thread était terminée, celui-ci devait en notifier le gestionnaire de thread pour que le thread suivant dans la file d'attente soit réanimé (réinventer la roue carrée en somme).
Bien que l'application ne soit pas interactive, le "processing engine" n'était pas conçu pour fonctionner comme un service windows. Il était exécuté comme une application GUI. Une jolie application d'ailleurs. Vraiment, le genre qui ressemblait à Winamp et qui avait tout sorte de décorations rouges et vertes par dessus un arrière plan noir. Chaque partie de la fenêtre était animée avec des graphiques, des "LED" rouges et toutes sortes de choses pour indiquer ce que faisait l'application. Du moins c'est ce que tout le monde supposait; les graphiques ne donnaient aucune indication sur ce qu'ils mesuraient et aucun des développeurs ne s'y était intéressé.
La curiosité fut plus forte que Christian et il décida de se plonger dans le code source du "Processing Engine". Il trouva une unité appelée "ukittscan" et décida d'y jeter un oeil. Voici à quoi ressemblaient les premières lignes :
-------------------------------------------------------
{
Après avoir téléchargé le snippet et vu comment faire un composant pour Delphi, j'ai fait celui-ci pour m'amuser.
Vous vous rappelez certainement tous le Knight Rider avec sa voiture, KITT... Sur le devant de la voiture il y avait un scanner... Je l'ai fait en composant...
Autheur Martijn Tonies
}
-------------------------------------------------------
Et oui, c'est un composant téléchargé sur le web, fait par un gars qui voulait juste jouer un peu avec Delphi, et pensait que son composant pouvait en intéresser d'autres. Et bien, ce fut le cas, et son bout de code fait maintenant partie intégrale d'une application qui gère dix millions de dollars chaque mois.
Félicitations Matjin! Ton tout premier composant a prouvé sa valeur en tant qu’élément à part entière d'un serveur d'application critique !
Matjin nous a depuis contacté, il est certainement le premier à être fier de figurer sur notre site. Un screenshot de KITT