it-swarm.dev

Wie wichtig ist Domänenwissen im Vergleich zu technischem Wissen?

Ich arbeite an einer Handels- und Risikomanagementanwendung und obwohl ich einen C # -Hintergrund habe, wurde ich gebeten, an SSIS-Paketen zu arbeiten. Jetzt kann ich damit leben. Der Schmerzpunkt ist, dass das Geschäftsverständnis zu stark betont wird. Der Handel (Energiehandel um genau zu sein) ist ein RIESIGER Bereich und das Verstehen jedes kleinen Teils davon ist überwältigend. Aber in den letzten zwei Monaten habe ich daran gearbeitet, die Geschäftsbedingungen zu verstehen - Mark To Market, Risikokennzahlen, Positionen, PnL, Griechen, Instrumente, Buchstruktur ... jedes kleine Detail (Sie verstehen es). Nun, IMHO, das ist die Aufgabe eines BA. Natürlich ist es für Entwickler sehr wichtig, das Geschäft zu verstehen, aber wo ziehen Sie die Grenze?

Als ich mit meinem Manager darüber sprach, verspottete er mich fast, indem er sagte, dass jeder in einer Woche eine Technologie lernen kann. Es ist das Geschäft, das schwieriger ist. Mein langfristiges Bestreben ist es, auf der technischen Seite zu bleiben, wahrscheinlich Architekt zu werden (wenn möglich). Wenn ich mich so sehr auf das Geschäft konzentrieren wollte, hätte ich einen MBA gemacht!

Ich möchte wissen, ob ich falsch oder zu naiv bin, um die geschäftliche Bedeutung zu verstehen, oder ob meine Frustration gerechtfertigt ist.

33
Mayank

Die Aufgabe eines Programmierers besteht darin, Anforderungen an die natürliche Sprache in Implementierungen der Maschinensprache zu übersetzen. Sie können das nicht effektiv tun, wenn Sie nur auf der einen oder anderen Seite fließend sind. Sofern Sie keine Compiler oder Versionskontrollsoftware schreiben, erfordert so ziemlich jeder Programmierjob eine erhebliche Menge an Nicht-Programmierkenntnissen.

33
Karl Bielefeldt

Benjol und Ihr Manager haben Recht, aber lassen Sie mich näher darauf eingehen:

das Erlernen der Geschäftsdomäne ist wie Sie Mehrwert für den Prozess und Steigerung Ihres Wertes für das Geschäft

das ist der Unterschied zwischen a code Affe Programmierer und Entwickler

24
Steven A. Lowe

Es gibt ein Sprichwort, das vom Institut für Informatik meiner Universität stammt:

Wenn Sie Software für Geologen erstellen möchten, müssen Sie zuerst die Geologie verstehen. Wenn Sie Software für Physiker erstellen möchten, müssen Sie sich zuerst mit Physik beschäftigen. Wenn Sie das Geschäft verstehen wollen, müssen Sie zuerst lernen, über das Geschäft zu sprechen.

Ich höre hier ständig Leute sagen, dass Softwareentwicklung ein kreatives Feld ist. Ich glaube, dass dies bis zu einem gewissen Grad zutrifft. Es beinhaltet Kreativität insofern, als man in der Lage sein muss, über den Tellerrand hinaus zu sehen, um eine Reihe von Problemen zu lösen.

Was es nicht bedeutet ist, dass Sie sich einfach hinsetzen und so kreativ bauen können, was immer Sie wollen. Dies ist kein Kunstunterricht, sondern Technik, und Ihre Kunden und Stakeholder erwarten von Ihnen, dass Sie etwas schaffen, das ihre Probleme löst, nicht etwas, das nur "cool" ist.

Um ein Problem zu lösen, müssen Sie zuerst das Problem verstehen. Sie müssen in die Köpfe Ihrer Benutzer eindringen und verstehen, wie sie denken.

Unabhängig davon, ob Sie Software für Finanzen, Marketing, Vertrieb, Geologie, Physik oder einen von der Software unterstützten Bereich erstellen, müssen Sie Teil dieses Bereichs werden.

Aus diesem Grund habe ich neben meinem Abschluss in Informatik auch einen Abschluss in Betriebswirtschaft erworben. Dies hat einen großen Einfluss auf meine Fähigkeit, potenzielle Lösungen zu kommunizieren und erfolgreiche Produkte zu liefern.

Wenn Sie mehr darüber erfahren möchten, wonach ich bei der Einstellung eines Business-Software-Ingenieurs suchen würde, lesen Sie diese Business Engineer Job Advertisement Sample , die ich als Antwort auf eine andere Frage geschrieben habe.

18
jmort253

Sie können als Low-Level-Codierer ohne viel Domänenwissen oder Kundenkontakt überleben, aber ein Softwarearchitekt ist jemand, der mit der Domäne sehr vertraut ist und aktiv mit allen Stakeholdern kommuniziert.

14
vegai

Meiner Meinung nach bist du falsch und zu naiv.

Wie Ihr Manager sagte (leicht flippig), kann jeder in einer Woche eine Technologie erlernen. Das einzige, was Sie auszeichnet und für Ihr Unternehmen nützlich macht, ist Ihr Geschäftswissen. Und je schwieriger es ist, desto mehr werden Sie wert sein.

Wenn Sie feststellen, dass dieses Geschäft unglaublich langweilig ist, können Sie natürlich nach etwas anderem suchen. Aber wenn Ihre Vorstellung vom Paradies darin besteht, kleine PHP-Websites zu hacken, seien Sie vorsichtig: Es wird Tausende von Script-Kiddies geben, die das auch tun.

Im Ernst: "Ich bin nur ein Programmierer, verwechsle mich nicht mit den Fakten.".

11
Benjol

Ich arbeite auch im Energiehandel. Geschäftskenntnisse machen 90% des Jobs aus. Daran kommt man nicht vorbei - es ist ein kompliziertes Geschäft.

Wenn Sie zumindest die Grundlagen des Handels und die Märkte, in denen Sie arbeiten, nicht verstehen, werden Sie Probleme haben, egal wie gut Sie als Programmierer sind.

Ich arbeite mit einigen BAs zusammen, die die Anforderungen einfach nicht richtig erfüllen können. Ich muss mich auf meine eigenen analytischen Fähigkeiten und mein Verständnis für Geschäftskenntnisse verlassen, um die Arbeit zu erledigen.

Ich denke, wenn Sie für ein Geschäft arbeiten, das Energy Trading-Software verkauft, kann Ihre Erfahrung unterschiedlich sein - aber im IT-Energiehandel von Unternehmen liegt der Fokus genau darauf, den Markt zu verstehen und wie Software zuerst Lösungen für die Probleme des Unternehmens liefern kann.

Die tatsächlich verwendeten Technologien und die Implementierung stehen an zweiter Stelle.

Der Typ oben, der den Excel-Kommentar abgegeben hat, weiß nicht, wie passend sein Kommentar ist. Händler erstellen häufig ihre eigenen kleinen Handels-Apps in Excel/VBA (das ist alles, was sie wissen), und dann erbt die IT diese Programmprobleme.

Ich würde gerne einige dieser Apps in einer "richtigen" Sprache neu erstellen, aber das hat nicht immer Priorität.

8
asgeo1

Wenn Sie sich für ein Unternehmen entwickeln, haben Sie am Ende eine klarere und detailliertere Vorstellung von den Geschäftsregeln als jeder andere im Unternehmen. Das liegt nicht unbedingt daran, dass Sie schlauer sind als alle anderen, sondern daran, dass Sie nur so Ihre Arbeit erledigen können.

Ihre Reaktion könnte lauten: "Aber was machen die Geschäftsanalysten?"

Die Geschäftsanalysten sitzen in langen Besprechungen mit den Kunden und versuchen, Anforderungen aus ihnen herauszuholen, die klar genug sind, damit ein Entwickler damit arbeiten kann. Ich sehe mir an, wie sie mit Kunden umgehen müssen, und bin dankbar, dass ich das nicht tun muss.

6
Andrew Shepherd

Ich mag es, Analogien zwischen Softwareentwicklung und Architektur zu ziehen. Beide sind angewandte Künste. Beides erfordert eine aufwändige Modellierung im Kopf. Der Aspekt, der für diese Frage gilt, ist, dass das Schreiben von Software ohne Geschäftskenntnisse dem Entwerfen eines Gebäudes gleicht, ohne den Lebensstil und die Bedürfnisse der Bewohner zu verstehen. Ich denke, viele von uns haben Gebäude gesehen (oder sogar in ihnen gelebt/gearbeitet), die schön und modern aussehen können und von außen nicht, von innen einfach nicht nutzbar. (Im schlimmsten Fall sind sie nicht einmal nett: (())

Aktualisieren

Gauravs Kommentar:

ich bin gespannt, inwieweit sich ein Entwickler bemühen sollte, den Geschäftsbereich zu verstehen. Sollte er den ganzen Weg gehen oder muss eine Linie gezogen werden?.

Ich glaube nicht, dass man im Allgemeinen irgendwo eine Linie ziehen kann. Sofern es keine Teile der App/Domain gibt, müssen Sie diese niemals berühren (also verstehen). Was meiner Meinung nach im wirklichen Leben auf lange Sicht sehr selten ist. Jeder Teil einer App, der aktiv verwendet wird, erhält Fehlerberichte und Funktionsanforderungen. Auch Domänen ändern sich, da sich entsprechende Gesetze, Steuervorschriften, Richtlinien und Gewohnheiten - kurz gesagt die reale Welt - ändern. Dies muss auch in der Software beachtet werden.

Aber auch ohne externe Änderungsanforderungen erfordert das Testen von Einheiten und das Refactoring von Legacy-Code das Verständnis der relevanten Domänenbereiche. Andernfalls "frieren" Sie einfach das aktuelle Verhalten der App ein, ohne zu wissen, ob es tatsächlich korrekt ist oder nicht.

Update2

was ist, wenn [...] Entwickler häufig die Geschäftsdomäne ändern, an der er arbeitet?

Das bedeutet natürlich, dass ein großer Teil der Investition (Ihrer Zeit und des Geldes Ihres Arbeitgebers), um Ihr Geschäftswissen zu erlangen, verloren geht :-( Wenn Sie wissen, dass es passieren wird, lohnt es sich natürlich nicht, sich zu tief damit zu beschäftigen Beachten Sie jedoch, dass Domänen nicht --- (vollständig unterschiedlich sind. Es gibt Grundlagen, die zwischen verschiedenen Domänen wiederverwendet werden können. Und am wichtigsten ist, dass das domänengesteuerte Design Ansatz, das Sie gewinnen, ist wiederverwendbar.

6
Péter Török

Ich arbeite seit über zehn Jahren im Bankensektor und entwickle Handelsanwendungen. Ich bin mir einig, dass es für Entwickler wichtig ist, das Geschäft gut zu verstehen. Aber immer wieder, wenn die Person während eines Interviewprozesses keine guten Kenntnisse über das Geschäft hat, kommt sie nicht durch die Tür.

Dies hat dazu geführt, dass eine beträchtliche Anzahl kritischer Anwendungen und Systeme von diesen Personen mit starken Geschäftskenntnissen, aber schwachen bis mittleren technischen Fähigkeiten entwickelt wurde. Diese Systeme werden immer schlecht entworfen, was ständig abstürzt, voller Fehler ist, nicht skaliert, fast unmöglich zu reparieren ist, ohne etwas zu beschädigen, und wenn das Projekt nicht aufgrund unzureichender technischer Fähigkeiten abgebrochen wird, um es tatsächlich zu bekommen in die Produktion.

2
Martin Cooper