Sie haben das Potential dafür, weil sie eben Softwareentwicklung lernen und nicht programmieren. Dass da auch "Schlappen" dabei sind, liegt auf der Hand. In jedem Beruf gibt es gute und schlechte Leute.DeathAndPain hat geschrieben: ↑10.10.2024 15:44Langer Rede kurzer Sinn: Deine Überzeugung, dass Fachleute mit entsprechendem Berufsabschluss bessere Leistungen bieten müssen als das, was man sich selber erarbeiten kann, teile ich keineswegs.
DeathAndPain hat geschrieben: ↑10.10.2024 15:44Nach meiner Erfahrung ist es immer noch so, dass gute ABAP-Entwickler ein knappes Gut sind.
Oh ja! Von denen lerne ich noch eine Menge von dem, was man als Wirtschaftsinformatiker oder Informatiker so lernt. Und sie lernen von meinen Erfahrungen.DeathAndPain hat geschrieben: ↑10.10.2024 15:44Deshalb sind die Gehälter auch so hoch, und deswegen akzeptiert der Markt auch mittelmäßige und schlechte Leute - weil er halt nichts anderes bekommt. Ich frage mich wirklich, woher Du und black_adept die Überzeugung nehmen, dass die neuen (jungen) Leute gut seien. Kennt ihr so viele gute Entwickler?
Ja - ich kenne reichlich davon. Ich denke mal, dass ich selber auch halbwegs brauchbar in diesem Bereich bin. Allerdings wirst du auch von mir größtenteils Klassen mit maximal 1 Instanz finden weil das eben in den allermeisten Fällen hinreichend ist. Wie weiter oben schon mal erwähnt: KISS. Das hilft auch denjenigen, die das später warten müssen, wenn diese eben nicht so firm im OO sind. Irgendwo hatte doch mal jemand geschrieben, dass es deutlich leichter ist VA02 zu debuggen als ME22N. Und das liegt am OO-Ansatz in letzterer.DeathAndPain hat geschrieben: ↑10.10.2024 13:40Ehrlich gemeinte Frage: Denkst Du das nur, oder kennst Du reichlich davon? Ich urteile anhand der Codes, die ich zu sehen bekomme. Solides OO mit mehr als einer Instanz pro Klasse und dann womöglich sogar noch nachvollziehbar programmiert statt leere Methodenschnittstellen und alles in globale Variablen mit Etikett "Attribut" dran - das bekomme ich so gut wie gar nicht zu sehen.
Als wenn prozedurale Programmierung verwerflich sei. Gerade im SAP Umfeld ist es nach meiner Erfahrung so, dass die Aufgaben, die man bekommt linear gestrickt sind bzw. sehr gut so gelöst werden können.ralf.wenzel hat geschrieben: ↑10.10.2024 13:48Und ja: Ich habe schon Kunden abgelehnt, weil die nach Hausregel stur prozedural programmieren. Da hat der IT-Leiter dumm aus der Wäsche geguckt, aber ich hab das durchgezogen.
Ich habe nie gesagt, dass nur die neuen Leute gut seien. Und das mit den "gute ABAP-Entwickler sind knappes Gut": Dem kann ich insofern zustimmen, als das es einfach so wenig ABAP-Entwickler gibt. Und da hast du dann die Standardverteilung von gut bis schlecht. Denn wer kommt denn schon in die ABAP-Entwicklung. Zu Hause kann man es genaugenommen nicht lernen/üben, zufällig kommt auch kaum damit in Berührung und im Studium hat ein mir bekannter Junior, der letzens seinen Master gemacht hat, davon auch nicht mal am Rande was mitbekommen. Ich glaube einfach, dass auf Grund des knappen Angebots und der Tatsache, dass man als guter SAP-Entwickler eben nicht nur gut coden können muss sondern zusätzlich einfach viel Erfahrung damit haben muss, wie SAP funktioniert, die Situation ist wie von dir beschrieben.DeathAndPain hat geschrieben: ↑10.10.2024 15:44Nach meiner Erfahrung ist es immer noch so, dass gute ABAP-Entwickler ein knappes Gut sind. Deshalb sind die Gehälter auch so hoch, und deswegen akzeptiert der Markt auch mittelmäßige und schlechte Leute - weil er halt nichts anderes bekommt. Ich frage mich wirklich, woher Du und black_adept die Überzeugung nehmen, dass die neuen (jungen) Leute gut seien. Kennt ihr so viele gute Entwickler? Mir laufen irgendwie fast keine über den Weg, auch nicht indirekt (dass ich fremden Code zu sehen bekommen würde, der was taugt).
Nicht verwerflich. Aber sie hat Grenzen, die OO nicht hat. Und wenn ich mich für ein Paradigma entscheide, dann für das, das mir mehr Möglichkeiten bietet.black_adept hat geschrieben: ↑10.10.2024 16:09Als wenn prozedurale Programmierung verwerflich sei. Gerade im SAP Umfeld ist es nach meiner Erfahrung so, dass die Aufgaben, die man bekommt linear gestrickt sind bzw. sehr gut so gelöst werden können.ralf.wenzel hat geschrieben: ↑10.10.2024 13:48Und ja: Ich habe schon Kunden abgelehnt, weil die nach Hausregel stur prozedural programmieren. Da hat der IT-Leiter dumm aus der Wäsche geguckt, aber ich hab das durchgezogen.
Wenn Du nicht beurteilen kannst, was seine autodidaktisch erlangten Fähigkeiten taugen, dann ist es sicher der solidere Ansatz, im Zweifel zu jemandem zu gehen, der das beruflich macht. Ich wollte ja nur darauf hinaus, dass autodidaktisch erlangte Fähigkeiten sich mitnichten immer vor denen verstecken müssen, die man in einer Berufsausbildung erlangt. Und wenn man es selber macht, kann man - wenn man ehrlich zu sich selber ist - schon beurteilen, auf welchem Niveau man sich befindet.Ralf hat geschrieben:Wenn ich mein Auto reparieren lassen wollen würde, würde ich aber in eine professionelle Werkstatt gehen und nicht meinen Nachbarn fragen, der autodidaktisch sich was beigebracht hat.
Das halte ich für einen Widerspruch, denn gerade KISS besagt doch, dass in dem Fall, in dem Du genau weißt, dass Du nur eine Instanz brauchst, eine statische Klasse keine Nachteile hat, aber übersichtlicher zu handhaben ist.black_adept hat geschrieben:Allerdings wirst du auch von mir größtenteils Klassen mit maximal 1 Instanz finden weil das eben in den allermeisten Fällen hinreichend ist. Wie weiter oben schon mal erwähnt: KISS.
Genau so ist es. Wobei es eben nicht nur mit "firm in OO" zu tun hat, sondern daran, dass fremder OO-Code in aller Regel generell schwerer zu verstehen ist, eben weil mit OO die Rückkehr der globalen Variablen wieder Einzug gehalten hat. Damit sind die Datenflüsse im Programm nicht mehr so transparent, wie wenn sie durch die Schnittstellen der Unterprogramme erfolgen, und wenn man das Programm nicht selbst geschrieben hat, dann ist es halt schwierig nachzuvollziehen, wozu eine bestimmte globale Variable da ist, wann und nach welchen Kriterien sie ihre Werte erhält und wo diese Werte später überall genutzt werden. Man kann versuchen, sich über Verwendungsnachweise heranzutasten, aber das ist oft ein sehr hartes Brot.black_adept hat geschrieben:Das hilft auch denjenigen, die das später warten müssen, wenn diese eben nicht so firm im OO sind. Irgendwo hatte doch mal jemand geschrieben, dass es deutlich leichter ist VA02 zu debuggen als ME22N. Und das liegt am OO-Ansatz in letzterer.
Theoretisch schon, denn meines Wissens kann man sich privat kostenlos einen SAP-Server zu spielen aufsetzen. Da sind dann Beschränkungen drauf, die das für einen professionellen Einsatz ungeeignet machen (ich weiß nicht mehr die Details, aber es war sowas wie "maximal 5 Benutzer"). Aber zum Üben mit ABAP, Datenbank usw. ist das perfekt geeignet.black_adept hat geschrieben:Denn wer kommt denn schon in die ABAP-Entwicklung. Zu Hause kann man es genaugenommen nicht lernen/üben
Nach meiner Erinnerung bieten das diverse Hochschulen an (ohne dass ich jetzt aus dem Kopf ein Beispiel nennen könnte). Allerdings bin ich immer erschreckt, wenn jemand, der offenbar irgendwo an einem ABAP-Lehrgang teilnimmt, hier im Forum auftaucht und Fragen zu seinen Aufgaben stellt, denn diesen Aufgabenstellungen sind immer in antikem ABAP gehalten. Anscheinend wird veraltetes ABAP immer noch überall unterrichtet. Und das finde ich sehr ärgerlich.black_adept hat geschrieben:Denn wer kommt denn schon in die ABAP-Entwicklung.
...oder wenn man einfach kein Eclipse nutzen kann. Zu 90% gehen ich bei Kunden via Citrix auf das System. Dort ist zu 100% kein Eclipse installiert. Auch als ich den Citrix Desktop hatte, wurde mir da kein Eclipse eingerichtet.Oder wenn jemand nicht Eclipse einsetzen möchte mit dem einzigen Grund, dass er halt so an die Optik der SE38 gewöhnt ist.
Richtig.DeathAndPain hat geschrieben: ↑11.10.2024 10:54Was man nur in der IT-Branche halt haben muss und was vielen ABAP-Entwicklern abgeht, ist die Bereitschaft, mit der Zeit zu gehen.
DeathAndPain hat geschrieben: ↑11.10.2024 10:54Ich halte es aber für legitim, die Werkzeuge an die eigene Arbeitsweise anzupassen, wenn man sich damit wohl fühlt.
....weil das Coding nichts über das Beziehungswissen der Objekte verrät. Deshalb ist eine Doku über das Coding hinaus bei OO-Anwendungen eben viel wichtiger als bei prozedural programmiertem Code. Das vergessen leider viele, weil sie keine Dokus schreiben wollen.DeathAndPain hat geschrieben: ↑11.10.2024 10:54Genau so ist es. Wobei es eben nicht nur mit "firm in OO" zu tun hat, sondern daran, dass fremder OO-Code in aller Regel generell schwerer zu verstehen istblack_adept hat geschrieben:Irgendwo hatte doch mal jemand geschrieben, dass es deutlich leichter ist VA02 zu debuggen als ME22N. Und das liegt am OO-Ansatz in letzterer.
Also was für Nerds....DeathAndPain hat geschrieben: ↑11.10.2024 10:54Theoretisch schon, denn meines Wissens kann man sich privat kostenlos einen SAP-Server zu spielen aufsetzen.black_adept hat geschrieben:Denn wer kommt denn schon in die ABAP-Entwicklung. Zu Hause kann man es genaugenommen nicht lernen/üben
Weil erstens auch die, die schulen, nicht mit der Zeit gehen und weil man prozedural einfach schneller Lösungen für kleine Probleme bekommt.DeathAndPain hat geschrieben: ↑11.10.2024 10:54Anscheinend wird veraltetes ABAP immer noch überall unterrichtet. Und das finde ich sehr ärgerlich.
Da gebe ich dir vollkommen recht. ABER:DeathAndPain hat geschrieben: ↑11.10.2024 10:54Eine Sache, die mich auch maximal aufregt, besteht darin, dass ich eigentlich nie Code zu sehen bekomme, in denen sortierte oder gar gehashte Tabellen verwendet werden.
Sind wir das nicht alle? 😁Also was für Nerds....
Du sagst doch selbst, dass mein auf statischen Klassen aufsetzender Ansatz letztlich prozedural ist. Warum also nicht diesen wählen? Da hat man zumindest schon mal moderne Syntax und fängt nicht mit Formroutinen an. Wenn die Schüler das drauf haben, dann kann man später immer noch hingehen und ihnen zeigen, was eine Instanziierung ist und was man mit Klassen noch so alles machen kann und kann das schrittweise weiter ausbauen.Ich kann einen einfachen SELECT auf SFLIGHT lehren und den immer weiter aufbohren mit allen möglichen Optionen. Da haben die Leute dann schon genug zu lernen.
Wenn ich denen jetzt auch noch zeigen muss, dass sie eine Klasse brauchen hinter einem Interface, damit sie einen datenbankunabhängigen Unit-Test dafür schreiben können, rennen die Leute schreiend weg.
Ich meine mich zu erinnern, dass Du damals gesagt hast, eine Standardtabelle ist für Dich nichts anderes als eine Liste. Diese Definition wurde damals kontrovers diskutiert, aber ich persönlich bin da durchaus Deiner Meinung. Es gibt aber genug Fälle, in denen sowas ausreichend und adäquat ist, z.B.:Ich habe HIER mal geschrieben, dass es eigentlich selten eine Existenzgrundlage für Standardtabellen gibt.
Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag (Insgesamt 2):
gtoXX • DeathAndPain
Für mich hast Du OO überhaupt nicht verstanden und auch Softwarearchitektur nicht. Ein Teil der Aussagen halte ich für gefährlich bis hin zu absolutem Unsinn.DeathAndPain hat geschrieben: ↑10.10.2024 01:24
Vererbung ist die Möglichkeit, Klassen unter neuem Namen wiederzuverwenden und dabei bestimmte Methoden zu redefinieren (was in aller Regel auf Spezialisierung hinausläuft). Dafür ist das TOP-Include einer Funktionsgruppe komplett ungeeignet.
Eine Behauptung, die Du nicht belegst, während das Gegenteil offensichtlich ist: Jeder Befehl, also auch das Erzeugen einer Instanz, kostet Rechenzeit. Das ist mehr Rechenzeit, als stattdessen nichts zu machen, soviel steht fest. Und "stattdessen nichts machen" ist genau das, was bei einer statischen Klasse nötig ist. In dem Fall, in dem nur eine einzige Instanz erforderlich ist (und nur von diesem Fall habe ich gesprochen) ist beides funktional gleichwertig, denn eine statische Klasse hat eine implizite Instanz, die nicht händisch erzeugt werden muss. Zugleich ist die Lesbarkeit besser, da der dann nutzlose Objekterzeugungswasserkopf im Quellcode fehlt.
Als kleines Bonbon erlauben statische Methoden die Nutzung des STATICS-Befehls, was zuweilen nützlich sein kann. Kann man mit Objekten natürlich nachbauen, aber nicht so einfach.
In dem Moment, in dem Du mehrere Objektinstanzen benötigst, ja. Ich habe explizit von dem Fall gesprochen, in dem im ganzen Programm stets nur eine einzige Instanz der Klasse angelegt wird. In den "objektorientierten" Programmen, die ich von anderen zu sehen bekomme, kommt dies nicht nur vor, sondern ist sogar der erdrückende Löwenanteil. Und das finde ich bescheuert; dann brauche ich keine Instanziierung.
Dafür ist bei Methoden ein EXPORTING gleichzeitig ein CHANGING, jedenfalls solange nicht explizit Wertübergabe definiert ist.
Aber das nur am Rande. Wir sind uns einig, dass es sich mit Methoden bedeutend schöner arbeitet als mit Formroutinen.
Da bin ich vom Gegenteil überzeugt, aus Gründen, die ich im Verlauf dieses Threads bereits dargelegt habe. Was Du mutmaßlich nicht gelesen hast.
Um Himmels willen, was für eine Aussage!!! Das kann ich nicht glauben, dass jemand ernsthaft sowas behauptet.
Das haben diese Leute nicht, aber das wirft ein Schlaglicht auf den Umstand, das nahe an 0% der ABAP-Programmierer OO verstanden haben. Und das wiederum wirft ein Schlaglicht auf OO, denn eine Sprache, die so akademisch ist, dass keiner ihrer praktischen Verwender in der realen Welt sie wirklich versteht und weiß, wie er damit umgehen muss, ist eben genau das: akademisch und nicht praxistauglich. Auch wenn das verbleibende Prozent der Entwickler, die es verinnerlicht haben, tolle Sachen damit veranstalten kann.
Nach meiner Überzeugung kann es dabei auch eine Rolle spielen, dass das Bildungsniveau in Deutschland aus Gründen, die man leider nicht mehr laut diskutieren darf, förmlich in sich zusammengebrochen ist. Das sehe ich sehr schön, wenn ich mir anschaue, was meine Kinder im Gymnasium lernen und was ich damals gelernt habe. Damals war Mathematik im Gymnasium nahezu 100% Beweise führen, gemäß dem Prinzip, dass man an der Realschule lernt, Kochrezepte korrekt anzuwenden und am Gymnasium, eigenständig zu denken und Lösungswege zu erarbeiten (statt sie nur anzuwenden). Die heutigen Mathematiklehrpläne sehen am Gymnasium keine Beweise mehr vor. Offenbar sieht man sich nicht mehr in der Lage, die Schüler zu befähigen, eigenständig eine mathematische Aussage zu beweisen. Wie sollen solche Absolventen dann eigenständig Konzepte wie OO kreativ anwenden können? Es ist einfach nur traurig. Deutschland hat keine Bodenschätze. Das Bildungsniveau ist das Einzige, was uns je ausgezeichnet hat. Ich sehe keinen Grund, weshalb Deutschland perspektivisch noch in der Lage sein sollte, seine besondere wirtschaftliche Stärke aufrechtzuerhalten. Aber ich schweife ab.
Und das Objekt kann 100 Methoden haben, die dies tun. Mit der gleichen Berechtigung könnte ich als herkömmlicher Programmierer sagen: Mein Programm selbst verwaltet seine globalen Variablen. In irgendeiner meiner Formroutinen haben sie ihre Werte erhalten (von denen Du jetzt an einer bestimmten Programmstelle grübelst, wo sie herkommen und was sie an anderer Stelle im weiteren Programmverlauf bewirken werden).Woher die Werte eines Attributs kommen ist per OO Definition klar : Nur das Objekt selbst, verwaltet seine Attribute.
Nur sind die Attribute auch dann nur dann konsistent, wenn es keine Programmierfehler gibt. Dies zu beurteilen, wenn die Klasse nicht von einem selber ist, ist alles andere als trivial. Und selbst dann kann solch fremder Code unfassbar schwer zu verstehen sein. Das ist genau die gleiche Sch… wie seinerzeit mit den herkömmlichen globalen Variablen. Genau deshalb hat man seinerzeit zu recht gesagt, die Werte, die ein ein Unterprogramm nutzt oder verändert, gehören in seine Schnittstelle. Auch wenn dieses Unterprogramm im privaten Teil der Klasse sitzt.
Du gehst von einem Objekt als einer Black Box aus, deren Inhalt und Funktionsweise von außen keinen was angeht. Das funktioniert aber nur unter zwei Prämissen: erstens musst Du genau wissen, wie man das Objekt benutzt und zweitens darfst Du Dich nie in der Verlegenheit befinden, am Code des Objektes (der Klasse) etwas ändern zu müssen. Spätestens dann musst Du die Datenflüsse innerhalb der Klasse nämlich überblicken, und das ist bei Attributen, die in Wahrheit einfach nur klassenglobale Variablen sind, ein Albtraum.
Wer eine neue Tabelle ohne GUID anlegt und im schlimmsten Fall noch den Flaschenhals Nummerkreisobjekt nutzt, gehört eine Woche an den Dorfpranger.
Das würde ich Dir sofort gleich tun. Soviel kann mir gar keiner zahlen, das zu tun.ralf.wenzel hat geschrieben: ↑10.10.2024 13:48
Darum finde ich es nicht vermessen, von einem Softwareentwickler im Jahre 2024 (egal, wie lange der in seinem Job arbeitet) dass er mit Objektorientierung was anfangen kann. Und ja: Ich habe schon Kunden abgelehnt, weil die nach Hausregel stur prozedural programmieren. Da hat der IT-Leiter dumm aus der Wäsche geguckt, aber ich hab das durchgezogen.
Ralf
Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
DeathAndPain
Manchmal kann ich bei Unsinn nicht anders. Aber ich mach jetzt eh Feierabend und gehe auf ein Bier.ralf.wenzel hat geschrieben: ↑11.10.2024 22:49gtoXX: Zwei Tipps: Bitte mach mal das Vollzitat oben raus. Und den Regulars hier würde ich mit mehr Respekt gegenübertreten. Die, mit denen man so reden sollte, sind lange weg 😉
Ralf
Der Teil war das Highlight. Und ausgerechnet er wirft mir vor, was nicht verstanden zu haben! 🤣 Aber ich werde jetzt mal black_adepts Rat folgen und den Troll nicht füttern. Das ist echt zu niveaulos, was er hier beiträgt. Möge jeder sich seine eigene Meinung dazu machen.