Quanto è importante la conoscenza del dominio rispetto alla conoscenza tecnica?


33

Sto lavorando a un'applicazione di Trading e Risk Management e sebbene da un background C #, mi è stato chiesto di lavorare su pacchetti SSIS. Ora posso conviverci. Il punto dolente è che c'è troppa enfasi sulla comprensione del business. Il trading (Energy Trading per l'esattezza) è un'area ENORME e comprenderne ogni piccola parte è travolgente. Ma negli ultimi due mesi ho lavorato sulla comprensione dei termini commerciali: Mark To Market, Risk Metrics, Positions, PnL, Greeks, Instruments, Book Structure ... ogni piccolo dettaglio (ottieni il punto). Ora IMHO, questo è il lavoro di un BA. Certo è molto importante per gli sviluppatori capire il business, ma dove si disegna la linea?

Quando ne ho parlato con il mio manager, mi ha quasi deriso dicendo che chiunque può imparare una tecnologia in una settimana. È l'attività più difficile. La mia aspirazione a lungo termine è di rimanere dal lato tecnico, probabilmente diventare un architetto (se possibile). Se avessi voluto concentrarmi così tanto sul business, avrei perseguito un MBA!

Voglio sapere se ho torto o troppo ingenuo nel comprendere l'importanza del business o la mia frustrazione è giustificata?


12
Comunicare al proprio responsabile che la tecnologia / programmazione non è limitata a EXCEL || MS Office || La stessa connessione Connect, che chiunque può imparare in una settimana.
Ranger,

Non riesco a credere ad alcune delle risposte, spero che le persone votino verso il basso le risposte con vendetta.
Gaurav,

@ Gaurav, spero di no. Non credo che emozioni accese farebbero del bene in questo forum (o in qualsiasi forum in generale). Sarei interessato a conoscere le tue obiezioni concrete, quindi sentiti libero di commentare le risposte con cui hai problemi.
Péter Török,

@Ranger LOL! Dici che sarà facile un lavoro da manager?
Gopi,

5
Chiedigli di imparare cosa fai in una settimana. È un atteggiamento estremamente arrogante. Farei anche una scommessa con lui che non può fare quello che puoi, scommetto per il doppio del tuo stipendio. Potrebbe volerci una settimana perché un principiante apprenda la sintassi della memoria, degli operandi e dei condizionali di una lingua specifica ... e probabilmente un mese o più per padroneggiarli. È stato un lungo processo per arrivare dove siamo, ma è generalmente la nostra passione, quindi abbiamo superato le difficoltà per tutta la vita.
Incognito,

Risposte:


33

Il lavoro di un programmatore sta traducendo i requisiti di linguaggio naturale in implementazioni di linguaggio macchina. Non puoi farlo efficacemente se sei fluente solo da una parte o dall'altra. A meno che tu non stia scrivendo compilatori o software di controllo della versione, praticamente ogni lavoro di programmazione richiederà una notevole quantità di conoscenze di non programmazione.


1
Quando un programmatore non era a conoscenza di quale cliente parli con difficoltà a programmare
Gopi

+1 @Sri Kumar vero, ma penso che essendo una programmazione, dovresti essere ancora in grado di capire di cosa hanno bisogno e come useresti la tecnologia per realizzare una soluzione. Sono d'accordo, scrivere soluzioni aziendali significa imbattersi in tutti i tipi di attività.
Gideon,

3
La mia risposta sarebbe stata la stessa cosa formulata diversamente. Se non capisci il contesto di ciò che stai creando, lo creerai nel contesto che TU capisci, non quello che È PREVISTO. A meno che non faccia parte di un team numeroso e non stiate scrivendo specifiche e oggetti XML basati su diagrammi UML, è molto importante.
Incognito,

Anche compilatori e vcs hanno un dominio, potremmo semplicemente sentirci più a nostro agio con esso.
Josh Johnson,

24

Benjol e il tuo manager hanno ragione, ma lasciami elaborare:

apprendere il dominio aziendale è come aggiungere valore al processo e aumentare il valore per l'azienda

questa è la differenza tra un programmatore di codici scimmia e uno sviluppatore


7
+1 Non ho alcuna utilità per i programmatori. Ho bisogno di sviluppatori, noti anche come risolutori di problemi. :)
jmort253,

18

C'è un detto che è venuto dal dipartimento di informatica della mia università:

Se vuoi creare software per geologi, devi prima capire la geologia. Se vuoi creare software per i fisici, devi prima dilettarti in Fisica. Se vuoi capire gli affari, allora prima devi imparare a parlare di affari.

Sento sempre gente qui dire che lo sviluppo del software è un campo creativo. Credo che ciò sia vero fino a un certo punto. Implica la creatività in quanto bisogna essere in grado di vedere fuori dagli schemi per risolvere una serie di problemi.

Ciò che non significa è che puoi semplicemente sederti e costruire in modo creativo tutto ciò che vuoi. Questa non è una lezione d'arte, è ingegneria, e i tuoi clienti e le parti interessate si aspetteranno che tu crei qualcosa che risolva i loro problemi, non qualcosa che sia semplicemente "bello".

Per risolvere un problema, devi prima capire il problema. Devi entrare nella testa dei tuoi utenti e capire come pensano.

Che tu stia costruendo software per la finanza, il marketing, le vendite, la geologia, la fisica o qualunque altro campo il software supporti, devi diventare parte di quel campo.

È per questo motivo che, oltre alla mia laurea in Informatica, ho anche conseguito una laurea in Economia aziendale; ha avuto un impatto enorme sulla mia capacità di comunicare potenziali soluzioni e fornire prodotti di successo.

Se vuoi saperne di più su ciò che vorrei cercare quando assumo un ingegnere del software aziendale, dai un'occhiata a questo esempio di annuncio di lavoro di ingegnere aziendale che ho scritto come risposta a un'altra domanda.


2
+1 - I tuoi clienti e le parti interessate si aspettano che tu crei qualcosa che risolva i loro problemi, non qualcosa che sia semplicemente "bello".
Karthik Sreenivasan,

"Se vuoi creare software per geologi ...", adori questa affermazione. Quale università? vorrei poterlo citare!
Raj Rao,

1
@RajRao Sfortunatamente, ho parafrasato e non ricordo esattamente da chi l'ho imparato. Era il dottor Ruben Gamboa ( uwyo.edu/cosc/cosc-directory/ruben/index.html ) o il dottor William Spears ( uwyo.academia.edu/WilliamSpears ) dell'Università del Wyoming, Laramie, Wyoming, USA.
jmort253,

14

Potresti sopravvivere senza molta conoscenza del dominio o contatto con i clienti come programmatore di basso livello, ma un architetto del software è qualcuno che ha molta familiarità con il dominio e comunica attivamente con tutte le parti interessate.


2
+1 - È molto ingenuo pensare che si possa essere un architetto di successo senza capire il dominio. Se potessi, ti farei di nuovo +1 per menzionare la comunicazione. Troppe persone trascurano lo sviluppo della comunicazione nelle loro carriere.
jmort253,

11

Secondo me, ti sbagli e sei troppo ingenuo.

Come ha detto il tuo manager (leggermente perplesso), chiunque può imparare una tecnologia in una settimana. L'unica cosa che ti segnerà e ti renderà utile alla tua azienda è la tua conoscenza del business. E più è difficile, più ne vali la pena.

Ovviamente, se scopri che questa particolare attività è noiosamente noiosa, puoi cercare qualcosa di diverso. Ma se la tua idea di paradiso è l'hacking insieme a piccoli siti Web PHP, fai attenzione: ci saranno migliaia di script kiddie che lo stanno facendo anche loro.

Scherzi a parte, "Sono solo un programmatore, non confondermi con i fatti" semplicemente non lo taglierò.


1
Sono d'accordo con questo. Se vuoi scrivere un codice nel vuoto, torna al mondo accademico o trova lavoro presso una branca di ricerca in qualche grande azienda come IBM, MS o Google. Per la maggior parte di noi, la realtà è che dobbiamo capire il business, soprattutto se l'obiettivo è diventare un architetto che è fondamentalmente una combinazione di forte sviluppatore e forte BA.
Curtis Batt,

1
@Mayank, imho, è davvero molto difficile capire i dettagli dell'intera attività, ed è qualcosa che dovresti davvero aspettarti di fare naturalmente solo nel tempo. Ogni elemento dei sistemi su cui lavori dovrebbe naturalmente comportare l'apprendimento di più sull'azienda. Ecco come hanno funzionato le cose quando ho lavorato in settori con una forte conoscenza del dominio.
Carson63000,

2
@Mayank, No, non è sbagliato dire che è molto difficile. Quando sono arrivato nel mio attuale lavoro, i miei nuovi colleghi mi hanno detto che ci sarebbero voluti 6 mesi solo per capire meglio il codice . Ora mi sto avvicinando a 4 anni e sto ancora imparando cose nuove sul business ...
Benjol,

1
+1000 se potessi. IMHO, la tecnologia è la parte facile / divertente.
ozz,

1
No, non è ingenuo. Inoltre il suo manager è un idiota assonnato e dovrebbe essere remato su base regolare.
Gaurav,

8

Lavoro anche nel settore dell'energia. Conoscenza aziendale è il 90% del lavoro. Non puoi evitarlo - è un affare complicato.

Se almeno non capisci le basi del trading e i mercati in cui stai lavorando, dovrai lottare, non importa quanto sei bravo a programmare.

Lavoro con alcuni BA che non riescono a soddisfare i requisiti. Devo fare affidamento sulle mie capacità analitiche e sulla comprensione delle conoscenze aziendali per svolgere il lavoro.

Penso che se lavori in un negozio che vende software di trading di energia, la tua esperienza potrebbe essere diversa, ma nel trading di energia IT aziendale l'attenzione è focalizzata sulla comprensione del mercato e su come il software può fornire prima soluzioni ai problemi del business.

Le attuali tecnologie utilizzate e l'implementazione arrivano al secondo posto.

Il ragazzo sopra che ha fatto il commento di Excel non sa quanto sia appropriato il suo commento. I trader spesso creano le loro piccole app di trading in Excel / VBA (questo è tutto quello che sanno) e quindi l'IT finisce per ereditare questi pasticci di programmi.

Mi piacerebbe ricostruire alcune di queste app in un linguaggio "corretto", ma non è sempre una priorità.


1
+1 Per "affari complicati" :) In precedenza ho lavorato nel settore bancario e l'ho trovato molto più interessante e più facile. Inoltre, come hai sottolineato, tutto è fatto in Excel!
Mayank

6

Se stai sviluppando per un'azienda, finirai per avere un'idea più chiara e dettagliata delle regole aziendali rispetto a chiunque altro nell'azienda. Questo non è necessariamente perché sei più intelligente di tutti, ma perché è l'unico modo in cui puoi fare il lavoro.

La tua reazione potrebbe essere "Ma cosa fanno gli analisti aziendali?"

Gli analisti aziendali siedono in lunghi incontri con i clienti cercando di ottenere da essi requisiti sufficientemente chiari per consentire a uno sviluppatore di lavorare. Guardo il modo in cui hanno a che fare con i clienti e sono grato di non doverlo fare.


2
Aspetta, gli analisti aziendali ottengono requisiti chiari? Bella questa. Personalmente preferirei trattare direttamente con l'utente finale.
Christopher Mahan,

@Christopher - Ho detto "cercando" di ottenere requisiti :-)
Andrew Shepherd,

Anzi l'hai fatto.
Christopher Mahan,

1
+1: gli analisti aziendali siedono in lunghi incontri con i clienti cercando di ottenere da essi requisiti sufficientemente chiari per consentire a uno sviluppatore di lavorare.
Karthik Sreenivasan,

6

Mi piace disegnare analogie tra sviluppo software e architettura. Entrambe sono arti applicate. Entrambi richiedono modelli elaborati all'interno della propria mente. L'aspetto che si applica a questa domanda è che scrivere software senza conoscenza del business è come progettare un edificio senza capire lo stile di vita e le esigenze degli abitanti. Penso che molti di noi abbiano visto (o persino vissuto / lavorato) edifici che possono sembrare belli e moderni e quantunque dall'esterno, semplicemente non utilizzabili dall'interno. (Nel peggiore dei casi, non sono nemmeno belli: - ((()

Aggiornare

Il commento di Gaurav:

ciò di cui sono curioso è fino a che punto uno sviluppatore dovrebbe sforzarsi di comprendere il dominio aziendale. Dovrebbe andare fino in fondo, o c'è qualche linea da tracciare.

Non penso che tu possa tracciare una linea ovunque in generale. A meno che non vi siano parti dell'app / del dominio che non è necessario toccare (quindi comprendere) mai. Il che è IMHO molto raro nella vita reale, a lungo termine. Qualsiasi parte di un'app in uso riceverà segnalazioni di bug e richieste di funzionalità. Anche i domini cambiano, come cambiano la legislazione, le regole fiscali, le politiche, le abitudini corrispondenti - in breve, il mondo reale. Questo deve essere seguito anche nel software.

Ma anche senza richieste esterne di modifiche, il test unitario e il refactoring del codice legacy richiedono anche la comprensione delle aree di dominio rilevanti. Altrimenti basta "bloccare" il comportamento corrente dell'app, senza sapere se è effettivamente corretto.

Update2

cosa succede se lo [...] sviluppatore cambia frequentemente il dominio aziendale su cui sta lavorando?

Ciò ovviamente significa che gran parte dell'investimento (del tuo tempo e del denaro del tuo datore di lavoro) per acquisire le tue conoscenze aziendali viene perso :-( Se sai che accadrà, ovviamente potrebbe non valere la pena scavare troppo in profondità un dominio specifico. Tieni presente, tuttavia, che i domini non sono totalmente diversi, esistono fondamenti che possono essere riutilizzati tra domini diversi. E, soprattutto, l' approccio alla progettazione guidata dal dominio che ottieni è riutilizzabile.


1
@Peter Grazie per aver aggiornato la risposta. Ho un'altra domanda Presumo che questa risposta, così come altre, supponga che lo sviluppatore si attenga a un dominio aziendale, cosa succede se non è così quando lo sviluppatore cambia frequentemente il dominio aziendale su cui sta lavorando. Non sono sicuro del resto del mondo, ma questo è molto comune in India. Per es. solo l'anno scorso sono passato dal dominio CAX al dominio Marketing e posso passare ad un altro dominio.
Gaurav,

2
@ Gaurav, questo ovviamente significa che gran parte dell'investimento (del tuo tempo e del denaro del tuo datore di lavoro) per acquisire le tue conoscenze aziendali è perso :-( Se sai che succederà, ovviamente potrebbe non valere la pena scavare troppo in profondità in un dominio specifico. Tuttavia, tieni presente che i domini non sono totalmente diversi, ci sono fondamentali che possono essere riutilizzati tra domini diversi. E, soprattutto, l' approccio alla progettazione guidata dal dominio che ottieni è riutilizzabile
Péter Török

@Peter Grazie ancora. Voterei la tua risposta, ma a quanto pare puoi votare una sola volta (regole stupide). Ancora una volta, se non è troppo fastidioso, puoi inserire il tuo commento nella tua risposta.
Gaurav,

@Gaurav, fatto, felice di poterti aiutare :-)
Péter Török

E il motivo del downvote è ...?
Péter Török,

2

Lavoro nel settore bancario da oltre dieci anni sviluppando applicazioni di trading e sono d'accordo sul fatto che è importante che gli sviluppatori comprendano bene il business. Ma di volta in volta, durante i processi di intervista, se la persona non ha una buona conoscenza del business, non riesce ad entrare.

Ciò ha portato allo sviluppo di un numero considerevole di applicazioni e sistemi critici da parte di queste persone con una forte conoscenza del business ma competenze tecniche medio-basse. Questi sistemi finiscono sempre per essere progettati male che si bloccano costantemente, crivellati di bug, non si ridimensionano, quasi impossibile da riparare senza rompere qualcosa, ed è così che il progetto non finisce per essere annullato a causa di un'abilità tecnica insufficiente per ottenerlo effettivamente in produzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.