Conoscenza del dominio e programmazione [duplicato]

10

Spesso sento dire dai miei colleghi e, a volte dagli intervistatori,

"There is nothing so great in having excellent programming knowledge. One must gain the domain knowledge as the 1st priority. If you have a good domain knowledge, then writing code for that is not a big deal."

(Qui la conoscenza del dominio è qualcosa che riguarda l'area in cui lavori. Ad esempio, io lavoro nel settore delle telecomunicazioni, qualcuno potrebbe essere in Finanza o Pharma o sviluppo Web o Embedded e così via.)

Non sono d'accordo con il passaggio precedente e penso esattamente all'opposto. Nella mia carriera fino ad ora , raramente ho perso qualsiasi scadenza per la correzione di bug o il miglioramento delle funzionalità. Ho continuato a cambiare i domini (all'interno delle telecomunicazioni) ma ho continuato ad apprendere le tecniche di programmazione. Anche se potrei sbagliarmi.

Domande :

  • Il mio approccio attuale è corretto?
  • Data una scelta tra dominio o programmazione (con tempo limitato) quale dovrebbe essere scelto?
  • C'è un buon futuro per una persona, che è soprattutto molto brava programmatore ma non eccezionale in un dominio (ovviamente all'inizio)?

Chiedo questo perché, credo che ogni dominio alla fine si riduca a codice mare in cui ci si deve immergere!

    
posta iammilind 15.10.2011 - 08:12
fonte

4 risposte

8

Ottima domanda.

Un programmatore non ha bisogno di conoscenza del dominio. Un programmatore completo, buono dovrebbe avere la capacità di interpretare i requisiti specifici del dominio e ottenere la conoscenza del dominio per risolvere i problemi, ma a mio parere dovrebbe immediatamente dimenticare queste informazioni.

Hai una scelta: vuoi essere un esperto in materia o un esperto tecnico?

Se vuoi lavorare in una società o aderire a un settore specifico, raccogli la conoscenza del dominio e sali i gradini. Presto passerai dall'essere un programmatore a essere qualcuno che lavora con il resto del business, facendo da collegamento tra il management / marketing (che ha requisiti aziendali) e il team tecnico (che sa solo come tradurre i problemi tecnici in codice). Sarai il tipo che vede il documento dei requisiti e pensa "Ehi, hanno dimenticato lo scenario X quando la luna è nella settima casa e Giove si allinea con Marte". Sei un esperto in materia .

Se desideri avere competenze tecniche di base, eviti la conoscenza del dominio e continua a far crescere le tue capacità tecniche. Questo non significa che dovresti essere bellicoso e rifiutarti di imparare. Significa solo che raccogliere questa conoscenza non è il tuo obiettivo principale. Ci sono abbastanza sfide tecniche nell'ingegneria del software senza concentrarsi sulle conoscenze aziendali se si sceglie di perseguirle. Diventa un architetto di soluzioni; guida le capacità tecniche delle tue organizzazioni. Sei un esperto tecnico .

È una scelta legittima. Scelgo ogni volta l'esperto tecnico. Significa che posso lavorare ovunque e non essere mai distratto in un lavoro che non voglio fare.

    
risposta data 15.10.2011 - 10:19
fonte
19

Si potrebbe perfino definire programmare come "mappare la conoscenza del dominio da codificare", quindi ovviamente è fondamentale padroneggiare sia il dominio che la codifica. Devi immergerti nel codice mare, sì, ma non è abbastanza. Come potresti scrivere il programma senza sapere cosa dovrebbe fare il programma? Oppure, se sai che cosa dovrebbe fare il tuo programma, come potresti scriverlo se non puoi codificare?

In molti casi, il programmatore deve conoscere il dominio anche in modo più dettagliato rispetto a un semplice "specialista di dominio", perché lo specialista può risolvere tutti i tipi di eccezioni e casi angolari con il suo buon senso e esperienza al loro risveglio, ma il programmatore deve gestire esplicitamente tutti quei dettagli nel codice, prima che si presentino.

Given a choice between domain or programming (with limited time) which one should be chosen?

In qualsiasi momento, la soluzione migliore è migliorare il tuo punto più debole. E ci sono domini più facili e difficili. Se stai realizzando giochi giocattolo per cellulari, il dominio probabilmente non è così difficile; la parte più difficile è rendere il programma efficiente, portatile, di bell'aspetto, ecc. Ma se stai realizzando un programma di controllo delle centrali nucleari, potrebbero volerci anni di studio intensivo per padroneggiare la fisica nucleare che il tuo programma ha a che fare con .

Is there a good future for a person, who is primarily a very good coder but not so great in a domain?

Puoi avvicinarti alla maestria totale da entrambe le direzioni, ma alla fine devi padroneggiare sia la codifica che il dominio.

    
risposta data 15.10.2011 - 09:06
fonte
6

La conoscenza del dominio è buona ma questa non è responsabilità del programmatore. È responsabilità dell'analista aziendale, dell'analista dei sistemi, del modellatore dei dati, dei tester del software, degli architetti del software e talvolta del responsabile del progetto. Ciascuna di queste categorie richiede un livello diverso di conoscenza del dominio.

Il programmatore non dovrebbe raccogliere o formulare requisiti. Dovrebbe capire i requisiti e implementare questi requisiti, almeno lo è nel caso delle grandi istituzioni.

Il motivo della mia argomentazione è che la conoscenza del dominio aziendale include funzioni aziendali, leggi, regolamenti, politiche di interfaccia con altre aziende, accordi commerciali tra organizzazioni e molti altri dettagli mai discussi con gli sviluppatori. Inoltre, la programmazione non è un'abilità leggera da acquisire e mantenere. Ad esempio, non puoi aspettarti che qualcuno conosca le regole di conformità bancaria, i regolamenti e l'OOP.

Tuttavia, un programmatore che ha lavorato in una banca per 10 anni, sarebbe in effetti a conoscenza dei prodotti bancari e dell'architettura del sistema bancario più di un programmatore che lavora per una Telco. Questa conoscenza rende il programmatore più attraente per i lavori bancari, specialmente se il nuovo ambiente utilizza lo stesso software dell'ambiente di ricerca di lavoro (ad esempio, lo stesso CRM o l'applicazione di elaborazione della carta di credito). Nelle compagnie petrolifere in Canada, in particolare, di solito chiedono Oil & Competenza del gas da parte degli sviluppatori - Non sono mai stato in grado di giustificarlo.

Le conoscenze di dominio consentono a un programmatore di passare ad altre carriere se lo desidera, ma la definizione e la documentazione della conoscenza del dominio non è ovvia senza una certificazione, corsi o una laurea.

A mio parere, la principale e importante qualifica di un programmatore dovrebbe essere la conoscenza tecnica nel suo stack di specialità.

    
risposta data 15.10.2011 - 10:01
fonte
5

Se desideri rimanere solo un programmatore, lavorare per un'azienda, la conoscenza del dominio non è necessaria, ma se lo hai, va bene. Se fai parte di un team e hai un program manager, allora dovrebbe possedere una conoscenza di dominio limitata. Nel tuo caso, acquisisci una conoscenza di base del dominio mentre lavori a un progetto. Ad esempio, se sei coinvolto nello sviluppo di un prodotto nel dominio Telecom, dopo un certo periodo di tempo, acquisisci una conoscenza di base del Fornitore di servizi Telecom.

Dalla mia esperienza, se gestisci un'azienda o fai parte del processo di sviluppo del business, allora dovresti avere una conoscenza del dominio. Dovresti anche avere una conoscenza dei tuoi concorrenti.

In ogni caso, dovresti tenere gli occhi aperti perché non rimarrai un programmatore a lungo. In futuro potresti guidare progetti.

A cura

Inoltre, i prodotti altamente scalabili sono possibili solo quando disponi di un'eccellente conoscenza del dominio.

    
risposta data 15.10.2011 - 08:31
fonte

Leggi altre domande sui tag