Einfache Frage: Wenn ihr beruflich Firmware implementiert, inwiefern dokumentiert ihr die Funktionalität? Gut, die Änderung per SVN o.ä. zu tracen ist die eine Sache, ich aber meine konkret die funktionellen Abläufe. Wenn z.B. der Austausch mit anderen Programmierern notwendig ist, damit der Wissensstand im Team bei allen gleich ist, wie geht ihr da vor? Hier ein paar Optionen: - keine Dokumentation, reine Quelltextanalyse notwendig, rein mündlich - SVN reicht als Basis für alle - Anständiges Pflichtenheft vor Implementierung und Dokumentation nach einzelnen Implementierungsschritten, was gemacht wurde (Flussdiagramme, UML, funktionale Beschreibung) Es geht mir NICHT darum, wie man ein Projekt optimal durchführt, dazu gibt es genug Literatur, sondern WIE VIEL davon bei euch in der PRAXIS wirklich umgesetzt wird! - welche Probleme kennt ihr aufgrund fehlender Maßnahmen? - wie sehr spielt Zeitdruck eine Rolle (z.B. Chef sagt: " da haben wir keine Zeit für, Dokumentation ist nebensächlich)? Als Entwickler kenne ich selbst das Problem, dass zu oft komplexe Abläufe aus dem Quelltext analysiert werden müssen, weil diese entweder individuell durch den Programmierer umgesetzt wurden, ohne das vorher schriftlich genau definiert wurde, wie die Abläufe implementiert werden sollen, oder nachher, was gemacht wurde. Nachteil: spätere Einsteiger können aus dem Quellcode nicht erkennen, warum etwas wie gemacht worden ist, der Zeitaufwand zur Einarbeitung ist höher, die Sicherheit das Projekt fach- und zeitgerecht weiterführen zu können, ist dahin, wenn der Programmierer mal kündigt/ausfällt. Klar ist, wie's sein sollte, aber wie sieht's bei euch in der Praxis aus? - Hindert euch der Vorgesetzte? - Habt ihr keine Lust auf Dokumentation? Würde gerne mal eure persönlichen Erfahrungen und Arten der Umsetzung kennenlernen.
>> Nachteil: spätere Einsteiger können aus dem Quellcode nicht erkennen, >> warum etwas wie gemacht worden ist, der Zeitaufwand zur Einarbeitung ist >> höher, die Sicherheit das Projekt fach- und zeitgerecht weiterführen zu >> können, ist dahin, wenn der Programmierer mal kündigt/ausfällt. > > Und es ist auch gut so, funktioniert schon seit Jahrzehnten. Nur weil in > den letzten Jahren die Cheftaschen immer voller gestopft werden möchten, > zwecks Ersparnis an Einarbeitungszeit bei Neulingen, kommt dieser Mist > mit der fast schon ekelhaft akribischen Doku zur eigentlichen Arbeit > hinzu. > Außerdem, je schneller du die perfekte Doku zusammen bekommst, desto > schneller wirst du von einem billigeren Heini abgelöst, der sich nach > deiner Doku superschnell und saubillig einarbeiten kann. > > Zur eigentlichen Frage: > Hallo, danke für deinen Beitrag. Alex schrieb im Beitrag #2354596: >> " da haben wir keine Zeit für, Dokumentation ist nebensächlich > > Die Zeiten sind schon längst vorbei. Also wird bei deinem Arbeitgeber ordentlich dokumentiert, habe ich dich da richtg verstanden? > Das, was du oben erwähnt hast, wird meist auch genauso umgesetzt. eher das saubere dokumentieren oder das "Hauptsache, Firmware läuft und Doku egal"?
Kann man glaub ich nicht verallgemeinern, zumindest bei mir. Es gibt massig kleinere Projekte, da ist so gut wie nichts an Doku da. Ein Programmablaufplan, ein halbwegs gut kommentierter Quelltext und aussagekräftige Variablennamen - fertig. Wer damit nicht zurecht kommt - Beruf verfehlt. Gibt natürlich auch Kunden, die wollen selbst für Kleinkram eine komplette Doku haben. Wird dann extra angeboten und kostet extra. Unter Kleinkram verstehe ich all die Projekte, die mit einem einzigen Controller arbeiten, auf denen ein einziges Programm läuft und die nicht vernetzt sind.
@Alex: OK, Nachfrage bitte streichen, hatte etwas falsch gelesen, deine Antwort war eindeutig. Gruß
Hab bisher keine Hardwareprojekte umgesetzt, sondern war nur ein wenig im Web-Bereich tätig, hoffe dass dir das trotzdem hilft. Wir hatten mal ein großes Projekt für eine internationale NGO am laufen bei dem wir nicht mit SVN oder sowas gearbeitet hatten. Wir waren 2 Programmierer (+1 "Chef") jeder hatte den Stand auf dem Rechner und hat ihn hin und wieder ins Testsystem hochgeladen. Erstmal schien das auch gut zu gehen. Hatte mir aber sicherheitshalber selbst einige Zwischenversionen gesichert. Es verging einige Zeit und der andere Programmierer wurde nicht fertig bzw. hatte schwere Bugs im System. Zuerst sollte er sie noch selbst fixen, letztendlich bliebs dann bei mir hängen. Ich musste mich erstmal in seinen grauenhaften Code einarbeiten. Dutzende Dateien von denen man nie wusste ob die noch gebraucht werden oder nicht (z.B. sowas wie answers.php, answers00.php, answers01.php answers_user.php usw, und die Namen gabs in 3 verschiedenen Ordnern) Keine Versionsverwaltung und auch keine Doku, der Code selbst war grauenhaft programmiert und funktioniert oft nur zufällig! Irgendwie hab ich mich dann da durchgewurschtelt, hab auch noch weitere Bugs entdeckt usw. Richtig zurecht gekommen bin ich damit nie, das System funktionierte hernach mehr schlecht als recht. Dann gabs ein Krisentreffen mit dem Auftragsgeber aufgrund der Verzögerungen, man wollte neue Programmierer ins Team schicken, der andere Programmierer hat aufgehört (wurde ihm vermutlich auch nahegelegt...). Der Auftragsgeber fragte uns dann, wie wir weiter mit dem System verfahren wollen was bisher aufgebaut wurde. Ich sagte ihnen dann ehrlich, dass ich keine Chance sehe diesen verbuggten Code jemals zum laufen zu bekommen, und dass wir diesen Teil neu schreiben sollten. Letztendlich bekamen wir einen Ersatzprogrammierer und ich installierte noch SVN. Da mein Code einigermaßen strukuriert war und gut lief blieb er zu 95% erhalten, der restliche Code wurde komplett herausgenommen. Mit dem neuen Programmierer kam ich gut zurecht, wir nutzten indefero für die Bugverwaltung. Es gab wieder große Fortschritte im Projekt. Eine Doku wurde trotzdem nicht angelegt bzw. es wurde ein paar mal halbherzig angefangen und dann wieder stehen gelassen. Dennoch kann man sich gut im Code zurechtfinden, da er ordentlich programmiert ist. Das System wurde dann auch fertiggestellt. Zwischen drin wars aber immer wieder ein Problem die Finanzierung zu sichern, da kaum was funktionierte und die NGO natürlich nur von außen irgendwelche Gelder bekommt. Zum Einsatz kam das System nie. Die NGO wurde umstrukturiert und das (fertige) System nicht mehr benötigt, vermutlich auch wieder eine Geldsache. Daraus hatte unser Chef (der nichtmal selbst wirklich programmieren kann...) gelernt, dass Versionsverwaltung + anständiger Code sinnvoll ist. Darauf geachtet wurde trotzdem nicht, er hat sich nie mit meinem Code beschäftigt. Bei den nächsten (zum Glück kleineren) Projekten wurde das so fortgeführt. Meistens war auch zeitdruck dabei, d.h. eine Doku gabs auch hier wieder nicht. Eine Gefahr ist auch, dass man ein einfaches Grundsystem programmiert hat das übersichtlich ist. Dann kommt aber der Chef daher und will noch dieses und jedes Feature haben. Beim nächsten Kunden: Ja nimm das alte System und programmiere noch Dies und Jenes dazu. Nach und nach bläht sich der Code dann auf, wenn man 10 und mehr Kunden nacheinander hatte, für die man das alte System nur immer anpasst. Mittlerweile denke ich, dass der Code für außenstehende nicht mehr wartbar ist. Ich selbst finde mich drin noch zurecht, andere haben da keine Chance. Natürlich hätte ich alles besser strukturieren können. ABER: Ich wurde pauschal bezahlt, d.h. X00€ für dieses Projekt wenns fertig ist. Und am besten sollte es z.B. in 3 Tagen stehen. 1. Lässt die Zeit es nichtmal zu dass man das System schön durchtestet 2. Lässt es die Zeit damit erst recht nicht zu guten Code zu produzieren 3. Lässt die Zeit erst recht keine Doku zu Hab die Sache auch ein paar mal beim Chef angesprochen bzgl. Programmierstil usw., aber wirklich vorangegangen ist da nicht. Würde eben auch wieder Geld kosten. Hab mich mittlerweile von dem Laden verabschiedet und hab jetzt selbst was eigenes. Jetzt wird alles schön ins SVN hochgeladen und übersichtlicher Code geschrieben. Dazu zählt z.B. auch, dass man objektorientiert Programmiert, das macht den Code verständlicher. Ehrlich gesagt dokumentiere ich auch nicht viel, ich versuche eher den Code so zu halten, dass er auch ohne Doku verständlich ist. Das klappt sehr gut, man findet sich schnell zurecht.
Ich nehm Doxygen: http://de.wikipedia.org/wiki/Doxygen Da bin ich gezwungen, saubere Sourcen zu machen und die Doku entsteht automatisch.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.