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?
quelle
Antworten:
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.
quelle
Wikipedia-Artikel definiert Software-Architekt als:
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.
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. :)
quelle
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:
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.
quelle
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:
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.
quelle
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:
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.
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.
Organisieren Sie Ihre Arbeit, halten Sie Ihre Prioritäten klar und reagieren Sie nicht so schnell auf Ihre Architekturprojekte.
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.
quelle
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.
quelle
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.
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.
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.
quelle
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 .
quelle
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.
quelle
In einer Frage der Rede, "Ja".
Hier ist, wie ich meine Antwort qualifizieren würde:
Mehr zu # 2:
quelle
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.
quelle