Clean Code Developer
Posts 1-10 of 18
- Back
- Next
-
Rusi FilipovThe company name is only visible to registered members.CCD im Informatikstudium
In meinem Studium habe ich mich u.a. für Algorithmen interessiert. Die Projekte waren klein, höchstens 10 KLOC und CCD war ein nice-to-have, aber kein Wert. Wichtig war dass es am Ende funktionierte. Niemand schrieb Unit-Tests, auch die besten Profs nicht, geschweige denn TDD. Dann kam der Industrie-Job, und die Einsicht - in zwei Jahren habe ich zwei mal algorithmische Probleme gelöst, das wars. Code-Analyse, Design, Korrektheit und Wartbarkeit dominierten in der täglichen Arbeit.
CCD wird an Hochschulen etwas unterschätzt, findet ihr nicht?
Wäre eine dedizierte Lehrveranstaltung für zum Thema CCD sinnvoll?
This post was modified on 27 Dec 2011 at 11:36 pm.- 27 Dec 2011, 11:33 pm
-
Ralf Westphal Premium Member Group moderatorThe company name is only visible to registered members.Re: CCD im Informatikstudium
Klar wäre CCD im Studium, nein, in jeder Ausbildung wichtig. Und nicht als Kurs nebenbei, womöglich optional, sondern als Grundlage. CCD gibt den Rahmen vor, in dem Algorithmen und Datenstrukturen aufgehängt werden.
Die Ausbildung steht also heute auf dem Kopf. Sie ist in vielen Teilen auf dem Stand der 1970/1980er. Dass man heute mit Eclipse und Java lehrt statt mit Pascal und Kommandozeilencompiler, macht da keinen Unterschied.
Die universitäre Ausbildung hat aber auch keinen anderen Anspruch. Sie will ja Informatiker ausbilden und keine Softwareentwickler. Ihr Ziel sind Akademiker, keine Praktiker. An der FH oder BA sollte es aber anders aussehen. Kann ja aber nicht. Denn woher sollen denn Profs das reale Leben kennen?
Vielleicht sollte für jeden Prof vor Berufung mindestens ein praktisches Jahr in der Industrie Pflicht sein? :-)
- 28 Dec 2011, 09:25 am
-
Rusi FilipovThe company name is only visible to registered members.Re^2: CCD im Informatikstudium
An meiner FH waren alle Profs mit mehrjährigem Hintergrund in der Industrie und die Lehre, und waren ziemlich engagiert. Sie orientieren die Lehre prinzipiell an den Bedürfnissen der Industrie. Vielleicht liegt es auch an den Signalen aus der Industrie, die unterschätzt wie wichtig eine saubere Codebase ist.
Und ja, es sollte als Grundlage vielleicht über zwei Semestern vermittelt werden. Es wird auch viel Bullshit als Pflichtfach (für pure Informatiker) vermittelt, wir hatten z.b BWL, Recht und ERP-Systeme+SAP R3 Bedienung als Pflichtfach, da habe ich gekotzt. Dafür gab es eine sehr gute Vorlesung "Software-Qualität", die aber als Wahlfach, im Master kam.
- 29 Dec 2011, 09:02 am
-
Gregor ElkeThe company name is only visible to registered members.Re^3: CCD im Informatikstudium
Rusi Filipov schrieb:
An meiner FH waren alle Profs mit mehrjährigem Hintergrund in der Industrie und die Lehre, und waren ziemlich engagiert. Sie orientieren die Lehre prinzipiell an den Bedürfnissen der Industrie. Das kann ich für die HAW-Hamburg ebenfalls so bestätigien, zumindest für die weitesten Teile.
Vielleicht liegt es auch an den Signalen aus der Industrie, die unterschätzt wie wichtig eine saubere Codebase ist. Das halte ich ebenfalls für wahr. Ich habe zwar noch nciht so viele Softwarhäuser erlebt, aber ich vermute, dass vieles was CCD bietet wirklich verkannt, und/oder durch klassische Verträge + geringes Know-How an CCD unterdrückt ird
Allerdings gab es bei uns auch nur 2 Semester, die sich explizit mit Software Entwicklung (und nicht mit Programmieren im weiterem Sinne) beschäftigt haben. hier allerdings nicht mit CCD, und im schnelldurchlauf, mit einer Praktischen Übung über 1 Semester (in der es auch mehr um klassisches Projektvorgehen mit Milestones und evolutionärem vorgehen.)
Allerdings muss man auch bedenken, dass die Unis nun mal wirklcih Forscher ausbilden wollen, und gleichzeitig sehen sich viele FHs und TUs in Konkurenz mit den Unis, denn auch diese haben einen Forschungsauftrag, und brauchen Forschungsgelder.
Trotzdem sollte CCD wirklcih Thema werden, denn nur so hat man die Chance damit im (Bachelor/Master)Studium überhaupt damit in berührung zu kommen.
Gruß
Gregor
- 02 Jan 2012, 09:50 am
-
Post visible to registered members
-
Ralf Westphal Premium Member Group moderatorThe company name is only visible to registered members.Re^5: CCD im Informatikstudium
Das ist natürlich irgendwie schön, dass es da einen Clean Code Day gegeben hat.
Aber Leute, lasst uns doch realistisch sein: 1 Tag von vielleicht 100% im Semester und dann auch noch ein fakultativer Tag... und dann noch ein Inhalt, dessen Anwendung in keiner Übung und keiner Prüfung bewertet wird... so ein Tag bringt nichts.
Fakt ist: Wartbarkeit (oder besser Evolvierbarkeit) ist kein fester Curriculumsbestandteil in Semesterlänge (weniger bringt ja auch nichts) in der Informatikausbildung vom Fachinformatiker bis zum Master.
Wer dafür ein Gegenbeispiel in Form eines Curriculums mit URL hat, der trete bitte vor. Ich bin gespannt. (Gleich vorweg: Wenn sich bei Hunderten Ausbildungsstätten 1-2 finden, die sowas im Curriculum haben, ist das natürlich immer noch kein wirkliches Gegenargument. Bei 50% sähe das anders aus.)
- 02 Jan 2012, 2:10 pm
-
Post visible to registered members
-
Ralf Westphal Premium Member Group moderatorThe company name is only visible to registered members.Re^7: CCD im Informatikstudium
T.G. schrieb:
Den Clean Code Day einfach so abzutun, halte ich auch für falsch. Denn die Prinzipien sind nicht schwer zu verstehen.
Das die Prinzipien einfach zu verstehen und anzuwenden seien, halte ich für ein Gerücht. Schon zu erkennen, ob bzw. inwiefern ein Stück Code dem SRP genügt ist schwer, geschweige denn TDD konsequent einzusetzen. Wäre es einfach, würden es alle einfach tun. Dann würde ja einmal lesen genügen, alle würden sagen "Achso, klar, so machen wir das. Kein Problem."
Wer eine Technologie einsetzt, bekommt sehr schnell vom laufenden Code Feedback darüber, ob er die Technologie angemessen einsetzt: der gewünschte Effekt tritt ein oder eben nicht.
Wer die CCD Prinzipien aber einsetzt, der bekommt nicht in 10 Minuten darüber Feedback, sondern in Monaten oder gar Jahren erst. Das (!) ist der Grund, warum man CCD Prinzipien und Praktiken anders lernen muss. Zu deren Einsatz kann kein Compiler oder die Laufzeit unmittelbares Feedback geben, sondern das muss von anderen Menschen kommen.
Ein CC Tag bringt deshalb viel weniger als ein Jabber Tag oder ein Fuzzy Logic Tag.
Es kommt meines Erachtens aber darauf an, ein Bewusstsein für die Notwendigkeit von Clean Code zu schaffen.
Klar, Bewusstsein schaffen, ist wichtig. Dafür kann so ein Tag gut sein. Aber mehr als Bewusstsein wird eben auch nicht geschaffen. Kann nicht. Weil Lernen solcher Prinzipien Feedback über längere Zeit benötigt. Das kommt aber nicht aus Übungen im Studium. Und das kommt auch nicht von Peers. Und der einzelne Student wird sich in puncto CCD nicht in deliberate practice versenken, weil es dafür nämlich keine Note bekommt. Es wäre für ihn im Sinne des Studiums unökonomisch, darauf Zeit zu verschwenden. Und der Job... der ist weit weg.
>Das ist sicher auch der Grund, warum Ihr z.
B. Vorträge in Buchhandlungen haltet.
Genau. Muss auch sein. Aber wir erwarten nicht, dass die Leute hinterher heimgehen und es einfach tun.
>Dass der Tag nicht bewertet
wurde, halte ich übrigens für ein gutes Zeichen. Es war keine Pflichtveranstaltung, daher haben nur interessierte Studenten bzw. Auszubildende daran teilgenommen.
Das ist doch aber mein Kritikpunkt: etwas so wichtiges wie CC Prinzipien sind eben keine Pflicht. So sieht das Wurzelproblem aus, wenn man dann in der Praxis vor einer Klasse mit 100.000 LOC steht.
Von einer praxisfernen Ausbildung kann meines Erachtens insbesondere an den FHs nicht die Rede sein.
Definiere "Praxisnähe".
>Oft halte ich den Praxisbezug sogar
für zu hoch, sodass wichtige theoretische Grundlagen auf der Strecke bleiben. Im Übrigen bekennen sich auch nur 20 Unternehmen offen zu den Clean Code Prinzipien. Dass die Industrie den Hochschulen also weit voraus ist, kann ich nicht erkennen.
Dass in der Liste 20 Unternehmen stehen, sagt doch nichts darüber aus, in wievielen Unternehmen CCD eine Rolle spielt. Wenn du danach gingest, hätte R# ja auch keinen Einfluss auf die Praxis. Wer schreibt denn auf seine Homepage "Wie legen Wert auf Entwicklereffizienz und setzen R# ein!" Aber frag mal, wieviele R# Kunden es gibt. Dito bei CCD: in dieser Gruppe sind mehr als 2700 Entwickler Mitglied, die aus Hunderten Unternehmen kommen.
Und ich schlage dir ein Experiment vor: wir nehmen eine Liste von Informatikausbildungsstätten (von Berufsschule bis Uni) und picken daraus per Zufall 20 Inititutionen. Die rufen wir an und fragen, wo im Curriculum Clean Code auftaucht (oder konkreter irgendwelche Prinzipien und Praktiken) und wie die CC Kompetenz im Studium gemessen wird.
Meine Hypothese: von diesen 20 werden höchstens 3 wissen, worum es überhaupt geht, und keine wird CC Kompetenz messen. Und das bedeutet dann, CC Kompetenz wird nicht (!) in der Ausbildung aufgebaut. Denn was da nicht gemessen wird in irgendeiner Form (oder allgemeiner: wozu kein Feedback gegeben wird), wird selbstverständlich nicht gelernt. Warum denn auch? Aus Weitsicht? Haha.
- 02 Jan 2012, 5:47 pm
-
Bruno Escherl Premium Member Group moderatorThe company name is only visible to registered members.Re^4: CCD im Informatikstudium
Gregor Elke wrote:
Allerdings muss man auch bedenken, dass die Unis nun mal wirklcih Forscher ausbilden wollen[...] Auch in diesem Fall halte ich CCD für eine wichtige Sache. Im universitärem Umfeld wird für die Forschung Software gebraucht, die in vielen Fällen sich nicht nur auf ein paar Zeilen Code beschränkt. Solange nur eine Person daran arbeitet oder der Originalautor noch da ist, klappt auch das einfach runterschreiben noch leidlich, vor Allem wenn es sich dabei um Code für eine Abschlussarbeit handelt, bei der man sich ein halber Jahr um nichts anderes kümmert.
Aber sobald der jeweilige Originalautor weg ist oder weitere Arbeiten auf dem Code aufsetzen sollen, gehen die Probleme los, die jeder aus der Praxis auch kennt: unverständlicher Code, nicht wartbar, keine Tests, usw.
Ich hab das auch bei meiner Diplomarbeit gesehen, das Projekt in dessen Kontext diese angesiedelt war, läuft schon seit ein paar Jahren. Die ersten Probleme fingen an, als die beiden Originalautoren ihre Diplomarbeiten abgeschlossen hatten. Dies wurde noch dadurch abgefangen, dass der Betreuer noch verfügbar war und den Code ganz gut kannte, aber nachdem dieser deine Dissertation abgeschlossen hatte und das Projekt an andere Doktoranden weitergegeben wurde, war klar dass es so wie bisher nicht weitergehen konnte. Man ist zwar immer noch weit von CCD entfernt, aber zumindest gibt es jetzt Sachen wie einen Buildserver und Testcases, so dass fehlerhafte Codeänderungen nicht erst per Zufall einige Wochen nach dem Commit entdeckt werden.
Im Laufe meines Studiums bin ich auch auf einige Projekte anderer Universitäten gestoßen die nach Ausscheiden der Initiatoren meistens wieder eingestellt wurden und ich denke das lag nicht alleine am fehlenden Forschungspotential sondern auch daran die Codebasis nicht effektiv weiterentwickeln zu können.
Von daher sehe ich auch im universitärem Bereich einen hohen Bedarf an CCD-Prinzipien, insbesonderen in den Projekten die nicht nur ein einzelner Student abarbeitet, sondern die fortbestehen sollen. Aber so lange die meisten Abschlussarbeiten mehr oder weniger für sich selbst stehen bzw. die Ausarbeitung das wichtige ist und der Code nur Mittel zum Zweck wird es wohl noch lange dauern, bis auch an Universitäten guter Code produziert wird.
- 07 Jan 2012, 12:57 pm
-
Christof Konstantinopoulos Premium Member Group moderatorThe company name is only visible to registered members.Re^5: CCD im Informatikstudium
Hallo Allerseits,
ich bin auch der Meinung, dass CCD an den Hochschulen zu wenig gelehrt wird.
Zur Zeit absolviere ich ein berufbegleitendes Fernstudium (Master of Software Engineering) an der Georg Simon Ohm Hochschule in Nürnberg. Im Rahmen dieses Studiums muss auch ein Projekt bearbeitet werden, welches einen hohen Anteil an der Endnote hat. Der Dozent hat uns beim letzten Präsenztermin ausdrücklich auf CCD und die Vorteile hingewiesen (das fand ich sehr positiv!).
Unglücklicherweise ist das Projekt aber so gut wie abgeschlossen. Jetzt noch etwas umzustellen wäre unlogisch, da die Funktionsfähigkeit wichtiger ist, als die "Sauberkeit". Bewertet wird halt die Funktionalität und nicht die interne Struktur. Solange CCD aber nicht in die Bewertung eingeht, wird sich kaum jemand damit auseinander setzen. Es wäre aus Sicht der Studenten nicht ökonomisch!
Wie Ralf Westphal schon geschrieben hat, ergeben sich die Vorteile von CCD erst nach lägerer Zeit. Und die studentischen Projekte laufen einfach nicht lange genug. Die Studenten können die Vorteile des CCD nicht selber im eigenen Projekt "erfahren". Deswegen muss CCD in den Lehrplan!
Viele Grüße,
Christof
- 08 Jan 2012, 03:09 am
- Back
- Next
