Junior Software EntwicklerIn JAVA

Quality Software & Consulting GmbH & Co KG
Dürnstein in der Steiermark, Austria
about 2 months ago

Role details

Contract type
Voluntary work
Employment type
Full-time (> 32 hours)
Experience level
Starter
Compensation
€34,400.0
Working hours
Regular working hours
Job source

Tech stack

Java (Programming Language) Microsoft SQL Server Oracle (Applications)

Job description

Entwicklung unserer Standardsoftware: Du programmierst an unserer Software QS1 mit und lernst in der Praxis, wie ein komplexes Produkt stetig erweitert wird. Mitgestaltung von Kundenlösungen: Du begleitest Konzeption und Entwicklung individueller Modifikationen und siehst direkt, wie dein Code Prozesse beim Kunden unterstützt. Technische Konzepte & Architektur: Im Team übersetzt du Anforderungen in saubere Konzepte und Architekturbeschreibungen als solides Fundament für die Umsetzung. Moderner Tech-Stack & Innovation: Du hast bei uns Raum, Neues auszuprobieren und dich kontinuierlich weiterzuentwickeln.

Requirements

Daten- und Objektmodellierung: Du übernimmst analytische Aufgaben, strukturierst Systemanforderungen und lernst, wie man komplexe Datenmodelle sauber für die Entwicklung vorbereitet. Unsere Wünsche an dich Abgeschlossene technische Ausbildung (HTL, FH, Universität oder vergleichbar). Erste Programmierkenntnisse in Java oder C#.NET. Teamfähigkeit, Kommunikationsstärke und Verantwortungsbewusstsein. Strukturierte Arbeitsweise und hohes Qualitätsbewusstsein. Freude am Programmieren, Interesse zu lernen und immer wieder Neues in der Software-Entwicklung mit zu machen. Du übernimmst Verantwortung für deine Aufgaben und arbeitest lösungsorientiert. Sehr gute Deutschkenntnisse, Englisch von Vorteil. Nice to have: Kenntnisse mit WPF, Blazor, .NET Framework, MS-SQL-Server, ORACLE.

Benefits & conditions

Die Flexibilität Das Team & Soziales

Echte 4-Tage-Woche für die optimale Balance zwischen Code und Freizeit

Flexible Zeiteinteilung ohne starres Stechuhr-Denken

Großzügige Home-Office-Lösung, perfekt an deinen Alltag angepasst

Volles Vertrauen in deine Arbeitsweise und deinen Output

Schließen

Echtes Miteinander durch flache Hierarchien und ein kollegiales DU vom ersten Tag an

Regelmäßige “Social Breaks”: Ob entspanntes Beisammensein, Brettspiele oder eine Runde Darts nach Feierabend

Gemeinsame Teamevents und Aktivitäten für den perfekten Ausgleich zum fokussierten Code-Alltag

Attraktive Meal Vouchers für gemeinsame Mittagessen im Team

Schließen Dein Workspace Karriere & Perspektive

Moderner, heller Arbeitsplatz direkt an unserem Standort in Krems

Attraktiver Hardwarebonus für dein persönliches Wunsch-Setup

Unlimitierter Nachschub an Kaffee, Tee, frischem Obst und Süßem

Ruhige Zonen für Deep Work und offene Bereiche für den Austausch

Schließen

Maßgeschneidertes Mentorenprogramm für deinen reibungslosen Einstieg

Klare Perspektive: Übernahme der fachlichen Leitung für 2-3 Personen

Maximaler Freiraum, um eigene technische Standards und Architektur-Ideen umzusetzen

Langfristige Stabilität und sicherer Arbeitsplatz beim Marktführer, letter-spacing: 0px} .main { padding: 0px0px0px} .progressCompact { display: grid; gap: 0pxmargin-bottom: 0px} .progressTop { display: flex; align-items: center; justify-content: space-between; gap: 0pxcolor: var(-muted); font-size: 0pxfont-weight: 800; } .progressTop strong { color: var(-qsc-dark); font-weight: 900; } .dots { display: flex; gap: 0pxalign-items: center; justify-content: flex-end; flex-wrap: wrap; } .dot { width: 0pxheight: 0pxborder-radius: 0pxbackground: rgba(36,74,134,0.18); transition: 0.2s ease; } .dot.done { background: rgba(244,165,28,0.86); } ..track { height: 0pxborder-radius: 0pxbackground: rgba(255,255,255,0.55); border: 0pxsolid rgba(255,255,255,0.65); overflow: hidden; box-shadow: inset 00px0 rgba(255,255,255,0.88), 00px0pxrgba(15,44,88,0.08); } .bar { height: 100%; width: 0%; border-radius: 0pxbackground: linear-gradient(90deg, var(-qsc-orange), var(-qsc-orange-light), var(-qsc-blue)); box-shadow: 0 00pxrgba(244,165,28,0.45); transition: width 0.28s ease; } .panel { min-height: 0pxpadding: clamp(22px, 3vw, 38px); border-radius: var(-radius-lg); background: var(-glass); border: 0pxsolid var(-border); box-shadow: var(-shadow-soft); backdrop-filter: blur(24px) saturate(160%); -webkit-backdrop-filter: blur(24px) saturate(160%); position: relative; overflow: hidden; } .panel::before { content: “”; position: absolute; inset: 0; background: linear-gradient(145deg, rgba(255,255,255,0.66), rgba(255,255,255,0.18)); pointer-events: none; } .stage { display: none; position: relative; z-index: 1; animation: rise 0.24s ease both; } .@keyframes rise { from { opacity: 0; transform: translateY(10px) scale(0.995); } to { opacity: 1; transform: translateY(0) scale(1); } } .questionHead { display: grid; grid-template-columns: auto 1fr; gap: 0pxalign-items: center; margin-bottom: 0px} .bigIcon { width: 0pxheight: 0pxborder-radius: 0pxdisplay: grid; place-items: center; color: white; background: linear-gradient(145deg, rgba(36,74,134,0.94), rgba(15,44,88,0.76)); border: 0pxsolid rgba(255,255,255,0.48); box-shadow: 00px0pxrgba(36,74,134,0.24), inset 00px0 rgba(255,255,255,0.45); } .bigIcon i { width: 0pxheight: 0pxstroke-width: 2.2; } .kicker { color: var(-qsc-orange); font-size: 0pxtext-transform: uppercase; letter-spacing: 0pxfont-weight: 900; margin-bottom: 0px} .title { margin: 0; color: var(-qsc-dark); font-size: clamp(27px, 3.1vw, 43px); line-height: 1.05; letter-spacing: 0px} .options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0px} .option { min-height: 0pxpadding: 0pxborder: 0pxsolid rgba(255,255,255,0.72); border-radius: 0pxbackground: rgba(255,255,255,0.56); box-shadow: 00px0pxrgba(15,44,88,0.11), inset 00px0 rgba(255,255,255,0.8); color: var(-text); cursor: pointer; text-align: left; position: relative; overflow: hidden; backdrop-filter: blur(22px) saturate(150%); -webkit-backdrop-filter: blur(22px) saturate(150%); transition: 0.18s ease; } .option::before { content: “”; position: absolute; inset: 0; background: radial-gradient(circle at 16% 8%, rgba(255,255,255,0.95), transparent 22%), linear-gradient(145deg, rgba(255,255,255,0.58), rgba(255,255,255,0.12)); pointer-events: none; } .option::after { content: “”; position: absolute; right: 0pxbottom: 0pxwidth: 0pxheight: 0pxborder-radius: 0pxbackground: rgba(36,74,134,0.06); transition: 0.18s ease; } …option.selected { color: white; background: rgba(36,74,134,0.88); border-color: rgba(255,255,255,0.78); box-shadow: 00px0pxrgba(15,44,88,0.26), inset 00px0 rgba(255,255,255,0.35); } .option.selected::before { background: radial-gradient(circle at 16% 8%, rgba(255,255,255,0.25), transparent 22%), linear-gradient(145deg, rgba(36,74,134,0.92), rgba(15,44,88,0.76)); } .option.selected::after { background: rgba(244,165,28,0.24); } .optionTop, .optionText { position: relative; z-index: 1; } .optionTop { display: flex; justify-content: space-between; gap: 0pxalign-items: flex-start; } .optionIcon { width: 0pxheight: 0pxborder-radius: 0pxdisplay: grid; place-items: center; color: var(-qsc-blue); background: rgba(255,255,255,0.76); border: 0pxsolid rgba(255,255,255,0.76); box-shadow: inset 00px0 rgba(255,255,255,0.9), 00px0pxrgba(15,44,88,0.08); } .optionIcon i { width: 0pxheight: 0px} .check { width: 0pxheight: 0pxborder-radius: 0pxdisplay: grid; place-items: center; color: transparent; background: rgba(255,255,255,0.48); border: 0pxsolid rgba(36,74,134,0.18); } .check i { width: 0pxheight: 0pxstroke-width: 3; } .option.selected .optionIcon { color: white; background: rgba(255,255,255,0.16); border-color: rgba(255,255,255,0.25); } .option.selected .check { color: white; background: var(-qsc-orange); border-color: rgba(255,255,255,0.35); } .optionText { display: block; margin-top: 0pxfont-size: 0pxline-height: 1.25; font-weight: 850; letter-spacing: 0px} .nav { display: flex; justify-content: space-between; align-items: center; gap: 0pxmargin-top: 0px} .btn { min-height: 0pxborder: 0; border-radius: 0pxpadding: 00pxdisplay: inline-flex; align-items: center; justify-content: center; gap: 0pxcursor: pointer; font-size: 0pxfont-weight: 900; transition: 0.18s ease; white-space: nowrap; } ..btn: disabled { opacity: 0.38; cursor: not-allowed; } .btn i { width: 0pxheight: 0px} .btnPrimary { color: white; background: linear-gradient(145deg, var(-qsc-blue), var(-qsc-dark)); box-shadow: 00px0pxrgba(36,74,134,0.25), inset 00px0 rgba(255,255,255,0.25); } .btnSecondary { color: var(-qsc-dark); background: rgba(255,255,255,0.58); border: 0pxsolid rgba(255,255,255,0.72); box-shadow: 00px0pxrgba(15,44,88,0.1), inset 00px0 rgba(255,255,255,0.85); } .btnOrange { color: #2d1c00; background: linear-gradient(145deg, var(-qsc-orange-light), var(-qsc-orange)); box-shadow: 00px0pxrgba(244,165,28,0.30), inset 00px0 rgba(255,255,255,0.42); } .formGrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0pxmargin-top: 0px} .field { display: grid; gap: 0px} .field.full { grid-column: 1 / -1; } label { color: var(-qsc-dark); font-size: 0pxfont-weight: 900; padding-left: 0px} input, textarea { width: 100%; border: 0pxsolid rgba(255,255,255,0.74); border-radius: 0pxpadding: 0px0pxfont: inherit; color: var(-text); outline: none; background: rgba(255,255,255,0.64); box-shadow: inset 00px0 rgba(255,255,255,0.85), 00px0pxrgba(15,44,88,0.08); backdrop-filter: blur(18px); transition: 0.18s ease; } textarea { min-height: 0pxresize: vertical; } input: focus, textarea: focus { background: rgba(255,255,255,0.84); border-color: rgba(36,74,134,0.34); box-shadow: 0 0 00pxrgba(36,74,134,0.09), inset 00px0 rgba(255,255,255,0.9); } .note { color: var(-muted); margin: 0px0 0; font-size: 0pxline-height: 1.45; } .error { display: none; margin-top: 0pxcolor: #b42318; font-weight: 800; background: rgba(180,35,24,0.08); border: 0pxsolid rgba(180,35,24,0.15); border-radius: 0pxpadding: 0px0px} .details { margin-top: 0pxborder-radius: 0pxbackground: rgba(255,255,255,0.5); border: 0pxsolid rgba(255,255,255,0.72); box-shadow: 00px0pxrgba(15,44,88,0.09); overflow: hidden; } summary { cursor: pointer; padding: 0px0pxfont-weight: 900; color: var(-qsc-dark); } .summary { margin: 0; padding: 00px0px0pxcolor: var(-muted); line-height: 1.55; } .sent { text-align: center; padding: 0px0px0px} .sentIcon { margin: 0 auto0pxwidth: 0pxheight: 0pxborder-radius: 0pxdisplay: grid; place-items: center; color: white; background: linear-gradient(145deg, #067647, #075e45); box-shadow: 00px0pxrgba(6,118,71,0.20); } .sentIcon i { width: 0pxheight: 0px} .sent h2 { margin: 0; color: var(-qsc-dark); font-size: clamp(30px, 4vw, 48px); letter-spacing: 0px} .sent p { max-width: 0pxmargin: 0pxauto 0; color: var(-muted); line-height: 1.55; font-size: 0px} @media (max-width: 720px) { body { background-attachment: fixed; } .page { width: min(100% - 14px, 1040px); padding: 0px0; place-items: start center; } .shell { border-radius: 0px} .hero { padding: 0px0px0pxalign-items: flex-start; flex-direction: column; gap: 0px} .brandText a { font-size: 0px} .brandText span { font-size: 0px} .heroText { text-align: left; } .pill { font-size: 0pxpadding: 0px0px} .hero h1 { font-size: 0pxletter-spacing: 0px} .main { padding: 0px0px0px} .progressCompact { margin-bottom: 0px} .progressTop { font-size: 0pxalign-items: flex-start; } .dots { gap: 0pxmax-width: 0px} .dot { width: 0pxheight: 0px} ..panel { min-height: auto; padding: 0px0px0pxborder-radius: 0px} .questionHead { grid-template-columns: auto 1fr; gap: 0pxmargin-bottom: 0px} .bigIcon { width: 0pxheight: 0pxborder-radius: 0px} .bigIcon i { width: 0pxheight: 0px} .kicker { font-size: 0pxmargin-bottom: 0px} .title { font-size: 0pxletter-spacing: 0px} .options, .formGrid { grid-template-columns: 1fr; gap: 0px} .option { min-height: 0pxpadding: 0pxborder-radius: 0px} .optionIcon { width: 0pxheight: 0pxborder-radius: 0px} .optionIcon i { width: 0pxheight: 0px} .optionText { margin-top: 0pxfont-size: 0px} .nav { flex-direction: column-reverse; align-items: stretch; margin-top: 0px} .btn { width: 100%; min-height: 0px} textarea { min-height: 0px} } www.qsc-systems.com with quality to success Dein Karrierestart in wenigen Klicks Werde Teil unseres Teams! Frage 1 von 7 FRAGE 1 Zurück Weiter KONTAKT Fast geschafft - wie erreichen wir dich? Name * Telefon-Nr. optional E-Mailadresse * Optionale Nachricht / Link zu GitHub etc.

Pflichtfelder sind Name und E-Mailadresse. Die Telefon-Nr. kannst du freiwillig ergänzen. Beim Klick auf “Senden” wird dein E-Mail-Programm geöffnet und die Nachricht bereits fertig vorbereitet.

Bitte fülle Name und eine gültige E-Mailadresse aus. Antwort-Zusammenfassung anzeigen Zurück zu den Fragen Senden E-Mail wurde vorbereitet

Dein Mailprogramm sollte sich geöffnet haben. Bitte prüfe die Nachricht kurz und sende sie ab. Wir melden uns schnellstmöglich bei dir bezüglich der Junior-Position!

Neu starten von ${total}’ : ‘Frage ${current + 1} von ${total}’; $(“bar”).style.width = ‘${now / total * 100}%’; renderDots(stage); } function renderQuestion() { const q = questions[current]; $(“questionIcon”).setAttribute(“data-lucide”, q.icon); $(“kicker”).textContent = ‘Frage ${current + 1}’; $(“title”).textContent = q.title; const options = $(“options”); options.innerHTML = “”; q.options.forEach((opt, index) = > { const btn = document.createElement(“button”); btn.type = “button”; btn.className = “option” + (answers[current] === index ? “ selected” : “”); btn.innerHTML = ‘ ${opt[0]} ‘; btn.addEventListener(“click”, () = > selectAnswer(index)); options.appendChild(btn); }); $(“backBtn”).disabled = current === 0; $(“nextBtn”).disabled = answers[current] === null; $(“nextBtn”).innerHTML = current === questions.length - 1 ? ‘Zu den Kontaktdaten ‘ : ‘Weiter ‘; updateProgress(“questions”); drawIcons(); } function selectAnswer(index) { answers[current] = index; renderQuestion(); setTimeout(() = > { if (current < questions.length - 1) { current += 1; renderQuestion(); } else { showContact(); } }, 170); } function showContact() { $(“questionStage”).classList.remove(“active”); $(“sentStage”).classList.remove(“active”); $(“contactStage”).classList.add(“active”); updateProgress(“contact”); renderSummary(); drawIcons(); } function showQuestion() { $(“contactStage”).classList.remove(“active”); $(“sentStage”).classList.remove(“active”); $(“questionStage”).classList.add(“active”); renderQuestion(); } function renderSummary() { const list = $(“summary”); list.innerHTML = “”; questions.forEach((q, i) => { const li = document.createElement(“li”); li.textContent = ‘${q.title}: ${answers[i] === null ? “Keine Auswahl” : q.options[answers[i]][0]}’; list.appendChild(li); }); } function isValidEmail(value) { return value.includes(“@”) && value.includes(“.”) && value.length > 5; } function emailBody(data) { const NL = String.fromCharCode(10); const lines = [ “Neue Kontaktanfrage \u00FCber den QSC Karriere-Fragebogen (Junior Position)”, “”, “Kontaktdaten”, ‘Name: ${data.name || “-“}’, ‘Telefon-Nr.: ${data.phone || “-“}’, ‘E-Mailadresse: ${data.email}’, data.message ? ‘Nachricht: ${data.message}’ : “Nachricht: -“, “”, “Antworten” ]; questions.forEach((q, i) = > { lines.push(‘${i + 1}. ${q.title}’); lines.push(‘Antwort: ${answers[i] === null ? “Keine Auswahl” : q.options[answers[i]][0]}’); lines.push(“”); }); return lines.join(NL); } $(“backBtn”).addEventListener(“click”, () = > { if (current > 0) { current -= 1; renderQuestion(); } }); $(“nextBtn”).addEventListener(“click”, () = > { if (answers[current] === null) return; if (current < questions.length - 1) { current += 1; renderQuestion(); } else { showContact(); } }); $(“contactBackBtn”).addEventListener(“click”, () => { current = questions.length - 1; showQuestion(); }); $(“contactForm”).addEventListener(“submit”, event = > { event.preventDefault(); const data = { name: $(“name”).value.trim(), phone: $(“phone”).value.trim(), email: $(“email”).value.trim(), message: $(“message”).value.trim() }; if (!data.name || !isValidEmail(data.email)) { $(“error”).classList.add(“active”); return; } $(“error”).classList.remove(“active”); const subject = ‘Bewerbung Junior Java Entwickler - ${data.name}’; const mailto = ‘mailto: ${recipient}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(emailBody(data))}’; window.location.href = mailto; $(“contactStage”).classList.remove(“active”); $(“sentStage”).classList.add(“active”); updateProgress(“contact”); drawIcons(); }); $(“restartBtn”).addEventListener(“click”, () = > { current = 0; answers.fill(null); $(“contactForm”).reset(); $(“error”).classList.remove(“active”); showQuestion(); }); renderQuestion(); Das sagen unsere Mitarbeitenden “Bei der QSC hast du die Möglichkeit, selbständig Aufgaben innerhalb toller, dynamischer Teams zu erledigen. Das Arbeitsklima ist hervorragend und jeder einzelne Mitarbeiter hat die Freiheit, Ideen und Verbesserungsvorschläge vorzubringen und umzusetzen. An meiner Tätigkeit als Leiter des Client-Teams schätze ich vor allem die abwechslungsreichen und fordernden Aufgaben, durch welche ich mich stets fachlich sowie persönlich weiterentwickeln und verbessern kann.” Lukas Höllriegl “Freude und Spaß bei der Arbeit in einem wertschätzenden und sympathischen Umfeld haben bei uns oberste Priorität! Wir feiern regelmäßig unsere Erfolge und organisieren abwechslungsreiche Firmenevents auf freiwilliger Basis. Dadurch kann man sich mit Kollegen auch auf privater Ebene austauschen. Das trägt zu unserem produktiven und entspannten Arbeitsklima bei!” Oliver Bauer “Bei uns herrscht eine sehr angenehme Arbeitsatmosphäre. Unsere Tätigkeit ist sehr abwechslungsreich aufgrund der unterschiedlichsten Branchen unserer Kunden. Es ist ein selbstverwirklichendes Gefühl zu wissen, dass die Arbeitsprozesse unserer Kunden durch unsere Lösungen erleichert wird. Feedback, Wertschätzung und Zusammenhalt wird bei uns gelebt - innerhalb des Teams und auch seitens der Geschäftsführung.” Raphael Baumgartner Bereit für den nächsten Schritt?

Apply for this position

This job is hosted externally. Click below to view the full posting and apply.

Apply on indeed.com

Good distractions

Talks and stories from around this role — technically off-topic, practically not.

2:03 min

Migrating applications from Java 11 to Java 17

Daniel Strmečki · LIVE

2:01 min

Handling high availability and stateful application requirements

Dominik Kress · LIVE

1:30 min

Introduction to software quality assurance in enterprise applications

Lilia Gargouri Lilia Gargouri · WWC Europe 2026

2:26 min

Summarizing the capabilities of the modern Java scripting ecosystem

Jens Knipper Jens Knipper · Europe 2026 Virtual

2:37 min

Developing customized native applications for automotive user interfaces

Stephan Schuster · WWC 2022

1:06 min

Developer experience and project variety at scale

Alexandra Petri · WWC 2023

Videos

See all

Related articles

See all