Sie haben bereits gute Ideen
Die Ideen, die Sie in Ihrer Frage skizzieren, klingen ausgezeichnet. Es ist eine große Überraschung, dass Sie keinen Erfolg finden. Es ist 2012 und die objektorientierte Revolution ist längst vom Stand der Technik zum Stand der Praxis übergegangen. Es scheint so, als ob es Ihnen schwer fallen würde, nicht mehrere Dutzend oder sogar hundert gute solide objektorientierte Programmierer zu finden, es sei denn, Sie haben einen sehr geringen Umsatz und nur sehr wenige Einstellungen.
Agil oder objektorientiert?
Sie erwähnen einige agile Technologien wie TDD und einige neuere Konzepte. Gehen Sie also nicht zu streng mit den Leuten um, wenn Sie etwas nicht akzeptieren, das noch immer von einigen Management-Teams aktiv bekämpft wird. Einige behaupten, Agile anzunehmen, aber wenn sie darüber sprechen, bedeutet das, was sie sagen, dass es bedeutet. Die Organisation zeichnet sich nicht durch Teams aus, die Entscheidungen treffen und sich anpassen, sondern durch eine starke hierarchische Kontrolle des Vertragsstils.
Aber zurück zu objektorientiert. Sie erwähnen keine objektorientierte Analyse oder Design, und ich bin nicht ganz sicher, welche Programmiersprache welcher objektorientierten Programmiersprache Platz macht. Ich weiß, dass UML bei vielen objektorientierten Programmierern Probleme mit der Popularität hat. Nachdem ich in OOAD gründlich geschult worden bin, glaube ich, dass es so sein kann, als würde man die Kultur und Geschichte eines Landes lernen, dessen natürliche Sprache man lernen möchte. Wenn ich zum Beispiel Griechisch lernen wollte, könnte ich das Alphabet, den Wortschatz und die Grammatik lernen, aber wenn ich die reiche Geschichte und Kultur ignoriere, würde ich viel vermissen. Auf jeden Fall, wenn Sie alles über eine objektorientierte Programmiersprache lernen, aber nichts über OOAD, denke ich, dass eine wichtige Gelegenheit vertan wurde.
Probleme zu überwinden?
Brücke zu weit? Wenn Sie die Leute bitten, eine kleine Sache pro Woche und Jahr unter den Teilnehmern zu lernen, wird sich viel ändern. Wenn Sie sie bitten, alles zu ändern, was sie wissen, wird es von wenigen begrüßt, von vielen hart und von anderen unmöglich. Einige Änderungen wie die Quellcodeverwaltung sind lokalisiert. Sie haben vorher keine Übergänge gemacht, Sie hatten ein Training, bei dem die Grenzen des Gedächtnisses nicht überstrapaziert wurden, jemand hat Sie das erste Mal begleitet, und dann war der Alltag ziemlich einfach.
Andere Veränderungen sind allgegenwärtig. Zum Beispiel erfordert das Sichern von C und das Wechseln zu Java umfangreiche Schulungen, Einstellungen und große Änderungen im Tagesgeschäft, um eine neue IDE, einen neuen Compiler, eine neue Sprache, eine neue API, ein neues Bereitstellungsmodell usw. zu übernehmen von Dingen, die am häufigsten in Verbindung mit einem Pilotprogramm oder einer Unternehmensumstrukturierung auftreten.
Eine Revolution anführen? Wenn die Leute, die gerade arbeiten, in der Vergangenheit belohnt wurden und das Unternehmen nicht in Gefahr zu sein scheint, was ist ihre Motivation für Veränderungen? Wenn Sie wie ein Außenseiter wirken, der die Richtung vorgeben und die Verantwortlichen für die Ergebnisse, die sie nicht vorhersagen können, zur Rechenschaft ziehen möchte, scheint dies alles Risiko zu sein, keine Belohnung.
Positionsmacht oder Ideenführung? Viele Organisationen arbeiten mit Positionsmacht. Wenn Sie keine sichtbare Unterstützung durch Manager, Abteilungsleiter, Direktoren und Vizepräsidenten haben, sind Sie lediglich ein Ideenführer. Manche Menschen sind in der gefährlichen Lage, eine Idee zu haben und keine zweite zu haben. Wenn du sie zeigen kannst, anstatt sie zu erzählen, ist das ein langer Weg, um Skeptiker zu beruhigen und talentierte Verbündete zu interessieren.
Support-Basis zu klein? Machen Sie eine Triage unter diesen 250 Leuten und sortieren Sie sie in drei Kategorien: bereit zu umarmen, bereit zu lernen und nicht bereit zu lernen. Sie haben gute Gründe, frustriert zu sein von einigen Leuten, die kein Interesse daran haben, etwas zu ändern. Sie könnten genauso gut an einem Seil schieben. Das ist ungenutzte Mühe. Wenn Sie ein Gefühl dafür haben, wer Veränderungen unterstützt, können Sie herausfinden, was sie interessiert.
Im Gegensatz zu einer medizinischen Triage, bei der die ethische und praktische Entscheidung darin besteht, der Mittelgruppe zu helfen, die es mit Hilfe schaffen kann, können Sie Ihre Energie und Zeit nach Ihrem Urteilsvermögen und Ihren Vorlieben investieren. Pflegen Sie für Ihren Erfolg die Gruppe, die bereit ist, neue Ideen anzunehmen. Es sind zwar nur wenige, aber wie bei einem Schneeball wird Ihre Sichtbarkeit und Glaubwürdigkeit als Anwalt zunehmen. Bald werden Sie gefragt, wann das nächste Training stattfinden wird.
Darin auf lange Sicht? Bis Sie einen Champion kultivieren, um Dinge nach sich zu tragen, sollten Sie damit rechnen, Zeit für den Aufbau von Beziehungen zu investieren. Möglicherweise müssen Sie länger als einen Monat bei den von Ihnen trainierten Teams bleiben. Bis das Team verbesserte Methoden für sich selbst besitzt, sind Sie nur ein Technologie- oder Methodik-Cop. Mentoring ist ein Prozess, der Jahre dauern kann. Es gibt eine Menge Dinge, die Ihre Entwickler nicht tun möchten, die Sie für wichtig halten (ich denke, Sie haben speziell Unit-Tests erwähnt). Es kann eine Weile dauern, bis eine gemeinsame Vision des damit verbundenen Werts entsteht. Ich weiß das aus Erfahrung, weil ich mich einmal für ein Code-Coverage-Tool in einem Fortune-500-Unternehmen ausgesprochen habe, das einen hervorragenden Ruf für Qualität hatte, aber Manager und Kollegen waren besorgt, wenn es darum ging, sich dazu zu verpflichten.
Experte oder Basis? Viel schneller als Mentoring wäre es, die Unterstützung der Basis zu fördern, die von jedem Teammitglied kommt. Ausgehend von einem Team von zehn Softwarespezialisten würde ich die zweite auswählen, wenn ich die Wahl hätte, dass eine Person die ganze Zeit am Prozess arbeitet oder zehn Personen zehn Prozent der Zeit am Prozess arbeiten. Der Basisprozess ermöglicht es den Befürwortern, die Auswirkungen des Ansatzes zu spüren und den Ansatz so anzupassen, dass die Probleme des Teams, dem die Arbeit gehört, am besten gelöst werden.
Sehen Sie die Freiheitslinie? Ein Teil der Einführung von "Best Practices" besteht darin, die Menschen dazu zu bringen, die Freiheit aufzugeben, Dinge auf eine gemeinsame Art und Weise zu tun. Die Diskretion des Programmierers aufzugeben, ist schmackhafter, wenn Sie nach Möglichkeiten suchen, den Entwicklern viele Optionen zu überlassen. Was sie auswählen, wird von einer Partition bestimmt, die wir als Freiheitslinie bezeichnen können. Möglicherweise müssen ähnliche, gut begründete Aufteilungen über organisatorische, regionale / standortspezifische, Team- und persönliche Praktiken getroffen werden.