Bin ich bereits fortgeschritten?

Hallo,
ich bin Hobbyprogrammierer und habe meine erst Codezeile erst letztes Jahr im Oktober geschrieben und habe mich seitdem aber richtig reingehängt. Die Sprache habe ich mir im Eigenstudium beigebracht. Jetzt wollte ich wissen, ob ich noch ein Anfänger bin oder ob ich schon fortgeschrittene Kenntnisse in java habe. Ab wann gilt man eigentlich als fortgeschritten?

Also ich habe mal die Themen zusammengetragen, die ich bereits kann:

Java - Sprachmerkmale, Variablen, Bedingungen, Fallunterscheidungen
Schleifen: while, do-while, for, Berechnung der Fakultät, Berechnung des GGT
Java-Datentypen: Ganze Zahlen (byte, short, int, long), Gleitkommazahlen (float)
Java-Datentypen: Gleitkommazahlen (Fortsetzung), Boolean, Character, Typumwandlung, Konstanten
Felder: Feld von Ziffern, Feld von Daten, Feld von Zeichen, Feld von Wahrheitswerten
Felder: Feld von Indizes (Abzählreim), Feld von Zuständen (Endlicher Automat), Lineare Suche
Binäre Suche, Methoden: aktuelle + formale Parameter, Übergabe von arrays, Sichtbarkeit
Fehlerbehandlung, Rekursion, Fakultät, Potenzieren, Fibonacci, ggT, Türme von Hanoi
Komplexität, O-Notation, Analyse von Schleifen, Analyse eines rekursiven Programms
Verifikation, partielle Korrektheit, Terminierung, Halteproblem (Algorithmen-Fee)
Greedy, Divide-&-Conquer, SelectionSort, BubbleSort, MergeSort rekursiv, MergeSort iterativ
Quicksort, Median
Baum, Heap, HeapSort
Sortieren: Laufzeit und Platzbedarf, Untere Schranke für Sortieren durch Vergleichen, Bucket Sort
Objektorientierte Programmierung, Class Person, Vererbung, Class Student, Binden, Kinderabzählreim
ADT, Interface, ADT Liste
ADT Keller, Reverse, Klammerung, CharKeller, Infix-Postfix
Schlange, Baum, VerweisBaum
Traverse, TiefenSuche, BreitenSuche, PostfixBaumBau, Interface Enumeration, PreorderTraverse
SuchBaum, Comparable, Interface Menge, Insert, Delete, Lookup
Implementation von Lookup, Insert, SuchBaumTest, ausgeglichen, AVLBaum
Hashfunktion, Kollision, Sondieren, offenes + geschlossenes Hashing, HashSet, HashMap
Graphen: Modellierung, Fragestellungen, Implementation, All-Pairs-Shortest Path
Graphen: Vertex, Edge, Single-Source-Shortest-Path, Topologisches Sortieren, Hamiltonkreis
Graphen: Maximaler Fluss, Minimaler Cut, erweiternder Weg, Ford Fulkerson
Graphen: Spannbaum, Matching, Chinese Postman

Basiswissen Software-Entwicklung
Wichtige objektorientierte Konzepte
Fehlerbehandlung
Generizität
Klassenbibliotheken (JCF)
Iterator
JCF, InnereKlassen, Persistenz (Grundlagen, Datei- und Verzeichnisverwaltung)
Persistenz (I/O-Streams)
Decorator-Pattern, Serialisierung
Nebenläufigkeit (Grundlagen, Threads, Java Threads)
Thread Zustände, Threads und Fehler, Synchronisation
Nebenläufigkeit (Synchronisation: kritische Abschnitte, Monitore, Deadlocks, Synchronisation durch Kommunikation)
Grafische Benutzeroberflächen (AWT: Fenstertypen, Steuerelemente, Layout)
Grafische Benutzeroberflächen (Event Handling, Observer Pattern, Swing)
Grafische Benutzeroberflächen (Swing, MVC)
Netzwerkprogrammierung (Grundlagen, Protokolle, Adressierung)
Netzwerkprogrammierung (Adressierung, Sockets, Client/Server, UDP, Höhere Kommunikation)

Gibt es noch irgendwelche wichtigen Inhalte, die man zu java wissen sollte und ich noch nicht abgedeckt habe?
Ich habe jetzt vor mich in die jmonkeyEngine einzuarbeiten. Ansonsten lern ich jetzt noch nebenbei C/C++. Ich hätte nicht gedacht, dass mir programmieren soviel Spaß macht und ich habe es mir auch viel komplizierter vorgestellt.

Jetzt wollte ich wissen, ob ich noch ein Anfänger bin oder ob ich schon fortgeschrittene Kenntnisse in java habe.
Würde die Beantwortung dieser Frage irgendetwas an deinem Leben ändern?

Moin,

na, ist ja erstmal 'ne recht beeindruckende Liste (wenn auch schwer zu lesen :eek:)

Aber zu Deiner Frage:
„Fortgeschritten“ ist sich sicher nicht zweifelsfrei definiert.

Aber IMHO ist es weniger die Anzahl der Gebiete, die Du aufzählen kannst, sondern eher die Frage, wie intensiv Du die einzelnen Bereiche kennst und anwenden kannst!

Gruß
Klaus

[QUOTE=Antoras]> Jetzt wollte ich wissen, ob ich noch ein Anfänger bin oder ob ich schon fortgeschrittene Kenntnisse in java habe.
Würde die Beantwortung dieser Frage irgendetwas an deinem Leben ändern?[/QUOTE]

Ja.
In einer Bewerbung kann es unter Umständen von Vorteil sein, wenn man zusätzliche Kompetenzen, wie den Umgang in einer Programmiersprache hat. Die Frage ist, ob ich dann schreiben kann, dass ich fortgeschrittene Kenntnisse in java oder nur Grundkenntnisse habe.
Ich weiß nie so genau wo jetzt der Übergang zwischen Grundkenntnisse und fortgeschrittene Kenntnisse liegt. Also in C/C++ habe ich definitiv nur Grundkenntnisse.
@vfl_freak
Die genannten Themen kann ich sehr intensiv und beherrsche sie aus dem FF. Ich habe fast meine ganze Freizeit darin investiert. Es gibt auch noch ein paar Themen, die ich solala kann. Die habe ich bei der auflistung weggelassen.

Es ist fast unmöglich, dass du alle diese Dinge “kannst” - bestenfalls hast du eine vage Vorstellung, was sich hinter den Begriffen verbirgt. Und hast schon mal ein kleines Beispiel implementiert.

Ich würde dich immer noch zu den (fortgeschrittenen) Anfängern zählen: bis jemand ein gutes Swing-Programm schreiben kann braucht es ein paar Jahre Erfahrung…

[QUOTE=Bleiglanz]Es ist fast unmöglich, dass du alle diese Dinge “kannst” - bestenfalls hast du eine vage Vorstellung, was sich hinter den Begriffen verbirgt. Und hast schon mal ein kleines Beispiel implementiert.

Ich würde dich immer noch zu den (fortgeschrittenen) Anfängern zählen: bis jemand ein gutes Swing-Programm schreiben kann braucht es ein paar Jahre Erfahrung…[/QUOTE]
also zum beispiel habe ich minessweeper mit einem ausführlichen Menü programmiert und ich habe nen einfachen 2D-Weltraumshooter programmiert. das waren jetzt nur zwei beispiele.

Jetzt wollte ich wissen, ob ich noch ein Anfänger bin oder ob ich schon fortgeschrittene Kenntnisse in java habe. Ab wann gilt man eigentlich als fortgeschritten?

Hast du denn schon ergendwelche Projekte fertig gestellt oder zumindest an Projekten mitgearbeitet?

Ich würde sagen nicht fortgeschritten. Ein Fortgeschrittener Entwickler hätte das Selbstbewusstsein „fortgeschritten“ ohne zu Hinterfragen zu schreiben.

Ein Spiel zu programmieren sagt erstmal nix aus.

Wichtig wäre zu sehen, wie der Code aussieht. (Skaliertbar, Adaptierbar?, Erweiterbar?)

ab wann spricht man von einem Projekt?
in eclipse ist bereits ein „HelloWorld“-Programm ein Projekt ^^
@Marcinek
Mein Minessweeper-Code basiert auf dem MVC-Pattern.

Ich denke ohne Referenzen kann dir das keiner beantworten. Klingt beeindruckend nur wo ist der 2D-Shooter und das Minesweeper?

Ansonsten gibt es z.B. Bücher die man durcharbeiten kann und die auch je Kapitel Tests anbieten. Eine Liste findest du hier im Forum.

Wenn du einen funktionierenden Minesweeper selbst programmiert hast, dann nehme ich das mit dem Anfänger zurück. Ist dann nicht mehr angebracht.

fortgeschritten ist aber auch wohl ein dehnbarer Begriff.
Ich studiere Physik. Im Studium hat man 3 semester anfängerlabor und später im Master ein jahr fortgeschrittenen-labor, aber das Fortgeschrittenen-Labor fand ich jetzt nicht anspruchsvoller als die Anfängerlabore.

Warum sind denn hier alle so negativ drauf? Also ich würde sagen jemand der sich so umfassend mit allem auseinandergesetzt hat, und auch schon ein paar Spiele programmiert hat, kann sich durchaus als fortgeschritten bezeichnen. Sicher kein Profi, aber Anfänger ja wohl auch nicht mehr.

Woher nimmst du das „umfassend“ genau?
@Pirmin :
Stell deine Werke doch hier im Forum vor. Gibt einen extra Spielethread. Und eine bessere und vor allem kostenlose Rückmeldung wirst du kaum finden

Wahrscheinlich weil „fortgeschritten“ ein ausgesprochen relativer Begriff ist. Viele der Leute hier im Forum haben Informatik studiert und verdienen ihren Lebensunterhalt als Softwarentwickler; da erstaunt es nicht wenn die Meßlatte dementsprechend hoch angelegt wird. Falls man sich in dieser Branche bewerben möchte und dann Kenntnisse aufzählt wie „Feld von Ziffern, Feld von Daten, Feld von Zeichen, Feld von Wahrheitswerten … Fakultät, Potenzieren, Fibonacci, ggT…“ - naja, dann klingt das halt nicht als hätte man sich im Bereich Softwareentwicklung schon besonders weit entwickelt. Möchte man sich andererseits in einer ganz anderen Branche bewerben (vielleicht als Einzelhandelskaufmann oder was weiss ich), dann würde ich selber den angegebenen Wissensstand durchaus als „fortgeschritten“ bezeichnen.

Pirmin, was mir persönlich im deinem Ausgangsposting gefehlt hat ist eine Einschätzung in wie weit du dein Wissen auch anzuwenden vermagst. Wenn du z.B. den Auftrag bekämst Input-/Outputstreams zu implementieren welche on the fly eine RLE-Kompression der Daten durchführen - bekämst du das hin? Und würdest du selber deinen Code als „sauber“ bezeichnen; könntest du ihn auch nach einem Jahr noch auf Anhieb lesen und erweitern?

hmm, der begriff “fortgeschritten” ist schon sehr waage

ich hatte es ja mal an anderer stelle erwähnt, aber ich arbeite täglich mit software (welche wunder, java) die von “fachleuten” programmiert wurde
ich gehe schon von aus das die entwickler mit sicherheit durchweg allesamt studiert haben werden und auch sicherlich jahrelange erfahrung haben werden, aber dann springen mir täglich einfachste anfängerfehler ins auge, z.b. anstatt sauber ein “if(object==null)” lieber solche witze wie “catch(NullPointerException)”, diese dann auch noch loggen und über einen leider genau so nicht funktionierenden dialog präsentieren, und gleichzeitig damit über exceptions den programmfluss zu steuern (was für sich schon ein absolutes no-go ist), dann zweifel ich manchmal echt daran was für “experten” diese software entwickelt haben

von dem was dort gemacht wurde : GUI-builder und ne grobe vorstellung was man denn so alles brauchen könnte, das kann jeder
von der umsetzung : absolut schlampig, extremste anfänger-fehler, und ironischer weise enthält das jnlp auch noch das wort “test” ?=!
vom qualitätspunkt : welches produkt ? (stürzt gerne mal ohne vorwarnung komplett ab)

was ich mit sagen will : auch wenn man die entwickler sicher als “experten” ansehen würde, die arbeit die sie abgeliefert haben hätte ich mit “grade mal” 8 jahren erfahrung in java deutlich besser hinbekommen
und mich selbst mit “fortgeschritten” zu bezeichnen, naja, in einigen wenigen speziellen fachbereichen, ansonsten : es reicht um ein kleines multiplayer-schiffe versenken übers netz mit nem chat zu basteln, und das sieht dann auf grund mangelnder fähigkeiten im bereich graphik auch noch wie gewollt und nicht gekonnt aus

@koaplannet
du kannst ja gerne mal ne 8h schicht von mir übernehmen und dich dann mit meinen kollegen über den MÜLL der bei uns genutzt wird unterhalten, der von “experten” zusammengeklickt wurde
ich denke dann würdest du verstehen warum hier einige so reagieren

Also ich hielt das für ne normale Frage, die allerdings nicht eindeutig beantwortbar ist.
Als Physiker bräuchte ich für meine Simulationen nicht viel mehr als Variablendeklarationen, Schleifen und Verzweigungen.
Ich hatte sonst nie etwas mit Programmieren am Hut und habe mich ein wenig davor gedrückt. Aber als theoretischer Physiker sollte man das in der heutigen Zeit schon etwas können. Als ich dann anfing, fand ich es erst langweilig und nervig. Mit der Zeit hat es mich aber immer mehr gepackt und ich habe viel mehr gemacht als ich vom Studium und Beruf her bräuchte.
Da ich per se immer auf wissenschaftlichem Niveau sehr abstrakt denken musste, fiel mir der Programmiereinstieg wohl leichter als anderen und kam deshalb ziemlich schnell voran. Ich denke, auch wenn die Physik und Mathematik direkt erstmal nichts mit dem Programmieren zu tun haben, schulte die Beschäftigung damit Kompetenzen, die man auch für das Programmieren benötigt und deshalb habe ich, obwohl ich nicht mal ganz ein Jahr dabei bin, ziemlich viel schaffen können.

Ich möchte halt wissen ab wann man davon reden kann, dass man eine Sprache beherrscht.
Und wieso muss das Feld des Anfängers so breit sein?
Wenn man grade mal weiß was ne for-Schleife ist, ist man ein Anfänger und wenn man die Sachen kann, die ich aufgelistet habe, ist man immer noch ein Anfänger?
Ich bin definitiv kein Profi, nur ab wann ist man kein Anfänger mehr?

Hübsche Frage…
Also wenn du heute nicht mehr da stehst, wo du deine “Reise” begonnen hast, bist du bereits fortgeschritten. :o)

Bei dem, was du schon alles gemacht hast, würde ich sagen, dass du zumindest schon mal kein Anfänger mehr bist. Aber es ist doch meistens so:
If carpenters were hired like programmers
Wenn man dann nur Mahagoni blau und Fichte schweinchenrosa (so wie ich XD) statt Wallnuss schwarz kann, kommt man mit Erfahrung eh nicht weit und den Job bekommt irgend ein Kleingärtner (ok… nichts gegen Kleingärtner, sorry), aber kein Zimmerer.

Du bist fortgeschritten, wenn du das erste Mal ein mulmiges Gefühl hast wegen all der Dinge, die du noch nicht weißt.

Du bist ein Experte, wenn du gelernt hast, dieses Gefühl zu ignorieren.

Ist das wirklich ernst zu nehmen? Es wird philosophisch geredet aber auf meine Frage nach den Programmen wird (bewusst?) nicht eingegangen? Was ist der Sinn und Zweck?