Ich war während meiner gesamten Karriere ein praktischer Entwickler und liebe es, mit Code zu arbeiten. Ich habe mich immer über den Teamleiter geärgert, der wenig oder kein Fachwissen in Bezug auf eine bestimmte Technologie hat und dennoch auf einer bestimmten Implementierung besteht.
Jetzt befinde ich mich auf der anderen Seite des Spiegels. Ich bin der Hauptentwickler eines Fat Clients, der in C # implementiert werden soll, aber meine Expertise liegt in der Erstellung von Java-Webanwendungen. Obwohl ich weiß, dass ich Designmuster und OO-Paradigmen in jeder Sprache nutzen kann, bin ich verloren, wenn es um Codierungsstandards, Tools für den Projektlebenszyklus und Freigabe- / Verteilungsverfahren geht. Ich habe keinen Zweifel, dass ich die Grundlagen innerhalb von ein oder zwei Monaten erlernen kann, aber es gibt bestimmte Erfahrungen, die man nur mit der Zeit sammeln kann.
Was soll ich tun und wie vermeide ich es, der Projektleiter zu werden, den ich bei meiner Entwicklung hasste?
Antworten:
Ehrlich gesagt spielt es keine Rolle, wie viel Erfahrung Sie mit einer Technologie haben. Mein Rat ist derselbe: Setzen Sie Technologieentscheidungen nicht denjenigen auf, die mit ihnen leben müssen, während Sie mit der Verwaltung beschäftigt sind.
Sei ehrlich zu dir selbst. Ich wette, der Grund, warum Sie diese früheren Manager hassten, war nicht, dass sie nicht über die Wissensbasis verfügten, um Entscheidungen zu treffen, sondern weil sie Entscheidungen erzwangen und sich nie mit den Konsequenzen befassten.
Dies gilt unabhängig davon, ob Sie .NET noch nie berührt haben oder der erfahrenste Entwickler im Team sind. Ihre Aufgabe ist es nun zu verwalten, keine technischen Entscheidungen zu treffen.
Je nach Kenntnisstand Ihrer Entwickler kann das Verwalten bedeuten, sie zu beraten, wenn sie danach fragen. "Haben Sie sich Spring.NET angesehen?" (man beachte den Mangel an Anweisungen dort) ist eine vollkommen gute Sache zu sagen. Auch "Google herum, sehen Sie, was der Rest der Welt tut, wir sind nicht die ersten, die sich diesem Problem stellen."
In mancher Hinsicht sind Sie als erfahrener Java-Entwickler möglicherweise in einer besseren Position als die meisten anderen. Die meisten Java-Frameworks und -Technologien haben in .NET eine analoge Entsprechung. Sie müssen also nicht sagen: "Hier ist das Beste, was Sie verwenden können". Sie können sagen: "Ich habe dies in Java verwendet. Kennen Sie ein .NET-Äquivalent?"
Fördern Sie auch viele Gespräche im Team. Vereinbaren Sie wöchentliche technische Besprechungen. Alles, was Sie jemals brauchen, ist Information am Ende; Sie müssen wissen, welche Entscheidungen sie getroffen haben und warum. Sie müssen diese Entscheidungen nicht für das Team treffen.
quelle
Ich hatte einige sehr gute Manager / Teamleiter, die sehr wenig über die Technologie wussten, und einige meiner schlechtesten Manager waren diejenigen, die dachten, sie wüssten alles.
Um ein Führer zu sein, wenn Sie einigermaßen kompetente Leute haben, ist es das Wichtigste, in der Lage zu sein, ihre Kompetenz und ihr Urteilsvermögen zu beurteilen und jedem so viel Spielraum zu lassen, wie er kann, während die "wilden Enten" bei der Arbeit bleiben und die "kaum" kompetenten "beschäftigt mit" sicheren "aber produktiven aktivitäten. Stellen Sie sicher, dass alle zum selben Schlagzeuger marschieren.
Ihre größere Herausforderung besteht wahrscheinlich darin, das obere Management in Schach zu halten. Sie möchten Berichte, Zeitpläne und Häkchen, und Sie müssen herausfinden, was sie wollen und wie Sie sie einigermaßen gut fälschen können. (Nun, nicht gerade "gefälscht", aber erstellen Sie eine Dokumentation, die sie zufriedenstellt, ohne Ihre Zeit oder die Ihres Teams zu verschlingen.)
quelle
Sie wurden nicht für Ihre C # -Codierungsfähigkeiten ausgewählt, und es sei denn, Sie schreiben von Anfang an Code, spielt es keine Rolle, ob Sie C # kennen oder nicht. Sie müssen anfangen, auf einer höheren Ebene zu denken:
Einige dieser Dinge können in das Gebiet des Projektmanagements übergehen, aber als leitender Entwickler arbeiten Sie in diesen und anderen Fragen eng mit dem Projektmanager zusammen.
Lernen Sie auf jeden Fall, in C # so schnell wie möglich effektiv zu arbeiten. Denken Sie daran, dass Ihre Rolle darin besteht, die Syntax und die Framework-Details zu überschreiten und das Gesamtbild zu betrachten.
quelle
Nehmen Sie eine praktische Annäherung. Beginnen Sie, indem Sie sich einen einfachen C # -Primer schnappen und Code schreiben. Probieren Sie ein paar grundlegende Dinge aus, die Sie mit verbundenen Augen in einer anderen Sprache tun können.
Informieren Sie sich über Programmierstil und Konvention. Sie sollten dies ohnehin zum Teil in Ihrer Grundierung finden, aber Sie können auch Produkte wie StyleCop und Resharper verwenden, um Stilregeln durchzusetzen, die Sie nicht kennen. Auf diese Weise werden Sie effektiv sehr schnell darin geschult, Dinge auf allgemein akzeptierte Weise zu tun, um Probleme beim Kompilieren Ihrer Software zu vermeiden.
Sei einfach du selbst und wende das Designwissen an, das du bereits hast. Die Grundlagen sind unabhängig von der Sprache im Wesentlichen gleich. Wo es Unterschiede geben wird, ist die Art und Weise, wie sich die Sprachen in Bezug auf die Struktur unterscheiden, ziemlich gering, und ein Großteil davon wird sehr schnell sichtbar, wenn Sie ein oder zwei Test-Apps zusammenstellen.
Wenn es offensichtliche Dinge gibt, die Sie nicht wissen, seien Sie auf dem Laufenden. Ihr Team wird Ehrlichkeit mehr respektieren als nur ohne Anhaltspunkt weiterzumachen. Treffen Sie fundierte und begründete Entscheidungen, und nehmen Sie sich immer ein paar Minuten Zeit, um Ihre Antwort zu prüfen. Sie müssen durchsetzungsfähig sein, ohne zu versuchen, zu dominieren, und Sie dürfen nicht zulassen, dass Ihr Mangel an Wissen in einem Bereich ein Spiegelbild Ihrer Fähigkeit ist, das Team zu führen. Führung bedeutet Mentoring, aber Mentoring bedeutet nicht, dass man nicht auch die Bereitschaft zeigen kann, etwas Neues zu lernen.
quelle
Wenn Sie so denken und sich darüber Gedanken machen, haben Sie das Risiko, ein solcher Projektleiter zu werden, bereits vermieden. Es ist eine ganz andere Art von Persönlichkeit, die es wagen würde, Entscheidungen ohne das richtige Wissen zu treffen. Seien Sie einfach offen für das, was Ihre Mitarbeiter Ihnen sagen, und schaffen und fördern Sie eine Kultur des Dialogs und des Informationsaustauschs in Ihrem Team.
quelle
Es hört sich so an, als wären hier ein paar Probleme im Spiel.
Die Technologie, die in dem Projekt verwendet wird, das Sie leiten, und der Prozess, der die Entwicklung dieses Projekts steuert.
Sind Sie der Teamleiter oder ein leitender Entwickler? Ein leitender Entwickler leistet auch einen Großteil der Design- und Entwicklungsarbeit. Der einzige Weg, dies zu umgehen, besteht darin , die neue Technologie zu erlernen .
Wenn Sie das Team tatsächlich leiten, müssen Sie dem Team vertrauen und es den größten Teil der technischen Leitung des Projekts überlassen. Konzeptionell sind Sie natürlich in der Lage, diese Steuerung in die richtige Richtung zu lenken.
Die Prozesse, die die Entwicklung des Projekts steuern, sollten größtenteils vorhanden sein . Es geht nur darum, sie zu lesen, zu verstehen und auszuführen.
Wenn nicht, verhandeln Sie mit Ihrem Chef, um einen Mentor zu finden, der Ihnen hilft, einen Entwicklungsprozess in Gang zu setzen. Das ist ziemlich wichtig. Es wird ziemlich schnell scheitern, wenn der Prozess nicht vorhanden ist und ad hoc ist.
Viel Glück!
quelle
Gelegenheit kommt hin und wieder. Ergreifen Sie es. Ich würde sagen, versuchen Sie, die Grundlagen von C # zu lernen. Holen Sie sich ein Online-Tutorial und versuchen Sie, daran zu arbeiten. Anfänglich wäre es schwierig, das neue Konzept zu erlernen. Später, wenn Ihre erste Aufgabe erledigt ist, werden Sie ein gewisses Vertrauen in das Konzept haben.
Denken Sie positiv, versuchen Sie, schwierige Aufgaben zu übernehmen, debuggen Sie Ihren eigenen Code und seien Sie sicher, dass Sie diesen beherrschen werden.
Verpassen Sie nicht Ihre Chance.
quelle
Ich denke, wenn Sie eine gute Gruppe von .Net-Entwicklern haben, gibt es eine Menge Wissen im Team, auf das Sie möglicherweise zurückgreifen müssen, um loszulegen. Es gibt viele Ähnlichkeiten zwischen Java und .Net, sodass das, was Sie bereits wissen, möglicherweise mehr oder weniger direkt gilt. Wichtig ist, zu wissen, was für dieses Projekt und die damit verbundenen Risiken wichtig ist. Kommunizieren Sie so oft wie nötig mit Ihrem Team. Die Softwareentwicklungspraxis entwickelt sich während des gesamten Projekts weiter, sodass es schwierig sein kann, sehr früh im Projekt eine "Best Practice" zu finden.
Ich hatte ein bisschen das Gegenteil von Ihrer Erfahrung, wo ich ein sehr grünes Team von Absolventen bekommen habe, die nicht aus dem Bereich Software stammen. Während ich allen Grund habe, festzulegen, was zu tun ist (ich war angestellt), habe ich stattdessen nach Übung gesucht, um uns zu bewegen, und nach viel Coaching und Diskussion, um unsere Softwareentwicklungspraxis weiterzuentwickeln. Unterwegs habe ich vom Team viel gelernt und wir sind fast da, als wir nach mehr als einem Jahr im Einsatz unser erstes In-House-Projekt abliefern!
quelle
Suchen Sie ein Open Source-Produkt, das dieselbe Technologie verwendet, die Sie verwenden werden.
Suchen Sie nach Möglichkeit eine, die der Problemdomäne ähnelt. Dies ist nicht so wichtig wie die Suche nach einem Projekt mit derselben Technologie und aktiven Updates.
Laden Sie den Arbeitscode herunter. Lies es.
Finden Sie heraus, welche Tools sie verwenden. Benutze sie.
Finden Sie heraus, wie Sie das Open Source-Projekt erstellen und freigeben. Bauen Sie es und geben Sie es frei.
Ein Open-Source-Projekt (mit einer Reihe von Mitwirkenden) wird bewährte Verfahren veranschaulichen.
Wahr.
Lernen Sie von der Open Source Community.
quelle