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.
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.