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?
la source
Réponses:
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.
la source
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 singeet un développeurla source
Il y a un dicton qui vient du département d'informatique de mon université:
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.
la source
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.
la source
À 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.
la source
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é.
la source
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.
la source
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 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
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.
la source
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.
la source