Dans cette première section, je vais remettre en contexte le concept de formation, détailler mon parcours académique et présenter l'entreprise qui m'accueille en alternance.
== Présentation de la formation
L'UHA 4.0 propose des formats de formation légèrement différents des cursus traditionnels pour favoriser une immersion professionnelle tout en poursuivant des études universitaires.
La formation inclut un stage obligatoire d'une durée minimale de six mois en complément de la période de formation. Cette immersion professionnelle fournit aux étudiants les outils essentiels pour intégrer le monde du travail.
La première année introduit le développement et fournit les outils fondamentaux pour comprendre la logique de la programmation. La deuxième année approfondit ces connaissances en abordant la programmation orientée objet avec des langages tels que Java ou C\#. La troisième année de Licence ajoute une méthodologie approfondie de gestion de projet en mode agile.
Après ces trois années, les étudiants peuvent, sur admission, rejoindre le parcours master de l'UHA 4.0.
Ce parcours aborde les fondements de la recherche et des thématiques variées telles que la cybersécurité et l'algorithmie.
Le master, également en alternance, impose une période en entreprise plus soutenue, passant de six à neuf mois, tout en réalisant les projets donnés par les encadrants de l'UHA 4.0.
Après avoir obtenu un baccalauréat scientifique, option Science de l'Ingénieur, j'ai choisi de m'orienter vers le cursus proposé par l'UHA 4.0. J'ai alors pu réaliser mes trois premières années d'études supérieures en engrangeant de nombreuses connaissances en toute autonomie dans le domaine de l'informatique orienté web et en côtoyant des milieux professionnels via les projets et les stages.
Une année à l'UHA 4.0 du parcours "Master Informatique et Mobilité" se divise en deux parties dupliquées sur deux années. Dans un premier temps, l'étudiant doit réaliser, en groupe de trois ou quatres élèves, un "fil rouge". Ce projet a pour but de mettre en pratique les connaissances acquises durant les séances de cours assurées par des enseignants chercheurs ou autres intervenants. Les cours portent sur les technologies qui pourront et seront réutilisées durant le fil-rouge tel que l'Intelligence Artificielle, l'optimisation combinatoire, la fouille de données, etc. La seconde partie de l'année est une phase de neuf mois durant laquelle l'étudiant est dans une entreprise pour mettre en pratique, consolider et acquérir de nouvelles connaissances.
Lors de ma première année du parcours de master, nous avons eu comme sujet de fil rouge, la gestion et l'automatisation de l'arrosage des plantes. Le but était de pouvoir récolter des données environnementales liées à une plante, puis les réutiliser pour prendre des décisions à l'aide de divers outils.\
Nous avons pu utiliser une sonde de température et un capteur d'humidité pour récolter les données puis les envoyer grâce à un microcontrôleur vers un serveur pour stocker et traiter les données.\
Nous avons également pu utiliser des caméras pour nous permettre d'effectuer des constatations d'assèchement à partir des feuilles d'une plante qui réagit de manière assez marquée à ce facteur.\
J'ai eu comme principales tâche de mettre en place un système #ref-glossary(term: "IoT")[IOT] pour récolter les données environnementales et les images puis les envoyer vers un serveur distant. J'ai par ailleurs pu participer aux développements et à la recherche de solutions d'analyse des données collectées.
Cette année, pour la seconde année de mon parcours au sein du master, le sujet était de pouvoir prédire le confort moyen d'une salle de travail basé sur le ressenti des utilisateurs. Basé sur de la collecte de données et de l'analyse de ces dernières pour effectuer des prédictions, nous avions accès à une sonde de température, des microphones et des caméras pour analyser l'environnement. Comme à l'itération précédente du fil-rouge, un système de stockage et d'analyse des données nous a permis de réaliser des prédictions à partir des données collectées.
En tant que #ref-glossary(term: "Scrum-Master")[Scrum Master], j'ai pu développer un système #ref-glossary(term: "IoT")[IOT] de collecte de données et mettre en place un système de prédiction par analyse des données entrantes.
Unit Solutions est une entreprise suisse, basée à Allschwil dans le canton de Bâle-Campagne. Fondée en 1986 premièrement sous le nom CADRZ, dédiée à la création d'un cadastre numérique pour la ville d'Allschwil, elle est aujourd'hui dirigée par M. Thierry MOEBEL.\
La politique de développement de l'entreprise va par la suite changer pour finalement réaliser ses propres logiciels et en faire la maintenance. L'entreprise compte actuellement une vingtaine d'employés pour le développement des différentes solutions, le support et l'administratif@unit-solutions. Unit Solutions emploie un autre alternant en provenance de l'UHA 4.0, M. Tom Willemin, et un ancien étudiant maintenant en CDI, Thomas Fritsch. Les développeurs sont répartis entre les différents projets pour apporter leur contribution avec, pour chacun des projets, un responsable attitré.
L'équipe du support de l'entreprise, en relation directe avec les clients, s'assure du bon fonctionnement des applications et permet de faire le lien entre le client et les chefs de projets pour remonter les problèmes potentiels.
- Langsam Verkehr2 est une solution visant la gestion des sentiers de mobilité douce en Suisse. Cela comprend la gestion des sentiers de randonnée ou les pistes cyclables.
- Kuba et InfSuite sont les deux solutions principales portées par Unit Solutions dédiées à l'inspection et au suivi d'objets d'infrastructures. Ces deux logiciels sont relativement similaires dans leur but, mais leur conception est totalement différente. Kuba est sous forme de client lourd (application à installer) tandis qu'InfSuite est une application web qui ne nécessite rien d'autre qu'un navigateur. Elle est la version moderne de Kuba.
- Observo est un projet servant d'extension au projet InfSuite, ou alors d'outil complètement indépendant pour gérer des domaines d'applications qui lui sont propres. Il permet par exemple de gérer de petits ouvrages, du mobilier urbain…
Durant mon alternance, j'ai pu intégrer l'équipe chargée des développements pour la suite logicielle InfSuite. Entouré de plusieurs collègues, j'ai pu développer mes bases de connaissances sur le projet et les différentes technologies utilisées. L'équipe est composée de quatre développeurs dédiés et parfois plus en fonction des besoins des autres projets.
Pour répartir la charge de travail entre les développeurs et suivre les développements, l'équipe InfSuite utilise une méthode de travail proche de la méthodologie Agile. Les phases de développement sont découpées en sprints et incluent des réunions journalières pour faire le point sur le travail effectué et les objectifs de la journée. Chaque début de semaine, une réunion "Montag-Zitsung" est organisée pour permettre à tous les collaborateurs de l'entreprise de suivre l'avancée des autres projets.
Pour coordonner les développements, nous utilisons l'outil Jira. Les demandes des clients et de M. Thierry Moebel y sont retranscrites sous forme de tâches. M. Cédric Martin les trie et les attribue aux développeurs en fonction de leur priorité, complexité et pertinence. Un ensemble de tâches constitue un objectif à atteindre pour les prochaines publications de l'application, ce que l'on appelle un "Sprint". Cela inclut des corrections de bogues, diverses améliorations et des demandes spécifiques des clients.
Pour s'assurer que l'application ne régresse pas en termes de fonctionnalité lors de l'ajout de nouveaux éléments, des tests ont été mis en place. Ils peuvent être intégrés directement au code, réalisés avant la fin d'un sprint, ou effectués par une personne dédiée à cette fonction avant de valider une tâche. Cependant, l'employé en charge de cette tâche a quitté l'entreprise, et les tests d'analyse de qualité sont désormais partagés entre les différents développeurs.
Le flux de travail commence par le filtrage des tâches et la rédaction d'une documentation technique si nécessaire. Une fois la tâche prête, un collaborateur effectue les développements puis archive son travail sur Azure Devops. Pour assurer la qualité du code, un autre développeur relit le code et propose des améliorations. En parallèle, le serveur Azure Devops exécute les tests côté code. Si les tests ne sont pas satisfaits, la mise en commun du code est bloquée. Lorsque le code est archivé et mis sur la branche commune, la tâche passe les tests de qualité pour vérifier qu'elle répond aux attentes.
Enfin, si toutes les étapes sont satisfaites, la tâche est validée et prête à être déployée avec le reste des changements.