VIE Montréal - Ingénieur-e étude et développement Java F/H
Kosmos
Montréal, CA3 weeks ago
65 views29 saves7 applies
Prepare for this role
Job Type
full time
Description
L'entreprise Kosmos est l'acteur incontournable de l’EdTech (appartenant au groupe ONTOLIA, 140 collaborateurs, CA 15M€ entre la France et le Canada). Notre mission ? Faciliter le quotidien de l'Education et de la Formation avec notre logiciel Skolengo et nos équipes Solutioning dédiée aux projets sur mesure. Rejoindre notre filiale à Montréal, c’est intégrer cette équipe agile à taille humaine. Ici, la culture apprenante et l'esprit d'équipe se vivent au quotidien. Description du poste Saisissez l'opportunité de vivre une aventure internationale unique en tant que Développeur(e) Java / Web en VIE au Canada, vous serez basé(e) à Montréal au sein de la filiale canadienne de Kosmos. Vous travaillerez au cœur d’une petite équipe de développement orienté solutioning en relation directe avec les autres développeurs ainsi que les experts fonctionnels et métiers. Vous participerez activement au cycle de vie de nos offres logicielles et services à destination de nos clients acteurs de l'Education ou de l'Apprentissage, aussi bien à la mise en place des frameworks, qu’au développement jusqu’à la mise en production. Vous travaillez sur les aspects fonctionnels, ergonomiques et techniques des services en responsabilité de votre équipe, notamment : Phases de cadrage et de spécifications en liaison avec les équipes fonctionnelles, Contribution au process agile de l’équipe, Conception technique et développement logiciel, notamment sur les technologies suivantes : Stack technique backend : Java 17 - 25, Spring boot, Tomcat, Maven, JPA/Hibernate, REST, Spring batch Technologies Web front : HTML, CSS et Javascript (pas de React / Angular) Environnement de développement : IntelliJ IDEA, Docker, Kubernetes, Rancher, Gitlab, Jenkins Agents IA pour l’aide à production de code : Claude, Junie, Gemini Travail sur l'exploitabilité des applications en production, Maintenance logicielle Profil recherché Votre parcours : Vous êtes issu(e) d’une formation supérieure en informatique ( Bac+5 ) et vous avez déjà une réelle compétence (et un fort intérêt) pour les technologies Web. Votre mindset : Curieux(se), autonome et rigoureux(se) techniquement, vous gardez toujours un œil sur la cohérence fonctionnelle et la satisfaction de l'utilisateur final. Votre esprit d'équipe : Vous aimez le travail collaboratif, vous êtes force de proposition pour résoudre des problèmes complexes et vous vous épanouissez dans une démarche d'amélioration continue (où l'erreur est vue comme une opportunité d'apprendre). Le format : Vous êtes pleinement éligible et motivé(e) pour vous investir dans une mission VIE de 24 mois à Montréal . Pourquoi nous rejoindre ? Une expérience internationale de 2 ans dans une ville dynamique et cosmopolite. Une stack technique moderne qui intègre l'IA pour booster votre quotidien de dev. Un management bienveillant qui favorise l'autonomie et la montée en compétences. Prêt(e) à relever le défi et à faire décoller votre carrière outre-Atlantique ? > Envoyez-nous votre candidature ! Réf: 5a2fd5de-1fe0-4ce8-a371-299b8ca9cfe5 Je postule à cette offre VIE Montréal - Ingénieur-e étude et développement Java F/H VIE Temps plein Montréal À partir du 10.01.2026 Civilité * Madame Monsieur Mx Nom * Prénom * E-mail * Numéro de téléphone * Disponibilité * Sélectionnez votre disponibilité immédiate 15 jours 1 mois 2 mois 3 mois + 3 mois Attentes salariales (Brut/an) Sélectionnez la tranche de salaire Inférieur à 15 000€ 15 000€ - 20 000€ 20 000€ - 25 000€ 25 000€ - 30 000€ 30 000€ - 35 000€ 35 000€ - 40 000€ 40 000€ - 45 000€ 45 000€ - 50 000€ 50 000€ - 55 000€ 55 000€ - 60 000€ 60 000€ - 65 000€ 65 000€ - 70 000€ 70 000€ - 75 000€ 75 000€ - 80 000€ 80 000€ - 85 000€ Supérieur à 85 000€ Photo Choisir un fichier Format autorisé: JPG. Poids maximum : 2 Mo. CV * Choisir un fichier Format: .PDF, .DOCX, .DOC, .JPG. Poids max. : 2 Mo. Dans le cadre de la création de votre profil de candidature sur le site carrière de la société Kosmos , les informations recueillies ci-dessus sont traitées selon la base légale des mesures précontractuelles à la mise en relation avec la société Kosmos et à la conclusion d’un éventuel contrat de travail avec celle-ci, et selon l’intérêt légitime à la constitution d’une CVthèque. Aucun transfert hors de l’Union Européenne ne sera opéré. Sauf action de votre part, la durée de conservation de vos données n’excède pas 3 ans. En application des standards et des politiques de sécurité (PSSI) en vigueur, les mesures techniques efficaces et optimales sont appliquées aux traitements des données (accès et protocoles sécurisés, gestion des droits et administration, sensibilisations des collaborateurs, etc.). Conformément au règlement Européen relatif à la protection des données, vous disposez d’un droit d’opposition, d’accès de rectification, de suppression des présentes données. J'accepte que l'entreprise Kosmos conserve mes données personnelles pendant une durée de 2 ans afin d'être recontacté(e) pour de nouvelles opportunités --> --> Je postule Merci de bien vouloir compléter tous les champs obligatoires. (Les champs obligatoires sont suivis d'une *) * Champs obligatoires Partager l'offre &via=We_Recruit_" target="_blank" class="hover-color1"> Partager par email --> (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) { return; } js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/fr_FR/sdk.js#xfbml=1&version=v2.3"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs); t._e = []; t.ready = function(f) { t._e.push(f); }; return t; }(document, "script", "twitter-wjs")); $(".dropdown dt a").on('click', function() { $('ul[data-id=' + $(this).attr('data-id') + ']').slideToggle('fast'); }); $(document).bind('click', function(e) { var $clicked = $(e.target); if (!$clicked.parents().hasClass("dropdown")) { $(".dropdown dd ul").hide(); } }); $('.mutliSelect input[type="checkbox"]').on('click', function() { var inputId = $(this).attr('class'); var selectId = inputId.replace('custom-control-input checkbox-color1 checkbox-element question-', ""); var title = $(this).closest('.mutliSelect').find('input[type="checkbox"]').val(), title = $(this).val() + ","; if ($(this).is(':checked')) { var html = ' ' + title + ' '; $('.multiSel-' + selectId).append(html); $(".hida-" + selectId).hide(); } else { $('span[title="' + title + '"]').remove(); var ret = $(".hida"); $('.dropdown dt a').append(ret); } }); var isSafari = !!navigator.userAgent.match(/Version\/[\d\.]+.*Safari/); if (isSafari) { var form = document.getElementById('form'); // form has to have ID: form.noValidate = true; form.addEventListener('submit', function(event) { // listen for form submitting if (!event.target.checkValidity()) { event.preventDefault(); // dismiss the default functionality document.getElementById('errorMessageDiv').style.display = 'block'; } }, false); } var questions = []; questions.forEach( function(q) { $('.question-' + q.id) .click( function() { if (q.type === 2 || q.type === 3) { var query = q.choices.find( function(c) { return $('#question-' + c.id).is(':checked'); }); if (query) { $('.question-' + q.id).attr("required", false); } else { $('.question-' + q.id).attr("required", true); } } }); }); (function(d, s, id) { var js, iajs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) { return; } js = d.createElement(s); js.id = id; js.async = true; js.src = "https://apply.indeed.com/indeedapply/static/scripts/app/bootstrap.js?hl=fr"; iajs.parentNode.insertBefore(js, iajs); }(document, 'script', 'indeed-apply-js')); $(".checkbox-element").each((index, element)=>{ $(element).on('click', function(){ var $this = $(this); var questionId = $this.data('question-id'); var otherCheckboxes = $('.question-'+questionId); var checkedElements = otherCheckboxes.toArray().filter(i=>$(i).is(':checked')); var questionInput = $("#question-"+questionId); questionInput.val(checkedElements.length ? "OK":""); questionInput.trigger('focus'); questionInput.trigger('blur'); window.formValidator.element("#question-"+questionId); }) }) $(document).ready(function() { $('.description-blocks a').attr('target', '_blank'); $('input[type="file"]').each(function(index, element){ $(this).change(function(){ $(this).blur().focus().blur(); }); }) }); $('#form').on('keyup keypress', function(e) { var keyCode = e.keyCode || e.which; if (keyCode === 13) { e.preventDefault(); return false; } }); $.validator.methods.phoneNumber = function(value, element) { return this.optional(element) || /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/.test(value); }; window.formValidator = $("#form").validate({ ignore: [], rules: { phone: { required: true, phoneNumber: true }, }, errorPlacement: function(error, element) { console.log(error, element); error.addClass('invalid-feedback'); if (element.is('input[type=radio], input[type=checkbox]')) { element.parent().parent().append(error); } else { error.insertAfter(element); } }, highlight: function(element, errorClass, validClass) { $element = $(element); if ($element.is('input[type=hidden].qcm-field')) { var questionId = $element.data('question-id'); var div = $('div[data-question-id="' + questionId + '"]'); div.addClass(errorClass); div.find("button").addClass(errorClass); div.removeClass(validClass); div.find("button").removeClass(validClass); } else { $element.parent().addClass(errorClass).removeClass(validClass); $element.addClass(errorClass).removeClass(validClass); $element.parent().find("button").addClass(errorClass).removeClass(validClass); } }, unhighlight: function(element, errorClass, validClass) { $element = $(element); if ($element.is('input[type=hidden].qcm-field')) { var questionId = $element.data('question-id'); var div = $('div[data-question-id="' + questionId + '"]'); div.addClass(validClass); div.find("button").addClass(validClass); div.removeClass(errorClass); div.find("button").removeClass(errorClass); } else { $(element).parent().removeClass(errorClass).addClass(validClass); $(element).addClass(validClass).removeClass(errorClass); $(element).parent().find("button").addClass(validClass).removeClass(errorClass); } }, submitHandler: function(form) { var shouldSubmit = true; if (shouldSubmit) { form.submit(); var button = $('button[type="submit"]'); $('#loader').removeClass("hidden"); $('#submit-button').addClass("hidden"); $($('.cta-apply')[0]).addClass('hidden'); $($('.cta-apply')[1]).addClass('hidden') setTimeout(function() { button.attr('disabled', 'disabled'); button.prop('disabled', true); }, 0); } }, errorClass: "is-invalid", validClass: "is-valid", }); jQuery(document).ready(function($) { $(document).on('click', '.dropdown-menu', function(e) { e.stopImmediatePropagation(); e.stopPropagation(); }); }); jQuery.extend(jQuery.validator.messages, { required: "Ce champ est obligatoire", phoneNumber: "Ce numéro de téléphone est invalide", email: "Veuillez indiquer une adresse e-mail valide", }); var placeSearch; var autocompletes = []; var componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; function initAutocompletes() { $('.custom-autocomplete').each((index, element) => { autocompletes.push({ element: element, autocomplete: new google.maps.places.Autocomplete(element, { types: ['geocode'] }) }); }); } function geolocate(element) { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { var geolocation = { lat: position.coords.latitude, lng: position.coords.longitude }; var circle = new google.maps.Circle({ center: geolocation, radius: position.coords.accuracy }); var autocomplete = autocompletes.find(i => i.element === element).autocomplete; autocomplete.setBounds(circle.getBounds()); }); } } $(function() { $(".datepicker").each( function(index, element) { var $elem = $(element); $elem.datepicker($.datepicker.regional["fr"]); }); $(".ui-datepicker").addClass("font2"); }); { "@context" : "http://schema.org/", "@type" : "JobPosting", "title" : "VIE Montr\u00E9al - Ing\u00E9nieur-e \u00E9tude et d\u00E9veloppement Java F/H", "datePosted" : "2026-06-03T15:05:22+00:00", "hiringOrganization": { "@type": "Organization", "name": "Kosmos" , "logo": "https://wio.blob.core.windows.net/werecruit/d0f1e1db-4702-468c-97a1-2985d92afd03.png" }, "jobLocation": { "@type": "Place", "address": { "@type": "PostalAddress", "addressLocality": "Montréal", "addressRegion": "Québec", "postalCode": "H1X 1J5", "addressCountry": "CA" } }, "description" : "\u003Cp dir=\u0022ltr\u0022\u003ESaisissez l\u0027opportunit\u0026eacute; de vivre une aventure internationale unique en tant que D\u0026eacute;veloppeur(e) Java / Web en VIE au Canada, vous serez\u0026nbsp; bas\u0026eacute;(e) \u0026agrave; Montr\u0026eacute;al au sein de la filiale canadienne de Kosmos.\u003C/p\u003E\n\u003Cp dir=\u0022ltr\u0022\u003E\u0026nbsp;\u003C/p\u003E\n\u003Cp dir=\u0022ltr\u0022\u003EVous travaillerez au c\u0026oelig;ur d\u0026rsquo;une petite \u0026eacute;quipe de d\u0026eacute;veloppement orient\u0026eacute; solutioning\u0026nbsp; en relation directe avec les autres d\u0026eacute;veloppeurs ainsi que les experts fonctionnels et m\u0026eacute;tiers. Vous participerez activement au cycle de vie de nos offres logicielles et services \u0026agrave; destination de nos clients acteurs de l\u0027Education ou de l\u0027Apprentissage, aussi bien \u0026agrave; la mise en place des frameworks, qu\u0026rsquo;au d\u0026eacute;veloppement jusqu\u0026rsquo;\u0026agrave; la mise en production.\u003C/p\u003E\n\u003Cp dir=\u0022ltr\u0022\u003E\u0026nbsp;\u003C/p\u003E\n\u003Cp dir=\u0022ltr\u0022\u003EVous travaillez sur les aspects fonctionnels, ergonomiques et techniques des services en responsabilit\u0026eacute; de votre \u0026eacute;quipe, notamment :\u003C/p\u003E\n\u003Cp dir=\u0022ltr\u0022\u003E\u0026nbsp;\u003C/p\u003E\n\u003Cul\u003E\n\u003Cli dir=\u0022ltr\u0022 aria-level=\u00221\u0022\u003E\n\u003Cp dir=\u0022ltr\u0022 role=\u0022presentation\u0022\u003EPhases de cadrage et de sp\u0026eacute;cifications en liaison avec les \u0026eacute;quipes fonctionnelles,\u003C/p\u003E\n\u003C/li\u003E\n\u003Cli dir=\u0022ltr\u0022 aria-level=\u00221\u0022\u003E\n\u003Cp dir=\u0022ltr\u0022 role=\u0022presentation\u0022\u003EContribution au process agile de l\u0026rsquo;\u0026eacute;quipe,\u003C/p\u003E\n\u003C/li\u003E\n\u003Cli dir=\u0022ltr\u0022 aria-level=\u00221\u0022\u003E\n\u003Cp dir=\u0022ltr\u0022 role=\u0022presentation\u0022\u003EConception technique et d\u0026eacute;veloppement logiciel, notamment sur les technologies suivantes :\u003C/p\u003E\n\u003C/li\u003E\n\u003Cul\u003E\n\u003Cli dir=\u0022ltr\u0022 aria-level=\u00222\u0022\u003E\n\u003Cp dir=\u0022ltr\u0022 role=\u0022presentation\u0022\u003EStack technique backend : Java 17 - 25, Spring boot, Tomcat, Maven, JPA/Hibernate, REST, Spring batch\u003C/p\u003E\n\u003C/li\u003E\n\u003Cli dir=\u0022ltr\u0022 aria-level=\u00222\u0022\u003E\n\u003Cp dir=\u0022ltr\u0022 role=\u0022presentation\u0022\u003ETechnologies Web front : HTML, CSS et Javascript (pas de React / Angular)\u003C/p\u003E\n\u003C/li\u003E\n\u003Cli dir=\u0022ltr\u0022 aria-level=\u00222\u0022\u003E\n\u003Cp dir=\u0022ltr\u0022 role=\u0022presentation\u0022\u003EEnvironnement de d\u0026eacute;veloppement : IntelliJ IDEA, Docker, Kubernetes, Rancher, Gitlab, Jenkins\u003C/p\u003E\n\u003C/li\u003E\n\u003Cli dir=\u0022ltr\u0022 aria-level=\u00222\u0022\u003E\n\u003Cp dir=\u0022ltr\u0022 role=\u0022presentation\u0022\u003EAgents IA pour l\u0026rsquo;aide \u0026agrave; production de code : Claude, Junie, Gemini\u003C/p\u003E\n\u003C/li\u003E\n\u003C/ul\u003E\n\u003Cli dir=\u0022ltr\u0022 aria-level=\u00221\u0022\u003E\n\u003Cp dir=\u0022ltr\u0022 role=\u0022presentation\u0022\u003ETravail sur l\u0027exploitabilit\u0026eacute; des applications en production,\u003C/p\u003E\n\u003C/li\u003E\n\u003Cli dir=\u0022ltr\u0022 aria-level=\u00221\u0022\u003E\n\u003Cp dir=\u0022ltr\u0022 role=\u0022presentation\u0022\u003EMaintenance logicielle\u003C/p\u003E\n\u003C/li\u003E\n\u003C/ul\u003E\n\u003Cp\u003E\u0026nbsp;\u003C/p\u003E", "employmentType" : "FULL_TIME" } Nos dernières offres Développeur-euse Senior Java F/H CDI Temps plein Nantes Je postule VIE Montréal - Ingénieur-e étude et développement Java F/H VIE Temps plein Montréal À partir du 10.01.2026 Je postule Ingénieur Sysops F/H NFrance CDI Temps plein Toulouse Je postule Lead Développeur-euse Java / Fullstack F/H CDI Temps plein Nantes Je postule Voir plus d'offres Offres Candidature spontanée Liens utiles Cookies Plan du site Connexion recruteurs Préférences des cookies Propulsé par Logiciel de gestion de candidature et de multidiffusion