Archiv für den Monat Februar 2012

Yield Return–Memory Leak

Check out the following Code:

   1: class Program

   2: {

   3:     static void Main()

   4:     {

   5:         var numbers = Calculate(1, 10);

   6:  

   7:         foreach (var i in numbers)

   8:         {

   9:             Console.WriteLine("iterated: " + i);

  10:             if (i == 5)

  11:                 break;

  12:         }

  13:  

  14:         Console.ReadLine();

  15:     }

  16:  

  17:     static IEnumerable<int> Calculate(int min, int max)

  18:     {

  19:         for (var i = min; i < max; i++)

  20:         {

  21:             Console.WriteLine("calculated: " + i);

  22:             yield return i;

  23:         }

  24:     } 

  25: }

And the result:

image

 

As we see, .NET remembers the position in the foreach loop within the ‘Calculate’-method. Does anyone know when this pointer will be cleaned by the garbage collector? Most likely when the variable ‘numbers’ gets collected, right?

Werbung

Englisch oder Deutsch

Die Frage ist so alt wie das Programmieren selbst: Soll Code in Deutsch oder Englisch geschrieben werden. Persönlich bin ich der Meinung, dass die Fachdomäne in Deutsch und die technische Domäne in Englisch gehalten werden sollten.

Ein Beispiel, welches am Open Space diskutiert wurde (Danke dafür an Torsten):

Software kann kaum mit „CreateKunde“ selbst Neukunden akquirieren, sie kann aber Prozesse zur Erfassung unterstützen. „ErfasseNeukunde“ klingt sicher gewöhnungsbedürftig, trennt jedoch sauber die fachliche Domäne „Erfasster Neukunde“ von der technischen Domäne wie der Erzeugung einer Instanz durch „Create“.

Wesentliche Voraussetzung bei der ganzen Diskussion: Im Unternehmen wird die Fachdomäne auch auf Deutsch dokumentiert bzw. kommuniziert, d.h. die Fachabteilung spricht Deutsch, egal, ob englische Entwickler im Team sind!

Bevor ich zur Gegenüberstellung komme, will ich noch kurz unseren Workflow erklären: Die Fachabteilung und die IT setzen sich während eines Projekts zusammen und besprechen die Domänenbegriffe. Die Geschäftsprozesse und Domänensprache werden in einem Wiki festgehalten. Der Inhalt muss von beiden Parteien verstanden werden. Darüber hinaus legen wir bereits sogenannte Specs, also Anforderungen in Wenn-Dann-Notation fest, welche wir für die fachlichen Unit Tests nutzen. Da wir MSpec einsetzen, generieren wir automatisch aus den Tests HTML Reports, welche die Fachabteilungen einsehen können.

 

Mein persönlicher Vergleich:

Pro Deutsch Contra Deutsch
Keine Zeit für Übersetzung notwendig
Keine Zeit für doppelte Dokumentation (in beiden Sprachen) notwendig
Unit Tests beim BDD müssen sowieso in Deutsch verfasst werden
Keine falsche Übersetzungen und somit keine Missverständnisse
Einfache Kommunikation zw. Fachabteilung und IT Schwierig bei heterogenen Teams (aber: Fremdsprachige Entwickler müssen trotzdem die deutschen Fachbegriffe erklärt bekommen, damit sie mit der Fachabteilung sprechen können!)
Einfachere und schnellere Integration neuer Entwickler
Strikte Trennung zwischen fachlicher und technischer Domäne Einheitliche Sprache
Schwierige Übersetzungen (z.B. Vorverstorbener = ThePersonWhichDiedBefore) entfallen Keine grammatikalischen Verwirrungen (subjektiv)
Liest sich flüssiger (subjektiv) Liest sich flüssiger (subjektiv)
Das einheitliche Verständnis für Domänenbegriff wird quasi erzwungen
Nicht alle Sprachen unterstützen Umlaute

 

Über rege Beteiligung und viele Kommentare würde ich mich freuen, v.a. aber über Erfahrungsberichte!

Abteilungsleitung–Best Practices

Ganz kurz und knackig ein paar Punkte, die wir in unserer IT praktizieren:

Tag der Meetings: Wir versuchen möglichst viele Meetings auf einen Tag zu legen. Dadurch vermeidet man Unterbrechungen an den anderen Tagen, die einem immer wieder rausbringen und nach denen man sich erst wieder in seine letzte Tätigkeit hineindenken muss.

Zeit der Meetings: Als besonders geeigneter Tag erwies sich Mittwoch, weil speziell Montage und Freitage für verlängerte Wochenenden genutzt werden. Tendenziell fehlt man mittwochs einfach weniger. Außerdem halten wir nur selten vor 11 Uhr unsere Besprechungen, was primär aber auf die Arbeitszeiten der IT zurückzuführen sind :)

Regelmäßige Meetings: Viele der Besprechungen finden wöchentlich statt, d.h. der Termin ist fest eingeplant. Allerdings handelt es sich immer um einen optionalen Termin, der in der Regel am Vortag bestätigt oder abgesagt wird, falls es nichts zu erörtern gibt.

Kurze Meetings: Ansonsten halten wir mehr oder weniger tägliche Stand-Ups, z.B. mittags am Kicker oder nach 17 Uhr, wenn das Tagesgeschäft vorbei ist.

Delegieren: Die IT ist unter einer allgemeinen Gruppennummer und Gruppenemailadresse erreichbar. Damit müssen sich die Fachabteilungen nicht lange überlegen, wer der passende Ansprechpartner ist und ob dieser überhaupt im Haus ist. Aus der IT erledigt dann die Person, die sich für zuständig hält, die Aufgabe. Wenn beispielsweise jemand erst später ins Haus kommt, kann so auch eine andere Person in dringenden Problemen schnell agieren. Damit dies funktionieren kann, müssen die Mitarbeiter natürlich ein entsprechend hohes Niveau an Entscheidungsspielraum haben. Gleichzeitig ist es zwingend notwendig, dass der Kompetenzbereich klar definiert ist und der Mitarbeiter weiß, wann erst nachfragen muss. Deshalb lasse ich jeden, der neu anfängt, immer dieses Buch lesen.

Wissensinseln: Gerade bei kleineren Abteilungen können Wissensmonopole sehr gefährlich sein, weshalb wir verstärkt auf eine Basiskompetenz setzen. Dazu gibt es einen Katalog häufig anfallender Aufgaben, die jeder – ob nun Administrator, Webentwickler oder ERP Developer – bearbeiten kann. Durch die zuvor erwähnten regelmäßigen Meetings werden darüber hinaus immer die aktuellen Projektstände ausgetauscht und erläutert, wo es noch Probleme gibt.

Mitarbeitergespräche–Häufigste Fehler

Hier eine Liste mit Fehlern, die bei Mitarbeitergesprächen bzw. deren Vorbereitung auftreten können:

Vorbereitungszeit: Hingegen der 2 Wochen, welche in einschlägiger Literatur vorgeschlagen werden, beginnt nach meiner Ansicht die Vorbereitungszeit bereits mit dem letzten Mitarbeitergespräch von vorne. Das ganze Jahr über sollte kontinuierlich reflektiert und sich ggf. Punkte aufgeschrieben werden. Denn leider ist es so, dass wir Menschen ein sehr löchriges Gedächtnis haben. Wenn man sich erst 2 Wochen vorher damit beschäftigt, begünstigt man Kleber und Nikolaus (auch Recency genannt) Effekte! Idealerweise erinnert der Vorgesetzte alle 2-3 Monate die  Mitarbeiter wieder daran, sich doch mal 30 Minuten Zeit zu nehmen und sich Notizen zu machen.

Basics erklären: Gerade bei jungen Menschen bzw. Auszubildenden kann die Ankündigung eines  Mitarbeitergesprächs die Angst schüren. Meine Empfehlung ist deswegen, dass man besonders mit ihnen oder auch mit den Kollegen, die noch nie eines geführt haben, die Basics durchgeht. Die Bachelorthesis, welche ich in einem meiner vorherigen Blogeinträge verlinkt habe, kann hier gerne herangezogen werden. Es ist durchaus möglich mit 30-60 Minuten das Wichtigste zu vermitteln. Wichtig: Geht mit ihnen auch durch, wie sie sich vorbereiten können und gebt ihnen konkrete Beispiele. Vermittelt ihnen, dass Kritik unbedingt erwünscht ist, da auch ihr euch verbessern wollt. Mehr dazu findet ihr auch in meinen anderen Blogeinträgen. Obwohl ich heute gehört habe, dass man bei der Einführung einfach mal ins kalte Wasser springen und einfach starten soll, sehe ich das persönlich anders. Das Instrument macht nur Sinn, wenn es kontinuierlich geführt wird. Wenn das erste Gespräch aber schief geht, dann ist es ersten fraglich, ob es nochmals gehalten wird und zweitens könnte sich der Mitarbeiter in Zukunft zurücknehmen.

Gehaltsverhandlung: Diese sollte weder Teil des Gesprächs sein, noch kurz danach stattfinden, da dann – auf beiden Seiten! – zu viel taktiert wird. Es würde zu sehr um Kleinigkeiten gestritten und mit Anerkennung gegeizt werden.

Zielvereinbarung: In jedem Fall sollten die Zielvereinbarungen dem SMART-Konzept folgen und gemeinsam definiert werden. Persönlich fordere ich deswegen immer die Kollegen dazu auf ihre 5 großen Ziele für das Jahr bereits als Liste mitzubringen. Interessanterweise decken sich oft deren Ziele mit denen, die ich mir überlegt habe.

Ausreden lassen: Wie wir in einer heutigen Inhouse Schulung festgestellt haben, ist vor allem das eine nicht zu unterschätzende Schwierigkeit. Primär liegt das daran, dass vom Mitarbeiter eine Änderung gefordert wird. So etwas klingt natürlich immer provokativ und lädt zur Rechtfertigung ein. Beispielsweise wenn der Azubi meint, dass er sich klarere Aufgabenstellungen wünscht. Persönlich habe ich das gesamte letzte Jahr damit verbracht mich hier zurückzunehmen. Weil man dann auch mal leicht vergisst, was man sagen will, empfiehlt es sich ggf. kurze Stichworte zu notieren.

Zeit einplanen: Die Zeit verfliegt in einem Gespräch unglaublich schnell. Rechnet also genügend Zeit ein. Über 90-120 Minuten sollte es aber nicht gehen.

Vorbereitung: Wenn der Vorgesetzte seine Beurteilung schreibt, sollte er darauf achten, dass er immer das Beobachtete und wie er dies interpretiert separat festhält. Sehr oft interpretiert man nämlich etwas falsch!

Selektionsprozess / Wahrnehmung: Seid euch immer bewusst, dass das, was ihr sendet, lediglich zu 10-20% ankommt. Umso wichtiger ist es, dass die Information möglichst gut aufbereitet ist. Auf der anderen Seite sieht man natürlich wie wichtig das gute Zuhören ist, um möglichst viele der Informationen von seinem Mitarbeiter aufzunehmen. Hier nochmal der Verweis auf das Ausreden lassen! Leider kann ich das Thema hier nicht weiter ausführen, deswegen überlegt euch, ob für eine Kommunikationsschulung hilfreich sein könnte. Vieleicht für die gesamte Führungsriege?!

Zwang: Persönlich habe ich hier die gleiche Ansicht wie unsere Geschäftsleitung. Man sollte den Vorgesetzten nicht zwingen ein Gespräch halten zu müssen. Wie Aufgaben erledigt werden, die einem aufgedrückt werden und hinter denen man nicht selbst steht, ist sicherlich hinreichend bekannt. Anders sieht es aus, wenn ein Mitarbeiter das Gespräch einfordert!

Mitarbeitergespräche – Nutzen für den Mitarbeiter

Zu einem erheblichen Teil hängt der Erfolg eines Mitarbeitergesprächs vom Mitarbeiter selbst ab. Leider bleibt die Chance viel zu oft ungenutzt! Der Grund ist einfach: Es bedeutet viel Arbeit. Der Mitarbeiter führt – genauso wie der Vorgesetzte – idealerweise eine Art Tagebuch (siehe Abschnitt Aufwand in diesem Eintrag), in welches er alle 1-2 Wochen über die eigene Situation nachdenkt:

  • Hatte ich neue Aufgabenfelder, die mir besonders liegen?
  • Habe ich Schwächen, an denen ich gerne arbeiten würde?
  • Möchte ich eines meiner Aufgabengebiete lieber abgeben?
  • Benötigen ich Hilfe, weil das Arbeitspensum nicht zu schaffen ist?
  • Habe ich Probleme mit einem Kollegen oder einem Vorgesetzten in einer anderen Abteilung?
  • Ist mein Arbeitsplatz nicht vollständig ausgerüstet bzw. fehlt es mir an Werkzeugen wie z.B. Office?
  • Habe ich Verbesserungsideen?
  • Schildert mir mein Vorgesetzter die Aufgaben nicht verständlich? Werde ich unter- oder überfordert?
  • Kanzelt mich die Führungskraft öffentlich ab?

Persönlich empfinde ich es als sehr positiv, wenn der Mitarbeiter gut vorbereitet in das Gespräch kommt, sodass ich selbst das Gespräch nicht leiten, sondern vielmehr passiv reagieren kann. Oftmals kann es sein, dass der Vorgesetzte gar nicht mitkriegt, wenn das Arbeitspensum zu hoch wird oder es Probleme mit anderen Abteilungen gibt. Viel zu oft ist man als Führungskraft schon zu weit weg vom Geschehen, beispielsweise kriege ich nur noch die wichtigsten Kernpunkte aus der Netzwerkadministration mit, weil für mich einfach nicht mehr die Zeit zur Verfügung steht, um tiefer einzusteigen. Somit ist man sogar auf diese Rückmeldung angewiesen, um die Abteilung zu optimieren!

In das Tagebuch sollten allerdings nur regelmäßige, wiederkehrende Verhaltensweisen oder Probleme, nicht jedoch einmalige Geschehnisse. Einen schlechten Tag oder kurzfristige Engpässe gibt es sicherlich sporadisch in jeder Abteilung einmal.

Da zu einem vollständigen Mitarbeitergespräch in aller Regel eine Zielvereinbarung gehört, ist der Mitarbeiter ebenfalls gut beraten, sich aktiv zu beteiligen. Denn – je nach Firma – wird das Gehalt mehr oder weniger stark auch an den erreichten Zielen festgemacht. Viel zu oft wird hier allerdings durch die Führungskraft Zielfanatismus vermittelt, sodass durch den Wegfall des bekannten “links und rechts des Weges schauen” wertvolle Chancen gar nicht wahrgenommen werden. In unserer IT ist es so, dass die Mitarbeiter selbst die Planung der Großprojekte für ihren Bereich übernehmen, z.B. der Webentwickler für die Webentwicklung und der Admin für die Administration. Deren Vorschläge werden von mir, was inzwischen nur noch beschränkt nötig ist, ergänzt oder ggf. umpriorisiert. Richtig aktiv wird der Vorgesetzte dann, wenn es um die Förderung und Entwicklung des Mitarbeiters geht, sodass er seine Ziele erreichen kann. Persönlich schlage ich Schulungen oder Communities vor, die der Mitarbeiter besuchen kann. Literatur oder Online Seminare können ebenfalls sehr wertvoll sein. Das anzustrebende Ideal wäre: Der Mitarbeiter hat eine Idee zur Effizienzsteigerung, sucht sich eine passende Schulung dazu raus, setzt die Idee erfolgreich um und kann am Schluss mit konkreten Zahlen den Erfolg belegen. Zur Erreichung dieses Idealbilds benötigt der Mitarbeiter lediglich Freiraum und zum passenden Zeitpunkt auch hin und wieder Impulse.

Zu guter Letzt ist es auch nie verkehrt anzusprechen, wenn man das Tätigkeitsfeld wechseln oder erweitern will, z.B. dass man gerne als Ausbilder agieren würde (Stichwort: Ausbilderschein). Ein Marketingler könnte sich beispielsweise weg von den “alten” Kanälen in Richtung Social Media spezialisieren.

Mitarbeitergespräche – Nutzen für den Vorgesetzten

Das aus meiner Sicht wichtigste Instrument in der Personalführung “Mitarbeitergespräche” ist aktuell das Thema in der Firma heco. Katrin Stockinger, eine ehemalige DH Studentin, schrieb letztes Jahr dazu ihre Bachelorthesis. Die Vorgesetzten werden nun, nachdem sie die Weisheiten dieser tollen Arbeit lesen durften, von ihrer ehemaligen Dozentin bei uns inhouse geschult. Nachdem ich – wie ich hoffe – das Instrument bereits seit geraumer Zeit erfolgreich implementiere, möchte ich in diesem Blogeintrag nochmal auf die zentrale Bedeutung eingehen.

Da das Gespräch zwischen zwei Personen stattfindet, können sich 3 positive Effekte ergeben:

  • Der Vorgesetzte erledigt seine Aufgaben besser
  • Der Mitarbeiter erledigt seine Aufgaben besser
  • Das Verhältnis zwischen den Personen und deren gemeinsame Arbeit wird verbessert

Der Erfolg einer Abteilung hängt ohne Frage Großteils von der Führungskraft ab. Wenn der Vorgesetzte nicht in der Lage ist die Unternehmensziele in entsprechende Abteilungsziele zu überführen und diese klar zu kommunizieren, dann kann ein Mitarbeiter noch so schnell rennen; wenn er nicht in die richtige Richtung läuft, kommt er nie an.

Deshalb ist ein Mitarbeitergespräch gerade für den Vorgesetzten eine große Chance Feedback einzuholen, um seine Fähigkeiten auszubauen und zu optimieren. Die Erfahrung zeigt, dass vor allem zwei Punkte immer wieder von den Mitarbeitern genannt werden:

Aufgabenstellung spezifischer formulieren: Dieses Feedback habe ich auch einmal selbst von einem Azubi bekommen. Viele Vorgesetzte denken jetzt vielleicht, dass diese Aussage in nahezu allen Fällen berechtigt ist. Allerdings bin ich der Meinung, dass man dem Mitarbeiter möglichst viel Freiraum bei Aufgaben lassen sollte, damit dieser zu seiner eigenen, maximalen Selbstständigkeit findet. Das kann auch bedeuten, dass man sie erst einmal zu diesem vermeintlichen Glück zwingen muss, sprich sie selbstständig machen muss. Eine Aufgabe ist richtig formuliert, wenn man den gewünschten Endzustand unmissverständlich und vollständig formuliert hat. Der Mitarbeiter selbst bestimmt die Wege und Werkzeuge dazu. Stehen ihm diese nicht zur Verfügung oder findet er selbst den Weg nicht, dann kann immer noch der Abteilungsleiter um Hilfe gebeten werden.

Mehr Freiraum: Wenn ein Mensch sich entwickeln soll, benötigt er Freiraum. Es wundert mich also nicht, dass auch dieser Punkt ein häufig geforderter ist. Persönlich freut es mich, dass hier meine Kollegen in der IT wunschlos glücklich zu sein scheinen. Ohne Freiraum gibt es auch kein Delegieren, sondern lediglich zeitaufwendiges Zuweisen von Aufgaben, mit denen sich der Bearbeiter nicht identifiziert. Wichtig ist in dem Kontext natürlich, dass ein Mitarbeiter weiß, für was er zuständig ist, welche Befugnisse er in dieser Problemdomäne hat und wann er sich beim Vorgesetzten absichern muss. In unserer IT liest deshalb jeder Mitarbeiter das Buch übers Affenmanagement. Klein, praktisch, gut!

 

Stichwortartig will ich hier noch einige wichtige Punkte nennen, die in der ein oder anderen Form vielleicht auch vom Vorgesetzten selbst angesprochen werden können, um den Mitarbeiter zur aktiven Mitgestaltung anzuregen:

  • Probleme des Mitarbeiters mit Kollegen innerhalb und außerhalb der Abteilung
  • Neue Tätigkeitsfelder, die der Mitarbeiter gerne erschließen würde
  • Vorschläge zur Leistungssteigerung im eigenen Bereich
  • Das Verhalten des Vorgesetzten gegenüber dem Mitarbeiter vor seinen Kollegen

Wie man sieht, werden hier essentielle Themen besprochen, die sich mit Sicherheit auf das Arbeiten und schlussendlich die Leistung in der Abteilung auswirken werden. In diversen Bücher findet man dazu auch gute Bewertungsbögen für den Vorgesetzten. Das ist auch der einzige Fall, in dem ich einen Bewertungsbogen empfehle. Bewertungsbögen für die Leistung der Mitarbeiter halte ich hingegen für falsch.

 

In meinem nächsten Beitrag befasse ich mich dann mit dem Nutzen für den Mitarbeiter.

%d Bloggern gefällt das: