Job als Java-Softwareentwickler

Hallo,

ich studiere Mathematik (M.Sc.) und habe ein Job-Angebot als Junior-Softwareentwickler bekommen. Das Unternehmen entwickelt Software in der Programmiersprache Java und verwendet auf Java basierende Technologien.
Ich habe keine Berufserfahrung und war nie in großen Projekten involviert. Hab fürs Studium Programme in C++ und Java geschrieben (für Numerik und Optimierung), die aber selten mehr als 250 Zeilen Code hatten. Kenne mich (theoretisch) mit Konzepten wie Vererbung, Polymorphie und Interfaces aus… aber auch nicht recht viel mehr.
Meine Frage: Wie kann ich mich am besten auf den Job vorbereiten? Habt ihr irgendwelche Buchempfehlungen für mich? Die machen halt sehr umfassende, anspruchsvolle Projekte und ich hab ein wenig Angst, dass ich da überfordert bin :frowning:
Daher: Wie kann ich mich gut und effizient einarbeiten?

Danke + LG
Stefan

Hallo Stefan,
das knifflige bei Java-Programmierung ist meist nicht das Java selbst, sondern die verschiedenen Entwicklungsumgebungen, Frameworks etc, die sie verwenden. Frag mal nach, welche sie bei dieser Firma einsetzen, und dann lese Dich in dieses Thema ein. Am besten installierst Du Dir die Entwicklungsumgebung auf Deinem Rechner und versuchst, eine einfache Anwendung zu entwickeln. Beispiele dafür gibt es im Internet. Dabei lernst Du schonmal das Prinzip. Falls es nicht gleich klappt: Keine Panik. In der Firma hast Du dann ja Kollegen, die Du fragen kannst.
Viel Glück!
Mona

Hallo Stefan,

als Berufseinsteiger sollte dem Unternehmen im Auswahlgespräch klar geworden sein, welche Kompetenzen und welches Potential Du mitbringst. Er muss sich Gedanken machen und Wege aufzeigen, wie Deine Einarbeitung zu erfolgen hat.

Es kann von Dir kein Arbeitgeber verlangen, dass Du jetzt alle Anforderungen erfüllst, die ein erfahrener Programmierer durch seine Berufserfahrung und seiner Mitarbeit in vielfältigen Projekten gesammelt hat. 

Ich erlebe immer wieder, wie ungenau und oberflächlich Unternehmen mit Berufseinsteiger umgehen und diese verunsichern, weil es keine klaren Vereinbarungen gibt, wie eine gezielte Einarbeitung durchgeführt werden soll. Dein zukünftiger Arbeitgeber wäre am Zug. Er kennt die Anforderungen, die seine Produkte erfüllen müssen und sollte auch wissen, wie er neue Mitarbeiter anleitet und führt, damit diese ihre Aufgaben gut ausführen können.

Ich finde es total gut, wenn Du Dir Gedanken darüber machst, wie Du erfolgreich sein kannst. Das zeugt von Engagement und Verantwortungsbewusstsein. Damit hast Du Deinen Anteil erledigt.

Suche das Gespräch mit Deinen Arbeitgeber und spreche Deine Bedenken an. Gute Arbeitgeber werden das Thema der Einarbeitung von sich aus ansprechen und Wege aufzeigen. Auch daran kannst Du Sie erkennen.

Hast Du Fragen, melde Dich.
Viele Erfolg und Grüße
chicobello

Hallo Mona,

danke für die Antwort. Ich würde gerne die Entwicklungsumgebung Eclipse verwenden. Die ist ja open source und hat einen guten „Ruf“. Oder würdest du mir eine andere empfehlen? Ich benutze zu Hause übrigens Ubuntu, also kein Windows.

Was könnte denn eine einfache Anwendung sein?
Ein Spiel oder einen Taschenrechner mit grafischer Oberfläche? Wäre das als Anfänger okay? Oder was ganz anderes?

LG
Stefan

Hallo chicobello,

danke für die Antwort.

Ich erlebe immer wieder, wie ungenau und oberflächlich
Unternehmen mit Berufseinsteiger umgehen und diese
verunsichern, weil es keine klaren Vereinbarungen gibt, wie
eine gezielte Einarbeitung durchgeführt werden soll.

Auf meine Nachfrage hin sagte der Leiter der Entwicklungsabteilung, der mit mir das Bewerbungsgespräch durchgeführt hat, dass ich von Anfang an in den großen Projekten mitarbeiten werde, aber sie noch nicht die volle Leistung von mir verlangen und mir eine Einarbeitungszeit von einigen Monaten eingestehen. Ich darf auch jederzeit Fragen stellen und Bücher lesen und mich in diese Materie einarbeiten. Also das hat sich ganz human angehört :smile:

Aber trotzdem würde ich mich gerne schon vorher damit auseinandersetzen und darüber etwas lernen - obwohl ich gerade in der Abschlussphase meines Studiums bin und es schon stressig genug ist.

Ich finde es total gut, wenn Du Dir Gedanken darüber machst,
wie Du erfolgreich sein kannst. Das zeugt von Engagement und
Verantwortungsbewusstsein. Damit hast Du Deinen Anteil
erledigt.

Danke, es ist auch so, dass die Bezahlung sehr gut ist und Boni an die Mitarbeiter ausgeschüttet werden, daher will ich natürlich auch eine gute Gegenleistung erbringen.

Viele Grüße

Stefan

Hi

Hallo chicobello,

danke für die Antwort.

Auf meine Nachfrage hin sagte der Leiter der
Entwicklungsabteilung, der mit mir das Bewerbungsgespräch
durchgeführt hat, dass ich von Anfang an in den großen
Projekten mitarbeiten werde, aber sie noch nicht die volle
Leistung von mir verlangen und mir eine Einarbeitungszeit von
einigen Monaten eingestehen. Ich darf auch jederzeit Fragen
stellen und Bücher lesen und mich in diese Materie
einarbeiten. Also das hat sich ganz human angehört :smile:

Das ist doch schonmal schön, oder? Bspw bei mir in der Firma haben wir das ein oder andere „Riesenframework“. Sicher anwenden kann man es nichtmal in einem halben Jahr - da es leider schlecht dokumentiert ist (die Zeit wird einem aber auch eingeräumt).

Aber trotzdem würde ich mich gerne schon vorher damit
auseinandersetzen und darüber etwas lernen - obwohl ich gerade
in der Abschlussphase meines Studiums bin und es schon
stressig genug ist.

Naja was haben die denn gefordert? Ich mein die werden ja nicht nur in die Stellenausschreibung „du / Sie sollten in Java programmieren können“ geschrieben haben. Vlt kannst du ja mal das Anforderungsprofil einstellen. Dann könnte man dir sicherlich Quellen nennen :wink:

Danke, es ist auch so, dass die Bezahlung sehr gut ist und
Boni an die Mitarbeiter ausgeschüttet werden, daher will ich
natürlich auch eine gute Gegenleistung erbringen.

Find ich persönlich toll, hab ich auch in meiner Firma, ich konnte mich aber wie gesagt selbst schon auf das Gespräch vorbereiten da gesagt wurde „dies das und jenes ist erforderlich, Kenntnisse darin sind wünschenswert, Kenntnisse darin sind bevorzugt“

Wenn du uns das mitteilst, kann man dir Bücher, Links oder auch Tipps geben, das was du uns bis jetzt gibts ist wie zum KFZ-Mechaniker (ohne Auto) zu gehen und zu sagen „Mein Auto ist kaputt was kann ich tun“

Ich mein das nicht böse aber wir haben vermutlich alle keine Glaskugel die erraten kann, welche (ggf sogar selbstgebastelten) Frameworks dein künftiger AG einsetzt und auf welche er aufbaut…

Viele Grüße

Stefan

Grüße

Jo

So nochmal ich

was ich cool fand (damals in meiner Ausbildung):

Mein Ausbilder hat mich anhand „Robocode“ Java lernen lassen (natürlich braucht man einen Gegenpart - es gibt zwar Panzer zum download aber nichts ist besser als ein sich in Entwicklung befindender Panzer…)

http://robocode.sourceforge.net/

Mein Ausbilder hat damals zeitgleich mit mir angefangen Java zu lernen (er hat vorher in C++ programmiert) und damit haben wir uns gegenseitig angestachelt (die Panzer wurden in der Freizeit entwickelt - anfangs wars ne Last aber dann… DANN wollt ich ihn einfach nur noch besiegen *g*).

Robocode ist zwar recht freizügig aber würde dir zumindest auch mit Spaß beibringen mit „Frameworks“ umzugehen (und diese wenn dein Gegner zu mächtig ist zu umgehen - viele Niederlagen machen erfindungsreich *g*)

Grüße

Hallo!

Naja was haben die denn gefordert? Ich mein die werden ja
nicht nur in die Stellenausschreibung „du / Sie sollten in
Java programmieren können“ geschrieben haben. Vlt kannst du ja
mal das Anforderungsprofil einstellen. Dann könnte man dir
sicherlich Quellen nennen :wink:

Klar, ich weiß, dass ich in meinem Ausgangsposting etwas ungenau war.
Also die „offiziellen“ Anforderungen der Firma sind Kenntnisse in Java und im Entwickeln von Web-Anwendungen, Kenntnisse in JSF, Struts und wünschenswert wären auch Kenntnisse in Scrum und XP (das ist aber kein Muss).
Diese Anforderungen erfülle ich zwar nicht alle, aber der Chef will mich dennoch einstellen :smile:

Bin nun gespannt auf Tipps.

LG
Stefan

Auch hallo

Daher: Wie kann ich mich gut und effizient einarbeiten?

Nur als Idee: Java 7 Tutorial von Oracle ( http://docs.oracle.com/javaee/7/tutorial/doc/javaeet…), Buch „Effective Java“ von Joshua Bloch
Obwohl das weniger mit Webentwicklung zu tun hat, und u.U eine Nummer zu gross sein könnte…

mfg M.L.

Hi

Hallo!

Also die „offiziellen“ Anforderungen der Firma sind
Kenntnisse in Java und im Entwickeln von Web-Anwendungen

Für Java-Webanwendungen empfieht es sich, zumindest mit einem Servletcontainer ausseinander zu setzen (bspw Tomcat) vermutlich wirst du dort auch mit einem Application-Server konfrontiert werden (sowas wie JBoss /wildfly oder Glassfish)

Kenntnisse in JSF, Struts

Apache hat meißt eine gute Doku die würd ich einfach mal lesen und verschiedene Tutorials lesen (http://struts.apache.org/ homepage vom Framework struts)

Für JSF einfach googlen (sicherlich wäre für dich auch das Framework richfaces oder primefaces interessant, das bietet schöne Komponenten9

und wünschenswert wären auch
Kenntnisse in Scrum

Scrum ist eine Arbeitsmethodik, die im allgemeinen (fast) nie in der Reinform gelebt werden kann, es sei denn man entwickelt ein Produkt ohne Zeitdruck. Meißt wird ein sogenanntes „Scrum but“ gelebt. Scrum in der Reinform ist sehr entspannt für Entwickler.

Im Scrum gibt es: das Entwicklerteam (eine Einheit), einen Scrummaster, ein ProductOwner und natürlich den Kunden (ich brech das verkürzt runter).

Entwicklerteam: Besteht aus Entwicklern (jeglicher Position) und Testern. bei Scrum sollte nie einer allein Wissensträger sein. es muss mind eine Person geben die den „Wissensträger“ vertreten kann. Wünschenswert wäre es wenn jeder alles kann und weiss.

Scrummaster: Hält dem Team jeglichen Stress vom Leib, leitet die täglichen Meetings und redet den Entwickerln ins Gewissen (bspw wenn sie sich in seiner Sicht in nem Sprint übernehmen oder einen Sprint verbockt haben)

ProductOwner: Ist die Schnittstelle zum Kunden. Er bespricht mit dem Kunden die Stories (Features) und bereitet sie so auf, dass die Entwickler die Anforderung des Kudnen verstehen. Er nimmt die Software auch gegenüber den Entwicklern ab. Ebenso muss er schauen, dass er auch die Interessen der Entwicklung gegenüber dem Kunden vertritt (bspw wenn eine technische Umstruckturierung notwendig ist und der Kunde daher keine Features im nächsten Sprint bekommt)

Kunde: Kunde ist wie der name schon sagt der Kunde. Er bespricht die Anforderungen mit dem ProductOwner und priorisiert die Stories.

Bei Scrum gibt es sogenannte „Sprints“. Wir haben mal versucht ein Scrumprozess zu leben. Bei uns war ein Sprint 4 Wochen lang. Ziel eines Sprints ist es die von den Entwicklern zugesagten Stories (meißt Features) fertig zu bekommen und am ende vom Sprint eine Software zu haben die man dem Kunden ausliefern könnte (im allgemeinen auch auf einen Testserver aufspielt - damit der das Feature abnehmen kann).

Generell gibt es immer das ein oder andere sogenannte Estimation-Meetings. Darin erklärt der Productowner was der Kunde gerne alles an Features hätte und die Entwickler können fragen zu den Stories stellen. Diese werden im allgemeinen erst weitergeleitet und nachdem diese beantwortet sind werden Stories erneut besprochen. Wozu nun die Punkte fragst du dich sicher. Gibt es keine Fragen zu den Stories werden sie geschätzt. Kommt hier eine zuhohe Punktzahl raus (dafür gibts ein „ScrumPoker“-Kartensetz) muss der Productowner die Story zusammen mit dem Kunden in mehrere kleine Stories splitten und diese erneut ins Estimation geben. Passt die Punktzahl geht die Story ins nächste Feature:

Das Planning: Im Planning werden Stories geschätzt. Anders als in anderen Arbeitsmethoden schätzt man ins Scrum nach Komplexität und nicht in Zeit. Uns diente dazu immer eine Referenzstory an der man sich orientieren kann. Das Team committet sich dann auf einen Featureumfang der zum Sprintende getestet und abnahmebereit ist.

nach dem Planning wird setzt sich das Team zusammen und splittet die Stories zudenen sie sich commitet haben, in sogenannte Tasks auf. Ein Task sollte nicht länger als ein Tag dauern.

Jeden Tag gibt es zu einer gewissen Uhrzeit ein ca 15 Minuten langes Meeting. Dort sagt jeder kurz und knapp woran er arbeitet bzw ob er probleme hat. Damit ist das Team immer bestens informiert was um sie rum passiert und können ggf nach dem Meeting zusammen an einem Problem arbeiten.

Nun vergeht der Sprint - Tag X ist gekommen der Kunde will sehen was passiert ist.

Das Team selbst stellt nun dem Kunden die Features vor und zeigt dem Kunden die gebaute Software und lässt sich noch Tipps oder Änderungswünsche vom Kunden vortragen. Egal wie der Sprint nun ausgegangen ist (Kunde zufrieden / unzufrieden - Ziel erreicht oder nicht) wird nach diesem Meeting noch im Teammeeting geführt. Darin kann man sich auskotzen, andere Teammitglieder loben, oder vlt Änderungswünsche vorbringen bzw auch sagen woran es vermutlich gelegen hat das xyz nicht so gut gelaufen ist und gemeinsam besprechen wie man das besser machen kann.

Generell ist auch wichtig: Das Team ist immer verantwortlich nicht Person X aus dem Team.

Es fehlt sicher vieles aber denke mal das ist ein grobüberblick was Scrum ist.

Diese Anforderungen erfülle ich zwar nicht alle, aber der Chef
will mich dennoch einstellen :smile:

Nuja dann scheinst du doch potential zu haben. Wünsche viel Erfolg!

Bin nun gespannt auf Tipps.

LG
Stefan