2010-05-25 9 views
15

Sto cercando di iniziare a lavorare su un progetto nuovo di zecca, qualcosa a cui ho pensato per un po 'come il mio primo progetto vendibile indipendente. In linea di massima è un'applicazione di servizio basata sul Web, e la mia prima scelta, il linguaggio server è abbastanza semplice ... Conosco abbastanza bene Java per lavorare su app web Java in passato.Scegliere tecnologie "migliori" o più familiari per un nuovo progetto?

Tuttavia, la mia esperienza con le app Web riguardava JSP, Servlet e JSTL ... Conosco le idee dietro nuove tecnologie come Hibernate/Spring ma non le ho mai utilizzate. Così abbiamo scritto i nostri DAO, gestito AJAX scrivendo speciali pagine mini-JSP che hanno generato pagine XML/JSON, ecc.

Non mi piace l'idea che Spring/Hibernate siano "solo" o "giuste" modo di fare qualsiasi progetto web Java, ma sono ampiamente utilizzati. D'altra parte, non solo proverei ad imparare questi aumenti del tempo di sviluppo iniziale, ma userò i miei tentativi di apprendimento per costruire un sistema di produzione.

Ricordo che uno dei primi articoli di Joel detto (io parafrasare dal momento che non riesco a trovarlo)

"a prescindere quello che è cool, sempre uso le tecnologie che il piombo sviluppatore (o dev team?) conosce meglio "

Mi chiedevo cosa ne pensasse la gente di questo?

ps: dovrebbe essere CW?

+0

"sa meglio" è un consiglio molto, molto saggio! –

risposta

1

Attenzione al richiamo di nuovi fantastici framework! Attualmente sto eseguendo l'hacking su una piccola app Web che ha solo un accesso, alcune pagine prevalentemente statiche e alcuni moduli per richiedere informazioni via e-mail. Mi ci sarebbero voluti forse due giorni per fare il tradizionale Servlet/JSP in stile MVC. Invece, dato che c'era un intervallo nel programma, ho deciso di utilizzare questo progetto per arrivare a velocità in primavera, Spring MVC e Spring WebFlow. Mentre è abbastanza probabile che io sia solo denso, mi ci sono voluti diverse settimane per avere la testa nel modo giusto di fare le cose, non sono ancora totalmente sicuro che sto facendo tutto correttamente, e l'applicazione è ancora non fatto. Fortunatamente, a causa del rallentamento, non sono in pericolo di rallentare il programma generale del progetto, ma mi chiedo sempre se dovrò scartarlo e ricominciare da capo.

Ho imparato la lezione, però: la prossima volta, non sarò quello che spinge un nuovo framework a meno che non sia quello che ho usato per progetti di produzione prima. Detto questo, sono contento di capire ora Spring (o almeno credo di farlo) e non esiterò ad usarlo di nuovo la prossima volta.

Quindi, come potrei imparare un nuovo framework la prossima volta? Se c'è un lead di progetto (in questo caso sono un capo di un progetto di un team di uno, nessun aiuto lì), userei il framework che hanno messo in atto. Se non c'è, o se voglio imparare un quadro che il progetto non è in uso, lo userei per un progetto parallelo nel mio tempo libero. L'apprendimento è buono. Mettere a rischio il lavoro dell'azienda lanciando tecnologie non testate non è poi così positivo.

2

Non provate tutto in una volta sola: assumete una nuova tecnologia alla volta.

0

Dipende da ciò che il cliente desidera (nel mondo della consulenza). Devi imparare nuove tecnologie. Il cliente vuole pagare per questo?

Non tutti i caveat di quelli nuovi sono noti, mentre quelli più vecchi sono dimostrati molto di più.

Naturalmente, se tutti pensassero così saremmo tutti bloccati con VB in questi giorni. Devi cercare il giusto equilibrio e imparare molto anche tu così puoi ottenere una visione obiettiva delle tecnologie disponibili, dei loro aspetti negativi.

0

io personalmente consiglierei sicuramente di guardare in primavera, ho scoperto che mi ha risparmiato innumerevoli ore. l'ibernazione è utile anche se hai bisogno di un layer ORM (e la molla ha anche delle belle integrazioni con l'ibernazione). non sono certamente il modo 'solo' o anche il 'giusto' per fare le cose (è piuttosto soggettivo) ma mi hanno entrambi risparmiato tempo e fatica, specialmente la primavera.

0

C'è una trappola importante con qualsiasi tecnologia sconosciuta. Non sai dove sono i draghi e non sai come strofinare la nuova tecnologia "con i capelli".

Imparare che sarà richiedere tempo, ed è necessario averlo nelle vostre stime. Molto probabilmente le tue stime saranno troppo basse ...

1

Posso dire con certezza che la primavera merita di essere presa in considerazione. Ti dà tutto quello che puoi, ma non ti infastidisce con cose che non ti servono.

Ad esempio, all'inizio è probabile che sia necessaria solo l'iniezione di dipendenza. Quindi avrai bisogno di aiuto con le interazioni del database e la gestione delle transazioni. Quindi deciderete di applicare il patter MVC alla vostra applicazione web. Dopo ciò, ti renderai conto che i componenti del tuo sistema devono inviare JMS l'uno all'altro. E così via e così via.

Per tutti questi casi, Spring ha la sua soluzione semplice, intuitiva e leggera.

6

Io lavoro come consulente e ho visto molti progetti in cui gli sviluppatori hanno iniziato con servlet + JSP perché era quello che sapevano, ed è piuttosto semplice iniziare. Tuttavia, offre al team un'opportunità/scusa per scrivere una propria piattaforma, which is more fun than using someone else's and just writing an application.

Mentre il progetto cresce, il team reinventa sempre più ruote, alcune delle quali finiscono nello square. È qui che inserisco l'immagine: aggiungere nuovi elementi a questa piattaforma semi-flessibile è diventato così complicato che gli sviluppatori non possono continuare a aggiungere funzionalità e bug senza chiamare i rinforzi. Giusto per aggiungere la beffa al danno, gli sviluppatori interni sono di solito quelli che vengono assegnati a fare le noiose correzioni dei bug perché le correzioni dei bug richiedono una maggiore conoscenza delle viscere sanguinarie di quello che è diventato il framework di persistenza e web proprietario del team, e così quelli i consulenti adorabili devono fare le cose nuove e divertenti.

Ora, non si dovrebbe usare un framework solo perché le persone hanno rigurgitato reciprocamente i post del proprio blog riguardo alla suggestione di esso, ma bisogna anche rendersi conto che ci sono ottime ragioni per cui esistono questi framework (e perché sono Usato). Se non hai usato alcun framework web, ti consiglio di prendere Spring MVC, Wicket o qualsiasi altra cosa per un test drive. Non risolvono tutti i problemi, e ne causano alcuni di loro, ma il totale generale di solito è un aumento della produttività, specialmente se stai facendo interfacce utente avanzate.

Sono stato in progetti in cui il semplice JDBC è stato abbastanza sufficiente per la persistenza e in cui non sono stati necessari framework web più avanzati di servlet + JSP, ma tali progetti sono una minoranza. Senza aver usato un framework o due, non sarai mai se il tuo progetto fa parte di quella minoranza che non ne ha bisogno, o se fa parte della grande maggioranza che lo fa.

1

Quando si avvia un nuovo progetto, limitare il numero di tecnologie/strutture non familiari da utilizzare. Ogni struttura richiede tempo per apprendere e ogni struttura presenta problemi, specialmente se non implementati correttamente.

Se è possibile, mi sento di raccomandare di esaminare il Play framework. È una struttura web per Java che si concentra sulla produttività degli sviluppatori. Puoi scegliere di utilizzare Spring/Hibernate se lo desideri, ma non sei vincolato da questo. Ha un'implementazione molto facile da imparare e dovresti essere in grado di ottenere una buona idea in un giorno di gioco con esso se è ciò che stai cercando.

Problemi correlati