Quelle est l’importance de la connaissance du domaine par rapport à la connaissance technique?


33

Je travaille sur une application de trading et de gestion des risques et, bien que venant de C #, on m'a demandé de travailler sur des packages SSIS. Maintenant je peux vivre avec ça. Le problème, c’est que l’accent est mis trop sur la compréhension des affaires. Le négoce (le négoce d'énergie pour être exact) est un domaine ÉNORME et il est extrêmement difficile de comprendre tout cela. Mais au cours des deux derniers mois, j'ai travaillé sur la compréhension des conditions commerciales - Mark To Market, métrique du risque, Positions, PnL, Grec, Instruments, Structure du livre ... chaque petit détail (vous comprenez le sens). Maintenant, à mon humble avis, c'est le travail d'un BA. Bien sûr, il est très important que les développeurs comprennent le métier, mais où tracez-vous la ligne?

Lorsque j'en ai parlé à mon supérieur hiérarchique, il s'est presque moqué de moi en disant que tout le monde peut apprendre une technologie en une semaine. C'est le métier qui est plus difficile. Mon objectif à long terme est de rester technique, probablement de devenir architecte (si possible). Si je voulais tellement me concentrer sur les affaires, j'aurais poursuivi un MBA!

Je veux savoir si je me trompe ou si je suis trop naïf pour comprendre l'importance de l'entreprise ou si ma frustration est justifiée?


12
Veuillez informer votre responsable que la technologie / programmation ne se limite pas à EXCEL || MS Office || Connect en même temps, que tout le monde peut apprendre en une semaine.
Ranger

Je ne peux pas croire à certaines des réponses, j'espère que les gens votent à la baisse les réponses avec vengeance.
Gaurav

@Gaurav, j'espère que non. Je ne pense pas que des émotions enflammées feraient du bien sur ce forum (ou n'importe quel forum en général). Je serais intéressé de connaître vos objections concrètes, alors n'hésitez pas à commenter les réponses qui vous posent problème.
Péter Török le

@Ranger LOL! Vous dites que facile un travail de gestionnaire sera?
Gopi

5
Demandez-lui d'apprendre ce que vous faites en une semaine. C'est une attitude très arrogante. Je ferais même un pari avec lui qu'il ne peut pas faire ce que vous pouvez, parier pour deux fois votre salaire. Cela peut prendre une semaine à un newb pour apprendre la syntaxe de la mémoire, des opérandes et des conditions d'une langue spécifique ... et probablement un mois ou plus pour les maîtriser. Ce fut un long processus pour arriver là où nous sommes, mais c'est généralement notre passion, nous avons donc réparti les difficultés tout au long de la vie.
Incognito

Réponses:


33

Le travail d'un programmeur traduit les exigences du langage naturel en implémentations en langage machine. Vous ne pouvez pas le faire efficacement si vous ne parlez couramment que d'un côté ou de l'autre. Sauf si vous écrivez des compilateurs ou des logiciels de contrôle de version, pratiquement chaque tâche de programmation nécessite une grande quantité de connaissances autres que la programmation.


1
Quand un programmeur ne savait pas quel client parlait mal à coder
Gopi

+1 @ Sri Kumar, c'est vrai, mais je pense qu'en étant une programmation, vous devriez toujours être en mesure de déterminer ce dont ils ont besoin et comment vous utiliseriez la technologie pour apporter une solution. Je suis d’accord, écrire des solutions d’affaires signifie rencontrer toutes sortes d’entreprises.
Gideon

3
Ma réponse aurait été la même chose formulée différemment. Si vous ne comprenez pas le contexte de ce que vous créez, vous allez le créer dans le contexte que vous comprenez, et non dans celui attendu. À moins que vous ne formiez une grande équipe et que vous rédigiez des spécifications et des objets XML basés sur des diagrammes UML, c'est très important.
Incognito

Même les compilateurs et les vcs ont un domaine, nous pourrions simplement être plus à l'aise avec ce domaine.
Josh Johnson

24

Benjol et votre responsable ont raison, mais laissez-moi élaborer:

apprendre le domaine commercial est la façon dont vous ajoutez de la valeur au processus et augmentez votre valeur pour l'entreprise

Telle est la différence entre un programmeur de code singe et un développeur


7
+1 Je n'ai aucune utilité pour les programmeurs. J'ai besoin de développeurs, alias résolveurs de problèmes. :)
jmort253

18

Il y a un dicton qui vient du département d'informatique de mon université:

Si vous souhaitez créer un logiciel pour les géologues, vous devez d'abord comprendre la géologie. Si vous voulez construire un logiciel pour les physiciens, vous devez d'abord vous familiariser avec la physique. Si vous voulez comprendre les affaires, vous devez d’abord apprendre à parler affaires.

J'entends des gens ici tout le temps dire que le développement logiciel est un domaine créatif. Je crois que cela est vrai dans une certaine mesure. Cela implique de la créativité dans le sens où il faut être capable de voir en dehors de la boîte afin de résoudre une série de problèmes.

Ce que cela ne signifie pas, c'est que vous pouvez simplement vous asseoir et, de manière si créative, créer ce que vous voulez. Ce n'est pas un cours d'art, c'est de l'ingénierie, et vos clients et vos parties prenantes s'attendent à ce que vous créiez quelque chose qui résout leur problème. problèmes, et non quelque chose qui soit simplement "cool".

Pour résoudre un problème, vous devez d'abord comprendre le problème. Vous devez vous mettre dans la tête de vos utilisateurs et comprendre comment ils pensent.

Que vous développiez des logiciels pour la finance, le marketing, les ventes, la géologie, la physique ou tout autre domaine pris en charge par le logiciel, vous devez en faire partie.

C'est pour cette raison même que, en plus de mon diplôme en informatique, j'ai également obtenu un diplôme en commerce; cela a eu un impact considérable sur ma capacité à communiquer des solutions potentielles et à fournir des produits performants.

Si vous souhaitez en savoir plus sur ce que je rechercherais lors de l'embauche d'un ingénieur en logiciel d'entreprise, consultez cet exemple de publication d'offres d'emploi d'ingénieur d'affaires que j'ai rédigé pour répondre à une autre question.


2
+1 - Vos clients et vos parties prenantes s’attendent à ce que vous créiez quelque chose qui résout leurs problèmes, pas quelque chose qui est simplement "cool".
Karthik Sreenivasan le

"Si vous voulez créer un logiciel pour les géologues ..." adorez cette déclaration. Quelle université? aimerait pouvoir le citer!
Raj Rao

1
@RajRao Malheureusement, j'ai paraphrasé et je ne me souviens pas exactement de qui j'ai appris cela. Il s'agissait soit du Dr Ruben Gamboa ( uwyo.edu/cosc/cosc-directory/ruben/index.html ) ou du Dr William Spears ( uwyo.academia.edu/WilliamSpears ) de l'Université du Wyoming, Laramie, Wyoming, États-Unis.
jmort253

14

Vous pouvez survivre sans beaucoup de connaissances du domaine ni de contact client en tant que codeur de bas niveau, mais un architecte logiciel est une personne très familière avec le domaine et qui communique activement avec toutes les parties prenantes.


2
+1 - C'est très naïf de penser que l'on peut être un architecte performant sans comprendre le domaine. Si je pouvais, je vous renverrais +1 pour avoir mentionné la communication. Trop de gens négligent le développement de la communication dans leur carrière.
Jmort253

11

À mon avis, vous avez tort et vous êtes trop naïf.

Comme votre responsable l’a dit (légèrement avec désinvolture), tout le monde peut apprendre une technologie en une semaine. Votre connaissance des affaires est la seule chose qui va vous marquer et vous rendre utile pour votre entreprise. Et plus c'est difficile, plus vous en valez la peine.

Évidemment, si vous trouvez que cette entreprise en particulier est terne, vous pouvez chercher quelque chose de différent. Mais si votre idée du paradis est de pirater de petits sites Web php, méfiez-vous: il y aura des milliers de script kiddies qui le feront aussi.

Sérieusement, "je ne suis qu'un codeur, ne me confondez pas avec les faits", ça ne suffira pas.


1
Je suis d'accord avec ça. Si vous souhaitez coder en vase clos, retournez dans le monde universitaire ou trouvez un emploi dans une branche de recherche d'un grand groupe comme IBM, MS ou Google. Pour la plupart d'entre nous, la réalité est que nous devons comprendre le secteur, en particulier si l'objectif est de devenir un architecte qui soit fondamentalement une combinaison de développeur solide et de BA solide.
Curtis Batt

1
@ Mayank, à mon humble avis, il est en effet très difficile de comprendre les détails de l’entreprise dans son ensemble, et c’est quelque chose que vous ne devriez vraiment espérer faire que de façon naturelle au fil du temps. Chaque élément du (des) système (s) sur lequel vous travaillez doit naturellement impliquer un apprentissage plus approfondi de l'entreprise. C’est ainsi que les choses se sont passées lorsque j’ai travaillé dans des industries à forte connaissance du domaine.
Carson63000

2
@ Mayank, non, il n'est pas faux de dire que c'est très difficile. Lorsque je suis arrivé à mon poste actuel, mes nouveaux collègues m'ont dit qu'il faudrait six mois pour comprendre le code . Maintenant,
j'approche de

1
+1000 si je pouvais. IMHO, la technologie est la partie facile / amusante.
Ozz

1
Non, il n'est pas naïf. De plus, son manager est un idiot de beuglements et devrait être ramé sur une base régulière.
Gaurav

8

Je travaille également dans le négoce d'énergie. La connaissance des affaires représente 90% du travail. Vous ne pouvez pas contourner cela - c'est une affaire compliquée.

Si vous ne comprenez pas au moins les bases du trading et les marchés sur lesquels vous travaillez, vous allez avoir du mal à réussir, peu importe votre qualité de codeur.

Je travaille avec des BA qui ne peuvent tout simplement pas répondre correctement aux exigences. Je dois pouvoir compter sur mes propres compétences analytiques et ma compréhension des connaissances en affaires pour mener à bien cette tâche.

Je pense que si vous travaillez pour un magasin qui vend des logiciels Energy Trading, votre expérience peut être différente. Toutefois, dans le secteur du trading d'énergie pour les entreprises, l'accent est essentiellement mis sur la compréhension du marché et sur la manière dont les logiciels peuvent d'abord résoudre les problèmes de l'entreprise.

Les technologies réellement utilisées et leur mise en œuvre sont loin derrière.

Le type ci-dessus qui a fait le commentaire Excel ne sait pas à quel point son commentaire est approprié. Les commerçants construisent souvent leurs propres petites applications de trading dans Excel / VBA (c’est tout ce qu’ils savent), puis le département informatique finit par hériter de ces problèmes de programmes.

J'aimerais recréer certaines de ces applications dans un langage "approprié", mais ce n'est pas toujours une priorité.


1
+1 Pour "les affaires compliquées" :) J'ai déjà travaillé dans le domaine bancaire et l'ai trouvé beaucoup plus intéressant et plus facile. En outre, comme vous l'avez souligné, tout est fait dans Excel!
Mayank

6

Si vous développez pour une entreprise, vous finirez par avoir une idée plus claire et plus détaillée des règles de gestion que quiconque dans l'entreprise. Ce n'est pas nécessairement parce que vous êtes plus intelligent que tout le monde, mais parce que c'est la seule façon de faire le travail.

Votre réaction pourrait être "Mais que font les analystes commerciaux?"

Les analystes métier assistent à de longues réunions avec les clients pour essayer de définir des exigences suffisamment claires pour qu'un développeur puisse travailler. Je regarde la façon dont ils traitent avec les clients et je suis reconnaissant de ne pas avoir à le faire.


2
Attendez, les analystes métiers ont des exigences claires? C'en est une bonne. Personnellement, je préférerais traiter directement avec l'utilisateur final.
Christopher Mahan

@Christopher - J'ai dit "essayer" d'obtenir les conditions requises :-)
Andrew Shepherd le

En effet vous l'avez fait.
Christopher Mahan

1
+1 - Les analystes métier assistent à de longues réunions avec les clients pour essayer de définir des exigences suffisamment claires pour qu'un développeur puisse travailler.
Karthik Sreenivasan le

6

J'aime dessiner des analogies entre le développement logiciel et l'architecture. Les deux sont des arts appliqués. Les deux nécessitent une modélisation élaborée dans l'esprit. L’aspect qui s’applique à cette question est qu’écrire des logiciels sans connaissances commerciales revient à concevoir un bâtiment sans comprendre le mode de vie et les besoins de ses habitants. Je pense que beaucoup d'entre nous ont vu (ou même vécu / travaillé) des bâtiments qui peuvent sembler beaux et modernes et quoi encore de l'extérieur, tout simplement pas utilisables de l’intérieur. (Dans le pire des cas, ils ne sont même pas gentils: - ((()

Mise à jour

Commentaire de Gaurav:

Je suis curieux de savoir dans quelle mesure un développeur doit s’efforcer de comprendre le domaine commercial. Devrait-il aller jusqu'au bout, ou il y a une ligne à tirer.

Je ne pense pas que vous puissiez tracer une ligne nulle part en général. À moins qu'il y ait des parties de l'application / du domaine que vous n'avez jamais besoin de toucher (donc de comprendre). Qui est IMHO très rare dans la vie réelle, à long terme. Toute partie d'une application en cours d'utilisation recevra des rapports de bogues et des demandes de fonctionnalités. Les domaines changent aussi, au fur et à mesure que la législation, les règles fiscales, les politiques, les habitudes - en bref, le monde réel - changent. Ceci doit également être suivi dans le logiciel.

Cependant, même sans demandes de modification externes, les tests unitaires et le refactoring du code hérité nécessitent également la compréhension des domaines pertinents. Sinon, il vous suffit de "geler" le comportement actuel de l'application, sans savoir s'il est correct ou non.

Mise à jour2

Que se passe-t-il si le développeur [...] change fréquemment le domaine métier sur lequel il travaille?

Cela signifie bien sûr qu’une grande partie de l’investissement (de votre temps et de l’argent de votre employeur) pour acquérir les connaissances de votre entreprise est perdue :-( Si vous savez que cela va arriver, bien sûr, il ne vaut peut-être pas la peine de creuser trop loin dans la recherche. un domaine spécifique. Notez cependant que les domaines ne sont pas totalement différents, il existe des principes fondamentaux qui peuvent être réutilisés entre différents domaines et, plus important encore, l’ approche de conception pilotée par domaine que vous obtenez est réutilisable.


1
@ Peter Merci pour la mise à jour de la réponse. J'ai une autre question. Je suppose que cette réponse, ainsi que d’autres, supposent que le développeur s’en tiendra à un domaine d’activité, mais si ce n’est pas le cas, le développeur change fréquemment de domaine d’activité sur lequel il travaille. Je ne suis pas sûr du reste du monde, mais c'est très courant en Inde. Pour par exemple. L'année dernière, je suis passé d'un domaine CAX à un domaine Marketing et je peux très bien passer à un autre domaine.
Gaurav

2
@Gaurav, cela signifie bien sûr qu'une grande partie de l'investissement (de votre temps et de l'argent de votre employeur) pour acquérir les connaissances de votre entreprise est perdue :-( Si vous savez que cela va arriver, bien sûr, il ne vaut peut-être pas la peine de creuser Trop profond dans un domaine spécifique. Notez cependant que les domaines ne sont pas totalement différents, il existe des principes fondamentaux qui peuvent être réutilisés entre différents domaines. Et plus important encore, l' approche de conception pilotée par domaine que vous obtenez est réutilisable.
Péter Török

@ Merci encore. Je voterais votre réponse, mais apparemment, vous ne pouvez la voter qu'une seule fois (règles stupides). Une dernière si ce n’est pas trop embêtant, pouvez-vous incorporer votre commentaire dans votre réponse.
Gaurav

@Gaurav, c'est fait, je suis heureux d'avoir pu aider :-)
Péter Török le

Et la raison du vote négatif est ...?
Péter Török le

2

Je travaille dans le secteur bancaire depuis plus de dix ans dans le développement d’applications de négociation et conviens que les développeurs doivent bien comprendre le métier. Mais maintes et maintes fois, au cours des processus d’entretien, si la personne n’a pas une bonne connaissance de l’entreprise, elle ne passe pas la porte.

Cela a conduit à un nombre considérable d'applications et de systèmes critiques développés par ces personnes possédant de solides connaissances en affaires mais des compétences techniques faibles à moyennes. Ces systèmes finissent toujours par être mal conçus, ils tombent en panne constamment, semés de bugs, ils ne sont pas évolutifs, il est presque impossible de les réparer sans casser quelque chose, et ce, même si le projet n'est pas annulé faute de compétences techniques suffisantes pour l'obtenir. en production.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.