Compétences Techniques et Scientifiques




Sur cette page je présente mes compétences, acquises ou développées durant mon parcours universitaire, durant mes expériences en ssii, et durant la formation de développeur web que j'ai suivie en 2017. Pour plus d'informations sur le contexte, cliquez sur la compétence en question (en vert) :


COMPÉTENCES DÉTAILS
Programmation C#, C, C++, Fortran, python, SQL.
Web HTML (avec css), JavaScript, JQuery, Ajax, ASP.NET, WCF.
OS Linux/Unix, Windows, machines virtuelles.
Suivi de Projet Cycle en v, méthodes agiles, règles de qualité.
Outils Visual Studio, Matlab, FLUENT, plateforme Salomé.
Compétences Scientifiques Modélisation de systèmes physiques complexes, calculs et simulation numérique, dimensionnement thermique / hydraulique / structures.



Langages de programmation :

  • C / C++ : C est le langage historique dont sont issus les langages objets, avec la phrase incontournable qu'apprend tout novice en programmation quel que soit le langage : " Hello World ". Concernant ces deux langages, mes expériences concernent essentiellement le portage de code, c'est à dire la réécriture d'un code avec un autre langage. Le logiciel final doit alors pouvoir fonctionner indépendamment de la machine sur lequel il est installé. J'ai ainsi pu acquérir une bonne connaissance de la programmation objet.

  • C# : il s'agit d'un savant mélange entre le C++ surtout et le java. Il a été développé à l'origine pour créer des applications web avec la plateforme de développement DOTNET de Microsoft. L'outil quasi-indispensable qui lui est associé est Visual Studio qui est un environnement de développement très puissant, avec par exemple la fonctionnalité IntelliSense qui fournit beaucoup d'informations à l'utilisateur en temps réel. De par la formation de développeur web que j'ai suivie et surtout de par ma dernière expériences professionnelle, je possède de solides compétences en .NET concernant le développement d'applications dans des domaines très divers.
  • Fortan 77/90 : Ce sont deux langages anciens (surtout le 77), même si différents groupes / sociétés / universités utilisent toujours le fortran 90 pour développer leurs logiciels (ex: l'outil CEDRE de l'ONERA), du fait de sa simplicité. Le fortran est un langage développé à l'origine pour les milieux scientifiques et il est orienté objet depuis sa version 2003. Mes premières expériences de "codage" utilisaient intensément le f77, puis le f90 bien plus moderne que son prédécesseur.
  • Python : langage trés utilisé pour l'écriture de scripts , il permet de créer également des programmes complets. Je l'ai utilisé dans les deux cas : scripts pour lire des fichiers de données et via un programme pour effectuer des calculs sur des données de sortie d'un code du CEA Grenoble.
  • SQL : c'est un langage de requête structurée (d'où son nom en anglais) conçu pour interagir avec une base de données : par exemple, créer, modifier ou extraire des données. C'est un langage syntaxique intuitif où la plupart des instructions sont des mots de la langue anglaise : insert pour insérer des données, select pour sélectionner des données, etc... Durant ces deux dernières années, j'ai souvent eu recours à des requêtes SQL, directement via SQL Server et surtout via .NET dans Visual Studio (SQLConnection, OLE DB) .
  • Programmation Web et bases de données :

  • HTML5, javascript : ces langages sont les langages du web par définition. Tous les navigateurs existants sont conçus pour interpréter le html et le javascript (qui n'a aucun lien avec le java). Le javascript est un langage objet sans typage et donc très souple. Le JQuery et l'Ajax sont deux extensions du javascript qui facilitent grandement les tâches du développement web côté client, en particulier pour l'utilisation de formulaires. Le présent site que j'ai créé, est pour l'instant un site dit statique qui ne nécessite pas d'échange de requètes avec un serveur dédié. L'intégralité des données de la page que vous visualisez actuellement (couleurs, forme, contenu,...) est en fait entièrement stockée dans le cache de votre navigateur lors du chargement de la page. A contrario, les sites dynamiques ont des informations (par ex. bases de données) stockées sur un serveur distant et restituent ces informations lorsque l'utilisateur en fait la demande. L'exemple classique concerne les sites marchands qui ont besoin de stocker les caractéristiques de leurs produits ou les données de leurs clients, sur une base de données. Dans ce dernier cas bien sûr, les informations ne sont pas accessibles par défaut lors du chargement d'une page.
  • Systèmes d'exploitation :

    J'ai travaillé sur différents systèmes d'exploitation : Windows, Linux (redhat, kde, debian) et Mac OSX. Il existe un certain nombre de machines virtuelles ou d'émulateurs qui permettent de travailler dans plusieurs environnements différents simultanément, tout en restant sur le même pc. J'ai par exemple utilisé VMware et Cygwin pour passer de Linux à Windows. Durant ma formation de développeur web, j'ai eu une première approche d'Azure de Microsoft et du Big Data, dont la dénomination française officielle selon la DGLFLF est Mégadonnées.

    Gestion de projets :

    C'est un vaste sujet et les méthodes et démarches associées sont nombreuses et dépendent le plus souvent du type de projet : un projet de conception de logiciel ne se gére pas de la même façon qu'un projet de construction d'un bâtiment. Lors de mes expériences, j'ai été soit sous la direction d'un chef de projet qui gérait tout le déroulement du projet (c'est souvent le cas lorsque l'on est peu expérimenté), soit autonome sur le projet, auquel cas je menais moi même la plupart des étapes, de l'avant projet jusqu'à la livraison au client. Parallèlement il peut exister des règles de qualités propres au client ou à la société prestataire. Les méthodes de gestion de projets ont pour but d'encadrer en particulier les 3 plus grosses contraintes liées au déroulement d'un projet (il existe des normes ISO associées à ces contraintes), à savoir :
    • Les délais : date butoir pour la livraison au client et/ou nombre de jours effectifs passés à travailler sur le projet (si au forfait).
    • La gestion des ressources humaines et du matériel : nombre de personnes nécessaires, logiciels et outils informatiques nécessaires...
    • Les coûts : le chiffrage financier du coût d'un projet est un élément essentiel qui permet à une ESN de remporter des contrats face à d'autres sociétés concurrentes.
    Un ingénieur peut s'occuper de tout ou partie de la gestion d'un projet. Pour ma part, je participais au cahier de prescriptions techniques et financières, via le chiffrage technique (temps, équipe, outils). Ensuite, je m'occupais du bon déroulement du projet (respect du cahier des charges, suivi avec les clients) jusqu'à sa livraison. A noter que les projets suffisamment gros ou longs sont en général divisés en plusieurs lots.

    Environnements de développements :

    Il s'agit d'interfaces de programmation applicatives ou intégrées (API ou IDE en anglais), composés d'un ensemble complet d'outils structurés et qui permettent une simplification des tâches à effectuer, comme par exemple créer une application web. J'ai utilisé Visual Studio pour du développement DOTNET et également la plateforme Salomé composée d'un ensemble d'outils et de logiciels destinés à l'ingénierie nucléaire.

    Compétences scientifiques et ingénierie :

    J'ai obtenu un doctorat en physique des plasmas après avoir effectué des études en sciences de la matière. La physique des plasmas regroupe plusieurs domaines comme l'électromagnétisme, la physique atomique ou encore la mécanique des fluides. Le post-doctorat que j'ai effectué à la suite en tant qu'ingénieur de recherche à l'ENSI de Limoges, s'est concentré sur une application de la physique des plasmas, à savoir la projection thermique via un système de torche à plasma. Ce qui fait que je possède également des connaissances en sciences des matériaux. Les projets sur lesquels j'ai travaillé par la suite en ssii concernaient entre autres le fonctionnement de centrales nucléaires : au niveau ingénierie technique, on emploie le terme de thermo-hydraulique et de CFD pour la simulation numérique associée. Je peux donc donner une liste de compétences fondamentales et appliquées, qui est la suivante :
    • Dimensionnement, matériaux / structures, thermique, hydraulique.
    • Mécanique des fluides, aérodynamique, CFD, thermodynamique.
    • Physique des plasmas, sciences de la matière, électromagnétisme, MHD.