In che modo un team di sviluppo di .NET deve progettare e fornire progetti greenfield? [chiuso]

3

Alcuni degli argomenti più scottanti nel mondo del software atm sono:

  • Design basato sul dominio
  • Principi SOLID
  • Metodologie agili
  • ORM

Ora, supponendo che tu non stia attualmente utilizzando tutti questi elementi nel tuo team, se dovessi andare a chiedere alla tua squadra (individualmente, non come gruppo) cosa sapevano degli argomenti che non stavano applicando - quanto ne fanno sapere di questi altri argomenti - probabilmente ne hanno "sentito parlare / letto da qualche parte una volta". Il problema è che, sempre più spesso, la tecnologia sta cambiando così velocemente che molte persone (mediamente programmatori Joe) non riescono a stare al passo con le ultime riflessioni.

Ora, mentre quelli che sono dotati di talento accademico possono leggere più di 20 libri sui suddetti argomenti ogni anno e combinarli in qualche tipo di ordine nelle loro teste per applicarlo a un nuovo progetto software, la maggior parte di noi non sarà incline fare tutto quello studio Personalmente, mi siedo alla scrivania per tutto il giorno a programmare, quindi l'ultima cosa che voglio fare è andare a casa e fare lo stesso. Voglio andare a fare sport, vedere amici, passare il tempo con la gf e generalmente avere una vita.

Quindi, dato un nuovo e brillante progetto greenfield, molti di noi (far sì che la maggior parte, se siamo onesti) sono ancora piuttosto confusi su come affrontare un nuovo progetto con l'ultima, più grande riflessione che è più comunemente accettata dal nostro pilastri più inclini accademicamente.

Quindi la mia domanda - mi chiedevo se c'era qualche libro là fuori presente o futuro, che combina l'ultimo pensiero in qualcosa di più gestibile per il mortale medio da digerire e applicare? (preferibilmente utilizzando .net e la tecnologia più recente corrente)

Dalla mia esperienza sul mercato, sembrerebbe che questo sia pertinente per la maggior parte degli sviluppatori reali:

  1. Esempi basati su un qualche tipo di sito internet, quindi tutti i livelli possono essere coinvolti.
  2. Spiegare come identificare e mappare i veri oggetti di business, questo sarebbe attualmente fatto con design basato sul dominio come l'ultimo pensiero comunemente accettato, mentre obbedisce ai principi SOLID.
  3. Spiega come (2) va dallo schema del modello allo schema del database, usando l'ultima tecnologia ORM (questa potrebbe essere la sezione più grande).
  4. Utilizza MVC (o qualsiasi altra tecnologia che diventa) come piattaforma per gli esempi.
  5. Spiega molto brevemente TDD, poi mostra come testare le unità plug-in, probabilmente test di studio visivo / nunit o ultime tecnologie.
  6. Quando utilizzare IoC.
  7. Mostra come scrivere un paio di test di integrazione molto semplici usando qualunque strumento di scelta sia (Fitnesse o qualsiasi altra cosa).
  8. Mostra (in non più di un capitolo) come configurare TFS per l'integrazione continua.

Il libro verrebbe quindi rivisto ogni anno per riflettere i concetti più recenti e condivisi, in modo che i team di software conoscessero sempre il modo migliore per gestire un nuovo progetto, senza superare la montagna di nuovi libri di quest'anno per cercare di identificare il comune temi per gli argomenti più caldi di quest'anno. Sarebbe importante che le revisioni non riflettessero l'opinione dell'autore, ma piuttosto l'opinione generale della maggior parte dei suoi pilastri, così ha costruito un approccio accettato e uniforme ai progetti di sviluppo .net.

La vera chiave di questo libro è che sarebbe un libro "Come", non un libro "Perché dovresti". Potrebbe (e probabilmente dovrebbe) fare riferimento ai libri "Perché" per coloro che volevano essere dei programmatori migliori o semplicemente avevano bisogno di saperne di più, ma non avrebbe avuto lo spazio per spiegarlo più che brevemente, dato l'obiettivo del libro .

Forse il libro potrebbe essere chiamato più precisamente "Come applicare correttamente e praticamente l'attuale stato dell'arte della progettazione e della tecnologia di sviluppo del software .NET ai progetti del mondo reale (per idioti)" ma immagino che il titolo abbia bisogno di lavoro; -)

Quindi, per adattarsi ai siti "fare una domanda" direttiva - c'è qualche libro là fuori anche vagamente simile a questo? (anche se dubito che venga revisionato regolarmente)

Bene, sto andando a leggere un altro libro teorico, sulla mia settimana di riposo per cercare di tenere il passo :( È un peccato che probabilmente avrò dimenticato tutti i contenuti nel momento in cui verrò a usarlo, e per quanto ne so, potrebbe già essere obsoleto ...

Oh btw, dov'è il posto migliore per dare il via a una discussione piuttosto che a una domanda? leggere le FAQ suggeriva solo la chat in tempo reale, che ho avuto una rapida occhiata, ma tbh è piuttosto morto e sembra essere principalmente one-liner, non adatto a qualcosa di prolisso (un altro sito web andrebbe bene).

    
posta jimasp 23.09.2011 - 13:39
fonte

1 risposta

5

Vuoi sapere se esiste un modello di cookie-cutter per tecnologie e processi da utilizzare per un nuovo progetto software? Bene, non c'è.

La determinazione del processo appropriato dipende dall'organizzazione, dal team, dalla pianificazione, dal bilancio, dalla familiarità con il dominio e così via. Le tecniche e gli strumenti per supportare il processo dipendono dal processo che stai seguendo. Sulla stessa linea, i migliori linguaggi, librerie e framework dipendono dai requisiti che è necessario soddisfare per fornire un progetto accettabile.

Non troverai un libro (o qualsiasi altra risorsa) che spieghi come eseguire ogni singolo progetto, come scegliere quali tecnologie e come far rientrare tutto nel tuo progetto. Ciò che puoi trovare, però, sono buone risorse che ti aiutano a conoscere le varie tecnologie e tecniche e da lì puoi imparare come applicarle al meglio al tuo problema.

Le domande che dovresti porre devono essere focalizzate su progetti, processi e tecnologie specifici. Questi non possono essere generalizzati in ogni progetto in ogni organizzazione effettuata da ogni squadra. Ecco perché abbiamo i project manager e guidiamo con la conoscenza, l'istruzione e l'esperienza per valutare la situazione e prendere le decisioni appropriate in un contesto specifico.

Per indirizzare alcune dichiarazioni specifiche che hai fatto:

The problem is that, increasingly, tech is changing so fast that a lot of people (average Joe programmers) just can't keep up with the latest thinking.

Il lavoro di un ingegnere del software è quello di rimanere aggiornato sulle ultime novità nel suo campo o dominio. Non ci si può aspettare che si sappia tutto su tutti gli aspetti dello sviluppo del software, ma mi aspetterei che un programmatore di applicazioni / sistemi distribuiti in rete rimanga aggiornato sulle ultime tecnologie e protocolli per il networking e la costruzione di sistemi distribuiti, proprio come mi aspetterei un project manager del software per rimanere aggiornato sulle ultime tecniche su come condurre e gestire i progetti software. E oltre a rimanere aggiornato, mi aspetto che le persone applichino un pensiero personale su come applicare ciò che stanno imparando alla loro organizzazione, squadra e progetto.

The book would then be revised every year to reflect the latest and most agreed concepts, so software teams always knew the best way to handle a new project, without wading through this year's mountain of new books themselves to try and identify the common themes for this year's hottest topics.

Non troverai molti libri rivisti in questo modo. Un sacco di lavoro avviene continuamente, e ci vuole molto tempo perché qualcosa passi da un'idea alla testa di qualcuno a un'implementazione da realizzare come valore aggiunto che merita di essere spiegato in un libro. Questo torna al mio primo punto: come professionista, non ci si può aspettare che ci si diverta. Spetta a te conoscere il tuo dominio e dominio e rimanere aggiornato o rimanere indietro (e magari essere senza lavoro).

The real key to this book is that it would be a "How to" book, not a "Why you should" book.

Non c'è modo di affrontare "come" per progetti software su larga scala con così tanta variabilità. Ecco perché molti libri trattano una tecnica specifica o una serie di tecniche, quando sono applicabili e quando non sono applicabili, perché dovresti considerare di usarle. Otterrai alcune best practice generali per l'implementazione, ma con le variazioni tra i progetti e i requisiti, non ci sono molte regole rigide, ma piuttosto linee guida generali su cui lavorare.

    
risposta data 23.09.2011 - 13:51
fonte