Ich hatte gestern einen Streit mit einem meiner Kollegen. Er (ein Business-Analyst, zuvor ein Programmierer) ist der Meinung, dass er sich der Technologie bewusst sein sollte, die zur Implementierung des Systems verwendet wird, damit er bessere Entwurfsentscheidungen treffen kann. Meiner Meinung nach (ich bin Programmierer) sollte eine Analyse in keiner Weise an die Technologie gekoppelt werden, und ich glaube, dass ein guter Analyst ein großartiges Design erstellen kann, ohne sich um die Implementierungsdetails kümmern zu müssen.
Habe ich Recht, so zu denken? Gibt es Gründe, warum ein Business Analyst die zur Implementierung des Systems verwendete Technologie kennen muss?
EDIT: Ich glaube, dass ich den falschen Begriff verwendet habe, als ich sagte business analyst
. Vielleicht meinte ich Architekt oder Systemanalytiker. Ich bin an diese Begriffe nicht gewöhnt. Ich meinte so etwas wie Architekt oder Systemanalytiker, wenn Sie es vorziehen.
Vielen Dank an alle für Ihre tollen Antworten! Ich bin noch nicht sehr erfahren und ich bin froh, dass Sie mir die Augen geöffnet haben.
quelle
Antworten:
Es gibt sicherlich Fälle, in denen es für einen Geschäftsanalysten sinnvoll ist, die Technologie zumindest gut genug zu verstehen, um zu verstehen, wo es sinnvoll ist, einen Geschäftsbenutzer zu befragen, wie wichtig eine bestimmte Funktion wäre. Wenn das Unternehmen beispielsweise an das Verhalten einer Fat Client-Anwendung gewöhnt ist, während die neue Anwendung webbasiert sein wird, ist es wahrscheinlich, dass es viele "Anforderungen" gibt, die für einen Fat Client trivial, aber relativ schwierig sind mit einer webbasierten Anwendung. Wenn der Geschäftsanalyst versteht, ob eine Anfrage des Geschäfts für das Entwicklungsteam trivial sein wird oder ob 20 Stunden AJAX-Entwicklung erforderlich sind,
Für ein bestimmtes Projekt gibt es wahrscheinlich eine große Anzahl von Anforderungen, die das Geschäft in Wirklichkeit durch verschiedene Arten von Kompromissen befriedigen würden. Je besser der Geschäftsanalyst weiß, welche Kompromisse er eingeht, desto wahrscheinlicher ist es, dass er eine Reihe von Anforderungen erfüllt, die den Nutzen für das Unternehmen maximieren und gleichzeitig die Kosten minimieren.
quelle
Nachdem ich beide Seiten dieser Ausgabe bearbeitet habe, muss ich dem Analysten zustimmen. Ich habe einige spektakulär schlechte Designs gesehen, die auf mangelndes Verständnis der Fähigkeiten der Technologie zurückzuführen sind. In einigen Fällen war dies darauf zurückzuführen, dass Marketing-Hype als Wahrheit angesehen wurde. Im Allgemeinen bestand das Problem darin, Spezifikationen zu generieren, die nicht den technischen Fähigkeiten entsprechen.
Der Analyst sollte angeben, was wann und von wem zu tun ist. Sie sollten wissen, warum es getan wird. Die Entwicklungspriorität sollte stärker vom Warum als von den anderen Faktoren abhängen. Das Design- und Entwicklungsteam muss mit dem Wie umgehen. Um kostengünstige Systeme zu entwickeln, müssen die Analysten angeben, was zu tun ist, um die Grenzen der verfügbaren Technologie nicht zu überschreiten.
Das Überschreiten der Grenzen kann die Kosten auf verschiedene Weise erhöhen, kann jedoch in einigen Fällen eine erhebliche Rendite bringen. Einige der Kostenfaktoren sind:
quelle
Wenn die verwendete Technologie bekannt ist, sollte sie von den Analysten bei der Erstellung des Designs berücksichtigt werden. Verschiedene Technologien machen die Dinge anders und ein Design, das diese Unterschiede nicht berücksichtigt, wird Probleme haben.
Geschäftsanalysten sollten sich jedoch nicht darum kümmern, welche Technologie verwendet wird. Ihre Aufgabe ist es, Geschäftsregeln zu sammeln und sie für das technische Team verständlich zu machen. Systemanalytiker / Architekten / Designer oder andere Namen, die ihnen gegeben werden, sollten die verwendeten Technologien kennen und um sie herum entwerfen, da sie diejenigen sein sollten, die tatsächlich entwerfen, nicht Geschäftsanalysten.
quelle
Ich glaube, es gibt einen Punkt zwischen den beiden Gedankengängen, der wahrscheinlich realistischer ist. Während ein Design auf hoher Ebene am besten geeignet ist, wenn es technologieunabhängig gehalten wird, müssen bekannte reale Einschränkungen und Anforderungen berücksichtigt werden, die in das Design einbezogen werden sollten. Welches Niveau hat dieses Design? Haben Sie ausreichende Anforderungen? Wie flexibel ist die Umgebung? Wird das Management in eine bestimmte technische Richtung investiert?
Gibt es keine Betriebsparameter, die Sie in eine bestimmte Richtung treiben? Verfügen Sie über eine breite Palette von Ressourcen, mit denen eine Lösung in einem beliebigen Technologie-Stack implementiert werden kann? Gibt es Interoperabilitätsprobleme, die den Zugriff auf andere Systeme erfordern?
Antworten auf diese Fragen sind erforderlich, bevor Sie endgültig sagen können, ob die Technologie Teil der Gleichung sein soll oder ob das Design die Technologieauswahl bestimmen soll.
Da es keine Einschränkungen gibt und es sich um ein Design auf sehr hohem Niveau handelt, kann ich Ihrer Meinung zustimmen, dass das Design wirklich agnostisch ist. In meiner mehr als 20-jährigen Erfahrung war ich jedoch selten in einer Situation, in der es keine Einschränkungen gab, die meine Auswahl einschränkten - und die mein Design auf bestimmte Technologien oder Technologiefamilien ausrichteten.
quelle
Die ideale Benutzeroberfläche wäre dort, wo der Benutzer einen Gedanken denkt und was er tun möchte, wird einfach getan. Alles andere wird durch die technologischen Einschränkungen, die uns zur Verfügung stehen, lahmgelegt. Daher muss die BA natürlich verstehen, in welchem Kontext sie das System entwerfen kann.
quelle
Unterschiedliche Technologien können sehr unterschiedliche Kosten- und Effizienzstrukturen zur Lösung eines bestimmten Problems aufweisen. Diese Kosten können Dinge wie Einstellungskosten in der Region, Energie- und Kühlkosten für bestimmte Systeme, vorhandenen Code und vorhandene Möglichkeiten zur Wiederverwendung von Geräten usw. usw. umfassen. Ja, vielleicht kann man diese Einschränkungen und Details bestimmter Technologien ignorieren wenn man an einem Projekt arbeitet, bei dem Kosten und Effizienz nicht annähernd so wichtig sind wie andere Überlegungen (z. B. Flugsicherheit, Kontrolle von Kernkraftwerken, medizinische Implantate usw.). In den meisten Geschäftssituationen kann sich das Management jedoch um die Kostenstruktur der potenziellen Lösungen im Vergleich zu den Vorteilen der Systemimplementierung kümmern.
quelle
Die Geschäftsanalystin sollte wissen, welche Art von Anwendung wir entwickeln, z. B. * Webanwendung / Konsolenanwendung / Mobile Anwendung / Berichtsanwendung usw. *, damit sie besser eine Reihe nützlicher Funktionen für die Anwendung entwickeln oder den Benutzer zurückschieben kann auf unmögliche Erwartungen wie verschachteltes Drag & Drop der 3. Ebene (z. B.).
Er / Sie muss nicht wissen, welche Technologie wie Java / C # / Python / SQL usw.
quelle
Der Analyseprozess selbst muss vollständig technologieunabhängig sein. Wenn Sie den Kunden und seine Bedürfnisse untersuchen, müssen Sie dies völlig offen tun. Die andere Seite der Medaille ist jedoch, dass der Analyst häufig gebeten wird, Empfehlungen abzugeben, und möglicherweise auch die Systemarchitektur handhaben muss. Dies ist eine ganz andere Facette der Rolle, in der ein umfassenderes Verständnis der verfügbaren Technologien von entscheidender Bedeutung ist, da dies für den Kunden einen großen Unterschied bedeuten kann, nicht nur in Bezug auf die Fähigkeit, ein Projekt auf den Weg zu bringen, sondern auch in Bezug auf der langfristigen Bedürfnisse des Kunden und der Nachhaltigkeit des Projekts selbst.
Zwar ist der größte Teil des Software-Designs unabhängig von der verwendeten Technologie im Wesentlichen derselbe, aber es gibt immer Bereiche, in denen das Design von der Wahl der Technologie beeinflusst wird. Die Auswahl der Plattform kann die Auswahl der Sprache und der API beeinflussen, während die Verfügbarkeit von Fachwissen, Support und sogar Kosten sich auch auf die getroffenen Entscheidungen auswirken. Aus einer Perspektive ist ein Teil Ihrer Position insofern gerechtfertigt, als die eigentliche Analyse ohne den Einfluss einer bestimmten Technologie durchgeführt werden sollte. Die Verwendung der Analyse zur Bestimmung eines Designs erfordert jedoch immer ein breiteres technologisches Wissen, damit der Analyst Empfehlungen aussprechen kann Dies ermöglicht die Anwendung von Designs, die auf die Bedürfnisse des Kunden zugeschnitten sind.
quelle
Jede Technologie hat Grenzen und Einschränkungen, daher ist es für einen Analysten sinnvoll, diese Grenzen zu berücksichtigen. Auf der anderen Seite wird ein Analyst, der .net gut kennt, aber Java seit Ende der neunziger Jahre nicht mehr gesehen hat, höchstwahrscheinlich eine .net-Lösung entwerfen - unter Verwendung von .net-Terminologie und Entwurfsmustern - selbst wenn Java (oder RoR usw.) würde besser zum Problem passen. Es ist relativ schwierig, ein solches Design später in einer anderen Technologie zu implementieren.
Daher denke ich, dass ein Analyst agnostisch sein sollte, wenn die Technologie noch nicht ausgewählt wurde, aber Erfahrung in den Fällen hat, in denen die Auswahl bereits getroffen wurde.
quelle