Frage zur Überarbeitung der Ausbildung
-
Guten Tag,
auch wenn das eventuell ein wenig spät ist, würde ich gerne Ideen entwickeln wie in meinem Betrieb die Ausbildung als Programmierer an Qualität gewinnen kann.
(nicht über den Beitrag hier drunter wundern, ja ich möchte studieren, möchte allerdings auch bevor ich das Unternehmen verlasse einen Beitrag leisten, welcher mich überdauern könnte, da ich immer wieder Schulungen und Unterricht für unsere Auszubildenden geben muss und ich dann ja wegfallen würde.Also meine erste Frage ist, welche Themen sollte eurer Meinung nach in einer Ausbildung zum Fachinformatiker Anwendungsentwicklung behandelt werden? (dabei gesagt, ja die Ausbildung sollte einigermaßen allgemein Gehalten werden, damit fertig ausgebildete nachher in vielen Bereichen arbeiten können, allerdings arbeitet mein Unternehmen im Bereich SAP und ist recht klein und hat im großteil der Fälle ein Interesse daran Azubis nach der Ausbildung (und zu teilen auch wärenddessen) direkt in den produktiven Alltag zu integrieren. Ich muss also eine Gradwanderung machen zwischen vieles lernen (auch was nicht 1 zu 1 in unserem Unternehmen gebraucht wird) als auch Spezialisierung auf Unternehmensaufgaben und Tagesgeschäft. Das erzähle ich nur damit die Antworten ein wenig im Rahmen bleiben. Es muss ja auch schaffbar bleiben für jemanden der im Zweifel auch nur einen Realschulabschluss hat.
Ich suche im Moment erstmal Ideen für den allgemeinen Teil, Unternehmensspezifika sind eh nur durch jemanden im Unternehmen zu definieren.
Aber gerade für das grundlegend nötige Wissen, welches ein Programmierer nach der Ausbildung braucht habe ich mir gedacht macht es Sinn eine breitgestreute Meinung einzuholen von Programmierern aus mehreren Unternehmen und Branchen.Gerade für den allgemeinen Teil hatte ich die Idee eventuell Vorzuschlagen einen dedizierten Projekttag zu machen. Also ein Tag wo Auszubildende Raum Material und Zeit bekommen eigene Projekte umzusetzten, welche mehr auf Lernfaktor und Spaß ausgerichtet sind, als an produktiven Aufgaben. Also ein selbstausgesuchtes Projekt, welches von den Auszubildenden eigenständig formuliert, durchgeführt, dokumentiert und anschließend ein paar ausgelernten Kollegen präsentiert wird.
Grade im Hinblick auf den Spaßfaktor hatte ich eine Idee. Wenn ich das richtig im Kopf habe, gibt es mehrere Produkte a la Mindstorm, bei denen man aus vielen kleinen Teilen verschiedene der Fantasie überlassenen Dinge bauen kann um diese anschließend zu programmieren.
Hat jemand Erfahrung mit solchen Produkten? Also welche davon auch tatsächlich mit Programmiersprachen a la Java C# C oder C++ Programmiert werden können und wie dort die generelle Verarbeitung der Komponenten ist?
Eventuell hat ja wer Erfahrungswerte welches Produkt für einen solchen Fall zu empfehlen wäre.Ich würde mich sehr freuen wenn sich auch für diese Anfrage jemand aus dem Forum Zeit nehmen könnte.
Vielen Dank im vorraus.
PS: tut mir leid das meine Threads immer solche Aufsätze sind xD
-
Bartlebe schrieb:
Grade im Hinblick auf den Spaßfaktor hatte ich eine Idee. Wenn ich das richtig im Kopf habe, gibt es mehrere Produkte a la Mindstorm, bei denen man aus vielen kleinen Teilen verschiedene der Fantasie überlassenen Dinge bauen kann um diese anschließend zu programmieren.
Hmm, und inwiefern hilft das, die Ausbildung allgemein zu halten? Das hört sich für mich eher nach etwas an, was zwar Spaß macht, aber eher für Laien lehrreich wäre, und nicht für Fachinformatiker.
-
Mir ging es eigentlich eher darum nicht immer nur trockenes Betriebsnahes zu machen, sondern programmieren mit Spaß zu kombinieren.
Mit den Sensoren und Motoren kann man ja durchaus auch dinge bauen die nicht 0 8 15 nach Anleitung sind so wie ich das verstanden habe.
Mit ein wenig Fantasie könnte man ja auch durchaus komplexere Dinge bauen.
Genauso wenn man das ganze mit richtigem C++ Code zum Beispiel Programmieren könnte wären das gute Übungen um z.B. wiederverwertbarkeit von Code zu trainieren.
Ein Ding gebaut. Code geschrieben. Etwas anderes gebaut, was könnt ihr noch von eurem Code verwenden?Ich habe wie gesagt keinerlei Erfahrung mit diesen Kits. So habe ich mir das jedenfalls vorgestellt.
Ich könnte mir vorstellen das die Grunddinge durchaus nur für absolute Anfänger interessant sind ja. Habe aber Lego bishher immer so kennengelernt, dass da mit genug Fantasie nahezu alles geht. Würde mich wundern wenn das bei Mindstorm anders wäre, lasse mich aber gerne eines besseren belehren.Ich bin da ja auch nicht nur auf dieses Produkt festgelegt. Das war nur grade das einzige das ich im Kopf hatte. Deswegen auch die Frage ob jemand Erfahrung mit solchen Kits hat und welche man da für solche Anwendungsfälle Empfehlen kann, oder ob das überhaupt geht.
Ganz abgesehen davon ist man am Anfang der Ausbildung ja im Endeffekt noch ein Laie, hatte also den Gedanken gehabt, dass wenn das so gehen sollte man das gut weiterführen kann. Am Anfang halt einfache Dinge. Am Ende könnte man da dann auch ziemlich komplex werden (hatte z.B. mal auf der CEBIT einen Roboter gesehen der bei leichten stößen nicht umfällt und sich selbst wieder ins gleichgewicht bringt. Das ganze war mit Mindstorm umgesetzt)
-
Bartlebe schrieb:
Mit ein wenig Fantasie könnte man ja auch durchaus komplexere Dinge bauen.
Genauso wenn man das ganze mit richtigem C++ Code zum Beispiel Programmieren könnte wären das gute Übungen um z.B. wiederverwertbarkeit von Code zu trainieren.
Ein Ding gebaut. Code geschrieben. Etwas anderes gebaut, was könnt ihr noch von eurem Code verwenden?Da wär ich skeptisch. Selbst wenn man da etwas komplexeres hinbekommt und auch etwas daraus lernen kann, ist es meiner Ansicht nach bei weitem nicht die beste Möglichkeit.
Deine Frage an sich ist nicht einfach zu beantworten. Mir ist auch nicht klar, worauf du im Endeffekt hinauswillst und was die Rahmenbedingungen sind. Du hast jetzt z.B. geschrieben, dass es dir um Azubis am Anfang ihrer Ausbildung geht, das hatte ich vorher z.B. nicht so verstanden.
Ein Problem, das ich bei Fachinformatikern sehe, ist dass ihre Ausbildung sehr stark von der jeweiligen Firma abhängt und dann u.U. nicht umfangreich oder komplex genug ist, als dass sie gleich sinnvoll in anderen Firmen arbeiten könnten.
Ich habe früher in einer kleineren Firma gearbeitet und wir haben Enterprise Anwendungen in C# geschrieben. Und als wirklich gut würde ich die Ausbildung der Fachinformatiker nicht bezeichnen. Viel Zeit mussten sie mit Routineaufgaben verbringen, z.B. Datenbank installieren, ERP System installieren, Vorlagen erstellen usw... Dann haben sie noch etwas programmiert, aber nicht viel und nichts wirklich komplexes. Auch eher etwas fertiggemacht, was andere angefangen haben. Das was halt das, was wir in der Firma gebraucht haben und haben wollten. Aber es war nicht "allgemein" genug, wenn so ein Fachinformatiker in eine andere Firma gehen würde, wäre er nicht gut genug ausgebildet.
Jetzt arbeite ich in einer größeren Firma und wir machen C++. Wir haben einfach sehr viel zu tun, das Team ist zu klein für die Größe der Software. Deswegen sind Azubis vollwertige Mitarbeiter, die einfach weniger verdienen Jedenfalls programmieren sie sehr intensiv und haben viele abwechslungsreiche Aufgaben. Dadurch sammeln sie viel mehr Erfahrung und haben am Ende der Ausbildung einfach schon so viel programmiert (und sind von erfahreneren Kollegen angeleitet worden), dass sie gute Programmierer sind. Es kann auch sein, dass sie dabei auch "Theorie" lernen, mit der viele andere Fachinformatiker vielleicht nicht in Berührung kommen. Dass man bei unseren Aufgaben etwas über formale Sprachen und Parser oder Graphentheorie wissen muss, ist nicht ungewöhnlich. Das wird dann bei Bedarf erklärt und die können sich dann in das Thema vertiefen.
Ich finde, das funktioniert einfach besser. Aber auch einfach nur, weil wir das halt so brauchen und das bei uns so läuft. Würden wir kleine langweilige Software ohne Abwechslung schreiben, würde es halt nicht funktionieren.
-
Bartlebe schrieb:
Also meine erste Frage ist, welche Themen sollte eurer Meinung nach in einer Ausbildung zum Fachinformatiker Anwendungsentwicklung behandelt werden?
Grundlagen, Grundlagen, und dann die Grundlagen der Grundlagen.
Welche Daten bekomme ich, wie stelle ich sie da, wie gebe ich sie wieder ab?
MVC. MVC und MVC rekursiv. Bis zum Verrecken.Unfallverhütungsmaßnahmen versteht man besser, wenn man versteht, weswegen man sie erfunden hat. Man muss auf die Schnauze fliegen und es muss weh tun. Programmieren lernen bedeutet Frust aushalten. Programmieren ist Schach spielen: Wenn man weiß, wie man von welchen Figuren geschlagen wird, stellt sich die Frage, wie man seine Figuren nach vorne bewegen kann um das Ziel zu erreichen. Und dabei auch vorauszuplanen, welche Opfer auf dem Weg erforderlich sind. Programmieren ist ein aufwendiges Strategiespiel.
Im Vergleich zum Schach, wo man mal eben die Hand ausstreckt und eine Figur versetzt bedeutet ein einzelner Zug in der Programmierung oftmals wochenlange Arbeit. Entsprechend muss man Züge voraus abschätzen können, bevor man ein paar Wochen/Monate/Jahre programmiert und dann feststellt, dass man einen gegnerischen Springer übersehen hat - siehe Jungfernflug der Ariane-5-Rakete.
Das ist nichts, was man mal eben so lernt. Ich habe nie eine Software verloren, aber wenn man Wochenlang Vollzeit nach Fehlern sucht, dann ist das frustrierend. Aber man lernt daraus.
Dieses Wochenende habe ich viel Zeit damit verbracht, das Typsystem meines selbstgeschriebenen Compilers auszutauchen. Ein Unterprojekt, was ich seit Jahren andenke. Das ist eine Aktion, die nicht an einem Stück geschehen kann. Ich programmiere nun also auch "Opferroutinen", die nur dafür da sind, den Code lauffähig und testbar zu halten, obwohl das neue Typsystem noch nicht lauffähig ist, weil es an anderen Stellen noch gar nicht verwendet wird. Der Code wird teilweise also später wieder weggeworfen. Mit diesem Bauernopfer schaffe ich mir Platz, um wichtigere Figuren günstiger zu positionieren.
Bei großen Projekten keine oder nur eine überschaubare Zahl von Fehlern zu gestalten, den Compiler zu nutzen, Fehler zu vermeiden, und aufwendigen Code zu schreiben, der nur für eine kurze Übergangszeit Qualität sichert, sind Dinge, die man nicht an kleinen Projekten lernen kann.Um Qualität zu sichern, muss man lernen, wie man Qualität verhindert. Versteht man, was man nicht machen darf, kann man sich recht gut vorstellen, was man machen kann, ohne dass es Mist wird.
Darauf kann man gut Theorie aufbauen.
Der FIAE bietet allerdings mit Übungsprojekten nicht die Möglichkeit, Frust zu verstehen. Die Abschlussarbeit nach IHK hat einen Zeitaufwand von 70 Stunden für Planung, Dokumentation, Implementation und Qualitätssicherung.
Den Wechsel des Typsystems schätze ich auf 80-120 Stunden ein, von denen ich jetzt etwa 40 Stunden hinter mir habe, ohne Planung, Dokumentation brauche ich hier für nicht und den Großteil der QS übernehmen größtenteils hunderte bereits vorher geschriebene Tests.Wenn ich jetzt einen grundlegenden Fehler mache, ist die Software kaputt. Kann ich die Fehler nicht beheben, was ja auch viel Zeit kostet, das überhaupt herauszufinden, weil man erst denkt dass man das schnell hinbekommt und sich so Fehler um Fehler einbaut. Schlussendlich muss man das System zurücksetzen und all die Zeit ist verschwendet, ohne dass man einen Fortschritt geleistet hat.
Arbeitet man mit mehreren zusammen, haben andere vielleicht neue Features auf die Fehler aufgebaut und es stellt sich die Frage, wie man die Fehler herausoperiert bekommt ohne die Features komplett zu zerstören.Die Grundlage sollte also sein, zu verstehen, was Fehler sind, was Fehler bedeuten und wie man sie vermeidet. Und dafür muss man die Grundlagen verstehen und Patterns begründen können. Spaß macht vermutlich erst die Anwendung des Wissens, der Wissenserwerb ist eher frustrierend.
Die Nutzung von Spaßverstärkern, wie Robotern etc. ergeben also nur dann einen Sinn, wenn sie dazu genutzt wird, Fehler zu provozieren, die die Auszubildenden machen und dann verstehen müssen.