Version française / English version
Après un parcours professionnel pour le moins atypique, j'ai décidé de me reconvertir dans la programmation logicielle. J'ai donc suivi une formation certifiante en programmation Java backend. Un langage mature qui me permet de résoudre des problèmes stimulants.
Je suis actuellement à la recherche d'un poste de développeur dans la grande région de Montréal, ou en remote.
En attendant, je développe un logiciel de gestion et d'aide à la prise de décision pour un client dans le secteur de l'agroalimentaire (manufacturier et vente en gros).
Problématiques à résoudre
- Lire des documents au format .xlsx et les persister dans une base de données relationnelle (ventes en gros, ventes au détail, fiches produits)
- Créer une API Rest qui expose des endpoints permettant au frontend d'effectuer des requêtes afin d'afficher des visualisations de données aux utilisateurs
Backend - Dépot
- Langage de programmation : Java 17
- Framework : Spring
- Build & Packaging : Maven
Frontend - Dépot
- Langages de programmation : HTML/CSS/Javascript
- Librairies : React/BootStrap/Axios/ChartJS
J'ai suivi une formation d'un an à temps plein, dispensée par l'organisme OpenClassRoooms. Je suis maintenant titulaire d'une Certification Professionnelle (niveau 6) de Développeur concepteur logiciel reconnue par l'état Français.
Guidé par un mentor, j'ai réalisé neuf projets concrets, les mains dans le code, nécessitant l'apprentissage du langage et de tout ce qui gravite autour de lui : des frameworks en vogue aux des librairies utiles, en passant par les bases de données, le testing, le debugging, les pipelines d'intégration continue, la concurrence, la containerisation, j'en passe et des meilleurs. L'immensité des connaissances à aquérir ne m'a pas découragé, et je suis loin d'en maîtriser le tout, mais c'est ce qui me plaît, l'apprentissage en continu de technologies dans un paysage en constante évolution.
| Projet | Détails |
|---|---|
| Projet 1 | Démarrez votre formation de Développeur d'application Java Objectifs & Réalisations- Élaboration d’un plan d’apprentissage- Mise en place d’un système de veille informationnelle |
| Projet 2 | Débugger une application Java Objectifs & Réalisations- Apprentissage des concepts de POO (Abstraction, Encapsulation, Abstraction, Héritage et Polymorphisme, Composition, Modularité)- Introduction aux système de gestion des versions (Git) et aux dépôts (Github) - Introduction à la documentation - Introduction au débugging |
| Projet 3 | Identifiez les besoins de votre client pour concevoir une application Objectifs & Réalisations- Identification d’un stack technique adapté- Introduction aux diagrammes UML - Introduction au Domain Driven Design (wireframing, prototypage, user stories…) - Introduction à la méthodologie agile et au modèle scrum |
| Projet 4 | Testez l'implémentation d'une nouvelle fonctionnalité Java Objectifs & Réalisations- Introduction au TDD- Introduction aux testing - Écriture d’une batterie de tests unitaires et d’intégration (JUnit) - Mocking (Mockito) - Mesure de la couverture du code (JaCoCo) - Exécution des tests (Surefire) |
| Projet 5 | Créez votre première application web avec Spring Boot Objectifs & Réalisations- Programmation orientée objet et principes SOLID- Patron de conception MVC - Introduction au développement web avec Spring Boot et Spring Web - Introduction aux API et à l’exposition d’endpoints - Concept de DTO - Introduction au format JSON et ObjectMapper - MockMvc pour tester les controllers |
| Projet 6 | Concevez une application web Java de A à Z Objectifs & Réalisations- Conception d’un diagramme de classes UML- Conception d’un modèle physique de données - Introduction aux bases de données relationnelles - Listage des fonctionnalités désirées - Découpage en couches (BDD, Repositories, Services, Controllers) Développement Backend - Développement des fonctionnalités désirées avec respect du pattern MVC - Utilisation de JpaRepositories - Méthodes transactionnelles afin de garantir l’intégrité des données - Gestion des exceptions Sécurité - Spring Security (filterchain, bcrypt, UserDetails) - Externalisation des indentifiants à la BDD Développement Frontend - HTML/CSS - Thymeleaf - Pagination (Pageables) Bonnes pratiques - Clean code - Javadoc - Respect des objectifs de couverture de code |
| Projet 7 | Complétez votre backend pour rendre votre application plus sécurisée Objectifs & Réalisations- Compréhension du domaine métier- Analyser les user stories - Comprendre les spécificités des entités du domaine Développement Backend - Découpage de l’application en package (domain, repositories, services, controllers, security, util, exceptions) - Mettre en place le CRUD sur des entités complexes - Utilisation de DTO en entrée et en sortie - Mapping de DTO à partir des entités (Mapstruct) - Développement de la couche de services - Mise en place de la sécurité avec des rôles (Spring Security) - Validation des données (Jakarta validation constraints) Développement Front-End - UI fonctionnelle à base de Templates Thymeleaf - HTML/CSS + Bootstrap - Validation des input (expressions régulières, input type) - Feedback aux utilisateurs en cas d’exception/erreur Assurance qualité - Commentaires/Javadoc - Batterie de tests unitaires - Rapport d’exécution des tests et de couverture du code - Clean code - Readme.md |
| Projet 8 | Améliorez votre application avec des systèmes distribués Objectifs & Réalisations- Introduction à la concurrence- Prise en main d’une codebase existante - Développement de nouvelles fonctionnalités sur une application existante - API testing (Postman) - Amélioration des performances d’une application (concurrence, multithreading et notamment les CompletableFuture et ExecutorService) - Nettoyage du code, batterie de test - Mettre en place un pipeline d'intégration continue (compilation, test, code quality, build des artefacts) |
| Projet 9 | Développez une solution en microservices pour votre client Objectifs & Réalisations- Création d’une application en utilisant une architecture microservices- Mise en place d’une API Gateway pour router le trafic et enforcer la sécurité - Utilisation de webClients pour effectuer des calls interservices - Containerisation des services / bases de données grâce aux Dockerfiles et Docker-Compose (Docker) - Normalisation et acceptation de données dans une BDD relationnelle (3NF) - Utilisation d’une BDD NoSQL (MongoDB) pour gérer des documents - Implémentation de la sécurité par token (JWT) - Introduction au green coding - Tests (JUnit, Mockito, MockMvc…) - Agrégation des rapports de tests et de couverture des différents services - Rédaction de la Javadoc et du Readme.md |