Vorlage für die Erwiderung von Privatpersonen bei Telefonwerbung

In den folgenden Tagen werde ich Vorlagen für schriftliche Erwiderungen auf Werbung jeglicher Art veröffentlichen. Dazu gehören ungewünschte E-Mails, Anrufe und Briefe sowohl im privaten als auch im beruflichen Umfeld.

Heute starte ich mit Telefonwerbung im privaten Umfeld. Wenn z.B. jemand bei euch zuhause anruft um ein Gewinnspiel zu bewerben, ohne dass eine Einwilligung eurerseits vorliegt, dann könnt den folgenden Text verwenden.

Ich möchte abschließend noch darauf hinweisen, dass ich weder Jurist noch Datenschutzbeauftragter bin und es sich hierbei lediglich um eine Hilfestellung als Privatperson handelt. Holt euch also im Zweifelsfall bei entsprechenden Stellen Hilfe dazu.

 

Ich möchte Sie darauf hinweisen, dass ich von Ihnen keinerlei Werbung erhalten möchte. Ihr Anruf war zudem rechtlich nicht erlaubt, da Ihnen keine (ausdrückliche) Zustimmung meinerseits vorlag und Ihr Anruf demnach, gemäß §7 Abs. 2 UWG, als unzumutbare Belästigung angesehen wird.

Hiermit fordere ich Sie auf, wie im § 19 BDSG Abs. 1 vorgesehen, mir mitzuteilen, welche Daten Sie über mich gespeichert haben, aus welcher Quelle Sie diese Daten haben und an wen Sie diese Daten weitergegeben haben.

Des Weiteren erwarte ich, dass, gemäß § 20 BDSG Abs. 2, meine Daten gelöscht werden. Wenn dies aufgrund eines Gesetzes nicht möglich ist, sind die Daten zu sperren (vgl. §20 BDSG Abs. 3).

Aus den gegebenen Gründen bitte ich Sie deshalb, mir jegliche Art von Werbung (E-Mail, Telefon, Post) nicht mehr zu schicken und mich aus Ihrem System zu entfernen.

 

Unerlaubte Telefonwerbung bleibt ÄrgernisAktualisierung vom 11.04.2015:

Ausgerechnet heute bin ich in der News-App von ZDF auf folgende Meldung gestoßen (siehe Screenshot). Im Anschluss an die Blogserie werde ich deshalb noch einen weiteren Artikel mit Anlaufstellen veröffentlichen, für den Fall, dass die Unternehmen die Werbung nicht unterlassen. Sieht man sich die hohe Zahl schriftliche Beschwerden an, wird deutlich, dass das Thema durchaus Anklang findet. Wenn – subjektiv aus meiner Sicht geschätzt – nur jeder 10 Verbraucher eine Nachricht an die Bundesnetzagentur schreibt, so sprechen wir von über 250.000 Werbeanrufen.

 

 

Nachgefragt – Interview mit Daniel Marbach zu MSpec

In einem Online Interview habe ich Daniel Marbach zur Zukunft des Open Source BDD Frameworks MSpec befragt. Herausgekommen ist eine Aufnahme, die es jetzt auf YouTube gibt. Die Fragen wurden nicht vorab abgesprochen, um ein authentisches statt ein werbelastiges Gesprächs zu führen.

 

image

Auf das Bild klicken um zum Video zu gelangen

 

An dieser Stelle möchte ich noch die Community aufrufen sich an der Weiterentwicklung zu beteiligen. Open Source Projekte leben von freiwilligen Helfern und Daniel macht da eine sehr gute Arbeit und ein tolles Produkt!

Fragen

  • Machine.Specifications
  • Was ist eigentlich ein BDD Framework
  • Stärken
  • Schwächen
  • Roadmap
  • Wie steht es um die Zukunftssicherheit
  • Tipps und Tricks
  • Ergänzende Frameworks
  • Gute Tests

 

Show Notes

How to get the PostSharp package running with Paket

Recently, I reported some difficulties that I‘ve experienced with the PostSharp NuGet package when I was using the new package manager Paket. I tracked the problem down to the ‚install.ps1‘ script which is executed by NuGet after adding PostSharp to a project. This PowerShell script (located under packages\PostSharp\tools) patches your project file. Since this behaviour is already proclaimed from the pulpit by NuGet, I hope that PostSharp is going to remove that asap. Until then, you can execute the script manually or patch the csproj-File by yourself.

In order to do that, insert the following 2 snippets at the the position shown in the screenshots:

   1: <DontImportPostSharp>True</DontImportPostSharp>

 

image

 

Don’t forget to change the relative path to your PostSharp package in the following snippet:

   1: <Import Project="..\..\packages\PostSharp\tools\PostSharp.targets" Condition="Exists('..\..\packages\PostSharp\tools\PostSharp.targets')" /> 

   2: <Target Name="EnsurePostSharpImported" BeforeTargets="BeforeBuild" Condition="'$(PostSharp30Imported)' == ''">

   3: <Error Condition="!Exists('..\..\packages\PostSharp\tools\PostSharp.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://www.postsharp.net/links/nuget-restore." />

   4: <Error Condition="Exists('..\..\packages\PostSharp\tools\PostSharp.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://www.postsharp.net/links/nuget-restore." />

 

image

 

I also recommend you to activate the following PostSharp Option in Visual Studio:

image

Interview mit Daniel Marbach mitgestalten

Am 18. März wird mir Daniel Marbach ein Video Interview zu dem BDD-Framework Machine.Specifications geben. Ein kleiner Vorgeschmack gefällig?

Wodurch hebt sich MSpec von anderen BDD-Frameworks ab?

oder

Welche Features sind gerade in der Pipeline?

oder

Welche anderen Frameworks ergänzen MSpec gut?

Das Video veröffentliche ich dann auf meinem YouTube Channel. Ihr könnt die Richtung des Gesprächs mitgestalten, indem ihr mir rechtzeitig eure Fragen in die Kommentare postet.

Nachgefragt – dotnetpro Interview mit Tilman Börner

In einem Online Interview habe ich Tilman Börner über die digitale Zukunft der dotnetpro und die Anforderungen an potentielle Autoren befragt. Herausgekommen ist eine Aufnahme, die es jetzt auf YouTube gibt. Die Fragen wurden vorab nicht abgesprochen, um eine Gesprächsatmosphäre zu schaffen, wie sie bei einer Kaffeepause üblich ist.

Danke nochmal Tilman!

 

Interview mit Tilman Börner

 

Fragen

  • Angehende Autoren
    • Formale Anforderungen an einen potentiellen Autor
    • Formale Anforderungen an einen Artikel
    • Von der Idee bis zum fertigen Artikel: Das Prozedere kurz erläutert
    • Was macht einen guten Autor aus?
  • Änderungen am Magazin
    • Gibt es gerade einen Umbruch?
    • Finden Themenverschiebung statt?
  • Die Digitale Welt
    • Wird es vollwertige Ausgaben für Android und Kindle geben?
    • Wann bekommt die Homepage einen neuen Anstrich?

 

Show Notes

Schlanke Prozesse sind gute Prozesse oder warum wir Kanban einführen

In unserer IT Administration führen wir regelmäßige Retrospektiven durch. Das ermöglichte es uns Kategorien von Problem zu identifizieren, wie sie auf dem Bild zu sehen sind.

2015-03-04 18.36.43

  • Weniger wichtige Aufgaben wurden zuerst erledigt (Priorisierung)
  • Vermeintlich kurze Projekte haben sich stark in die Länge gezogen
  • Aufgaben wurden nicht vollständig erledigt
  • Zuständigkeiten / Ansprechpartner waren nicht klar
  • Aktuelle Projektstände waren nicht transparent
  • Aufgaben blieben bei Externen hängen bzw. blockierten uns
  • Engpässe / Verzögerungen machten uns das Leben schwer
  • Planung war schwierig
  • Häufiges “auf einen Stand bringen” und mehrfaches Besprechen gleicher Punkte

Die Systemadministration ist von Natur aus ein stark vom Tagesgeschäft abhängiges Umfeld mit viel Klein-Klein-Arbeit. Der Anwender ruft an, meldet PC Probleme (Spezifisches hört man selten), der Kollege unterbricht seine eigentliche Tätigkeit wie z.B. die Vorbereitung einer größeren Umstellung und kümmert sich um die Nöten des besorgten Anrufers. Kaum zurück und wieder in die Umstellung vertieft, kommt eine E-Mail, dass die Druckertoner leer sind. Erneut gilt es die aktuelle Arbeit zu unterbrechen.

Darüber hinaus laufen natürlich immer Projekte mit anderen Abteilungen oder Externen (Telekommunikationsanbieter, Dienstleister, etc.), die voran getrieben werden müssen. Selbst der Entwickler-Kollege aus der selben Abteilung ruft an und möchte einen neuen Testserver aufgesetzt bekommen – am besten vorgestern versteht sich.

Kurzum: Ein reges Tagesgeschäft parallel zu großen Projekten und das alles im Umfeld von unterschiedlichen Stakeholdern. So wie es auch in Marketingabteilungen oder Zentralen der Fall ist.

Nüchtern betrachtet handelt es sich um eine Warteschlangensystem. Da Menschen nicht gut darin sind viele Dinge parallel zu machen, vermuten wir hierin eine der Ursachen: Zu viele Dinge werden gleichzeitig erledigt. Außerdem stehen wir Dritten skeptisch gegenüber, welche uns rein gefühlsmäßig ausbremsen. Bei den Telekommunikationsanbietern können wir indes von einer Tatsache sprechen…Darüber hinaus meinen wir diverse weitere Hindernisse erkannt zu haben, die den Arbeitsfluss immer wieder stören.

Um weil wir uns gerne verbessern möchten, eine zu große Umstellung auf einmal eher scheuen und der Evidenz der Vermutung den Vortritt geben möchten, haben wir uns entschieden Kanban einzuführen. Auf einen Nenner gebracht liegen dem 3 Prinzipien und 5 Praktiken zu Grunde.

Prinzipien:

  • Starte mit dem, was du jetzt machst
  • Verfolge inkrementelle, evolutionäre Veränderungen
  • Respektiere initiale Prozesse, Rollen, Verantwortlichkeiten und Job-Titel

Praktiken:

  • Mache Arbeit sichtbar
  • Limitiere den WIP
  • Manage den Arbeitsfluss
  • Mach Prozess-Regeln explizit
  • Führe gemeinschaftliche Verbesserungen durch (basierend auf Modellen)

Alle Regeln werden penibel eingehalten, jedoch ist die erste Regel alle Regeln abzuschaffen, die nicht mehr funktionieren.

Über die ersten Ergebnisse werde ich demnächst berichten. Falls jemand schon gute Erfahrungen primär im Administrationsumfeld gemacht hat, dann würde ich mich über Input freuen. Gerne auch aus der Softwareentwicklung.

Interview mit der dotnetpro mitgestalten

Am 12. März werde ich mit Tilman Börner ein Online Interview führen. Die Fragen beziehen sich natürlich primär auf die dotnetpro. Ein kleiner Vorgeschmack gefällig?

Kann jeder einfach Autor werden und einen Artikel schreiben?

oder

Wann können wir mit einer Kindle Ausgabe rechnen?

oder

Welche Änderungen sind dieses Jahr nach dem Design Relaunch noch zu erwarten?

Das Video veröffentliche ich dann auf meinem YouTube Channel. Ihr könnt die Richtung des Gesprächs mitgestalten, indem ihr bis zum 11 März eure Fragen in die Kommentare postet.

Es gibt keine passive Kaizen-Kultur

Es braucht keine Retrospektiven und dedizierte Kaizen Phasen; schließlich hat das vorher auch alles geklappt und die Verbesserungen haben sich genauso eingestellt.

Aussagen wie diese hört jeder Change Agent früher oder später. Ich will gar nicht abstreiten, dass in jedem Unternehmen mehr oder weniger kontinuierlich optimiert wird. Jedoch geht durch das passive Verhalten viel Potential verloren. Das kann jeder ganz einfach kontrollieren. Der geneigte Leser soll dazu für einen kurzen Zeitraum – beispielsweise 2 Monate – jede Idee protokollieren, welche von Kollegen mit “das müssen wir mal machen” oder “das sollten wir demnächst angehen” kommentiert wird. Im Anschluss ist zu prüfen, was tatsächlich umgesetzt wurde. Ich wäre überrascht, wenn bereits 5% fertig sind. Wohlgemerkt fertig umgesetzt, nicht nur angefangen und wieder liegen gelassen. Ganz im Sinne von stop starting, start finishing. Bereits die Definition von Kaizen drückt das aus:

“Kaizen […] bezeichnet ein methodisches Konzept, in deren Zentrum das Streben nach kontinuierlicher und unendlicher Verbesserung steht.”Wikipedia

Es handelt sich um ein methodisches Konzept. Eine Methode ist ein systematisches Verfahren. Laissez faire im Kontext von Verbesserungen kann aber nicht systematisch sein. Passive Kaizen-Kultur ist also ein Widerspruch.

Ein klarer Indikator für ungenutztes Potential, ist das wiederholte Auftreten des gleichen Problems. Der erste Gedanke, der einem dann kommt, ist: Mist, das wollten wir doch mal machen (siehe Aussage oben). Das können häufig kleine Dinge wie eine fehlende Fahrzeugpoolverwaltung oder eine Verwaltung für die ohnehin nicht gerade reichlichen Besprechungsräume sein. Aber auch komplexere Themen wie die hohe Informationsflut im Zeitalter der Wissensarbeit. Schon mal über eine SharePoint Dokumentenbibliothek oder ein Wikisystem nachgedacht? Und wenn ja, auch realisiert?

Unabhängig von den Implementations-Phasen solcher Ideen/Lösungen, gehören zu einer soliden Kaizen-Kultur auch Retrospektiven. Selbstverständlich werden hier wieder Stimmen laut, die behaupten, dass ich mir doch keine Zeit reservieren muss, in welcher ich reflektiere und nach Verbesserungsmöglichkeiten suche. Das ist leider eine ähnliche Floskel wie:

Wir brauchen keine Mitarbeitergespräche. Wir reden regelmäßig miteinander.

Wer sich aber mit den Themen intensiv beschäftigt und ganz darauf einlässt, stellt einen großen Unterschied fest. Persönlich habe ich sogar den Eindruck, dass durch kurze, oberflächliche Problemanalyse Lösungen entwickelt werden, die das Symptom kaschieren, nicht aber aber die Ursache beheben. Als Change Agent hat sich in dem Fall die sokratische Methode bewährt. Stelle solange W-Fragen (Warum, Wer, Was) bis – wie Goethe sagt – des Pudels Kern gefunden ist.

Der Leser kann sich dazu kurz in Erinnerung rufen wie es bei der Zulassungsstelle bei einer Ummeldung abläuft. An dem einen Schalter beantragt man die Anmeldung. Mit dem Papier geht man an den Schalter neben an. Natürlich muss dort wieder angestanden werden. Nach einer meist längeren Wartezeit wird dort das alte Schild vernichtet und das neue ausgegeben. Damit läuft man wieder an den ersten Schalter und nach noch längerer Wartezeit erhält man dann endlich die Papiere.

Wenn ich jetzt danach frage, wie sich der Prozess optimieren lässt, dann kommt ohne lange Überlegung die Antwort: Na indem am Schalter schneller gearbeitet oder mehr Personal eingestellt wird. Überstunden wären ebenfalls möglich. Das sind zwar alles Optionen, allerdings lange nicht die besten, da diese nur sehr beschränkt skalieren und teuer sind. Vielleicht ist das der Grund, warum bis heute die meisten Kfz Halter sich einen halben Tag Urlaub für das Ummelden nehmen müssen. Eine mathematisch nachweislich bessere Antwort gibt es hier.

Fazit

Keine Frage: Es braucht kleine, kontinuierliche Verbesserungen, damit die Unternehmen diese verdauen können. Evolution statt Revolution (manchmal auch letzteres!). Aber Evolution im Schneckentempo gleicht eher einem Rückschritt, weil die anderen schneller voran kommen. Wer jeden Tag 30 Minuten ins Fitnessstudio geht und sonntags ruht, hat am Ende der Woche auch 3 Stunden trainiert. Und genauso wie Trainings als feste Termine eingeplant werden müssen, bedarf es auch fester Zeiten für Retrospektiven und die Umsetzung der daraus resultierenden Ergebnisse.

Und wenn der Leser immer noch motiviert ist, dann kann er gerne einen Kommentar hinterlassen, ob in seinem Unternehmen bereits Kaizen an der Tagesordnung ist oder nicht und warum respektive warum nicht.

Aus der Praxis – Wie sich unser Unternehmen durch Social Media verändert hat

Social Media ist nur ein Trend

Ich bin vor einigen Monaten aus unserer Social Media Gruppe (meine früheren Berichte zu unserer Arbeit) ausgetreten. Nicht weil ich darin keinen Sinn mehr gesehen oder weil ich nichts mehr hätte beisteuern können. Vielmehr liegen meine Stärken mehr darin Ideen zu entwickeln und einzuführen, als diese bis zum Schluss zu begleiten. Schluss bedeutet hierbei bis die letzten Kollegen „überzeugt“ wurden. Die Autorinnen Rising Linda und Mary Lynn sprechen in ihrem tollen Buch Fearless Change von sogenannten “Innovators” und “Early Adopters”  (einen Einführungs-Podcast dazu gibt es hier). Mit Laggers werden übrigens Persönlichkeitstypen bezeichnet, die nicht zu überzeugen sind. Dazwischen reihen sich die Early Majority und Late Majority ein.

Nachdem vor kurzem die Gruppe überein kam sich aufzulösen, sprach mich eine Kollegin an. Sie ist der Meinung, dass viele Ideen respektive Ansätze dabei sind, bei denen es sich lohnt diese weiterzuführen. Zum Beispiel unsere Textwerkstätten. Sie wollte wissen, wie ich über die Entscheidung denke und ob ich einen Vorschlag hätte, um die Gruppe neu auszurichten. Vor allem da sich die bisherigen Ergebnisse sehen lassen konnten und sie die Art der interdisziplinären Kollaboration im Vergleich zur (homogenen) Abteilungsarbeit spannend fand.

Nun wird der ein oder andere Leser vermutlich denken: Das war doch klar. Social Media und Unternehmen passen nicht zusammen. Das ist ein vorübergehender Trend, den jeder früher oder später abhaken muss!

Halte an deinen Zielen fest, bleibe dabei aber flexibel

Mein Sicht darauf war dann doch eine andere, was ich meiner Kollegin wie folgt erklärt habe: Das Ende der Social Media Gruppe ist lediglich dem Namen und der Beschränkung auf eine festgelegte Personengruppe geschuldet. Die Idee dahinter hat längst bei uns Wurzeln geschlagen. Denn inzwischen machen wir unternehmensweite Open Spaces, bei denen die “Lehrer” und “Schüler” Rollen kontinuierlich wechseln und die Agenda von allen Mitarbeitern mitbestimmt wird. Am Vormittag erzählt noch der Kollege aus Berlin umfassend über ein neues Produkt und die Kollegin aus Nürnberg hört zu, am Nachmittag werden die Rollen getauscht und die Kollegin referiert über Werkstoffe und deren Einsatzszenarien.

Die Meetings unserer Marketing- & Einkaufs-Abteilung sind inzwischen für alle geöffnet. Durch gezielte Einladungen abteilungsfremder Kollegen soll das gefördert werden. Themen- und Projektvorschläge werden in den Wochen zuvor von allen Mitarbeitern im Wiki zusammengetragen. Jedem „Stakeholder“ ist freigestellt Input zu liefern.

Ein weiteres Beispiel ist unser Arbeitsplatztausch, bei dem jeder Mitarbeiter mindestens 1x jährlich in eine andere Abteilung wechselt, um über den eigenen Tellerrand hinaus zu schauen. Und natürlich schreibt der Kollege seinen Erfahrungsbericht in unseren Corporate Blog. Stephan ist übrigens kein Mitglied der Social Media Gruppe! Damit ist er einer von vielen, die bereits gebloggt haben.

Mir fallen auf Anhieb noch viele weitere Ausprägungen ein, doch unser Erfolg zeigt sich meiner Meinung nach am besten darin, dass ich kürzlich beim Vorbeigehen nicht umhin kam zu hören, wie der Einkaufsleiter in Nöttingen am Telefon einer Kollegin aus Frankfurt wie selbstverständlich mitteilte: “Das kannst du alles im Wiki nachlesen und dann ggf. ergänzen”. Dass der Einkaufsleiter noch ein paar Wochen zuvor seine Mitarbeiterin – selbige ist Teil der Social Media Gruppe und daher bestens geschult im Umgang mit dem Wiki – gefragt hat wie der Inhalt einzupflegen ist, brachte mich dann doch zum Schmunzeln. Mit einem Video zur Integration der Wiki-Inhalte in unser Warenwirtschaftssystem habe ich die Vernetzung bei uns bereits illustriert.

Neben einigen weiteren Beispielen wies ich meine Kollegin noch darauf hin, dass sie selbst erst kürzlich gegenüber dem Vorgesetzten den Wunsch geäußert hat in ihrer Abteilung regelmäßige Retrospektiven zur Verbesserung der Prozesse umzusetzen. Ebenfalls ein Ansatz, den wir bei der Social Media Gruppe einsetzten.

tree-200795_1280

Quelle: http://pixabay.com/de/baum-struktur-netzwerke-internet-200795/

Fazit:

Nur diejenigen, die Social Media nicht auf Werkzeuge wie Facebook und Twitter reduzieren, sondern die Ansätze und Gedanken dahinter verstehen, können das der Sache inhärente Potential nutzen. Die Schulungs-Agenda sollte eben nicht mehr nur vom Abteilungsleiter definiert oder Geschäftsprozesse durch die Geschäftsleitung festgelegt werden. Stattdessen muss sich eine Kultur etablieren, bei der die Fähigkeiten aller genutzt werden und das Wissen der Masse kontinuierlich geteilt wird. Dadurch entsteht eine Lernkultur, bei der Informationen nach Belieben beigesteuert und herausgezogen werden können. Social Media ist insofern auch keine neue Idee, jedoch sind inzwischen viele digitale – teils populäre, teils weniger bekannte – Werkzeuge auf dem Markt. Mit dem inzwischen signifikanten und noch weiter steigenden Anteil der sogenannten Wissensarbeit ist nicht mehr die Frage, ob man auf den Zug aufspringen sollte. Die Herausforderung liegt darin die passenden Werkzeuge zu evaluieren und eine entsprechende Unternehmenskultur zu etablieren. Denn wer nicht mit der Zeit geht, geht mit der Zeit.

Wie stehts bei euch um Change Management, Social Media und Innovationen? Welche Werkzeuge nutzt ihr? Seid ihr schon auf einem guten Weg oder springt ihr gar nicht auf den Zug auf?

Nachgefragt – Clean Code Interview mit Ralf und Stefan

In einem Online Interview habe ich Ralf Westphal und Stefan Lieser, die Gründer der Clean Code Developer School, zum Thema Clean Code befragt. Herausgekommen ist eine Aufnahme, die es jetzt auf YouTube gibt. Die Fragen wurden nicht vorab abgesprochen, um eine Gesprächsatmosphäre zu schaffen, wie es sie bei einer Kaffeepause gibt.

Es war ein toller Gedankenaustausch. Danke nochmal ihr zwei!

Zum Video

Zum Video

Fragen

  • Wenn ihr euch für eine Konferenz entscheiden müsstet, welche wäre das?
  • Community vs. Freizeit: Wie ist das vereinbar
  • Wann ist Clean Code noch sinnvoll und wann verschlimmbessere ich nur noch?
  • Macht Clean Code Sinn, wenn die Kollegen nicht mitziehen?
  • Wird das Schreiben von gutem Code mit der Zeit einfacher?
  • Ist guter Code relativ?
  • Was erwartet ein Arbeitgeber, wenn er Clean Code in der Stellenausschreibung aufführt?
  • Was kann ich von einem Bewerber erwarten, wenn er Clean Code in der Stellenausschreibung aufführt?
  • Verschiedene Ansätze für bessere Architektur, z.B. Flow Design
  • Brauche ich für Flow Design einen IoC Container?

Für die Zukunft sind weitere Interviews geplant:

  • Mit Daniel Marbach zu Machine.Specifications
  • Mit Tilman Börner zur dotnet pro
  • Mit Steffen Forkmann zur paket

Falls ihr noch Ideen habt, dann schreibt sie in die Kommentare.

PostSharp reports broken references when using Paket

If you use Paket instead of NuGet (why? therefore!) you will experience the following difficulties:

imageGiven is the following Solution/Project. It contains a paket.references file containin just one line “PostSharp”, which is

The PostSharp Assembly is added when you your “paket.references” file in the project directory containing just one line “PostSharp”. If you execute “paket install” in your command promt, paket adds PostSharp as reference to the project and modifies the csproj accordingly.

The next time you run a build, PostSharp comes up with this dialog:

postsharp

Since the VisualStudio PostSharp plugin detects a reference to PostSharp.dll, it expects a packages.config which it can’t find. If you don’t agree, the solution builds successfully but the code won’t be modified by PostSharp.

imageIf you agree, PostSharps adds a packages.config and replaces the existing PostSharp reference with the newest stable one (which probably is not the version you have specified in Paket!).

I posted this on Twitter. The Paket maintainers can’t handle this and PostSharp won’t change this behaviour.

image

image

image

So by now, I don’t see any solution except that Paket users can ask PostSharp to change this behaviour.

//Edit: Have a look at the comments. The unsolved problem is that you have to execute the „install.ps1“. Paket doesn’t do that but NuGet will also remove this feature in a future release.

Interview mit Ralf Westphal und Stefan Lieser

Am 22.1. werde ich abends ein Online Interview mit den Clean Code Koryphäen Ralf Westphal und Stefan Lieser führen. Die Fragen werden thematisch weit gestreut sein. Ein kleiner Vorgeschmack gefällig?

Macht Clean Code Sinn, wenn die Kollegen nicht mitziehen?

oder

Community vs. Freizeit: Wie ist das vereinbar?

oder

Woher weiß ich, wann ich es mit Clean Code übertreibe?

Das Video veröffentliche ich dann auf meinem YouTube Channel. Ihr könnt die die Richtung des Gesprächs mitgestalten, indem ihr bis ca. 15 Uhr eure Fragen in die Kommentare postet.

Dropbox-Speicherplatzaktion im Rahmen Ihres Samsung-Geräts ist abgelaufen

Situation:

Ihr kauft ein Samsung Galaxy Handy und erhaltet 50 GB Dropbox Speicherplatz dazu. Wie das geht, habe ich in diesem Beitrag geschrieben. Nach 2 Jahren läuft die Aktion aus. Kein Problem denkt ihr, weil mit der Vertragsverlängerung ein neues Smartphone von Samsung kommt, welches ebenfalls den Dropbox Deal beigefügt hat. Dem ist leider nicht so, wie ihr der Antwort des Supports entnehmen könnt. Wenn es euch aber nichts ausmacht eine weitere E-Mail-Adresse zu verwenden, könnt ihr die Einschränkung umgehen.

 

Meldung

[…]die Dropbox-Speicherplatzaktion im Rahmen Ihres Samsung-Geräts ist abgelaufen. Ihr Speicherplatzkontingent wurde automatisch auf 7 GB gesetzt. Wenn Ihr Speicherlimit von 7 GB überschritten ist, können Sie keine neuen Fotos, Videos und Dokumente mehr in Ihrer Dropbox speichern.[…]

Frage an den Support

[…]ich habe inzwischen ein neues Samsung Handy gekauft (Note 3), welches ebenfalls über einen entsprechenden Deal verfügt, jedoch kann ich den Speicherplatz nicht wieder aufladen. Woran liegt das?[…]

Antwort des Supports

[…]Leider können wir den Bonus-Speicherplatz einer Aktion nur einmal gutschreiben, damit Aktionspreise derselben Art nicht auf einem Konto angehäuft werden. Wenn Sie also bereits eine Aktion genutzt haben, kann keine weitere beansprucht werden.

Sonderaktionen sind aber auf Freunde oder Verwandte übertragbar. Dazu brauchen sich diese einfach von Ihrem die Teilnahmebedingungen erfüllenden Gerät aus in ihrem eigenen Konto anzumelden.

Bitte entschuldigen Sie eventuelle Unannehmlichkeiten. Bei weiteren Fragen stehe ich Ihnen gerne zur Verfügung.[…]

Top 10 Beiträge des Jahres 2014

2014 waren das die Beiträge, die auf meiner Seite am häufigsten aufgerufen wurden. Natürlich sind Beiträge, die nicht nur IT-ler ansprechen, am weitesten oben. Vor allem Dank Google, weil ich mit den Posts besonders weit oben gelistet werde.

  1. Wie erhalte ich die 50 GB Dropbox Speicher beim Samsung Galaxy S3
  2. Mobile Serie – Das Lizenzlimit des Kindle
  3. WordPress deaktiviert Suchmaschinen Indizierung
  4. MindManager mit SharePoint verheiraten
  5. Bitlocker vs. TrueCrypt
  6. Einführung in IoC Container
  7. Entity Framework Webcasts Serie
  8. Smart overriding of the SaveChanges-Method of the EntityFramework
  9. Was ist denn bitte ein C# Experte?
  10. Kata 2048

Am meisten kommentiert wurden folgende Posts:

  1. Feedback zur dotnet pro
  2. Wenig Kulanz bei Cyberport
  3. TDD 2.0
  4. Was ist denn bitte ein C# Experte?
  5. Entity Framework Webcasts Serie
  6. Programmieren – aber bitte nur von 8-17 Uhr
  7. UAC oder keine UAC – Das ist hier die Frage
  8. Mobile Serie – Das Lizenzlimit des Kindle
  9. Konsequente Objektorientierung – Die besseren Methodenparameter
  10. Ready-to-Use C# Enumeration Extension Methods

Warum ich den Facebook Messenger WhatsApp vorziehe

Ich werde häufig darauf angesprochen (unter anderem von meiner Familie), warum ich WhatsApp ungern nutze. Das Programm habe ich lediglich für die Kontakte (z.B. mein Bruder) installiert, die nicht auf Facebook sind. Deshalb will ich kurz erläutern, was meine Gründe sind:

  • Für den Facebook (FB) Messenger ist keine Handynummer notwendig, sodass mich mein gegenüber dadurch nicht automatisch anrufen oder ansimsen kann (1). Dieser Ansatz bringt auch den nachstehenden Vorteil.
  • Für mich ist die fehlende Nutzungsmöglichkeit am PC der wichtigste Grund WhatsApp zu meiden (2)(3). Natürlich tippe ich am Handy deutlich langsamer als mit dem 10-Fingersystem an der Tastatur. Wer viel schreibt, verliert dabei dementsprechend Zeit. Inzwischen arbeite ich mit Dritthersteller-Apps, um mich vom PC mit dem Handy zu verbinden, um die Text komfortabel eingeben zu können (dazu nutze ich AirDroid). Wer wie ich auch FB beruflich nutzt, für den ist das von besondere Bedeutung.
  • Damit einher geht der Vorteil, dass ich den FB Messenger parallel nutzen kann, z.B. am Laptop, PC, Tablet und Handy. Je nachdem, welches Geräte ich gerade zur Hand habe. Wenn ich mit dem Tablet auf der Couch liege, will ich nicht mein Handy holen müssen.
  • Außerdem hat FB eine entsprechende Schnittstelle, wodurch auch andere Anbieter deren Netzwerk nutzen können (wenngleich eingeschränkt). Dadurch kann ich Skype mit FB verbinden, wodurch ich nicht den Browser nutzen und meine Kommunikation zentral bündeln kann.
  • FB hat (zumindest noch) mehr Nutzer als WhatsApp. Außerdem habe bzw. hatte ich dort bereits meine ganzen Kontakte.
  • FB bietet mehr als nur Messaging. Die Plattform bietet insgesamt wesentlich mehr Funktionalität, falls mir der Multimedia-Chat nicht ausreicht, kann ich z.B. gemeinsame Events und Bilder/Video-Alben nutzen. Das Rechtesystem von Facebook ist darüber hinaus sehr weit vorgeschritten (5).
  • Wer FB ohnehin nutzt, muss dadurch 2 Konten führen, 2 Apps installieren, 2 Chats prüfen, etc.. Der Mehraufwand steigt.
  • Für den Facebook Messenger (FM) fallen keine Kosten an. Dabei geht es mir nicht so sehr um den finanziellen Aspekt, sondern darum meine Kontodaten freizugeben. Das ist unter anderem auch dann ungünstig, wenn ich der Generation 50+ WhatsApp einrichten soll, weil der Kauf jährlich durchgeführt werden muss (dementsprechend brauchen sie wieder meine Hilfe) und die Generation der Freigabe ihrer Kontodaten skeptisch gegenübersteht. Darüber hinaus hat nicht jeder eine Kreditkarte, welche aber notwendig ist.
  • Das Übertragen des Kontos auf ein neues Handy und die Sicherung der Daten (Dateien, Chatverlauf, etc.) sind bei WhatsApp sehr aufwändig und für unbedarfte Anwender zu schwierig.
  • Ich kann problemlos mehrere FB Konten anlegen und nutzen, z.B. eines für berufliche und eines für private Zwecke. Das geht in WhatsApp natürlich nicht (4).
  • Wer kein Handy hat, ist bei Whatsapp außen vor. Es gibt Leute, die haben kein Smartphone, dafür aber einen PC. Speziell Großeltern, die gerne in Kontakt mit den Enkeln bleiben möchten. In meinem Bekanntenkreis gibt es auch Menschen, die können sich keine entsprechende Hardware und Tarif leisten. Diejenigen haben aber einen Familien-PC, den alle Familien-Mitglieder nutzen können.
  • Die fadenscheinigen Gründe der WhatsApp Anhänger, weshalb sie kein FB nutzen, sind in der Regel datenschutzrechtlicher und sicherheitstechnischer Natur. Lasst mich das in aller Deutlichkeit sagen: Da tauscht ihr Pest gegen Cholera. FB Messenger und WhatsApp schenken sich nichts. Persönlich halte ich WhatsApp sogar für unsicherer. Zumindest war das vor dem großen Sicherheitsskandal so.

 

Fazit

Während die meisten Nutzer dem Kauf von WhatsApp durch FB negativ wahrnahmen, fand ich das sehr positiv. Und während viele hoffen, dass die Produkte getrennt bleiben, hoffe ich auf eine direkte Schnittstelle, sodass ich mich endlich von WhatsApp trennen kann.

 

1) Ich meine, dass zur Nutzung des FB Messengers inzwischen kein Facebook Konto mehr notwendig ist, da jetzt eine Registrierung mit der Handynummer möglich ist. Der geneigte Leser darf mich gerne korrigieren, sollte das nicht so sein.

2) Über diverse Tricks ist das doch möglich, deaktiviert dann aber die Nutzung auf dem Handy.

3) Laut neuen Informationen könnte sich das aber bald ändern (siehe hier).

4) Ich meine gelesen zu haben, dass es mit entsprechendem Aufwand bei einem Dual-SIM-Handy möglich ist.

5) Als Freelancer biete ich im Rahmen meiner Web-Security-Trainings für den normalen Büroanwender auch eine entsprechende Einführung an. Bei Interesse könnte ihr mich gerne kontaktieren.

Konsequente Objektorientierung – Die besseren Methodenparameter

Kürzlich habe ich eine Lösung zugeschickt bekommen, die folgende Methode enthielt.

   1: public bool compare(string item1, string item2)

   2: {

   3:     if (item1 == null || item2 == null)

   4:         return false;

   5:  

   6:     //more code

   7: }

 

In diesem Webcast möchte ich einen Ansatz zeigen, den ich als gute Alternative zu obigem Code sehe. Dabei setze ich konsequent auf Objektorientierung zur Trennung der Aspekte.

Excel Online Training #2 – Fahrtenbuch

Zum Video direkt auf YouTube geht es hier.

 

Das erste Training gibt es hier.

Drei No-Gos beim Beantworten von E-Mails

Vielleicht müssen auch vermeintlich einfache Dinge explizit gemacht werden. Deshalb hier meine 3 No-Gos beim Beantworten von E-Mails, für welche ich auch die Tweets von Jürgen Benjamin auf Twitter heranziehe.

 

image

 

  1. Statt auf Antworten zu klicken eine neue E-Mail verfassen. Dieses Verhalten wird nur noch von der Tatsache getoppt, dass manche Empfänger zwar auf Antworten klickt, aber Betreff und Inhalt löschen respektive ändern. Quasi im letzten Moment alles vermasseln.
  2. Die Antwort unterhalb des Textes statt oberhalb einfügen. Zum einen wird immer erst darüber gesucht, zum anderen macht es die Konversation unübersichtlich, wenn andere Empfänger ihre Antworten darüber schreiben. Dem Verlauf kann dann nicht ohne weiteres gefolgt werden.
  3. Die Inline Kommentare nicht lesen und eine leere Mail reklamieren (Anmerkung: In dem Fall sollte aber der Absender auch auf die Kommentare im Text hinweisen, sowie eine andere Schriftfarbe verwenden).

Seminarabsage bei Lutz und Grub

Ich nehme regelmäßig die Gelegenheit wahr und rezensiere Bücher, bewerte Dienstleister oder berichte von Konferenzen. Egal, ob positiv oder negativ.

Heute möchte ich über eine für mich sehr negative Erfahrung bei der Firma Lutz und Grub in Karlsruhe berichten. Bei dieser hatte ich ein 2-tägiges Seminar zum Thema Projektmanagement gebucht. Um das Ergebnis vorweg zunehmen: Um 9.30 Uhr waren alle Teilnehmer pünktlich im Seminarraum; der Trainer jedoch fehlte. Um 9.40 Uhr wurde das Seminar dann krankheitsbedingt abgesagt.

Nun störe ich mich nicht daran, dass das Seminar abgesagt wurde, weil der Trainer erkrankte und kein Ersatz zur Verfügung stand. Ich störe mich erheblich daran, dass dies erst nach Seminarbeginn festgestellt wurde. Dies hätte sich doch problemlos vermeiden lassen. Zum einen hätte bereits am Vortag eine Benachrichtigung (E-Mail, Telefon) rausgehen können, dass der Termin ggf. nicht gehalten werden kann und dass die Teilnehmer am nächsten Morgen vorher eine finale Zu- oder Absage erhalten werden. Es sei angemerkt, dass es der Trainer laut Aussage von Lutz und Grub bereits am Vortag angeschlagen war. In unserer abteilungsinternen Organisation haben wir dieses Vorgehen sogar schriftlich im Wiki fixiert (siehe Screenshot).

 

image

 

Selbst wenn der Trainer aber morgens aufwacht und aus gesundheitlichen Gründen kurzfristig absagen muss, würde ich mir immer noch wünschen, dass versucht wird die Teilnehmer möglichst schnell telefonisch oder schriftlich zu informieren. Wenn um 9.30 Uhr Seminarbeginn ist, dann ist eine Meldung um 9.40 Uhr nicht hinnehmbar. Ein kleines Rechenbeispiel soll verdeutlichen, welche hypothetischen Kosten dadurch hätten vermieden werden können: Die Reisezeit für mich betrug insgesamt 3 Stunden. Als Freelancer mit einem Stundensatz von 90€ hätte ich somit 270€ verdienen können. Hinzu kommen die Fahrtkosten, welche bei mir knapp über 10€ betrugen. Damit sind wir bei insgesamt 280€. Welche terminliche Verrenkungen bei mir notwendig waren, um 2 Tage freizuschaufeln, will ich gar nicht erst bewerten.

Generell hatte ich bisher einen guten Eindruck von Lutz und Grub, aber das war für mich doch mehr als ärgerlich. Die Schulung wurde auf nächste Woche verschoben. Diese kann ich weder, noch möchte ich sie wahrnehmen.

Hält der geneigte Leser meine Reaktion für übertrieben?

Programmieren – aber bitte nur von 8-17 Uhr

Zu meinem letzten Blogbeitrag Was ist denn bitte ein C# Experte gab es auf Twitter noch eine Diskussion darüber, ob der Job eines Entwicklers ein 8-17 Uhr Beruf ist. Dieser Beitrag soll eher dem Gespräch dienen, weil Twitter dazu nicht geeignet ist. Ich kann mir vorstellen, dass es hierzu bei 5 Personen 6 Meinungen geben wird. Konsequenterweise wird es deshalb in Betrieben auch häufig zu Problemen kommen, wenn völlig unterschiedliche Meinungen und Ansätze herrschen. Ich sage dazu:

Entwickeln ist keine 8-17 Uhr Tätigkeit.

Was ich aber damit meine: Es sollte keine feste Grenzen geben, da ich als Entwickler nicht auf Knopfdruck kreativ sein kann. Ein Maler kann genauso wenig immer von Montags bis Freitags von 8-17 Uhr Bilder kreieren. Ich treffe damit keinerlei Aussage darüber, ob mehr als 8 Stunden gearbeitet werden sollen. Oder weniger. Vielmehr glaube ich:

Nur Ergebnisse sind entscheidend, nicht die aufgebrachte Zeit

In dem Sinne: Work smart, not hard. Ich bin auf eure Meinungen gespannt!

Tipps zum Customer Relationship Management in kleinen und mittleren Unternehmen

Mit folgendem Webcast möchte ich kleine und mittlere Unternehmen (KMU) einen groben Überblick geben, was es bei der Auswahl von Customer Relationship Management (CRM) Systemen zu beachten gilt. In 20 Minuten mache ich eine kurze Analyse und erkläre den unterschied von funktionalen und nicht-funktionalen Anforderungen. Dabei ist es wichtig zu wissen, dass die nicht-funktionalen zwar nicht sichtbar sind, aber durchaus teuer werden können. Am Schluss nenne ich dann einige Produkte, die sich primär in interne und externe Lösungen (Stichwort Cloud) kategorisieren lassen. Bei der Auswahl wird dann der Rückschluss auf die Anforderungsanalyse gezogen.

 

Hier geht es zum Video. Wer sich fragt, welches Programm ich zur Aufbereitung verwende. Es handelt sich um den MindManager der Firma MindJet.

CRM

Hier sind noch weiterführende Informationen:

Was ist denn bitte ein C# Experte?

Die Bezeichnungen Senior Developer, Solution Architect und wie sie alle heißen sollen andeuten, dass es sich um jemanden mit Erfahrung handelt. In dem ein oder anderen Bewerbungsschreiben lese ich dann auch gerne “Experte”. Für mich sind das aber – und ich denke der Leser stimmt mir zu – alles relative Aussagen. Vor allem in Anbetracht der Produkt- und Themenvielfalt in der Programmierung.

Sicherlich kennt (wohlgemerkt: kennt, nicht kann) kein .NET Experte alle Programmiersprachen. Dann brechen wir das weiter runter. Sicherlich kennt kein C# Experte alle .NET Klassen. Ok, dann brechen wir es nochmal weiter runter. Sicherlich kennt kein C# BCL Experte die ganzen Facetten der Klasse String (Anmerkung: Wenn ein Leser dies anzweifelt, dann möge er sich diesen Artikel zu Gemüte führen).

Von daher tue ich mich logischerweise schwer, wenn ich von solchen Jobtiteln lese. Nichtsdestotrotz habe ich eine unsere Stellenausschreibungen genauso tituliert. Damit wollte ich ausdrücken, dass wir nach Kandidaten suchen, die sich schon längere Zeit mit der Materie beschäftigen. Ein wenig präziser schreibe ich: “Mindestens 5-jährige Berufserfahrung”. Erfahrung bedeutet nicht gleich tiefgreifende Kompetenz oder überragendes Know How. Ich hoffe der geneigte Leser stimmt mir zu. Aber für ein ganz grobes Profil und die Vermeidung völlig ungeeigneter Bewerbungen (wenn denn überhaupt so viele da wären…) muss das reichen.

Jetzt stellt sich mir die Frage wie sich ein sagen wir mal ausbaufähiges Fundament feststellen lässt. Krisztina nennt in ihrem Blogbeitrag ‘Are you nerd enough to code with us’ z.B. Clean Code, SOLID, TDD, etc.. Klar ist, dass mit den eigenen Ansprüchen vorsichtig umgegangen werden sollte. 100%ige Profiltreffer oder Kandidaten, die uns stark ähneln, gibt es nicht. Ganz abgesehen davon gingen bei einer homogenen Abteilung die Benefits des Melting Pots verloren. Den Mehrgewinn durch Vielfalt. Was suche ich also? Ich versuche es beispielhaft an der deutschen Sprache festzumachen: Wer unserer Sprache mächtig ist (Grammatik, Rechtschreibung, Umfang), der wäre für mich ein geeigneter Kandidat, wenn es darum ginge unseren schönen badischen Dialekt zu erlernen.

Und dabei setzt nun meine eigentliche Frage an: Woran mache ich es fest, dass jemand besagtes solides Fundament beherrscht. Im übertragenen Sinne die deutsche Sprache. Letzteres ist übrigens genauso schwierig zu prüfen, wie ersteres. Hier ein paar Beispiele, die ich zur Diskussion stelle:

  • Ist das Schlüsselwort ‘yield’ bekannt?
  • Worauf soll ich achten, wenn ich Programmcode gemäß dem Don’t Repeat Yourself-Prinzip analysiere
  • Wozu dient das MVVM Entwurfsmuster im Kontext von WPF

Klar ist, dass die Fragen zum Themenschwerpunkt des Bewerbers passen sollten. Jemand, der bisher nur Backend-Code geschrieben hat, kennt sich verständlicherweise nicht mit WPF und MVVM aus. Nach 5 Jahren Entwicklung sollte aber jeder Entwickler (sogar PHP Developer Zwinkerndes Smiley) das DRY-Prinzip kennen.

Was meint ihr? Wie lotet ihr das aus? Habt ihr auch die Situation, bei der ihr denkt: Also die Bewerbung hat überhaupt nicht gepasst? Eione kleine Bitte noch: Fachkräftemangel ist ein Thema für sich. Darum geht es mir in diesem Artikel nicht. Wer sich dafür interessiert, findet dieses Video vielleicht interessant.

Where YouTrack 6 still lacks

  • Single Sign-on in a Windows Domain: Vote for this here
  • Print sprint cards: Vote for this here (or enhance the whole agile board)
  • Support of Skype IM for notifications: Vote for this here
  • Support of enum type fields as a dop-down in order to implement the Fibonacci sequence: Vote for this here
  • Summarize states into one column in Agile Board so that showing open and reopened issues is possible: Vote for this here

Die 3 wichtigsten Facebook Einstellungen

Generell lohnt sich immer der Blick in die Privatsphäre-Einstellungen von Facebook. Die 3 Punkte, die aber jeder Nutzer richtig konfiguriert haben sollte, erläutere ich hier:

Ruft diese Seite auf

Abschnitt 1:

Wählt rechts ‘Bearbeiten’ aus

facebook_settings_1_0

Wählt ‘Niemand’ aus

facebook_settings_2_1

 

Abschnitt 2:

Wählt rechts ‘Bearbeiten’ aus

facebook_settings_2_0

Wählt ‘Niemand’ aus

facebook_settings_2_1

 

Abschnitt 3:

Wählt ‘Deaktiviere’ aus

facebook_settings_3_0

Auf der nächsten Seite wählt ihr ‘Abbestellen’ aus

facebook_settings_3_1

 

Eine interessante Nachricht zum Thema Facebook Werbung könnt ihr auf Chip.de nachlesen. Wie sich das verhindern lässt, zeige ich in meinem nächsten Beitrag.

Regelwerk und Beispiele für die eigene Retrospektive

611912_web_R_B_by_Lisa Spreckelmeyer_pixelio.deBei uns führt jeder IT-ler täglich seine eigene Retrospektive durch. Für neue Mitarbeiter will ich in diesem Blogbeitrag festhalten, was wir darunter verstehen. Statt die Information in unserem internen Wiki zu persistieren, wollte ich sie öffentlich machen, damit gegebenenfalls Andere davon profitieren können. Eine letzte Anmerkung für Außenstehende: Natürlich führen wir zusätzlich noch Team bzw. Sprint Retrospektiven durch, die sich zum Teil erheblich unterscheiden.

 

Regelwerk

  • Die Retrospektive ist ein Werkzeug aus unserem Werkzeugkasten zur kontinuierlichen Verbesserung
  • Eine Retrospektive ist eine Reflexion, bei der der Tag nochmal in Gedanken durchgegangen wird. Eine feste Dauer gibt es nicht, da jeder Tag anders ist. Aber um eine Orientierungshilfe zu nennen: 10-30 Minuten.
  • Idealerweise wird die Retrospektive immer am Ende eines Tages gemacht, weil die Erinnerungen noch frisch sind. Eine feste Vorgabe gibt es jedoch nicht. Es ist genauso möglich täglich mehrmals Notizen festzuhalten oder frisch ausgeruht am Morgen des Folgetages zu reflektieren.

Was ist festzuhalten?

  • Sowohl das Gute, als auch den Verbesserungsbedarf. Jedoch nicht nur das Problem an sich, sondern möglichst gleich eine entsprechende Lösung.
  • Wenn ich selbst etwas Neues probiert habe und es gut funktioniert hat, dann könnte eine Schlussfolgerung lauten, die Vorgehensweise meinen Kollegen zu empfehlen. Eine weitere könnte lauten, dass es sich lohnt noch mehr Zeit in die Optimierung bzw. das Testen zu stecken, um noch mehr herauskitzeln zu können
  • Bei negativen Punkten ist zu unterscheiden, ob es sich um regelmäßig benutze Ansätze respektive auftretende Verhaltensweise handelt oder ob es ein einmaliges Problem war
  • Wenn es regelmäßig auftritt, sollte es in jedem Fall festgehalten und über eine Lösung nachgedacht werden. Im Zweifel kann es in die Team Retrospektive eingebracht werden, um Hilfestellung zu bekommen. Oder es könnte sich um das Verhalten des Kollegen handeln, welches negative Konsequenzen für die eigene Arbeit mitbringt. Dann könnte eine Schlussfolgerung sein dies zunächst unter 4 Augen zu klären.
  • Bei einmalig aufgetretenen Problemen sollte jeder selbst entscheiden, ob es sich ein Eintrag lohnt. Bei einem menschlichen Fehler, der einmalig und unter einer einmaligen Konstellation auftrat, ist das vermutlich wenig zielführend. Allerdings hängt es auch ein wenig von den Konsequenzen ab. Vergesse ich beispielsweise beim Gehen das Abschließen und Sichern des Firmengebäudes, so kann ich – oder eben nicht – selbiges notieren und z.B. darüber nachdenken eine kleine Checkliste am Monitor zu befestigen. Auf der könnte übrigens dann auch stehen, dass die abendliche Retrospektive durchzuführen ist.

Beispiele

  • Vergesse ich als Schüler, der ich ca. 1x in der Woche bei einem Betrieb jobbe, mehrfach meine meine Retrospektive durchzuführen oder mir meine Arbeitszeit per Unterschrift bestätigen zu lassen, dann kann ich mir die oben erwähnte Checkliste an meinem Arbeitsplatz (am besten auf Augenhöhe) befestigen.
  • Verstoße ich als Entwickler gegen das Don’t Repeat Yourself-Prinzip, dann notiere ich das. Stelle ich nach einem Monat fest, dass das häufig vorkommt, überlege ich mir, woran es liegt. Arbeite ich z.B. viel mit Copy & Paste, so könnte ich z.B. für 1-2 Wochen in meiner IDE die Tastenkombination STRG+C umstellen.
  • Vergesse ich als Administrator regelmäßig E-Mails an Externe, weil der Empfänger sich nicht von alleine meldet, so kann ich mir in Outlook auf die gesendete E-Mail einen Reminder setzen.
  • Verbringe ich als Vorgesetzter den Großteil meiner Zeit in Meetings, so sollte ich selbige vielleicht analysieren. Unproduktive Meetings lassen sich mit einfachen Mitteln deutlich verbessern (vgl. meinen Artikel Wir arbeiten timeboxed). Eine weitere Möglichkeit ist es alle Meetings auf einen Tag zu legen oder an bestimmten Tagen / zu bestimmten Uhrzeiten gar keine Meetings anzusetzen.

Aus unserer täglichen Retrospektive berichte ich hier. Natürlich ist die Retrospektive ein sehr weites Feld und das oben genannte Regelwerk nur ein Tropfen auf den heißen Stein. Aber für den Einstieg reicht uns das. Der Rest kommt über Gespräche darüber und beim täglichen Reflektieren.

Wie hält es der Leser? Sind Retrospektiven bei euch in der Firma fest im Prozess etabliert? Nur bei Scrum oder auch in Eigenregie? Wollen die Kollegen sich überhaupt weiterentwickeln?

Aus der täglichen Retrospektive #3

2014-07-31 12.08.30Unsere Retrospektiven gehen weiter und die Teammitglieder entwickeln meiner Einschätzung nach ein immer besseres Gespür für Impediments. Das ist für mich als Scrum Master besonders erfreulich. Ich habe mir wieder einmal etwas herausgegriffen, von dem ich denke, dass es dem Leser helfen kann.

Es hat sich herausgestellt, dass ein wichtiger Prozess bisher nicht explizit gemacht wurde: Der Go Live.

Das führte unter anderem dazu, dass das Update erst mit mehreren Tagen Verzögerung und teilweise sogar mit Änderungen aus dem neuen Sprint durchgeführt wurde. Darüber hinaus war nicht gewährleistet, dass mit der Codebasis auch die Datenbasis aktualisiert wurde. Deshalb haben wir uns zusammengesetzt, den Prozess besprochen und diesen im Wiki festgehalten.

image

Darin wird klar zw. Daten- und Code- Go Live unterschieden. Damit einhergehen auch unterschiedliche Termine und Verantwortliche. Interessanterweise wurde in der Diskussion deutlich, dass der Prozess noch detailliert visualisiert und kommuniziert werden muss. In Kanban ist das fest als Regel aufgelistet:

                  Visualize Your Workflow

Einen Einblick in unser Wiki und den Prozess werde ich demnächst in Form eines Screencasts auf YouTube und auf meinen Blog stellen. Als Abonnent kriegt ihr das automatisch mit.

Mit welchem Tool verfasst bzw. persistiert ihr eure Regeln? Wer macht das? Wird das kontinuierlich erweitert oder war das nicht mehr notwendig? Ist es euch auch schon öfters passiert, dass ihr feststellen musstet, dass Regeln nicht explizit gemacht und dadurch Probleme verursacht wurden? Gerne könnt ihr mir einen Kommentar schreiben.

Testen von Datenbankabfragen – Es geht auch einfach

In diesem Screencast zeige ich wie selbst Abfragen mit mehreren Bedingungen und Sortierungen einfach getestet werden können. Unter der Haube kommt das Entity Framework zum Einsatz. Davon kriegt man dank Dependency Injection aber nichts mit.

Die erwähnte Webcast Serie, sowie weiteren Beispielcode und das Projekt auf Github gibt es hier. Feedback oder Fragen nehme ich gerne entgegen. Wenn ihr wollt, dass ich die Serie fortsetze, sprecht mich über einen Kanal eurer Wahl an.

Bessere Enumerations in NET

Ist euch der Smell von typischen Enumerations auch schon in die Nase gestiegen? In diesem Webcast zeige ich eine Alternative zu den typischen Enums in NET. Damit können das Open Closed Principle und Separation of Concerns besser umgesetzt werden, was meiner Meinung nach zu einer höheren Kohäsion führt.

 

Weiterführende Links:

 

Wie haltet ihr es mit Enums? Arbeitet ihr schon auf diese Weise? Wollt ihr mehr Webcasts zu Clean Code?

Flexibles Bootstrapping durch Composition

In diesem Webcast zeige ich unseren Kompositions-Ansatz für das Bootstrapping. Die Interfaces sind schmal, die Implementierungen überschaubar, das Ganze ist flexibel und lässt sich gut testen.

Hier der gezeigte Code:

   1: public class BootstrapperContext

   2: {

   3:     public BootstrapperContext()

   4:     {

   5:         AppConfig = new ApplicationConfig();

   6:         Container = new WindsorContainer();

   7:     }

   8:  

   9:     public IWindsorContainer Container { get; private set; }

  10:     public ApplicationConfig AppConfig { get; private set; }

  11: }

   1: public interface IAmABootstrapperAction

   2: {

   3:     void Execute(BootstrapperContext context);

   4: }

 

   1: public interface IAmABootstrapperComposition

   2: {

   3:     IEnumerable<IAmABootstrapperAction> Actions { get; }

   4: }

 

   1: public class BootstrapperExecutor

   2: {

   3:     public static void StartupApplication(IAmABootstrapperComposition bootstrapperComposition)

   4:     {

   5:         var exceptionMessage = "Beim Starten der Anwendung ist ein Fehler aufgetreten. Bitte den Support kontaktieren.\n\n";

   6:  

   7:         if (bootstrapperComposition.Actions == null || !bootstrapperComposition.Actions.Any())

   8:         {

   9:             throw new BootstrapperException(exceptionMessage, new ArgumentOutOfRangeException("Auf dem Bootstrapper waren keine Actions definiert"));

  10:         }

  11:  

  12:         var context = new BootstrapperContext();

  13:  

  14:         var time = TimedAction.Run(() =>

  15:                                    {

  16:                                        foreach (var action in bootstrapperComposition.Actions)

  17:                                        {

  18:                                            var actionName = action.GetType().Name;

  19:                                            SiAuto.Main.LogMessage(string.Format("{0} gestartet", actionName));

  20:  

  21:                                            var timeTaken = TimedAction.Run(() => { ExecuteAction(action, context, exceptionMessage); });

  22:  

  23:                                            SiAuto.Main.LogMessage(string.Format("{0} in {1} erfolgreich durchgeführt",

  24:                                                                                 actionName,

  25:                                                                                 timeTaken.Format())

  26:                                                );

  27:                                        }

  28:                                    });

  29:     }

  30:  

  31:     private static void ExecuteAction(IAmABootstrapperAction action, BootstrapperContext context, string exceptionMessage)

  32:     {

  33:         try

  34:         {

  35:             action.Execute(context);

  36:         }

  37:         catch (Exception ex)

  38:         {

  39:             SiAuto.Main.LogException(string.Format("Fehler beim Bootstrapping: {0}", ex.GetFullExceptionMessage()), ex);

  40:             throw new BootstrapperException(string.Format("{0}{1}", exceptionMessage, ex.GetFullExceptionMessage()), ex);

  41:         }

  42:     }

  43: }

 

Welchen Ansatz verfolgt ihr?

Fragen oder Feedback könnt ihr mir gerne als Kommentar hinterlassen.

Aus der täglichen Retrospektive #2

Aufgrund von unterschiedlichen Browserversionen und Extensions oder wegen gecachten Inhalten kam es bei der Abnahme von User Stories bei uns häufig zu Problemen. Beispielsweise wurden alte Styles oder falsche Bilder geladen. Eine weitere Störquelle waren Fehler in Fremdsprachen oder in besonderen Daten-Konstellationen (sehr lange Breadcrumb, tiefe Hierarchien).

Daraus zogen wir zwei Konsequenzen:

  • Alle Tester und der PO bekamen die PortableApps.com Plattform, in welcher Firefox und Chrome mit einheitlichen Extensions und Konfigurationen installiert sind. Zwei Konfigurationen bewirken unter anderem, dass nichts gecacht wird und nach dem Schließen des Browsers alle Daten entfernt werden. Außerdem ist das NoTracking-Kennzeichen aktiviert. Per copy & paste kann ein weiterer Tester schnell “die Testumgebung” erhalten.
  • Darüber hinaus legten wir für besagte Konstellationen Lesezeichen in den Leisten an und dokumentierten den Soll-Stand. Im Unternehmenswiki ist der formale Abnahmeablauf festgehalten.
%d Bloggern gefällt das: