- Strong code ownership
"Strong code ownership breaks a code base up into modules (classes, functions, files) and assigns each module to one developer. Developers are only allowed to make changes to modules they own ..." - Weak code ownership
"Weak code ownership is similar in that modules are assigned to owners, but different in that developers are allowed to change modules owned by other people. Module owners are expected to take responsibility for the modules they own and keep an eye on changes made by other people ..." - Collective code ownership
"Collective code ownership abandons any notion of individual ownership of modules. The code base is owned by the entire team and anyone may make changes anywhere ..."
A blog about software development topics like: * System architectures * Processes * Helpful tools * and also some funny things
Posts mit dem Label Processes werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Processes werden angezeigt. Alle Posts anzeigen
Mittwoch, 17. Juli 2019
Code ownership - Quality vs Flexibility
Martin Fowler describes three different models of code ownership:
Freitag, 5. Juli 2019
Flaky tests (non-deterministic tests) are useless
"Non-deterministic tests have two problems, firstly they are useless, secondly they are a virulent infection that can completely ruin your entire test suite. https://martinfowler.com/articles/nonDeterminism.html" Source Twitter
I think that statement summarizes the problem very well and the linked article by Martin Fowler explains that statement very well - so I would recommend to everyone to read the article. Although it was written in 2011 the listed kind of problems are still the same.
I think that statement summarizes the problem very well and the linked article by Martin Fowler explains that statement very well - so I would recommend to everyone to read the article. Although it was written in 2011 the listed kind of problems are still the same.
Remote Mob Programming und Mob Programming
Über diesen Erfahrungsbericht (Remote Mob Programming - Home but not alone) im Rahmen eines Podcasts bin ich auf das Thema Remote Mob Programming gestoßen.
Die Podcast-Folge selbst ist empfehlenswert, dort verlinkt sind aber auch diese Ressourcen zum Nachlesen:
"All the brilliant people working on the same thing, at the same time, in the same space, and on the same computer"
Das wichtige an dem Verfahren ist die Kommunikation und der Erfahrungsaustausch, sowie das gemeinsame Treffen von Entscheidungen - sowie das wissen, warum diese Entscheidungen getroffen wurde. So sind auch diese Aussagen zu verstehen (siehe Three constraints for introducing Mob Programming):
Ein weiterer (mir) wichtiger Punkt ist, dass man auch gemeinsam Dokumentation schreibt - ich kann mir vorstellen, dass dadurch bessere und relevantere Dokumentation entstehen kann.
Die Podcast-Folge selbst ist empfehlenswert, dort verlinkt sind aber auch diese Ressourcen zum Nachlesen:
- https://www.innoq.com/de/blog/remote-mob-programming/ (Auflistung der Rahmenbedingungen in Deutsch)
- https://www.remotemobprogramming.org/ (Die gleiche Liste in Englisch mit Erklärungen dazu und weiteren Ressourcen)
"All the brilliant people working on the same thing, at the same time, in the same space, and on the same computer"
Das wichtige an dem Verfahren ist die Kommunikation und der Erfahrungsaustausch, sowie das gemeinsame Treffen von Entscheidungen - sowie das wissen, warum diese Entscheidungen getroffen wurde. So sind auch diese Aussagen zu verstehen (siehe Three constraints for introducing Mob Programming):
- It’s a behaviour change from “I have an idea, give me the keyboard” to “I have an idea, you take the keyboard”
- For an idea to go from your brain to the computer, you have to use someone else’s hands - [Llewellyn Falco]
Ein weiterer (mir) wichtiger Punkt ist, dass man auch gemeinsam Dokumentation schreibt - ich kann mir vorstellen, dass dadurch bessere und relevantere Dokumentation entstehen kann.
Dienstag, 11. Juni 2019
Architecture decision record (ADR)
In a side note of a podcast I found the topic "Architecture decision record (ADR)".
The blog-post of thinkrelevance "Documenting Architecture Decisions" gives a very good motivation about why you should care about this topic and what ADRs are.
I'm on the same page that it makes sense to write ADRs into the repository for open source projects. Maybe it is also true for an enterprise company. But I think it maybe easier to start with wiki/confluence articles in that environment - especially one pro is that you can use images and not only text.
Further I found this github-repro, which provides an overview and some templates. But for me it looks like that it is a good advice to start with the simplest version of Michael Nygard, because for me is the argument that it should be a "short text file" important, because it shouldn't take much time to get the point of the decision and why it was made.
The blog-post of thinkrelevance "Documenting Architecture Decisions" gives a very good motivation about why you should care about this topic and what ADRs are.
I'm on the same page that it makes sense to write ADRs into the repository for open source projects. Maybe it is also true for an enterprise company. But I think it maybe easier to start with wiki/confluence articles in that environment - especially one pro is that you can use images and not only text.
Further I found this github-repro, which provides an overview and some templates. But for me it looks like that it is a good advice to start with the simplest version of Michael Nygard, because for me is the argument that it should be a "short text file" important, because it shouldn't take much time to get the point of the decision and why it was made.
Freitag, 15. März 2019
Domain Driven Design (DDD) Referenz auf Deutsch
Inzwischen gibt es die Domain Driven Design (DDD) Referenz von Eric Evans auch auf Deutsch: https://github.com/ddd-referenz/ddd-referenz
Donnerstag, 14. März 2019
If there is no Link, it does not exist
Auf der JAX 2018 haben wir dem Talk "DevOps @ GitHub Speed" gelauscht. Der Vortrag ist in der Zwischenzeit nun auch bei YouTube "DevOps @ GitHub Speed" zu finden und man kann da als Entwickler, Scrum Master, PO oder auch jede andere Rolle eines Softwareunternehmens eine Menge lernen.
Einen Aspekt möchte ich besonders empfehlen, den ich auch versuche bei meiner Arbeit anzuwenden und zu verbreiten ist:
Die Argumentation und was damit genau gemeint ist kann man sich in dem Video ab Minute 24:00 anschauen. Im groben Zusammengefasst ist damit gemeint:
Einen Aspekt möchte ich besonders empfehlen, den ich auch versuche bei meiner Arbeit anzuwenden und zu verbreiten ist:
If there is no Link, it does not exist
Die Argumentation und was damit genau gemeint ist kann man sich in dem Video ab Minute 24:00 anschauen. Im groben Zusammengefasst ist damit gemeint:
Entscheidungen sind irrelevant, wenn sie nicht per Link für alle auffindbar sind
Beispiel: Entscheidungen, die ausschließlich per E-Mail dokumentiert sind, sind nur in den E-Mail-Postfächern der Mitarbeiter auffindbar, die an dem Mail-Verkehr beteiligt waren. Neue Mitarbeiter können diese nicht einsehen.
Gleiches gilt meines Erachtens auch für die Entscheidungsfindung - also wie es zu der Entscheidung gekommen ist. Wie oft habe ich schon erlebt, dass wir eine dokumentierte Entscheidung gefunden haben, diese gerne hinterfragen wollten, wir aber nicht wussten, warum diese Entscheidung so getroffen wurde und auch die beteiligten Personen dies nicht mehr wussten.
Abonnieren
Posts (Atom)