Wie wichtig ist Domainwissen im Vergleich zu technischem Wissen?

33

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 RIESIGES Gebiet, und es ist überwältigend, jedes bisschen davon zu verstehen. Aber in den letzten zwei Monaten habe ich daran gearbeitet, die Geschäftsbegriffe zu verstehen - Mark To Market, Risikokennzahlen, Positionen, PnL, Griechen, Instrumente, Buchstruktur ... bis ins kleinste Detail (auf den Punkt kommt es an). Nun IMHO, das ist der Job 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 damit, dass jeder in einer Woche eine Technologie erlernen könne. Es ist das Geschäft, das schwieriger ist. Mein langfristiges Ziel 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 die geschäftliche Bedeutung falsch oder zu naiv einschätze oder ob meine Frustration berechtigt ist.

Mayank
quelle
12
Bitte sagen Sie Ihrem Manager, dass Technologie / Programmierung nicht auf EXCEL || beschränkt ist MS Office || Gleichzeitiges Verbinden, das jeder in einer Woche lernen kann.
Ranger
Ich kann nicht an einige der Antworten glauben, ich hoffe, dass die Leute die Antworten mit Rache abstimmen.
Gaurav
@Gaurav, ich hoffe nicht. Ich glaube nicht, dass hitzige Emotionen in diesem Forum (oder einem Forum im Allgemeinen) etwas Gutes bewirken würden. Es würde mich interessieren, Ihre konkreten Einwände zu kennen, also zögern Sie nicht, die Antworten zu kommentieren, mit denen Sie Probleme haben.
Péter Török
@Ranger LOL! Sie sagen, dass ein Managerjob so einfach sein wird?
Gopi
5
Bitten Sie ihn, zu erfahren, was Sie in einer Woche tun. Das ist eine sehr arrogante Einstellung. Ich würde sogar eine Wette mit ihm abschließen, dass er nicht tun kann, was Sie können, und für das Doppelte Ihres Gehalts wetten. Es kann eine Woche dauern, bis ein Neuling die Syntax des Gedächtnisses, der Operanden und der Bedingungen einer bestimmten Sprache erlernt hat. Wahrscheinlich dauert es einen Monat oder länger, bis er sie beherrscht. Es war ein langer Prozess, um dahin zu gelangen, wo wir sind, aber es ist im Allgemeinen unsere Leidenschaft, also haben wir die Nöte ein Leben lang verteilt.
Inkognito

Antworten:

33

Die Aufgabe eines Programmierers besteht darin, die Anforderungen der natürlichen Sprache in maschinensprachliche Implementierungen 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 gut wie jeder Programmierjob ein beträchtliches Maß an Nicht-Programmierkenntnissen.

Karl Bielefeldt
quelle
1
Wenn ein Programmierer nicht wusste, welchen Client er spricht, ist es schwer zu codieren
Gopi
+1 @Sri Kumar Stimmt, aber ich denke, als Programmierer sollten Sie immer noch in der Lage sein, herauszufinden, was sie brauchen und wie Sie Technologie einsetzen, um eine Lösung zu finden. Ich bin damit einverstanden, dass das Schreiben von Geschäftslösungen bedeutet, auf alle Arten von Unternehmen zu stoßen.
Gideon
3
Meine Antwort wäre dasselbe gewesen, anders formuliert. Wenn Sie den Kontext dessen, was Sie erstellen, nicht verstehen, werden Sie ihn in dem Kontext erstellen, den SIE verstehen, und nicht in dem, der ERWARTET wird. Wenn Sie nicht zu einem großen Team gehören und XML-Spezifikationen und -Objekte auf der Basis von UML-Diagrammen schreiben, ist dies sehr wichtig.
Inkognito
Selbst Compiler und VCS haben eine Domain, mit der wir uns vielleicht besser auskennen.
Josh Johnson
24

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

Durch das Erlernen des Geschäftsbereichs können Sie dem Prozess einen Mehrwert hinzufügen und Ihren Wert für das Unternehmen steigern

Dies ist der Unterschied zwischen einem Code-Affen- Programmierer und einem Entwickler

Steven A. Lowe
quelle
7
+1 Ich habe keine Verwendung für Programmierer. Ich brauche Entwickler, auch bekannt als Problemlöser. :)
jmort253
18

Es gibt ein Sprichwort, das von der Fakultät für Informatik meiner Universität stammt:

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

Ich höre hier ständig Leute sagen, dass Softwareentwicklung ein kreatives Feld ist. Ich glaube, das ist bis zu einem gewissen Grad richtig. Kreativität setzt voraus, dass man in der Lage sein muss, über den Tellerrand hinauszublicken, um eine Reihe von Problemen zu lösen.

Das heißt aber nicht, 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 Interessengruppen erwarten von Ihnen, dass Sie etwas schaffen, das ihre Probleme löst Probleme , und nicht etwas, das nur "cool" ist.

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

Egal, ob Sie Software für Finanzen, Marketing, Vertrieb, Geologie, Physik oder einen anderen Bereich entwickeln, der von der Software unterstützt wird, Sie müssen Teil dieses Bereichs werden.

Genau aus diesem Grund habe ich neben meinem Abschluss in Informatik auch einen Abschluss in Betriebswirtschaft erworben. Es hat meine Fähigkeit, potenzielle Lösungen zu kommunizieren und erfolgreiche Produkte zu liefern, enorm beeinflusst.

Wenn Sie mehr darüber erfahren möchten, wonach ich bei der Einstellung eines Business Software Engineers suchen würde, lesen Sie dieses Beispiel für eine Stellenanzeige als Business Engineer , das ich als Antwort auf eine andere Frage geschrieben habe.

jmort253
quelle
2
+1 - Ihre Kunden und Stakeholder erwarten von Ihnen, dass Sie etwas schaffen, das ihre Probleme löst, und nicht etwas, das nur "cool" ist.
Karthik Sreenivasan
"Wenn Sie Software für Geologen erstellen möchten ..." lieben diese Aussage. Welche Universität? würde es gerne zitieren können!
Raj Rao
1
@ RajRao Leider habe ich umschrieben, und ich erinnere mich nicht genau, von wem ich das gelernt habe. Es war entweder Dr. Ruben Gamboa ( uwyo.edu/cosc/cosc-directory/ruben/index.html ) oder Dr. William Spears ( uwyo.academia.edu/WilliamSpears ) von der University of Wyoming, Laramie, Wyoming, USA.
jmort253
14

Sie überleben vielleicht ohne viel Domain-Wissen oder Kundenkontakt als Low-Level-Coder, aber ein Software-Architekt ist jemand, der mit der Domain sehr vertraut ist und aktiv mit allen Stakeholdern kommuniziert.

Vegai
quelle
2
+1 - Es ist sehr naiv zu glauben, man könne ein erfolgreicher Architekt sein, ohne die Domäne zu verstehen. Wenn ich könnte, würde ich Sie erneut für die Erwähnung der Kommunikation kontaktieren. Zu viele Menschen vernachlässigen die Kommunikationsentwicklung in ihrer Karriere.
jmort253
11

Meiner Meinung nach bist du falsch und zu naiv.

Wie Ihr Vorgesetzter (leicht leichtfertig) sagte, kann jeder in einer Woche eine Technologie erlernen. Das Einzige, was Sie auszeichnet und für Ihr Unternehmen nützlich macht, ist Ihr betriebswirtschaftliches Wissen. Und je schwieriger es ist, desto mehr wirst du wert sein.

Wenn Sie feststellen, dass dieses Geschäft irrsinnig langweilig ist, können Sie natürlich nach etwas anderem suchen. Aber wenn Ihre Vorstellung vom Paradies darin besteht, kleine PHP-Websites zusammen 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."

Benjol
quelle
1
Ich stimme dem zu. Wenn Sie im luftleeren Raum programmieren möchten, kehren Sie zur akademischen Welt zurück oder suchen Sie eine Stelle in einer Forschungsabteilung eines großen Unternehmens wie IBM, MS oder Google. Für die meisten von uns ist die Realität, dass wir das Geschäft verstehen müssen, insbesondere wenn das Ziel darin besteht, ein Architekt zu werden, der im Grunde eine Kombination aus starkem Entwickler und starkem BA ist.
Curtis Batt
1
@Mayank, imho, es ist in der Tat sehr schwierig, die Details des gesamten Geschäfts zu verstehen, und es ist etwas, das Sie wirklich nur erwarten sollten, im Laufe der Zeit natürlich zu tun. Für jedes Element des Systems, an dem Sie arbeiten, sollten Sie natürlich mehr über das Unternehmen erfahren. So haben sich die Dinge entwickelt, als ich in Branchen mit umfangreichen Fachkenntnissen gearbeitet habe.
Carson63000
2
@Mayank, Nein, es ist nicht falsch zu sagen, dass es sehr schwierig ist. Als ich in meinem derzeitigen Job ankam, sagten mir meine neuen Kollegen, dass es 6 Monate dauern würde, bis ich den Code verstanden habe . Jetzt nähere ich mich 4 Jahren und lerne immer noch Neues über das Geschäft ...
Benjol
1
+1000 wenn ich könnte. IMHO, die Technik ist der einfache / lustige Teil.
ozz
1
Nein, er ist nicht naiv. Weitere sein Manager ist ein bleeping Idiot, und sollte in regelmäßigen Abständen gepaddelt werden.
Gaurav
8

Ich arbeite auch im Energiehandel. Geschäftskenntnisse machen 90% des Jobs aus. Daran kommt man nicht vorbei - es ist eine komplizierte Angelegenheit.

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

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

Ich denke, wenn Sie für ein Geschäft arbeiten, in dem Energiehandelssoftware verkauft wird, sind Ihre Erfahrungen möglicherweise unterschiedlich. Im IT-Energiehandel von Unternehmen liegt der Schwerpunkt jedoch auf dem Verständnis des Marktes und der Frage, wie Software zuerst Lösungen für die Probleme des Unternehmens bieten kann.

Die tatsächlich verwendeten Technologien und deren Implementierung liegen in weiter Ferne.

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

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

asgeo1
quelle
1
+1 Für "kompliziertes Geschäft" :) Ich habe vorher im Bankwesen gearbeitet und fand es viel interessanter und einfacher. Auch, wie Sie wiesen darauf hin, ist alles in Excel erledigt!
24.
6

Wenn Sie sich für ein Unternehmen entwickeln, werden Sie eine klarere und detailliertere Vorstellung von den Geschäftsregeln haben 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 treffen sich in langen Besprechungen mit den Kunden, um Anforderungen zu ermitteln, mit denen ein Entwickler klar genug umgehen kann. Ich schaue, wie sie mit Kunden umgehen müssen, und bin dankbar, dass ich das nicht tun muss.

Andrew Shepherd
quelle
2
Warten Sie, die Business Analysten bekommen klare Anforderungen? Das ist gut so. Ich persönlich würde mich lieber direkt mit dem Endbenutzer befassen.
Christopher Mahan
@ Christopher - Ich sagte "versuchen", um Anforderungen zu bekommen :-)
Andrew Shepherd
In der Tat hast du getan.
Christopher Mahan
1
+1 - Die Geschäftsanalysten treffen sich in langen Besprechungen mit den Kunden, um Anforderungen zu ermitteln, mit denen ein Entwickler klar genug umgehen kann.
Karthik Sreenivasan
6

Ich mag es, Analogien zwischen Softwareentwicklung und Architektur zu ziehen. Beide sind angewandte Kunst. Beide erfordern eine ausgefeilte Modellierung im Kopf. Der Aspekt, der auf diese Frage zutrifft, 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 wunderschön und modern aussehen und von außen nicht, aber von innen nicht nutzbar sind. (Im schlimmsten Fall sind sie nicht einmal nett: - ((()

Aktualisieren

Gauravs Kommentar:

Ich bin gespannt, inwieweit ein Entwickler sich bemühen sollte, die Geschäftsdomäne zu verstehen. Sollte er den ganzen Weg gehen, oder gibt es eine Grenze zu ziehen.

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 Funktionsanfragen. Auch Domänen ändern sich, da sich entsprechende Gesetze, Steuervorschriften, Richtlinien, Gewohnheiten - kurz gesagt, die reale Welt - ändern. Dies muss auch in der Software beachtet werden.

Aber auch ohne externe Änderungsanforderungen müssen für Unit-Tests und das Refactoring von Legacy-Code auch die relevanten Domänenbereiche bekannt sein. Ansonsten "friert" man einfach das aktuelle Verhalten der App ein, ohne zu wissen, ob es tatsächlich stimmt oder nicht.

Update2

Was passiert, wenn [...] Entwickler häufig den Geschäftsbereich wechseln, an dem 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, ist es natürlich möglicherweise nicht wert, zu tief hineingegraben zu werden jedoch eine bestimmte Domäne. Beachten Sie, dass Domains sind nicht völlig anders, es sind Grundlagen , die zwischen verschiedenen Domänen wiederverwendet werden können. Und was am wichtigsten ist , die Domain - Driven Design - Ansatz Sie Verstärkung ist wiederverwendbar.

Péter Török
quelle
1
@ Peter Danke für die Aktualisierung der Antwort. Ich habe noch eine Frage. Ich gehe davon aus, dass diese und andere Antworten davon ausgehen, dass sich Entwickler an eine Geschäftsdomäne halten. Wenn dies nicht der Fall ist, ändert der Entwickler häufig die Geschäftsdomäne, an der er arbeitet. Ich bin mir nicht sicher über den Rest der Welt, aber das ist in Indien sehr verbreitet. Zum Beispiel. Erst im letzten Jahr habe ich von der CAX-Domäne zur Marketing-Domäne gewechselt und kann problemlos zu einer anderen Domäne wechseln.
Gaurav
2
@Gaurav, das bedeutet natürlich, dass ein großer Teil der Investition (Ihrer Zeit und des Geldes Ihres Arbeitgebers), um Ihre Geschäftskenntnisse zu erlangen, verloren geht :-( Wenn Sie wissen, dass es passieren wird, ist es möglicherweise nicht wert zu graben zu tief in einer bestimmten Domain. Beachten Sie jedoch, dass Domains nicht völlig verschieden sind, es gibt Grundlagen, die zwischen verschiedenen Domains wiederverwendet werden können. Und am wichtigsten ist, dass der domänengetriebene Designansatz , den Sie erhalten, wiederverwendbar ist.
Péter Török
@ Peter Nochmals vielen Dank. Ich würde deine Antwort hochstimmen, aber anscheinend kannst du sie nur einmal hochstimmen (dumme Regeln). Noch eine, wenn es Sie nicht zu sehr stört, können Sie Ihren Kommentar in Ihre Antwort einbinden.
Gaurav
@ Gaurav, fertig, froh, dass ich helfen konnte :-)
Péter Török
Und der Grund für die Ablehnung ist ...?
Péter Török
2

Ich arbeite seit über zehn Jahren im Bankensektor und bin mir einig, dass es für Entwickler wichtig ist, das Geschäft gut zu verstehen. Aber immer und immer wieder, wenn die Person während des 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 Kenntnissen entwickelt wurden. Diese Systeme werden immer schlecht entworfen, was ständig abstürzt, voller Fehler ist, sich nicht skalieren lässt, fast unmöglich zu reparieren ist, ohne dass etwas kaputt geht, und wenn das Projekt nicht abgebrochen wird, weil die technischen Fähigkeiten nicht ausreichen, um es tatsächlich zu bekommen in die Produktion.

Martin Cooper
quelle