Wer sollte Entwicklerfragen beantworten und ihnen helfen, ihre Probleme zu lösen oder geeignete Bibliotheken auszuwählen?

Gibt es eine Position in Softwareentwicklungsunternehmen, die die Fragen der Programmierer beantwortet wie: "Oh, ich bekomme diesen Fehler! Ich habe nach diesem Fehler gesucht und konnte die Lösung nicht finden. Können Sie mir helfen, ihn zu lösen?".

Oder jemand, der die anderen Entwickler leitet und Fragen beantwortet wie: „Welche Bibliothek sollte ich für den Authentifizierungsteil verwenden? Welches dieser Module eignet sich besser für unsere mobile App-Version?".

Meine Hauptfrage ist, ob wir ein Unternehmen haben, das mit den Technologien Angular + Flutter + Node.JS + PostgreSQL/MongoDB usw. arbeitet, ob wir eine Person namens CTO haben sollten, die alle Details über verschiedene Technologien kennt und eine ist Held von ihnen und allen Entwicklern helfen, oder sollten wir verschiedene CTOs für verschiedene Technologien haben (wie einen für Angular, einen für Flutter, einen für Datenbanken usw.)?

Oder funktionieren die Dinger vielleicht ganz anders als ich denke?

Antworten (5)

Gibt es eine Position in Softwareentwicklungsunternehmen, die die Fragen der Programmierer beantwortet wie: "Oh, ich bekomme diesen Fehler! Ich habe nach diesem Fehler gesucht und konnte die Lösung nicht finden. Können Sie mir helfen, ihn zu lösen?".

Ich würde nicht erwarten, dass es eine Stelle für jemanden gibt, der solche Fragen beantworten kann, außer "Entwickler". Es sollte möglich sein, sich an jeden Entwickler zu wenden, der mehr Erfahrung in dem Bereich hat, in dem das Problem auftritt, um solche Fragen zu beantworten. Typischerweise wäre das ein älterer Entwickler.

Oder jemand, der die anderen Entwickler leitet und Fragen beantwortet wie: „Welche Bibliothek sollte ich für den Authentifizierungsteil verwenden? Welches dieser Module eignet sich besser für unsere mobile App-Version?".

Diese Fragen erfordern etwas mehr Überblick über das gesamte Projekt und würden normalerweise von einem leitenden Entwickler oder Architekten bearbeitet, obwohl ich in einem kleinen Unternehmen auch einen CTO sehen könnte, der dies tut.

sollten wir eine Person namens CTO haben, die alle Details über verschiedene Technologien kennt und ein Held von ihnen ist und allen Entwicklern hilft, oder wir sollten verschiedene CTOs für verschiedene Technologien haben (wie einen für Angular, einen für Flutter, eine für Datenbanken usw.)?

Nein. Ein CTO ist in erster Linie ein Manager, der letztendlich für die Auswahl der High-Level-Technologie verantwortlich ist. Der CTO hat sich möglicherweise für die Verwendung von Node.JS entschieden, aber es ist durchaus möglich, dass er noch nie eine einzige Zeile Javascript geschrieben hat.

Es sind die Entwickler, die gemeinsam alle wesentlichen Details der von ihnen verwendeten Technologie kennen sollten.

"Oh, ich bekomme diesen Fehler! Ich habe nach diesem Fehler gesucht und konnte die Lösung nicht finden. Können Sie mir helfen, ihn zu lösen?"

Ein Softwareentwickler . Viele Leute können die Entwicklung vortäuschen, indem sie Cut-and-Paste-Experten sind, aber echte Entwickler lesen die Dokumentation, lesen den Code und lernen, wie man mit Systemen arbeitet. Das Internet ist ein großartiges Werkzeug; aber nicht so sehr, wenn es die Problemlösung durch Ausschneiden und Einfügen ersetzt.

Welche Bibliothek sollte ich für den Authentifizierungsteil verwenden?

Ein Produktmanager , wenn die Authentifizierung Teil externer Systeme ist, die bestimmte Authentifizierungsfunktionen erfordern.

Ein Softwarearchitekt, wenn die Authentifizierung Teil einer integrierten Plattform ist, die Komponenten oder Funktionen mit anderen Teilen eines größeren Ganzen teilt. In diesem Fall gibt der Architekt (falls Sie einen guten haben) die erforderlichen Funktionen an.

Ein Softwareentwickler, wenn die erforderlichen Funktionen bekannt sind, und er wird beauftragt, eine Bibliothek auszuwählen, die die Funktionen unterstützt.

Die Rechtsabteilung , wenn die ausgewählten Artikel Lizenzen enthalten, die sich negativ auf die Veröffentlichung des Produkts auswirken könnten.

Welches dieser Module eignet sich besser für unsere mobile App-Version?

Ein Softwarearchitekt, wenn das Modul Teil eines größeren Ganzen ist und man sicherstellen möchte, dass das Ganze in einen Rahmen passt, der das Problem ohne zusätzlichen Aufwand oder offensichtliche Kompromisse bei der Wartung löst. Ein Softwareentwickler, vorausgesetzt, er versteht die erforderlichen Funktionen des benötigten Moduls. Denken Sie daran, dass besser "einfacher für einen Entwickler zu verwenden" ist, sodass die Meinung des Entwicklers eine Tatsache bei der Bestimmung von besser ist, solange die Funktionen vorhanden sind und keine zusätzlichen architektonischen Anforderungen bestehen.

Die Dinge funktionieren ganz anders, als Sie denken. Die meisten CTOs nehmen Input von ihren Produktmanagern und Softwarearchitekten, um auf Kundenbedürfnisse und Entwicklungspläne einzugehen. Dann geben sie Anweisungen und Geld aus, um die Kundenbedürfnisse zu befriedigen, indem sie einem Architektenplan folgen. Kleinere Elemente, die keine Änderung der Architektur erfordern und wie "Wartungs"-Elemente behandelt werden (selbst wenn sie neue Funktionen hinzufügen). Ein guter CTO muss Technologie nicht so gut verstehen wie Finanzen; Wenn sie jedoch über Technologiekenntnisse verfügen, können sie ihre Recherchen zur aktuellen Richtung durchführen und als zweite Meinung zu vorgeschlagenen Plänen fungieren.

In vielen Fällen laufen viele Orte nicht auf diese Weise, was zum „Durcheinander“ der Softwareentwicklung beiträgt.

  • Entwickler erstellen Architektur, oft ohne zusätzliche Zeit dafür. Dies führt zu schlechteren architektonischen Entscheidungen, die langfristige Kosten verursachen.
  • CTOs fungieren als Architekten, was bedeutet, dass sie die Gelegenheit verpassen, Einnahmequellen zu steigern, indem sie mehr Aufmerksamkeit auf Produktlösungen als auf Kundenbedürfnisse richten.
  • Produktmanager fungieren als Teamleiter und lenken ihre Aufmerksamkeit von der Erfassung und Verfolgung von Kundenbedürfnissen ab, wodurch die Fähigkeit, auf den Markt zu reagieren, verringert wird.
  • Viele kleinere Geschäfte können nicht alle erforderlichen Rollen besetzen, daher werden Rollen „innerhalb einer einzigen Person geteilt“ und es ist selten (aber möglich), dass die Person in allen Rollen hervorragende Leistungen erbringt, und noch seltener, dass sie ihre Zeit dafür einhält tun sie alle gut.

In Ihrem Fall haben Sie eine Person, die die Rolle des Entwicklers ausfüllt , die nicht wirklich auf ihre Rolle vorbereitet ist. Vielleicht liegt das an schlechten Voraussetzungen; Anforderungen sind jedoch nie perfekt detailliert. Es ist die Aufgabe des Entwicklers, die unterspezifizierten Anforderungen in ein funktionierendes Produkt zu übersetzen. Auf einer niedrigen Ebene „welche Bibliothek macht das am besten“ werden sie die Entscheidungsträger darüber sein, was „am besten“ bedeutet. Diese Art von Fragen sind das Markenzeichen eines Junior-Entwicklers oder einer Person, die gerade eine Programmiersprache gelernt hat, ohne viel über ihr Handwerk zu lernen.

Anscheinend lautet der Titel, nach dem Sie suchen, entweder technischer Leiter / leitender Ingenieur oder Softwarearchitekt .

Ein leitender Ingenieur , normalerweise in einer ähnlichen Rolle wie ein technischer Leiter , ist der dienstälteste Ingenieur im Team. Sie verfügen in der Regel über das größte Fachwissen in Bezug auf das Produkt und sind am besten darin, komplexe Dokumentationen zu lesen, um neue Dinge zu lernen, unabhängig an großen und komplexen Systemen zu arbeiten und jeden Ingenieur im Team (sogar erfahrene Ingenieure) zu betreuen. Der Unterschied zwischen einem technischen Leiter und einem leitenden Ingenieur besteht in der Regel darin, dass ein technischer Leiter ein bisschen mehr Schnittstellen zum Management und ein bisschen weniger zum Engineering hat, während leitende Ingenieure wie Super-Senior-Ingenieure sind, sie haben viele der gleichen Verantwortlichkeiten wie leitende Ingenieure, aber noch mehr.

Ein Softwarearchitekt ist etwas weniger auf der Engineering-Seite und ein bisschen mehr auf der Projektmanagement-Seite. Sie würden Entscheidungen treffen, z. B. welche Bibliotheken oder Frameworks für ein bestimmtes Projekt oder einen bestimmten Anwendungsfall verwendet werden sollen. Sie neigen dazu, nicht zu viel direkt zu entwickeln, sondern übergreifende technische Entscheidungen zu treffen, die die Entwickler in ein Produkt umsetzen können. Es ist nicht ungewöhnlich, dass ein Softwarearchitekt und ein leitender Ingenieur oder technischer Leiter dieselbe Person sind, da in beiden Fällen ein breites Spektrum an Softwarekenntnissen erforderlich ist.

Ein CTO ist eine ganz andere Position. Der CTO ist der Leiter der technischen Abteilung. Kurz gesagt, ein CTO verhält sich zu einem Ingenieur wie ein CEO zu einem Verkäufer. Der CEO führt keine direkten Verkäufe durch (normalerweise zumindest für mittelgroße Organisationen, außer in sehr außergewöhnlichen Fällen); Sie haben ein Verkaufsteam, das sich darum kümmert, und bei Bedarf kann der CEO eingreifen, um Richtlinien zu erstellen, um den Verkauf oder was auch immer zu unterstützen. Genauso macht ein CTO eigentlich nicht viel Technik; Sie treffen einige Entscheidungen, um Ingenieuren zu helfen, und sie arbeiten viel mit anderen C-Level-Mitarbeitern zusammen, um das Geschäft von der technischen Seite aus zu führen, aber sie steigen nicht wirklich in den Alltag der Ingenieure ein.

Gibt es eine Stelle in Softwareentwicklungsunternehmen, die die Fragen der Programmierer beantwortet...

Wenn Sie bereit sind, Ihre Frage erneut zu stellen

„Gibt es eine Position in Softwareentwicklungsunternehmen, die die Erwartungen an die Produkt-Roadmap festlegt und zur Klärung konsultiert werden kann?“

Die Antwort lautet: Es gibt zwei Rollen speziell für diesen Job

  • Produkteigentümer
  • Produktarchitekt

Sie können für alle Fragen/Zweifel im Zusammenhang mit technischen Fällen oder allgemein zur Auswahl von Technologien oder für eine schnelle Überprüfung/Meinung zu Vor- und Nachteilen verschiedener Ansätze usw. kontaktiert werden.

Wenn Sie jedoch tatsächlich alltägliche Probleme lösen möchten (wie die Debugging-Hilfe und/oder Codeprobleme), können die meisten davon entweder durch eine Peer-Review oder durch Fragen im Team gelöst werden Hilfe, an einen Kollegen oder einen leitenden Ingenieur oder einen technischen Leiter oder einen technischen Manager (falls vorhanden). Stack Overflow/Stack Exchange-Sites können ebenfalls verwendet werden (als letzter Ausweg).

Zum Schluss: Es gibt keine spezifische Rolle (und ich bezweifle, dass es jemals eine geben wird) für die Beantwortung von „gimme tez codez“-Fragen. Dafür wird jeder Einzelne bezahlt, um Probleme (Code oder sonstiges) zu lösen.

„Es gibt keine spezifische Rolle (und ich bezweifle, dass es jemals eine geben wird) für die Beantwortung von „gimme tez codez“-Fragen.“ - irgendwie . Obwohl sehr spezifisch für einzelne Themen, kann ich definitiv Teams sehen, in denen jeder mehr oder weniger SQL kennt, aber es gibt einen DB-Spezialisten (wobei dies offiziell ihre Rolle ist), der die natürliche Referenz sein wird, wenn es um „Wie mache ich $insert -nicht-triviales-Problem-hier in SQL?" Art von Fragen.
@ORMapper nicht-trivial != "gimme tez codez"

Sie ist stark abhängig von einzelnen Unternehmen. Titel allein bestimmen dies nicht, da verschiedene Titel in verschiedenen Unternehmen unterschiedliche Rollen haben.

Ein CTO kommuniziert mit dem High-Level-Management und schreibt möglicherweise nicht einmal Code. Ihre Aufgabe ist es sicherzustellen, dass die technischen Entscheidungen auf hoher Ebene die Unternehmensziele widerspiegeln.

Ein CTO könnte dafür verantwortlich sein, welche Frameworks, Hosting und andere Tools das Unternehmen verwendet, aber es hängt vom Unternehmen ab. In kleineren Unternehmen ist es üblich, dass ein CTO sogar als Architekt oder leitender Entwickler fungiert.

Wer leitet die anderen Entwickler und beantwortet Fragen wie: „Welche Bibliothek sollte ich für den Authentifizierungsteil verwenden? Welches dieser Module eignet sich besser für unsere mobile App-Version?"

Je nach Unternehmen kann dies eines der folgenden sein:

  • CTO / Technischer Direktor
  • Technischer Leiter
  • Architekt
  • Leitender Entwickler
  • Leitender Entwickler

Niemand kennt alle Details über jede Sprache oder Bibliothek. Jeder erfahrene Entwickler sollte Ihnen sagen können, welche Bibliothek er für eine bestimmte Aufgabe verwendet, oder Sie müssen möglicherweise selbst nach einer suchen.

Die Aufgabe eines Architekten besteht darin, das System zu entwerfen, nicht das System zu programmieren. Ihr Design kann beinhalten oder nicht, welches Framework verwendet werden sollte. - Wenn dies nicht dokumentiert ist, liegt es an den leitenden oder leitenden Entwicklern, diese Entscheidung zu treffen und eine auszuwählen, die die vom Architekten bereitgestellten Anforderungen des Systems erfüllt.

Oh, ich bekomme diesen Fehler! Ich habe nach diesem Fehler gesucht und keine Lösung gefunden. Könnt ihr mir helfen zu lösen?

Nichts, was Sie einen CTO oder Architekten fragen würden. Sie würden fragen:

  • Ein Kollege
  • Leitender Entwickler
  • Leitender Entwickler

Wenn es sich um ein Problem handelt, das niemand herausfinden kann, wird es auf höhere Ebenen eskaliert und endet bei der erfahrensten technischen Person. Überall, wo ich gearbeitet habe, war dies der CTO.