Ist ein Informatik-Abschluss ohne Programmier-Kenntnisse möglich?

Immer wieder begegnen meine Mitarbeiter und ich Informatik-Studenten, die schon mehrere Studiensemester hinter sich haben jedoch wenig, oder auch sehr wenig, in einigen Fälle sogar überhaupt nicht programmieren können. So frage ich mich immer wieder, ob ein Informatik-Studium ohne oder mit nur sehr wenigen Programmier-Kentnisse erfolgreich abgeschlossen werden kann. Ich fürchte, dass die Antwort „ja“ lautet.

Dafür sehe ich drei Gründe. Erstens das Massenstudium ermöglicht es, dass einige Studenten erfolgreich Prüfungen bestehen, die sie eigentlich nicht bestehen sollten. Kurzfristig betrachtet kann man sich für diese Studenten freuen, die Glück gehabt haben. Langfristig aber wird auch dann das Prüfungsglück in ein Berufsunglück münden, wenn diese Studenten im Beruf nicht selbst programmieren. Sie werden zweifelsohne vieles nicht verstehen, was jemand mit einem Informatik-Abschluss verstehen soll! Ein zweiter Grund liegt vermutlich in der Betreuung: Werden zum Beispiel Programmierpraktika mit 100 Studenten von nur zwei Personen betreut, so soll man sich nicht wundern, dass unzureichende Programmierkenntnisse nicht erkannt werden. Ein dritter Grund ist wahrscheinlich der Schweinehund, den Studenten wie alle andere Menschen auch immer wieder zu überwinden haben.

Interessant – und vermutlich für eine gute Lehre nötig – wäre zu wissen, wie viele Informatik-Studenten unter mangelnde Programmierkenntnissen leiden. Eine Minderheit bilden sie sicherlich. So klein dürfte aber diese Minderheit nicht sein. Auch wenn der Prozentsatz der unter Programmier-Insuffizienz leidenden Studenten einstellig wäre, musste dringend gehandelt werden!

FB

9 Responses to “Ist ein Informatik-Abschluss ohne Programmier-Kenntnisse möglich?”

  1. Leo sagt:

    Hallo

    Erst mal müsste man definieren, was mangelnde Programmierkenntnisse sind bzw. was heißt „(wenig) programmieren können“? Sind das mangelnde Kenntnisse bei den „Grundkonzepten“ (z.B. Kontrollstrukturen, Syntax/Semantik, Typisierung…) und deren Anwendung in „kleinen Programmen“? Also alles was man in Info1/2 lernt? Dann stimme ich Ihnen zu, da man die dort gelernten Konzepte (leicht) auf andere Bereiche transferieren kann.

    Oder meinen Sie hier mangelnde Programmierkenntnisse, die man z.B. für das bestehen des Programmierpraktikums benötigt?

    Leo

  2. FB sagt:

    @Leo: Es stimmt, dass man klarstellen muss, welche Programmierkenntnisse nötig sind. Meine Sorge und der Grund für den Artikel ist aber, dass wir Studenten haben, die bei jeder denkbare Definition von nötigen Programmierkenntnisse diese nicht haben! So schlimm ist es in einigen Fällen.

  3. lars sagt:

    Wieviele Pflichtveranstaltungen gibt es in denen man tatsächlich programmieren können muss ? In den ersten beiden Semestern sicher keine. Natürlich werden Grundkonzepte durchgenommen aber zu sehr viel mehr reicht dies auch nicht.

    Hinzu kommt: Selbst wenn man gewisse Kenntnisse erlangt wird leider ein Großteil sich kaum privat intensiver beschäftigen wollen. (Beispiel SML: wieviele Studenten werden nach ProMo tatsächlich selbstständig Erfahrungen in ähnlichen Sprachen sammeln oder selbst größere Anwendungen schreiben ? Ich fürchte dies wird nur eine geringe Anzahl dafür sehr guter Studenten sein)

    Ich finde ebenso, dass es falsch ist mit einer höheren Programmiersprache anzufangen (meist Java). Imho richtig wäre es mit Assembler anzufangen und darauf aufbauend mit Cobol/Fortran/C weiterzumachen. (Ja manchmal heißt lernen auch leiden)
    Anschließen sollte dann eine bereits sehr hardwareferne Sprache (eine OO, eine funktional) wie Java,SML,Smalltalk,Python,Haskell.
    Wünschenswert wären gewisse Einblicke in Compiler(bau) und zunehmende Erfahrung in größeren Projekten. (Es wäre sehr wünschenswert wenn die Uni mehr Kleingruppenprojekte zulässt (und diese selbstverständlich auch mit ECTS-Punkten würdigt) oder gar Einzelarbeiten vergeben werden, deren Lösung ebenso bewertet wird.)

    So wäre eine gewisse Basis sichergestellt und man würde nicht wie momentan anfangen ein Hochhaus auf wenigen Holzbalken stehend zu bauen.

    Die Frage ist, ob all dies im Bachelor überhaupt noch möglich ist, da dessen starre Vorgaben teils nur wenig Spielraum zulassen. Projekte könnten höchstens als Wahlbereich eingebracht werden, nebenbei zum Studium ist aufgrund des Umfangs nur schwer machbar.

    Passend auch ein Joel-Spolsky-Artikel:
    http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

  4. Ben S. sagt:

    Ich verstehe die Verwunderung nicht.
    Vor Beginn des Informatikstudiums wurde mir vor vielen Stellen eingebleut, dass Informatik heutzutage nicht mehr primär Programmieren ist. Ganz im Gegenteil, „ein Informatiker stehe heute zu einem puren Programmier eher wie ein Architekt zu einem Bauarbeiter“…

    Zwar habe ich mittlerweile im Eigenstudium vielerlei Programmiersprachen/-kenntnisse (Haskell, Python, PHP, Scala, Java, SML, Assembler, Actionscript, C, Objective C …) erworben, aber Java und SML ist das einzige, was ich der UNI zuschreiben möchte (und das Wissen war nach den Veranstaltungen auch nur kariös). Nach meinem Bachelorstudium habe ich nämlich eigentlich nur sehr wenig Programmierkenntnisse mitgenommen, da der Studiengang ja auch garnicht mehr darauf ausgelegt ist:

    In meinem Beispiel (Informatik Bachelor) eine kurze, grobe Statistik:
    – Veranstaltungen in denen es primär um die Programmierung geht: 3 (+2 freiwillige)
    – Veranstaltungen die sich mit den direkten Hintergründen/Themen der Programmierung befassen (z.B. Algorithmen, Rechnerarchitekturen/-netze):
    10
    – Veranstaltungen, die sich mit den Metathemen (Mathematik/abstrakte Theorie) befassen: 5
    -Restveranstaltungen (Bachelorarbeit, Seminare, Nebenfach)

    In ECTS gesprochen habe ich ca.
    ~ 30 ECTS für Programmierorientierte Vorlesungen
    ~ 90 ECTS für Metavorlesungen
    ~ 60 ECTS für „den Rest“

    Sprich nur ~16% meines Studiums sind Vorlesungen mit Programmierinhalt. Hierbei muss man jedoch die behandelten Themen in den Vorlesungen wahrscheinlich ähnlich proportioniert aufteilen, da in den selbigen auch oftmals wieder sehr viel Wert auf Theorie gelegt wird, was auch „nicht-Programmieren“ leicht gute Noten ermöglicht (ein guter Freund hat eine 2.0 in einer Klausur geschrieben, die zu einem viertel aus Assemblerprogrammierung bestand. Fun fact: Er hat kein Byte Assembler auf sein Blatt geschrieben…).
    Primär werden Themen behandelt, die das allgemeine (Meta-)Wissen erweitern und weniger das spezielle Programmierwissen…
    Erst gegen Ende meines Studiums hatte ich die Chance kleine Einblicke in praktische Anwendungen von verschiedenen Programmieraspekten zu gewinnen, aber das eigentliche Wissen kam auch wieder nur von der privaten Arbeit.

  5. FB sagt:

    @Ben S.: Ja, ein Informatiker kann sich nicht auf die Programmierung beschränken. Ja, die Programmierung ist ein kleiner Teil des Studiums. Aber ein Informatiker muss diesen Teil gut beherrschen. Der Vergleich Architekt/Bauarbeiter hinkt: Der Architekt muss nicht mauern können. Der Software-Architekt muss aber die .- insbesondere neue -Programmiersprachen gut verstehen. Wie dem auch sei: Ich kann nur warnen. Gerne sprechen wir darüber in zwanzig Jahren, wenn Sie Berufserfahrung gesammelt haben! 😉

  6. FB sagt:

    @Ben: Aus meiner Sicht sollte eine Bachelor-Arbeit ohne Programmierung nicht die Regel, sondern die Ausnahme sein. Es gibt, meine ich, mehr Vorlesungsthemen, die zu Programmierung anregen und in spezialisierte Programmiersprachen einführen:

    – Datenbanksysteme: SQL
    – Web-Techniken/-Informationssystemen: CSS, XQuery, XSLT, SPARQL
    – Wissensrepräsentation: Logikprogrammierung, Ontologie-Sprachen
    – Enterprise-Computing: Regelsprachen, Logik-Programmierumng
    – Verteilte Systeme: Agenten-Programmierung
    – usw.

    Das Lehrangebot ist das eine. Was daraus ein Student macht ist das andere. Meine Empfehlung an die Studenten ist, die Programmierung ernst zu nehmen – und auf keinen Fall zu vernachlässigen.

  7. Ben S. sagt:

    @FB: Nur damit keine Missverständnisse aufkommen, ich bin natürlich auch der Meinung, dass jeder Informatiker ein möglichst breitgefächertes Fachwissen hinsichtlich der Programmierung haben sollte. Dennoch meine ich, das speziell bei dem Bachelor Informatik der LMU wesentlich mehr Wert auf den Grundstrukturen der Informatik als auf der eigentlichen Programmierung liegt, weshalb es nicht weiter verwunderlich ist, dass immer mehr Absolventen wenig Programmierwissen/-erfahrung besitzen und dieses erst in späteren Praktika/Berufen erlangen müssen.

    Meine Einordnung der Fächer war primär natürlich subjektiver Natur, deswegen habe ich die „Vorlesungen, die zu Programmierung anregen“ beispielsweise als „Veranstaltungen, die nicht primär auf Programmieren ausgelegt sind“ betitelt.

    Die von ihnen genannten Veranstaltungen fallen in eben diese Kategorie, da sie eben maximal als Nebeneffekt die Programmierung haben und oftmals auch nicht zwingend notwendig sind. (Datenbanksysteme ist glaube ich ein Sonderfall, da SQL zwar auch in der Klausur abgefragt wurde, aber imho weniger Programmier- als Datenbank-/Anfragesprache ist)

    Des weiteren:
    – Architekten müssen mittlerweile oftmals vor Studienbeginn ein Baustellenpraktikum (oftmals also auch Mauern 🙂 machen. Maschinenbauer der TUM haben sogar mehrere Monate Praktikum (unter anderem ein Schweißpraktikum und Schleifpraktikum)
    Für Informatik wird solch eine Vorarbeit für das Studium nicht verlangt.

    – Der „wissenschaftliche“ Aspekt meiner Bachelorarbeit lag beispielsweise nicht in der Programmierung, sondern in dem algorithmischen Hintergrund. Die Programmierung selber war mehr ein Mittel zum Zweck, weshalb sie auch bei der Benotung nicht direkt berücksichtigt wurde.

    – Es schlichtweg nicht möglich immer die gewünschten Veranstaltungen zu besuchen, da es zeitlich oder platzmäßig nicht einrichtbar ist, weshalb man auf andere Vorlesungen zurückfällt, wenn man nicht gerade eine zweistellige Semesteranzahl im Studium anstrebt.

    -Im Masterstudium verhält sich dies ein bisschen anders, da hier mehr Platz für Praktika eingeplant zu sein scheint

    tl;dr: Natürlich gibt es Veranstaltungen, die zur Programmierung anregen oder Programmierung als Nebeneffekt haben (außer vielleicht funktionale Programmierung…haha….), aber dank Zeitmangel und primär theoretischem Themenschwerpunkt ist es nicht verwunderlich, dass das meiste Programmierwissen nur von den wenigen Vorlesungen stammt, die sich PRIMÄR mit Programmierung beschäftigen.

  8. FB sagt:

    @Ben S.: Der Vergleich zwischen Software-Architekten und Gebäude-Architekten ist bis auf ein kleines Detail gut: Im BereichSoftware verändert sich die Technik viel schnell als im Bauwesen. Ein Jahr reicht für die Software aus, wo im Bauwesen ein oder gar mehrere Jahrzehnte nötig sind. Die extrem schnelle Entwicklung in der Software-Technik verlangt eine ebenfalls schnelle Anpassung von den Software-Architekten, die sie nur dann meistern können, wenn sie programmieren können.

    Die funktionale Programmiersprache – und allgemein die deklarative Programmiersprachen – sind wichtiger als die meisten Informatiker annehmen. Diese Meinung zu begründen würde aber einen ganzen Artikel verlangen…

  9. Ben S. sagt:

    Das mit den funktionalen Programmiersprachen war nur ein Witz, da funktionale Programmiersprachen eben keine Nebeneffekte/Seiteneffekte haben 🙂

Leave a Reply