Soll ich mich als Softwarearchitekt so sehr darauf konzentrieren, die Protokolle zu analysieren und die Fehler anderer zu beheben?


45

Seit meinem Abschluss (Ende 2005) arbeitete ich für dasselbe Unternehmen als C ++ - Softwareingenieur. Vor einem Jahr wurde ich zum Softwarearchitekten befördert, aber ich habe festgestellt, dass ich mich immer mehr mit der Qualifizierung und Behebung von Fehlern befasst habe, Level 2-Support.

50% meiner Zeit habe ich in Notepad ++ verbracht, um die Softwareprotokolle zu analysieren und herauszufinden, was schief gelaufen ist. 30% der Fehlerbehebungen bei anderen und der verbleibenden (falls vorhanden) Überprüfung des Entwickler-Spaghetti-Codes.

Ich fing an, dieses Produkt zu hassen und über eine Ausstiegsstrategie aus diesem Unternehmen nachzudenken.

Was kann ich in dieser Situation tun? Beheben andere Softwarearchitekten noch Fehler im Code?


26
Das Beheben von Fehlern ist tatsächlich eine der am häufigsten anfallenden Aufgaben bei der Programmierung. Sie müssen verstehen, wie das System funktioniert, wie es funktionieren sollte, wie der ursprüngliche Designer / Programmierer argumentiert und wie dieser Code in etwas umgewandelt wird, das funktioniert und nicht alles andere zerbrechen. Es ist natürlich, dass die erfahrensten im Team bei solchen Aufgaben sehr hilfreich sind. Können Sie nicht einen Teil der tatsächlichen Implementierung delegieren, nachdem Sie den Grund für den Fehler erläutert haben? Oder versuchen Sie sich stattdessen an einem Greenfield-Projekt zu beteiligen.
Max

61
Nein - die Pflicht eines "Architekten" besteht darin, Fehler zu erzeugen und nicht zu beheben.
Nemanja Trifunovic

19
Was Sie beschreiben, ist kein Software-Architekt, sondern ein Support-Ingenieur.
Oded

5
Was ist ein "Level 2 Support" .. klingt wie ein Spiel ahah
Thomas Bonini

7
@Krelp Sehr große Softwareproduktvorgänge werden in zwei Formen unterteilt: 1. Release 2. Wartung. Zu den Release-Aktivitäten gehören das Hinzufügen einiger wichtiger Funktionen, die Suche nach Optimierungsbereichen, die Globalisierung der Software, das Hinzufügen von Unterstützung für neue Plattformen usw. Der Wartungsteil ist nun in drei Teile gegliedert: L1, L2 und L3. L1 ist ein Kundendienst-Callcenter. L2 Personen verfügen über detaillierte Produktkenntnisse. Wenn L1 das Kundenproblem nicht löst, wird das Problem oder L2 weitergeleitet. Und wenn L2 das Problem nicht lösen kann, rufen sie L3 an. L3 kann Codeänderungen vornehmen.
Chani

Antworten:


81

Die meisten Menschen stimmen im Allgemeinen darin überein, dass ein Software-Architekt hauptsächlich in das Design auf hoher Ebene, das Setzen von Standards, das Auswählen von Tools oder Frameworks, das Bewerten von Produkten, das Implementieren von Prototypen und Proof-of-Concepts sowie das Trainieren und Betreuen von Entwicklern involviert sein sollte

Die Realität ist jedoch, dass der Titel häufig eine politische Ernennung zu einem Entwickler, ein spezieller Titel für leitende Entwickler von Projekten oder sogar eine einfache Lösung für die Personalabteilung sein kann, um einen dringend benötigten Entwickler zu einem Gehalt oder einer solchen Rate einzustellen Für den Titel "Softwareentwickler" oder "Softwareingenieur" ist die Personalabteilung oder das obere Management inakzeptabel.

Mit anderen Worten, Titel sind meist bedeutungslos.


13
Es ist lustig, dass der Architekt in unserem Bereich zu einem verbesserten Titel über den Ingenieur geworden ist. In anderen Bereichen schauen Ingenieure auf Architekten herab. Einverstanden, dass Titel meist bedeutungslos sind.
mike30

2
Es ist sehr ähnlich, wie ich zwei Jahre nach dem College zum "Senior Software Engineer" befördert wurde. Ich habe diesen Titel wahrscheinlich mindestens ein Jahrzehnt länger nicht verdient.
Gort the Robot

3
City Planner ist wahrscheinlich eine bessere Metapher als Architect für das, was Software-Architekten normalerweise tun.
Roy Tinker


4
Ich würde nicht sagen, dass es größtenteils bedeutungslos ist, aber ein Software-Architekt ist oft ein Entwickler, der für die architektonische Gestaltung und Entscheidungsfindung sowie für profanere Entwicklungsaufgaben verantwortlich ist und nicht für profanere Entwicklungsaufgaben.
Carson63000

17

Wikipedia-Artikel definiert Software-Architekt als:

Ein Computerprogrammierer , der hochwertige Designentscheidungen trifft und technische Standards vorschreibt , einschließlich Software-Codierungsstandards, Tools oder Plattformen ...

In Anbetracht dessen, dass Ihre Schätzungen "50% meiner Zeit damit verbracht haben ... die Softwareprotokolle zu analysieren ... 30% die Fehler anderer zu beheben" , haben Sie weit davon entfernt, was von Software-Architekten normalerweise erwartet wird.

  • Ich würde oben sagen, macht den Titel, den sie dir gaben, über 50+30=80%falsch.

Man beachte, dass Aktivitäten wie das Analysieren von Protokollen oder das Beheben von Fehlern anderer berechtigterweise einen Teil der Zeit des Architekten in Anspruch nehmen können - vorausgesetzt, diese dienen dem primären Zweck dieser Rolle - das Treffen von Entwurfsentscheidungen auf hoher Ebene und die Festlegung technischer Standards. Tatsächlich ist dies bei jeder Art von Softwareentwicklung / -wartung / -test der Fall.

Wenn die Analyse von Protokollen beispielsweise Aufschluss darüber gibt, wie dies vereinfacht werden kann, indem das Design, die Werkzeuge oder die Codierungsstandards verbessert werden, ist dies für einen Architekten durchaus vertretbar. In ähnlicher Weise könnte es für Architekten völlig in Ordnung sein, sich die Hände schmutzig zu machen, um bestimmte Fehler zu beheben - solange dies zu spezifischen Verbesserungen des Designs / Prozesses führen würde, die zu einer geringeren Fehlerrate usw. führen würden.


Etwas positiver ausgedrückt zeigt Ihre Frage mindestens eine Fähigkeit, die für den Architekten sehr wichtig ist: die Fähigkeit, verschiedene Arten von Aktivitäten zu klassifizieren und die dafür aufgewendeten Anstrengungen zu verfolgen. Erwägen Sie, Ihre "Toolbox" um ergänzende Fähigkeiten zu erweitern, um Ihre Beobachtungen und Schätzungen zusammenzufassen und diese klar zu kommunizieren, insbesondere auf der Managementleiter. :)


5

Soll ich mich als Softwarearchitekt so sehr darauf konzentrieren, die Protokolle zu analysieren und die Fehler anderer zu beheben?

Sollst? Ja und nein. Sie sind für die Gesamtheit der Produktqualität und des Entwicklungspfads verantwortlich - lassen Sie es morgen funktionieren, aber lassen Sie es auch nächstes Jahr funktionieren.
Bedeutet das, bei der Lösung schwieriger Probleme behilflich zu sein? Absolut - zumindest ich. Sie können das Produkt morgen nicht zum Laufen bringen, wenn Ihre Kunden Sie verlassen.
Bedeutet das, dass Sie die ganze Zeit darauf verwenden sollten? Absolut nicht. Sie sind verantwortlich für die Gesamtheit der Qualität und Entwicklung. Es ist kontraproduktiv, so viel Zeit darauf zu verwenden, Probleme zu verfolgen.

Sie sollten proaktiv sein:

  1. Initiieren Sie Schulungspläne, damit andere Personen (Entwickler / Support) die Last heben können. "Bringe einem Mann das Fischen bei" und all den Jazz.
  2. Erfinden Sie Möglichkeiten und entwickeln Sie Tools, die eine schnellere und einfachere Fehleranalyse und die Lokalisierung von Ursachen unterstützen. Wenn Sie dies langweilig finden, finden andere, möglicherweise weniger talentierte oder erfahrene Entwickler dies nicht nur langweilig, sondern auch schwierig und vielleicht sogar entmutigend. Helfen Sie ihnen, dies durch Technologie zu überwinden.
  3. Bemühen Sie sich, die Qualität des Produkts zu verbessern - vereinfachen, modularisieren, Test-Frameworks erstellen - und gehen Sie mit gutem Beispiel voran, ohne zu jammern und zu drohen, aufzuhören.
  4. Stellen Sie sicher, dass Entwickler wissen, was Sie tun - aber auch Ihre Manager. Bei einer Architektenrolle geht es viel mehr um Beziehungen zu anderen Menschen als um Kodierung und Analyse. So sehr Sie das auch hassen mögen, hier spielt die Politik eine Schlüsselrolle. Wenn Sie sicherstellen, dass Ihre Kollegen Ihre Leistungen sehen, können Sie sie später leichter davon überzeugen, dass Sie Recht haben. Wenn Sie noch nicht da sind, stützen Sie Ihre Ansprüche durch Forschung und POCs.
  5. Wenn alles andere fehlschlägt und erst nachdem Sie Zeit darauf verwendet haben, die Dinge zu verbessern, wenden Sie sich an Ihren Manager. Sagen Sie, dass Ihre Fähigkeiten in der Planungs- und Entwurfsphase besser eingesetzt werden, und sehen Sie, was getan werden kann, um die aktuelle Situation zu ändern. Ihr Produkt könnte in Kürze verfügbar sein und die Antwort Ihres Managers könnte lauten: "Wir brauchen Sie für diese Sache genau hier, genau jetzt". Ich würde jedoch auf einem langfristigen Plan bestehen - wie werden wir die aktuelle Situation ändern?

Ich sehe die Rolle eines Architekten als Privileg. Sie können das Produkt auf eine Weise beeinflussen, die nicht viele andere Menschen können - der einzige, der theoretisch einflussreicher ist als Sie, ist der Produkt-F & E-Manager (und möglicherweise auch das Marketing) -, aber er ist mit der Verwaltung beschäftigt.


Beste Antwort meiner Meinung nach. So würde mein ... von mir erwarten, dass ich handle.
RinkyPinku

3

In der Rolle eines Software-Architekten werden Fehler normalerweise nicht behoben. Softwarearchitekten helfen bei der Behebung von Designproblemen in Software. Wenn Sie also damit meinen, dass der Kern der Art und Weise, in der die Software entwickelt wurde, anfälliger oder schwieriger zu erweitern / zu warten ist, wäre es Aufgabe der SA, Aspekte der Software vorzuschlagen oder neu zu entwerfen Software, um dieses Problem zu lösen.

Angesichts dessen, was Sie gesagt haben:

50% meiner Zeit habe ich in Notepad ++ verbracht, um die Softwareprotokolle zu analysieren und herauszufinden, was schief gelaufen ist. 30% der Fehlerbehebungen bei anderen und der verbleibenden (falls vorhanden) Überprüfung des Entwickler-Spaghetti-Codes.

Das ist nicht die Rolle einer echten SA, sondern eher die, mit der unsere Entwickler-1- und Entwickler-2-Programmierer zusammen mit einem Senior-Entwickler beginnen würden. Ich sage das vor allem, weil ich finde, dass es neuen Entwicklern in unserem Unternehmen wirklich hilft, in das Produkt und den Code einzusteigen, indem sie auf dieser Ebene an Problemen mit der Codequalität arbeiten. Sind Sie eine neue SA in Ihrem Unternehmen und lassen Sie diese Arbeit erledigen, um in das System zu gelangen? Wenn ja, dann ist das vielleicht für kurze Zeit in Ordnung. Wenn dies Ihre tägliche Arbeit ist und seit mehr als einem Jahr, dann ist es möglicherweise Zeit, sich nach einer anderen Rolle umzusehen.


3

Ich verstehe Ihre Frustration, aber verstehe, ob Sie den Code geschrieben haben oder als Letzte daran gearbeitet haben. Die Zeit ist knapp und sie können Sie erreichen. Viele Manager werden sich an Sie wenden, um ihn zu reparieren, unabhängig von Ihrem Titel.

Wenn Sie herausfinden, dass Sie immer noch Freunde in der Entwicklungsgruppe haben, die sich in der Krise befindet, werden Sie helfen. Das Problem ist, wenn sie und vor allem ihr Management sich daran gewöhnen, dass Sie mithelfen, kommen sie immer wieder zurück. Wie das Sprichwort "Keine gute Tat bleibt unbestraft" lautet. Wenn sie sich darauf verlassen können, dass Sie die Probleme beheben, sind Sie unabhängig von Ihrem Titel nur ein weiterer Entwickler und jemand anderes, den sie verwenden können.

Es ist schwer zu lösen, aber mein Rat ist:

  1. Fragen Sie nach der Gebührennummer für das Projekt, für das dieses Nicht-Software-Architekten-Projekt geplant ist. Ich finde, Projektmanager sind nicht so bemüht, nach Ihrer Zeit zu fragen, ob sie dafür verantwortlich sein müssen.

  2. Sprechen Sie mit Ihrem Manager darüber, wie viel Zeit verloren geht und für welche Gruppen oder Projekte. Ihr Vorgesetzter fordert Sie möglicherweise auf, ihnen nicht zu helfen und sich auf seine Projekte zu konzentrieren. Wenn ja, dann kommt die andere Gruppe und bittet um Hilfe, Sie sagen ihnen, Ihr Chef sagte nicht zu.

  3. Organisieren Sie Ihre Arbeit, halten Sie Ihre Prioritäten klar und reagieren Sie nicht so schnell auf Ihre Architekturprojekte.

  4. Verhalte dich wie ein Architekt, lass deine Kollegen dich als Architekten sehen und nicht als denselben Entwickler, den du all die Jahre warst. Sie haben andere von der Gewohnheit abgewendet, Sie nur als Entwickler zu behandeln.

Viel Glück.


2

Nein, Sie sind hier, um den Überblick zu behalten.

Sie haben ein Managementproblem: Das Beheben von Fehlern und das Verbessern der Codequalität ist Aufgabe der Entwickler. Als Architekt sollten Sie Richtlinien und die tatsächliche Architektur (UML oder was auch immer auf Ihrem Boot schwimmt) herausgeben und dann regelmäßige Codeüberprüfungen durchführen, um sicherzustellen, dass diese Richtlinien korrekt befolgt werden .

Sie können jedoch Fehler in der Kernarchitektur implementieren und beheben.

Beispiel: Sie würden in einem WPF / C # -Projekt mit PRISM, MEF usw. arbeiten, aber Sie würden nicht mit XAML arbeiten, um den Begrüßungsbildschirm anzuzeigen.

Sie würden am DB-Design arbeiten, aber Sie würden keine gespeicherten Prozeduren für CRUD-Operationen schreiben.

usw.


1

Ein Teil der Antwort wäre, einen Ingenieur zu finden, der bereit ist, diese Last zu übernehmen.

Der Grund für dieses Problem ist natürlich, dass Sie diese Arbeit als unerwünscht empfinden, was die Nachricht, dass sie für die anderen Ingenieure attraktiv ist, nicht aussendet.

Ich sehe zwei Möglichkeiten.

  1. Sie bekamen die Position eines Architekten, um an größeren Bildern zu arbeiten.
    In diesem Fall sollten Sie dem Management gegenüber erwähnen, dass Sie nicht in der Lage sind, an diesen größeren Bildelementen zu arbeiten, da niemand die untergeordnete Support-Rolle übernommen hat. Das ist dann ihr Problem zu lösen.

  2. Der Titel ist größtenteils zeremoniell - ein Knochen, der dir zugefügt wird, um dich in der Nähe zu halten.

In diesem Fall ist das Management möglicherweise nicht besonders an einer Entlastung des Supports interessiert.

-

Eine Sache, die definitiv nicht hilfreich für Ihr Ziel sein wird, ist eine Haltung der Verachtung gegenüber den anderen Entwicklern und Ingenieuren, die ich in Ihrer Frage durchschaue. Sie möchten, dass diese Leute diese Probleme vertrauensvoll angehen und behandeln, damit Sie es nicht müssen (möglicherweise machen Sie dabei einige Fehler). Wenn sie wissen, dass Sie ihre Lösungen nur schlecht reden und sie anschließend reparieren, werden sie wahrscheinlich nie mehr aufrüsten.


1

50% meiner Zeit habe ich in Notepad ++ verbracht, um die Softwareprotokolle zu analysieren und herauszufinden, was schief gelaufen ist. 30% der Fehlerbehebungen bei anderen und der verbleibenden (falls vorhanden) Überprüfung des Entwickler-Spaghetti-Codes.

Dies ist definitiv eine Art von Arbeit, die Sie für diese Rolle NICHT machen sollten. Nach meinen Erfahrungen / Beobachtungen muss der Architekt in das Anwendungsdesign, in Verbesserungen, in die Klärung technischer Anforderungen und in potenzielle Leistungsprobleme (keine tägliche Überprüfung von Protokollen, sondern in erster Linie die Analyse schwerwiegender Probleme / Fehler) einbezogen werden, die behoben oder vermieden werden müssen.

Mit anderen Worten, meine Nummer 1 ist - Architekten sind hochrangige Designer und Systemintegratoren mit praktischer Erfahrung darin, wie das Innenleben der Technologie funktioniert / angewendet wird und wie es genutzt werden muss.

Wenn Sie die Möglichkeit haben, die Codequalität zuzuweisen und zu verwalten, müssen Ihre Arbeitsmanagementfähigkeiten verbessert werden. So Planungsarbeiten sollten Ihre Priorität auf approach „ wie die Arbeit zu tun“.

Punkt 2 : Wenn Sie einer der wenigen Entwickler dieser Anwendung (en) sind, dann ist dieser Titel nur eine weitere Zuckerglasur der Unternehmensleitung, um Sie in der gleichen "Fix it" -Rolle mit einem neuen, ausgefallenen Titel zu halten .


0

Die Rolle eines Software-Architekten ist viel mehr als das, was Sie in Ihrem derzeitigen Unternehmen tun. Er ist verantwortlich für das Definieren von Software-Design-Standards, das Erstellen von High-Level-Designs, Standards für das Codieren usw., und das Beheben von Fehlern kann als nur ein kleiner Teil davon betrachtet werden, obwohl dies nicht der Fall ist. Aber wie Sie bereits sagten, arbeiten Sie an einem Produkt. Als Software-Architekt werden Sie hohe Erwartungen an die Zuverlässigkeit des Produkts haben, und in diesem Fall werden Sie sich nicht nur mit solchen Dingen befassen Helfen Sie dem Produkt, aber auch der Firma, da Sie darin ziemlich erfahren sind. Sie sollten sich jedoch auch mit der Entwicklung neuer Funktionen und neuen Aufgaben befassen, die Ihr Interesse an Ihrer derzeitigen Organisation wecken.


-1

Soll ich mich als Softwarearchitekt so sehr darauf konzentrieren, die Protokolle zu analysieren und die Fehler anderer zu beheben?

In einer Frage der Rede, "Ja".

Hier ist, wie ich meine Antwort qualifizieren würde:

  1. Standardmäßig sollten Sie die Softwareentwickler die Protokolle analysieren und die Fehler beheben lassen.
  2. Allerdings ... Sie müssen sich der Mängel bewusst sein, die zu Datenverlusten geführt haben, ein umständliches Datenbank-Rollback erfordern, die Entwickler viel Zeit für die Lösung benötigen oder eine Entschuldigung des Kunden verlangen.
    1. In der Regel sollten Sie in Ihren direkten Berichten über solche Mängel informiert werden.
    2. Sie sollten eine Kultur schaffen, in der sich Ihre direkten Mitarbeiter befähigt fühlen , Ihnen über solche Mängel zu berichten , aber nicht gezwungen sind, Ihnen über triviale Mängel zu berichten.

Mehr zu # 2:

  1. Diese Arten von Defekten implizieren im Allgemeinen ein architektonisches Versagen. Wenn dies der Fall ist, müssen Sie die genaue Art des Fehlers verstehen und eine Fehlerbehebung vornehmen.
    1. Sie müssen also bereit, bereit und in der Lage sein, die Protokolle zu sichten und die Fehler anderer zu beheben (auch wenn Sie den Code nicht direkt in das Quellcode-Repository übertragen).

-1

Die Antwort ist wahrscheinlich nein. Warum verbringen Sie so viel Zeit mit Debugging und Support? Beauftragen Sie jemanden mit dieser Arbeit?

Es hört sich so an, als müssten Sie klären, was Sie tun sollen. Möglicherweise müssen Sie Fehler beheben. das sollte wohl nicht die meiste zeit deines lebens sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.