Wie man ein Entwicklungsprojekt ohne technisches Fachwissen leitet

17

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?

Fischerei
quelle
12
zu vermeiden hasste immer so, nur an Ihren Teammitglieder sprechen. Reden Sie regelmäßig, reden Sie oft, reden Sie 1: 1 "... Ihre Belohnung für eine gesunde 1: 1-Kultur ist ein deutlicher Mangel an Drama."
gnat
1
Was ist Ihr Titel und Ihre Verantwortung genau für dieses Projekt? Sind Sie PM, Senior Developer, ...?
NoChance
Lerne von den Besten ... youtube.com/watch?v=GjJCdCXFslY
jfrankcarr
1
Aber im Ernst, ich habe diese Artikelserie vor einiger
jfrankcarr

Antworten:

19

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.

pdr
quelle
2
Richtig. Die Hauptsache ist, bereit zu sein, Ihre technischen "Stars" Entscheidungen treffen zu lassen, die sich von den Entscheidungen unterscheiden, die Sie getroffen hätten. Wenn Sie das schaffen, werden alle (außer natürlich dem oberen Management) glücklich und produktiv sein.
Daniel R Hicks
"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? " In den meisten Fällen wird einem äquivalenten Tool ein 'N' vorangestellt, sodass Sie diese im Allgemeinen selbst finden können.
Dan Neely,
Denken Sie daran, dass er sich als "Leitender Entwickler" und nicht als "Projektmanager" ausgibt. Nach meiner Erfahrung sind dies zwei sehr unterschiedliche Dinge.
Wonko the Sane
@WonkotheSane: Es ist wahr, dass das OP auf Projektleiter, Teamleiter und leitenden Entwickler verweist, als ob sie alle dasselbe sind, und das ist verwirrend. Aber ich habe mich an dem Kontext orientiert, in dem sie verwendet werden.
pdr
@ pdr - stimmte fast zu. Der Teil über "Ich kann Entwurfsmuster und OO-Paradigmen nutzen" lässt mich ein wenig wundern.
Wonko the Sane
6

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.)

Daniel R Hicks
quelle
4

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:

  • Welche Fähigkeiten bringt jede Person in Ihrem Team mit?
  • Welche Komponenten sind für den Erfolg des Projekts entscheidend?
  • Was müssen Sie zusätzlich zum eigentlichen Code produzieren? (Tests? Dokumentation?)
  • Wie werden Sie Anforderungen erfassen, wenn Sie dies noch nicht getan haben?
  • Wie gehen Sie und Ihr Team mit dem Designprozess um?
  • Sie wissen, dass es wichtig ist, einen Kodierungsstandard zu haben, aber Sie können sich darauf verlassen, dass Ihr Team genau herausfindet, welchem ​​Standard es folgen möchte.
  • Wie können Sie Probleme frühzeitig erkennen?

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.

Caleb
quelle
2

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.

S.Robins
quelle
3
Ich würde sagen, das ist genau das Gegenteil von dem, was man als Manager tun muss. Es mag verlockend sein, Code einzuspielen und wegzuwerfen, aber das ist nicht mehr Ihre Aufgabe ... Ihre Aufgabe ist es, Ihr Team in die Lage zu versetzen, das zu tun, wofür Sie sie eingestellt haben, und auf ihre Erfahrung und ihr Urteilsvermögen zu vertrauen. Der Versuch, auf einer anderen Plattform auf den neuesten Stand zu kommen, ist kontraproduktiv.
Michael Brown
@MikeBrown Dies gilt nur, wenn es sich bei der Position um eine Managementposition handelt. Alle meiner Teamführungspositionen erforderten neben dem Projektmanagement, der Planung und anderen Aufgaben, die Sie von dieser Position erwarten würden, einen erheblichen Zeitaufwand. Hätte das OP gesagt, dass er Manager werden soll , wäre meine Antwort ganz anders ausgefallen.
S.Robins
Du hast recht. Ich übernahm Manager von der Tatsache, dass es sich um eine Technologie handelte, in der er keine Erfahrung hatte. Nehmen Sie eine Bearbeitung vor und ich mache meine Ablehnung rückgängig :)
Michael Brown
@MikeBrown Ich bin mir nicht sicher, was ich für Sie bearbeiten muss. Ich habe die Frage des OP auf der Grundlage seiner eigenen Aussage beantwortet, dass er Projektleiter werden sollte. Ich werde die Antwort jedoch ein wenig erweitern. :)
S.Robins
Oh, es war nicht so, dass ich das Gefühl hatte, Sie müssten etwas ändern ... nur, dass SO mich meine Stimme nicht ohne eine Änderung ändern ließ :(
Michael Brown
1

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.

thorsten müller
quelle
1

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!

tehnyit
quelle
0

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.

Harisha
quelle
0

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!

Chris Chou
quelle
-1

Ich bin verloren, wenn es um Codierungsstandards, Projektlebenszyklus-Tools und Freigabe- / Verteilungsverfahren geht.

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.

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.

Wahr.

Lernen Sie von der Open Source Community.

S.Lott
quelle
2
Manchmal verwenden Leute, die an Open-Source-Projekten arbeiten, nicht die besten verfügbaren Tools oder folgen nicht einmal den Standards (bewährten Praktiken). Ich kenne nur wenige Open Source-Projekte (ich möchte sie nicht nennen), die wirklich schlecht darin sind, die richtigen Tools zu verwenden oder sogar die Branchenkonventionen zu befolgen.
Christian P
@ChristianP: Es gibt zwar einige weniger als herausragende Open Source-Projekte, aber es ist einfach, große Projekte zu finden, die recht gut sind. Und jedes Open-Source-Projekt als Beispiel zu finden, ist besser als gar kein Beispiel.
S.Lott
Ich stimme zu, dass jedes Beispiel besser ist als keines. Bei der Suche nach Best Practices, Tools usw. kann man jedoch von einem guten Open Source-Projekt mehr lernen, auch wenn das Projekt nicht das gleiche Problem löst.
Christian P