Probleme beim Einloggen
Christian Rehn Fragen zu PoMO
Ich hab ein paar Fragen zu PoMO. Im Großen und Ganzen ist mir das Prinzip klar. Ich erkenne, dass es zusammen mit IOSP zur IODA-Architektur führt, etc. Bei den Details hab ich aber noch Verständnisschwierigkeiten.
- Gibt es eine klare Definition des Prinzips? In Blogartikel (http://blog.ralfw.de/2012/12/prinzip-der-gegenseitigen-nichtbeachtung.html) wird eine -- meines Erachtens nicht ganz passende -- Analogie zu Motoren bemüht, um das Prinzip zu verdeutlichen. Das ermöglicht eine Art intuitives Verständnis des Prinzips. Eine wirklich greifbare Definition habe ich aber leider nicht gefunden.
- Insbesondere frage ich mich, was genau denn sich gegenseitig nicht kennen soll. Operationen im Sinne von IOSP? Module auf der selben Abstraktionsebene? Funktionen, Klassen, Komponenten, Systeme, ...?
- PoMO scheint kein Teil der CCD-Prinzipien zu sein. Was ist der Grund dafür?
- Angenommen man würde sich an IOSP, aber nicht an PoMO halten. Das Resultat wäre ähnlich wie die IODA-Architektur. Da Operationen ja eh nicht integrieren dürfen, wäre wohl der einzige Unterschied in den Integrationsbausteinen zu suchen. Richtig?
- Angenommen man hält sich an PoMO, aber nicht an IOSP. Es fällt mir gerade schwer, mir dieses Szenario vor zu stellen. Ist IOSP eine Voraussetzung für PoMO?
Stefan Lieser Denis Kuniss Ralf Westphal Maximilian Raab
+5 weitere Kommentare
Letzter Kommentar:
Ulrich Berntien
Tools über Pipes zu verbinden ist eine Stärke, doch mache ich diese Stärke nicht an dem Text-Format auf den Pipes fest. In der Liste der Nachteile sehe ich neben Effizienz/Performance auch Entwicklungszeit und Fehleranfälligkeit.
Bei bash oder dash Skripten wünsche ich mir oft die .Net Objekte der PowerShell. Zum Beispiel sind beim Text-Format die Items mal durch Leerzeichen, mal durch Tab, mal durch Komma, mal durch Semikolon getrennt. Dazu kommen Items, die auch Leerzeichen enthalten können, mal in Hochkomma, mal in Anführungszeichen, auch mal ohne Klammerung.
Interessant finde ich den Ansatz json Objekte auf der Pipe unter Unix zu transportieren. Einige Tools (lsblk, aa-status, bridge, lnstat) kennen den Switch json. Ich verrmute, wenn die json Option weiter verbreitet ist, können mit jq die Tools besser verbunden werden als nur mit dem Text-Format.
Ralf Westphal Produktiv - aber ausdrücklich
Wir kommen hier ja zusammen, weil wir finden, dass mehr Clean Code geschrieben werden sollte. Aber warum ist das? Warum gibt es davon noch nicht genug? Ich glaube, das liegt daran, dass das, was Clean Code bewirken soll, nicht gemessen wird. Deshalb merkt man nicht, dass da irgendwas verrutscht und steuert nicht gegen.
Clean Code soll gewährleisten, dass die Teamproduktivität dauerhaft hoch ist. Es geht um mittel- bis langfristige Produktivität. Dafür muss Code in geeigneter Weise strukturiert sein. Für anfängliche und kurzfristige Produktivität ist das nicht nötig.
Wenn es an Clean Code mangelt, dann ist sein Effekt unterhalb des üblichen Radars. Die Produktivität wird schlicht nicht gemessen und dem Kunden nicht fühlbar gemacht. Wäre das so, würde er dazu eine Meinung entwickeln und (An)Forderungen stellen, wenn sich etwas aus seiner Sicht ungünstig entwickelt.
Doch der Kunde sieht von alldem nichts. Er bekommt nur mit, was vor seiner Nase wieder und wieder geschieht. Ein big picture fehlt ihm.
Und wie könnte das anders aussehen? Dazu einige Gedanken: https://ralfw.de/2018/09/making-productivity-tangible/
Enjoy!
Ein weiterer Kommentar
Letzter Kommentar:
Ralf Westphal
Hi, Mike!
Nur für XING Mitglieder sichtbar

>* wie würdest du die issue sizes mit verrechnen? Oder würde sich das (ähnlich wie bei #noEstimates) irgendwann statistisch ausgleichen?
Die Einordnung eines Inkrements in eine Komplexitätskategorie S,M,L findet natürlich vor Beginn der Arbeit statt. Daraus wird aber erstmal nichts speziell abgeleitet.
Anschließend kann du die "historischen Daten" auswählen wir du magst für Berechnungen. Du kannst alle selektieren oder nur die mit Komplexität S oder nur die mit M usw.
Mit der Auswahl kannst du Histogramme malen oder Vorhersagen berechnen.
Inwiefern die Zuordnungen zu den Komplexitätskategorien überhaupt einen Unterschied macht, kannst du auch feststellen. Dann würden sich die Histogramme unterscheiden. Oder du könntest einen Scatterplot machen, bei dem du zb Cycle Time (X) gegen Komplexitätskategorie (Y) aufträgst. Da sollte sich ein Muster zeigen, wenn die Einschätzung einen Wert hat.
"Ausgleichen" tut sich da aber nichts, würde ich sagen. Im Gegenteil! Es soll sich nichts ausgleichen, sondern eben die Zuordnung von S,M,L einen Unterschied machen.
Beantwortet das deine Frage?
Nur für XING Mitglieder sichtbar

>* was ist mit Infrastrukturthemen? Das interessiert den Kunden ja nicht wirklich, ob man z.B. eine Woche für eine tolle CI/CD pipeline aufgewendet hat. Aber es ist ja trotzdem hilfreich bis notwendig ...
"Infrastrukturthemen"... Ich würde immer versuchen, ein "Infrastrukturthema" als Inkrement zu formulieren. Es sollte einen Unterschied für den Kunden machen, ob die Infrastruktur so oder anders ist. Wenn er das nicht spüren kann (Laufzeiteigenschaft), warum sollte dann an der Infrastruktur geschraubt werden? Warum sollte er Geld bezahlen, wenn du etwas tust, wovon er keinen Effekt sieht?
Wenn sich gegen diese Sicht Widerstand erhebt/das nicht machbar erscheint, dann - so glaube ich - würde ich "Infrastrukturthemen" entweder gar nicht tracken oder gesondert kennzeichnen. Dann gibt es Feature, Bug Fix - und Infrastructure als Inkrementtypen.
Wenn du nicht trackst oder für Vorhersagen zb einer Liste anstehender Features nur nicht-Infrastruktur Inkremente auswählst, dann gibt es eben Lücken in der Timeline, dann gibt es Zeiten mit sehr wenig Throughput in Bezug auf Features - und das schlägt sich in der Vorhersage nieder. Das ist ja nur gerecht.
Eine CI-Pipeline würde ich allerdings vor Start der Inkrementproduktion aufsetzen und eher gar nicht mitzählen. Du hast eben "Rüstzeit" für ein Projekt, die etwas anderes ist als die Produktionszeit.
Nur für XING Mitglieder sichtbar

>viele Grüße
>Mike
Ralf Westphal Probleme so oder so lösen
Immer wieder sehe ich es in Clean Code Developer Trainings, dass es den Teilnehmer schwer fällt, den Einstieg in Problemlösungen zu finden. Ich denke, das ist im Tagesgeschäft dann nicht so viel anders, wenn die Probleme größer sind.
Deshalb habe ich mal zwei Problemlösungsansätze beschrieben, die ich hilfreich finde:
Entweder versuche ich, ein Problem zu verkleinern, indem ich es partitioniere - oder ich versuche, es zu vereinfachen. Es entstehen komplementäre partielle Probleme oder auf einander aufbauende Unterprobleme.
Enjoy!
Ralf Westphal TDD - Jetzt aber richtig!
TDD könnte einfach sein, ist es aber für viele nicht. Irgendwie merkwürdig, oder? Neulich habe ich ein Video zum Thema gesehen, in dem Ian Cooper recht schön dargelegt hat, woran es liegt, dass TDD nicht die positiven Ergebnisse zeitigt, die von Kent Beck et al. versprochen wurden.
Allerdings hat mir an dem Vortrag doch noch einiges gefehlt. Er hat zwar eine Checkliste geliefert, was (besser) zu tun ist - doch die allein reicht aus meiner Sicht nicht. Und so habe ich mal zu seiner Checkliste noch ein paar Gedanken zusammengetragen, die es hoffentlich einfacher machen, mit TDD mehr Vorteile zu ernten: https://ralfw.de/2018/08/tdd-how_it_can_be_done_right/
Enjoy!
Philipp Stiefel
Du meinst vermutlich den Vortrag von Ian auf der DevTernity 2017? Das Video habe ich zufällig an diesem Wochenende ebenfalls angeschaut. Absolut sehens-/hörenswert!
Für Interessierte hier der Link: https://www.youtube.com/watch?v=EZ05e7EMOLM
Christian Rehn LSP
Nächste Frage zu einem Prinzip. Es geht immer noch um die Design Cards. Diesmal wäre meine Frage wer LSP einsetzt und wie häufig.
LSP ist mir durchaus bekannt, ich kenne das Kreis-Ellipse-Problem, die verschiedenen Lösungen desselben, ich weiß, dass quasi jedes Problem, das mit Vererbung zusammenhängt, eine Spielart dieses Problems ist und dass man da also überall LSP bedenken kann. Und trotzdem: Ich selbst bedenke bzw. nutze LSP recht selten.
Meine These ist, dass LSP besonders wichtig für Entwickler von Frameworks und Libraries ist und ansonsten nur, wenn man ein komplexes Domänenmodell hat.
Also Hand aufs Herz: Wie sieht es mit praktischen Erfahrungen zu LSP aus?
Stefan Lieser
+2 weitere Kommentare
Letzter Kommentar:
Christian Rehn
Danke für die Antworten. Das deckt sich mit meiner Beobachtung. Streamklassen zählen für mich eher unter Library als unter Anwendungscode und FCoI ist wirklich viel wichtiger. Danke.

Moderatoren

Infos zu den Moderatoren

Über die Gruppe "Clean Code Developer"

  • Gegründet: 11.03.2009
  • Mitglieder: 5.051
  • Sichtbarkeit: offen
  • Beiträge: 493
  • Kommentare: 2.993