Im November habe ich die Zertifizierung zum ‚Oracle Certified Associate, Java SE 8 Programmer I‘ abgelegt. Da ich bisher keine Zertifizierungen der Größenordnung abgelegt habe, war das für mich eine große Sache wie ich auch schon an anderer Stelle geschrieben habe. Da das Thema aber eng verzahnt mit meiner Informatik-Rubrik ist, wäre nichts naheliegender als nochmal zu erklären wie die Zertifizierung abläuft… .
Was ist OCA?
Eine Sache um Missverständnissen vorzubeugen: der vollständige Name der Zertifizierung ist Oracle Certified Associate, Java SE 8 Programmer I und ich werde das im Folgenden in diesem Artikel als OCA bezeichnen – der Kürze halber. Aber nicht vergessen, dass es unter dem Label noch mehr Zertifizierungen gibt als die für Java SE.
Kurz zusammengefasst handelt es sich bei der Zertifizierung um eine von Oracle für die Programmiersprache Java, genauer gesagt Java Standard Edition 8. Um zertifiziert zu werden, muss man einen Test ablegen. Mit der Zertifizierung wird festgestellt, dass jemand tiefgehende Kenntnisse über das Konzept der Programmiersprache hat und sich beispielsweise umfassend mit Standard-APIs und Grundlagen auskennt. Es ist also prinzipiell der erste in der Java-Testkette von Oracle. Er stellt sicher, dass man die Konzepte und Grundbausteine von Java als Programmiersprache versteht. Allgemein gesprochen erfordert die Zertifizierung Wissen über Klassen, Konstruktoren, Methoden, Felder, Kontrollstrukturen wie Verzweigungen und Schleifen, Konzepte wie Vererbung u.ä. Außerdem über APIs wie String oder Date/Time und Exceptions. Das klingt jetzt recht einfach und grundlegend, aber es geht nicht um ein oberflächliches „Wie definiere ich eine Variable“-Level, sondern er umfasst auch Fallstricke und corner cases. Da es eine Zertifizierung ist, die sich Bestandteilen von Java 8 widmet, sind auch zu einem geringen Teil Lambda Expressions gefragt. Das ist allerdings auch das einzige Thema, bei dem ich die Erklärungen im Buch etwas dürftig und zu wenig hilfreich finde.
Der Test zur Zertifizierung hat die Testnr. 1Z0-808. Unter education.oracle.com kann man abrufen in welchen Testcentern dieser Test abgenommen wird. Testcenter sind meistens Weiterbildungseinrichtungen, die Verträge mit bestimmten Zertifizierungsorganisationen haben. Weiterhin ist der Test auf Englisch (möglich sind auch Spanisch und Japanisch meines Wissens) und von der Form her ein Multiple Choice Test. Die Testgebühr beläuft sich auf knapp über 200€. Der Test findet am Computer statt und man muss Fragen zu Code-Snippets beantworten, die einem gezeigt werden. Zu der Zeit als ich den Test abgelegt habe, dauerte der 150 Minuten und man musste von den 77 Fragen 65% richtig beantworten um zu bestehen. Prinzipiell geht es nur um das Bestehen, auf den ausgehändigten Zertifikaten steht keine Punktzahl oder Wertung. Die genauen Werte wie die Anzahl der Fragen können sich übrigens ändern, da der Test immer mal angepasst wird. Die aktuellen Daten findet man unter dem oben angegeben Link. Bei der Auswahl des Test-Datums und der Uhrzeit hat man außerdem ziemlich freie Hand – zumindest war es bei mir so, das hängt sicherlich vom Testcenter ab. Im besten Fall kann man sich am Freitag für einen Test am Montag anmelden.
Warum OCA?
Der Test bzw. die Zertifizierung ist die erste, die ich bisher für die Programmiersprache Java abgelegt habe. Vergleiche zu anderen offiziellen Zertifizierungen kann ich also nicht ziehen. Es gab zwar kleinere Java-Tests oder generell Prüfungen in Uni etc, die waren aber anderer Natur, meist allgemeiner und sind nicht mit der Zertifizierung vergleichbar. Ich wurde überhaupt erst auf den Test aufmerksam, weil die Firma in der ich arbeite, es angeboten hat und die Testgebühren übernimmt. Mal abgesehen von diesem entscheidenden Detail 😉 hat es mich persönlich gereizt nachweisen zu können, dass ich über fundiertes Wissen bezüglich der Programmiersprache verfüge. Da es eine Zertifizierung von Oracle ist, die nun eben mal die Schirmherrschaft über Java haben, gibt es eigentlich keinen offizielleren Kanal um sich zertifizieren zu lassen. Der zweite Punkt, der mich sehr gereizt hat.
Allgemein finde ich, dass eine Zertifizierung keine schlechte Sache ist. Sie markieren einen Punkt in der Weiterbildung, geben an wo man steht. Und das nicht nur für einen selber, sondern auch für andere. Bei Bewerbungen um Projekte und Jobs ist es nice to have. Außerdem ist es im Gegensatz zu den zahlreichen Prüfungen an der Uni relevant im Job. Für jemanden wie mich, der tagtäglich mit Java arbeitet, ist es meines Erachtens nach brisanter das nachweisen zu können (und vielleicht sogar Wissenslücken zu schließen) als sagen zu können, dass ich irgendwann an der Uni mal einen mathematischen Beweis geschrieben habe – was ich seitdem übrigens nie wieder tun musste. Womit ich natürlich damit nicht sagen will, dass das unnütz gewesen wäre 😉
Wie habe ich mich vorbereitet?
Von den Kollegen in der Firma, die den Test bereits abgelegt haben, wurde mir ein Buch zur Vorbereitung für den Test empfohlen, dass sehr geholfen hat. Es handelt sich dabei um „OCA Oracle Certified Associate Java SE 8 Programmer I STUDY GUIDE“ aus dem Sybex Verlag (auf Englisch).
Es ist allerdings deutlich ein Buch zur Vorbereitung auf den Test und keins, um Java zu lernen. Zwar behandelt es alle Themen gründlich und beginnt auch mit solchen netten Kapiteln wie Variablendefinition, aber es geht sehr schnell in die Tiefe und steigert sich im Schwierigkeitsgrad von Kapitel zu Kapitel sehr. Ich bin tatsächlich ziemlich schnell über Konzepte in dem Buch gestolpert, von denen ich nur gehört habe, die ich aber nie benutzt habe oder die mir sogar unbekannt waren wie static initializer. Dabei wird ausgelotet, was es prinzipiell alles gibt, aber auch in good und bad practice unterschieden. Beispielsweise bei Themen wie overriding und hiding oder eben instance und static initializer. Auch über Konzepte, die mir klar waren habe ich neues gelernt, was mich ziemlich verwundert hat: wie konnten mir bestimmte Dinge durch die Lappen gehen, obwohl ich seit ca. zwei Jahren täglich mit Java arbeite? Sogar eigentlich mit Java EE, was ein noch größeres und weiteres Feld ist. Aber die Antwort ist leicht zu finden: Es ist die Masse. Man braucht immer nur einen Ausschnitt. Und gerade das ist es auch, was den Test für die Zertifizierung dann nach hinten raus doch ziemlich schwierig macht. Die Masse. Man muss packages auswendig kennen und die Methoden, die man beispielsweise bei Strings, StringBuildern, Arrays, ArrayList etc. anwenden kann. Ein bisschen auswendig lernen ist dabei. Gerade die Kapitel über abstrakte Klassen, default Methoden in interfaces etc. wirken dann plötzlich extrem vollgepackt und strotzen nur so vor Wissen. Dabei geht das Buch ganz gut mit leicht nachvollziehbaren Beispielen darauf ein. Wovon sich andere Bücher noch eine Scheibe abschneiden könnten, ist wie einfach das Buch erklärt und mit wievielen Beispielen es arbeitet. Ein Hauptgrund warum das Buch aber eben speziell für den Test ausgelegt ist: es geht eben einfach viel um den Test. In den Absätzen zu den einzelnen Themen wird direkt abgegrenzt, was man für den Test wissen muss und was nicht. Außerdem gibt es am Ende eines jeden Themenkomplexes Testfragen und auch Online Übungstests (die ein bisschen buggy sind …). Das heißt, das Buch und der ganze Zertifizierungsprozess (sofern man sich ordentlich vorbereitet) helfen einen zu einem etwas besseren und v.A. gründlicheren Entwickler zu werden. Aber Anfänger sollten sich ggf. doch eher einen anderen Kurs suchen.
Meine Vorbereitung bestand darin, dass ich im Sommer angefangen habe ein, zwei Mal im Monat ein Kapitel zu lesen und zu verinnerlichen. War mir etwas absolut neu oder ich war eher unsicher auf einem Gebiet, habe ich mir dazu ein paar Stichpunkte gemacht und ein paar Zeilen Code getippt, um zu überprüfen wie das läuft, worüber ich gerade gelesen habe. Nach jedem Kapitel habe ich mal die Testfragen beantwortet und ausgewertet. Das ging so den ganzen Sommer. Warum war ich nicht schneller? Weil ich es schwierig finde neben Job und Leben Zeit für Fortbildung freizuschaufeln. Was meistens wichtig ist: sich ein Datum festlegen. Ich wusste beispielsweise, dass ich den Test vor der Adventszeit abgelegt haben möchte. Irgendwann habe ich dann auf den Kalender geschaut und gemerkt: gut, das sind jetzt noch zwei Monate.
Zu dem Zeitpunkt bin ich meistens die Kapitel nochmal zügig durchgegangen (quer gelesen), habe meine Stichpunkte angeschaut – je nach Thema. Vor Allem habe ich nochmal alle Testfragen aus dem Buch wiederholt und mit Erschrecken festgestellt, dass ich nur bei den einfachen Themen einen wirklich guten Lauf habe (>90% richtig). Bei den schwierigeren Themen erreichte ich durchaus mal nur ca. 70%. Schon beim ersten Durchgehen des Buches war ich manchmal etwas erschrocken wie fies die Testfragen sind. Da wird bei multiple choice nicht angegeben wieviele man wählen muss und so hat man eben schnell die Aufgabe falsch beantwortet, weil man zwei statt drei Antwortoptionen ausgewählt hat. Außerdem widmen sich die Fragen mit großer Vorliebe corner cases, also eben den schwierigeren Themen, die nicht so simpel sind wie Code Snippets in denen ein Semikolon vergessen wurde. Man muss sehr genau lesen und sich Zeit nehmen. Außerdem ähneln sich die Antwortoptionen manchmal stark, sodass man gezwungen ist das Code Snippet genauer anzuschauen und nicht schnell über das Ausschlussverfahren einen Treffer landen kann. So entstand bei mir der Eindruck, dass der Test irre schwer sein muss. Auch bei den Online-Tests war ich nicht so gut wie ich das von mir erwartet oder mir gewünscht hätte. Damit sah die Bilanz erstmal mau aus. Von Kollegen wusste ich, dass der normale Test einfacher ist. Aber das ist trotzdem schwierig sich darauf zu verlassen. Schlussfolgerung für mich: ich habe trotzdem gelernt ohne Ende. Habe ich die Testfragen zu einem bestimmten Thema nicht gut beantwortet, habe ich den Abschnitt nochmal gelesen. Und nochmal. Meistens war mein Problem aber, dass ich die kleinen eingebauten Fallen übersehen habe. Beispielweise, dass ein Methodenname falsch geschrieben war. Ich bin ein kleiner Schussel bei solchen Sachen und verwöhnt durch IDEs, die einen während des Programmierens ja ständig darauf hinweisen. Und dann wurde es ernst. Ich muss gestehen: nicht nur weil es die Firma zahlt, sondern auch weil ich persönlich extrem ungern durchgefallen wäre, wollte ich das Ding gern rocken.
Wie lief der Test ab? (Und wie schwierig ist es wirklich?)
So, da sind wir nun. Und? Ist denn der echte Test jetzt wirklich einfacher? Ja. Aber nur ein bisschen.
Der Test ist dadurch einfacher, dass bei multiple choice Fragen angegeben wird, wieviele man auswählen muss. Das grenzt die Unsicherheit extrem ein. Es gibt auch ein kleines bisschen weniger Trickfragen d.h. es gibt weniger Fragen, die sich mit corner cases auseinandersetzen oder besonders fiese Kleinigkeiten verstecken. Aber die Fragen bleiben sehr komplex. Da gibt es zwar solche in denen man quasi sofort erkennt, dass ein Semikolon oder Anführungszeichen fehlt oder dass eine Funktion auf einem nicht initialisierten Feld aufgerufen und der Code nicht kompilieren wird. Da gibt es aber auch solche, bei denen man ca. eine DIN A4-Seite code mit mehreren Klassen und überladenen Methoden anschaut in denen verschiedene Logik und Themenkomplexe vorkommen und man sich deutlich länger einlesen muss. Kollegen von mir meinten sie wären schon nach einer Stunde gegangen statt nach zweieinhalb, aber ich muss euch ehrlich sagen: ich habe die Zeit gebraucht. Sei es um meine Antwortmöglichkeiten bei Fragen nochmal zu kontrollieren, bei denen ich mir unsicher war.
Aber der größte Bonus ist eben, dass man weiß wieviele Antwortmöglichkeiten man auswählen muss, denn ansonsten kann man sich gut verunsichern lassen. Ein Tipp am Rande: bei dem Test sollte man sich Fragen markieren, bzw. mit einem Lesezeichen versehen. Insbesondere die, bei denen man sich unsicher ist oder sogar die, die man vorerst offen lassen möchte, weil es beispielsweise zuviel zu lesen für zu wenig Zeit ist. Am Ende des Tests kann man sich die mit dem Lesezeichen nämlich nochmal anschauen. Auch noch wissenswert: Der Test findet unter einigen Sicherheitsaspekten statt. Man wird videoüberwacht, damit festgestellt werden kann, ob man schummelt. Man darf nichts mit in den Raum nehmen und vorher wird man fotografiert. Das läuft alles ziemlich gründlich ab.
Fazit
Es ist nicht verkehrt, wenn man sich mit dem Buch auf den Test vorbereitet, weil es sehr genau erläutert, was geprüft wird und was nicht. Außerdem sind die Testfragen etwas härter, da beispielsweise nicht angegeben wird, wieviele Antwortmöglichkeiten man hat. Ich habe nicht bei allen Testfragen-Komplexen mehr als 80 oder 90% richtig gehabt und habe den echten Test doch bestanden. Die Trickfragen und corner cases können heftig sein, aber wenn man sich gründlich auf den Test vorbereitet, macht er einen zu einem guten Entwickler, das ist meine feste Überzeugung und ich habe das in der Praxis schon zwei, drei Mal selber bemerkt. Man sollte sich aber auch nicht täuschen lassen: der echte Test ist nicht viel einfacher als die Testfragen aus dem Buch. Und die Frage zum Schluss: würde ich es wieder tun? Ja, klar. Aber nicht so schnell – ich mach jetzt erstmal was lockeres. Ein Fachbuch normal lesen ohne Tests und einfach nebenbei etwas coden. Das war alles in allem doch etwas anstrengend sich auf OCA neben dem normalen Alltag vorzubereiten.
Wie ist das bei euch? Habt ihr diese oder eine ähnliche Zertifizierung schon mal gemacht? Wie waren eure Erfahrungen? Oder bereitet ihr euch vielleicht sogar gerade auf den OCA Java SE8 I vor? Falls ihr nicht Java-Developer seid, euch aber trotzdem hierher verirrt habt (dann freut mich das 😉 ), wie sehen in eurem Berufsfeld Weiterbildungen oder Zertifizierungen aus?
Netzgeflüster ist eine Kategorie meines Blogs in der ich mich immer zwischen dem 10. und 15. eines jedes Monats Themen rund um IT, Forschung, Netzwelt, Internet und eben auch Gerüchten widme. 🙂
Schreibe einen Kommentar