Clean Code Developer
Posts 1-10 of 10
-
Stephan Roth Premium Member Group moderatorThe company name is only visible to registered members.Professionalität in der Software-Entwicklung...wann?
Guten Tag allerseits,
auch ich möchte mich hier gerne kurz vorstellen und meine Gründe darlegen, warum ich der Initiative und dieser XING-Gruppe beigetreten bin.
Ich bin seit nunmehr 9 Jahren als "professioneller" (Was ich, und was andere darunter verstehen, dazu gleich mehr) Software-Entwickler mit Schwerpunkt C++ tätig. Wer mein Profil und meine "Über mich" Seite (
https://www.xing.com/app/profile?op=aboutme;name=Stephan_Rot...) besucht, wird feststellen, das ich beruflich auch mal andere Dinge gemacht habe, die es mir aber erlauben, die Software-Entwicklung auch mal durch eine "andere Brille" zu betrachten.
Zum Thema Professionalität: ja, ich stimme zu, das hat nur bedingt mit einem bestimmten Ausbildungsweg zu tun. Es hat noch nicht einmal etwas damit zu tun, ob man Software bruflich, oder nur privat (als Hobby), erstellt.
Ab wann man davon sprechen kann, das Software professionell erstellt wird, hängt m.E. von verschiedenen Faktoren ab. Und da der Entwickler nun mal nicht kontextfrei "im leeren Raum" steht, sondern in der Regel Angestellter eines Unternehmens ist, meistens in einem Team arbeitet welches von einem Projektleiter geführt wird, und zudem zahlreiche weitere Stakeholder existieren, die Interesse an seinem Produkt haben bzw. bestimmte (manchmal auch versteckte) Ziele verfolgen, glaube ich, das CCD zwar durchaus Verbesserungen bringen kann, aber das man gewisse Grundprobleme nicht auf der Ebene "Coding & Testing" lösen kann.
Da ich mich auch mit der Metadisziplin des Systems Engineerings beschäftige, sage ich es mal so: was man sich offensichtlich z.T. in der Software-Entwicklung und im Software-Engineering an Nicht-Professionalität erlauben kann, wäre in vielen anderen Ingenieursdisziplinen und Branchen (Automotive, Aerospace, etc.), insbesondere wenn es sich um die Entwicklung sicherheitskritischer Systeme handelt, undenkbar!!
Und so glaube ich, das CCD nicht nur heißt, sich mit der eigenen Einstellung zur SW-Entwicklung bewusster auseinanderzusetzen, sondern es könnte auch der Ausgangspunkt für eine kleine, längst überfällige "Revolution von unten" sein - eine Bewegung der Professionalisierung und ein Paradigmenwechsel auf allen Ebenen, bis hin zum Management.
Gruß
Stephan
- 09 Jan 2010, 10:24 am
-
Post visible to registered members
-
Stephan Roth Premium Member Group moderatorThe company name is only visible to registered members.Re^2: Professionalität in der Software-Entwicklung...wann?
Hallo Stephan,
Hallo Jörg,
erst einmal danke für Deine ausführliche Antwort.
Zum Thema Professionalität: ja, ich stimme zu, das hat nur bedingt mit einem
bestimmten Ausbildungsweg zu tun. Es hat noch nicht einmal etwas damit zu
tun, ob man Software beruflich, oder nur privat (als Hobby), erstellt.
Ich bin in dieser Hinsicht anderer Meinung.
Nun ja, ich habe lediglich einem Statement grundsätzlich zugestimmt, das auf der Homepage von CCD zu finden ist.
Warum? Die Gründe dafür sind, dass man ein Informatikstudium sicherlich nicht
als perfekter Programmierer abschliesst.
Ist es überhaupt das primäre Ziel eines Informatikstudiums, Programmierer zu werden?! Es ist doch vielmehr so, das man Informatiker bewusst so ausbildet, dass diese "breit aufgestellt" sind.
Und: gibt es für Dich einen Unterschied zwischen einem Software-Entwickler und einem Programmierer?
Man lernt aber analytisch (Root Cause Analysis) und konzeptionell zu denken.
Besonders die Konzeption sowie das Erkennen und Anwenden von Mustern sind
essentiell, um ein gutes Ergebnis zu erzielen.
Dem stimme ich erst einmal grundsätzlich 100%-tig zu, aber das sind Dinge, die man m.W. sowohl in einem Informatikstudium, als auch in anderen, verwandten Ausbildungsgängen, wenn überhaupt, nur sehr begrenzt vermittelt bekommt. Nehmen wir z.B. mal die 23 Design Pattern aus der GoF-Bibel. Ich habe viele, junge Absolventen kennengelernt, die sich damit im Studium wenig bis gar nicht auseinandergesetzt haben.
Ich glaube, das man ein Gefühl für den richtigen und angemessenen Einsatz von Entwurfsmustern und anderer Entwurfsprinzipien erst über Jahre hinweg, in der Praxis, entwickelt. Den übermäßigen Einsatz von Pattern halte ich beispielsweise für hochproblematisch: das Verständnis für den Code kann durch den entstehenden Abstraktions-Overkill rapide verringert werden, eine eventuelle Fehlersuche gestaltet sich entsprechend schwierig.
Weiterhin schärft das technische Informatikstudium den Blick für
Schlüsselpunkte der Anwendungsentwicklung(eine Aufzählung): Nebenläufigkeit
und Synchronisation von parallelen Prozessen, ...
Auch das ist ein Thema, welches man m.E. in einem Informatikstudium allenfalls anreißen kann, man kann Grundsteine legen. Gerade der durch die Verbreitung von Multicore-Prozessoren entstandene Parallelisierungs-Hype der letzten Jahre hat gezeigt, das gute, saubere, parallele Programmierung alles andere als trivial ist. Das ist der inhärenten Komplexität des Multitaskings und der Nebenläufigkeit geschuldet, die sich nun einmal nicht eliminieren lässt.
Politische Spannungsfelder sind manchmal, sollten aber kein Thema für einen
Programmierer sein.
Sollten, ja!! Sie *sollten* eigentlich kein Thema für den Entwickler sein. Die Realität sieht da leider ganz anders aus. Softwareprojekte scheitern in der überwiegenden Mehrheit ja nicht deshalb, weil die Entwickler schlechten, übel riechenden Code abliefern. Schaut man sich den bekannten "Chaos Report" der Standish Group an, so stellt man fest, das in der Hauptsache Steuerungs- und Managementthemen, sowie mangelhafte Planung und wenig bis keine Einbeziehung der Beteiligten (Stakeholder) bei Softwareprojekten die Gründe sind, wenn selbige scheitern.
Ansonsten ist CCD natürlich eine absolut unterstützendswerte Initiative, keine Frage! Ich freue mich daher über einen interessanten Gedanken- und Erfahrungsaustausch in dieser Gruppe!
Gruß
Stephan
- 10 Jan 2010, 1:51 pm
-
Post visible to registered members
-
Thomas Eisenbock Premium MemberThe company name is only visible to registered members.Re: Professionalität in der Software-Entwicklung...wann?
(Vorstellung erspare ich mir, wir sind ja unter Profis)
"eine kleine, längst überfällige "Revolution von unten" sein"
Guter Vorsatz! "Aber"...
Wenn Clean Code und Brownfield nicht zu den Kernkompetenzen eines Dienstleisters gehören ist die Gefahr groß, daß man dann mit dem Vertrieb kollidiert.
"Clean Code" als Begriff ist vermutlich trotz des heise-Artikels nicht marketingfähig, oder höchstens in Nischenmärkten.
Drum muß man auf jeden Fall auch die anderen Unternehmensteile mit in's Boot holen, bevor man wirklich clean werden kann.
Sonst wird CCD ganz schnell zum Kostentreiber und Wettbewerbsnachteil.
Um das zu verdeutlichen ein kleines Beispiel, nicht ganz frei erfunden (Namen und Programmierstile sind dabei beliebig austauschbar):
Programmierer Hans Saubermann kommt neu in die Truppe.
Hans ist totaler Fan von CCD.
Hans fängt an, allen Code, den er in die Finger bekommt, clean zu machen.
Hans verläßt die Firma nach anderthalb Jahren.
In der Zeit hat er 35% des Projekts "gecleaned".
Die hinterbliebenen Programmierer haben jetzt de facto keinen saubereren Code sondern haben einfach nur noch eine Stilrichtung mehr im Code, die sie lesen müssen.
Keiner der Programmierer arbeitet nach CCD, sie werden den sauberen Code also wieder überwuchern.
Ergebnis: mehr Kosten, mehr Fehler, mehr Legacy, mehr braun.
Einen Ausweg aus dem Dilemma sah ich für meinen Verwantwortungsbereich nur in der Flucht nach vorne, sprich: Ausrichten des Marketings auf Brownfield, gezieltes Ausrichten auf Kunden, die bereits die Katastrophe eines "umgekippten" Codes hinter sich habe und Spezialisieren unseres Teams und unserer Geschäftsprozesse auf Legacy-Projekte.
Grüße und Daumen hoch für sauberen Code!
- 15 Jan 2010, 12:05 pm
-
Post visible to registered members
-
Michael Hönnig Premium Member Group moderatorThe company name is only visible to registered members.Re^2: Professionalität in der Software-Entwicklung...wann?
Hallo Herr T.H.,
ich würde es nicht als CCD bezeichnen, wenn ein Entwickler ohne Auftrag einen Großteil des bestehenden Programmcodes umbaut. Es sollte erlaubt sein, die Stellen anzupassen, mit denen man in seinen eigentlichen Aufträgen in Kontakt kommt UND wobei das Kosten-Nutzen Verhältnis gegeben ist. Um den neuen Code überhaupt z.B. Unit-testbar zu machen, ist es auch durchaus mal nötig, Code zu ändern, den man für die reine Funktionalitätsänderung nicht ändern müsste.
Grüße
... Michael Hönnig
- 18 Jan 2010, 10:19 am
-
Post visible to registered members
-
Post visible to registered members
-
Post visible to registered members
