OK als Anhaltspunkt ist es Ihre Aufgabe, die Projekte aus der Tür zu bekommen. Sie müssen also derjenige sein, der Standards, Codeüberprüfungen, Fortschrittsberichte und all diese Dinge durchsetzt, wenn die Entwickler es vorziehen, sie in Ruhe zu lassen. Diese Dinge sind nur Anforderungen des Managements und mit Ausnahme der Code-Überprüfungen werden die Fähigkeiten der Mitarbeiter nicht wirklich erweitert.
Sie möchten ihnen jedoch dabei helfen, zu wachsen, was ein großartiges Attribut in einem Führer ist.
Code Reviews sind mit Sicherheit ein erster Schritt. Sie helfen Ihnen zu erkennen, wer weniger als herausragende Fähigkeiten hat und noch verbessert werden muss, um eine zufriedenstellende Leistung zu erzielen. Sie werden den Entwicklern helfen, andere Möglichkeiten zu erkennen und andere Teile der Codebasis zu verstehen, als die, an denen sie persönlich gearbeitet haben. Meiner Meinung nach werden Codeüberprüfungen am besten persönlich in einem Konferenzraum mit dem Entwickler und dem Überprüfer durchgeführt (der, wenn möglich, ein anderer Entwickler sein sollte, nicht immer der Hauptverantwortliche, das Überprüfen des Codes eines anderen ist auch eine Fähigkeit, die entwickelt werden muss) und Ihnen als ein Moderator. Sie sollten sich Notizen darüber machen, was geändert werden muss, um Trends zu erkennen. Was Sie wirklich suchen, sind keine Fehler oder Änderungen (jeder Code kann verbessert werden), sondern das beständige Versagen, aus Fehlern zu lernen. Teilen Sie dem oberen Management nicht mit, dass Sie diese Notizen aufbewahren, da Sie sonst gezwungen sind, sie als Maß für den Leistungsüberprüfungsprozess zu verwenden, der offen den Zweck verletzt. Wenn mehrere Entwickler die gleichen Fehler machen, ist möglicherweise eine Schulung oder ein Wiki-Eintrag zur Vorgehensweise für X angebracht.
Nun zum wachsenden Laster, das auf das minimale Niveau kommt. Zunächst müssen Sie wissen, über welche Fähigkeiten die Entwickler verfügen und welche Fähigkeiten sie möglicherweise benötigen. Sie müssen mit ihnen sprechen, ihre Lebensläufe überprüfen und verstehen, woran sie liegen und woran sie interessiert sind mag es nicht zu tun.
Geben Sie nicht alle interessanten Aufgaben nur den Fachleuten. Das hilft den anderen nicht, sich mit neuen Problemen und Technologien vertraut zu machen. Sie können nicht davon abweichen, der jüngere Typ zu sein, der nur die kleinsten und unwichtigsten Aufgaben für den älteren Mann erledigt, es sei denn, jemand nutzt eine Chance und weist Ihnen eine schwierigere Arbeit zu. Das heißt, die weniger erfahrenen müssen möglicherweise zuerst zugewiesen werden, um das Programm mit einem Senior zu paaren, um fortgeschrittenere Fähigkeiten zu erlangen. Wenn Sie die Junioren in Code-Reviews einbeziehen, werden sie auch fortgeschritteneren Techniken ausgesetzt.
Geben Sie ihnen zunächst die Möglichkeit, das Problem selbst herauszufinden. Aber manchmal stecken die Leute fest und wissen nicht, wo sie anfangen sollen (eine Fähigkeit, die Sie auch speziell für neue Programmierer entwickeln müssen) oder was zu tun ist, um ein Problem zu lösen.
Wenn Sie ihnen ein paar Tage Zeit geben, um etwas zu recherchieren, und sie immer noch nicht wissen, wie sie etwas tun sollen, müssen Sie möglicherweise mit einigen Vorschlägen eingreifen. Wenn Sie selbst technisch versiert sind, können Sie ihnen Anregungen zur Lösung des Problems geben. Andernfalls kann ein Treffen mit mehreren Personen, bei dem Sie Ideen für ein Brainstorming entwickeln, hilfreich sein, wenn die Person feststeckt. Oder eine erfahrenere Person bitten, einige Vorschläge zu machen. Was Sie nicht tun möchten, ist, das Problem von ihnen zu nehmen und es selbst zu lösen. Aber Sie müssen das Projekt mit dem Ego des Programmierers in Einklang bringen und manchmal müssen Sie sie in eine bestimmte Richtung schicken. Wenn er eine schlechte Lösung hat und diese behoben werden muss, können Sie sie am schlechtesten jemand anderem geben, es sei denn, Sie beabsichtigen, den Programmierer auszulösen.
Ich habe schlechte Programmierer gesehen, die verwöhnt wurden und bei denen jemand anderes fast alles reparieren muss, was sie tun. Die anderen Programmierer ärgern sich darüber und wollen nur, dass die Person aus ihrem Leben verschwindet. Das Verwöhnen eines schlechten Programmierers führt dazu, dass die guten Programmierer gehen. Sie müssen die Grenze zwischen Verwöhn- und Entwicklungsfähigkeiten finden. Wenn Sie jemandem mehrere Chancen geben und er oder sie nie besser wird, dann schneiden Sie ihn oder sie los.
Für die Senioren, die bereits in ihren derzeitigen Fähigkeiten kompetent sind, ist es einfacher. Normalerweise muss man ihnen nur die Gelegenheit geben, etwas Neues zu machen, und sie springen hinein und lernen es. Stellen Sie einfach sicher, dass sich die interessanten Möglichkeiten ausbreiten und gehen Sie nicht alle zu Joe, dem Wunderprogrammierer, der alles reparieren kann. Sie wollen zehn Joes haben, nicht nur einen.
Eine andere Möglichkeit, Fähigkeiten zu entwickeln, ist eine wöchentliche einstündige Trainingseinheit. Machen Sie jeden Entwickler für ein bestimmtes Thema verantwortlich. Dies wird ihnen helfen, besser zu kommunizieren, sie etwas gründlicher zu recherchieren und jedem den Vorteil ihrer Forschung zu geben. Einige Themen sollten Personen zugewiesen werden, die mit dem Thema nicht vertraut sind, um sie dazu zu zwingen, ein gewisses Maß an Wissen zu erwerben, und andere sollten Personen zugewiesen werden, von denen Sie wissen, dass sie die lokalen Experten für dieses Thema sind. Themen sollten eine Kombination von Dingen sein, die Menschen benötigen, um in naher Zukunft oder im Moment gut zu sein, und eine Berichterstattung über neue kommende Technologien, die Sie derzeit nicht verwenden, aber die Leute sind daran interessiert, herauszufinden, ob sie nützlich sein könnten. Jedem, einschließlich dem jüngsten, muss jedoch ein Thema zugewiesen werden.
Abhängig davon, wie die Zeit Ihrer Entwickler abgerechnet wird (dies ist in einer Kundenabrechnungssituation schwieriger), lohnt es sich normalerweise für Entwickler, 4-8 Stunden pro Woche Zeit zu haben, um an persönlichen Projekten zu arbeiten. Sie werden begeistert sein, dies zu tun. Die besten Leute werden dort arbeiten wollen und viel lernen, was für die Zukunft nützlich sein wird. Es ist schwer für die Bohnenzähler, die Notwendigkeit dafür zu verstehen, aber diese Zeit wird um ein Vielfaches an Mitarbeiterzufriedenheit, neuen Funktionen oder Software zurückgezahlt, die niemand benötigt (oder die dazu beitragen wird, einen Teil der Plackerei zu automatisieren) und aufgrund der schnelleren Entwicklung neue Techniken gelernt. Einige Entwickler werden diese Zeit ausschließlich für persönliche Projekte verwenden, die nicht mit Ihrer Arbeit zusammenhängen (und das ist gut so, sie werden immer noch Fähigkeiten erwerben und sich über die Gelegenheit freuen). Aber viele andere werden es nutzen, um hartnäckige Probleme zu lösen, die aufgrund der Art der Projektverwaltung nicht behoben werden konnten. So können Sie Refactorings erhalten, von denen jeder profitiert. Einige schreiben möglicherweise Tests, um die Testabdeckung zu verbessern und die Umgestaltung zu vereinfachen. Einige andere untersuchen möglicherweise einige neue Funktionen, die Ihre Software für die Kunden nützlicher machen. Wenn Sie die Bohnenzähler überzeugen können, gibt es im Allgemeinen keine Möglichkeit zu verlieren, indem Sie ihnen diese Freiheit gewähren.
Sie müssen lernen, wie man das Gleichgewicht hält, damit die Leute etwas Kraft für ihre Fähigkeiten haben und das Projekt auf Kurs halten. Je weniger Erfahrung der Entwickler hat, desto mehr muss jemand den Fortschritt überprüfen, insbesondere in den frühen Phasen, in denen ein Richtungswechsel einfacher ist. Die Unerfahrenen können kämpfen und haben Angst, sich zu äußern. Diese Leute neigen dazu, kurz vor dem Start abzureisen, und Sie stellen fest, dass ihr Teil des Projekts nicht annähernd abgeschlossen ist. Achten Sie besonders darauf, den Fortschritt bei Personen zu überprüfen, die häufig den Job gewechselt haben (es sei denn, sie waren Auftragnehmer, da dies die Art der Auftragsvergabe ist).
Den erfahreneren Mitarbeitern kann im Allgemeinen vertraut werden, dass sie Ihnen mitteilen, wenn sie Probleme haben, die Lösung zu finden, und Unterstützung von jemandem mit mehr Kenntnissen in diesem Bereich benötigen, oder sie werden diese Person aufsuchen und den Wissenstransfer erhalten. Daher müssen sie in den Anfangsphasen des Lernens neuer Fähigkeiten für ein Projekt nicht so genau überwacht werden. Sie werden einen Weg finden, das Projekt zu realisieren. Diejenigen, die eine Erfolgsbilanz in der Bereitstellung haben, können in der Regel allein gelassen werden, mit Ausnahme von Berichten über minimale Fortschritte (Sie müssen in der Regel auch Ihrem Management Bericht erstatten und benötigen daher einige Informationen).