Votre Mission Chez Cegedim
General Description
We are looking for a Java developer to join our legacy modernization team. You will work on a mission-critical, high-availability Java/Java EE legacy codebase, refactoring it incrementally and modernizing it without breaking behavior. The role requires fluency in both legacy Java EE technologies (JSF, iBatis/MyBatis, JSP) and modern Java/Spring practices, combined with strong test-driven development discipline and confidence working with code that has limited test coverage. Your day-to-day will mix understanding existing code, writing characterization tests around it, refactoring it safely, and delivering new features under TDD.
Missions & Responsibilities Description
Read, understand, and refactor existing legacy Java/Java EE code while preserving behavior, using characterization tests as a safety net.
Develop new features and modernize existing modules following test-driven development (red-green-refactor) discipline.
Analyze, design, and develop high-volume, low-latency components for mission-critical systems, delivering high availability and performance.
Contribute in all phases of the development lifecycle — from understanding requirements through implementation, testing, and release.
Write well-designed, testable, efficient code; introduce tests where they are missing rather than relying on manual verification.
Support continuous improvement by investigating modern Java/Spring practices, presenting alternatives for architectural review, and aligning refactoring direction with the broader modernization roadmap.
Profile & skills
Skills & knowledge
-
BS/MS degree in Computer Science, Engineering or a related subject
-
At least 3 years of proven hands-on software development experience on production Java systems
-
Hands-on experience designing, maintaining, and refactoring applications on Java EE platforms
-
Object-oriented analysis and design using common design patterns; SOLID principles applied in real production code
-
Profound insight of Java and J2EE; working knowledge of JavaScript and Ajax (legacy front-end interactions)
-
Excellent knowledge of relational databases: Oracle and SQL
-
Knowledge of non-relational databases: MongoDB
-
Excellent knowledge of Hibernate, iBatis, AND MyBatis — comfortable working with legacy iBatis code and migrating it toward modern Hibernate/MyBatis
-
Experience in the Spring Framework
-
Experience developing web applications using Spring MVC and JSF
-
Experience in PrimeFaces, RichFaces, or IceFaces (legacy JSF component libraries)
-
Experience in front-end development with React, REST, HTML, CSS, responsive design (for modernization work)
-
Strong test-driven development (TDD) discipline — red-green-refactor as a daily practice, not just "writing tests after"
-
Strong refactoring skills using characterization tests for safely changing legacy code without an existing test suite (per Michael Feathers' "Working Effectively with Legacy Code")
-
Confidence breaking down 1000+ line legacy classes into testable, maintainable units while preserving behavior
-
Experience in Maven
-
Experience in Eclipse and/or IntelliJ IDEA
-
Experience in SVN, Git, and Git-flow
-
Experience in Jira
-
Experience in Agile (Scrum/Kanban), UML, and CI/CD pipelines
-
Detail-oriented with strong concentration ability on long-running refactoring tasks
-
Analytical mindset, critical thinking, and demonstrable ability to discover and fix errors in legacy code
Personal skills
Eager to learn, passionate, dynamic, open-minded, strong team spirit, creative, precise and concise, autonomous, with patience for the rhythm of legacy modernization work
Language
English required; Spanish would be appreciated