2009-05-14 13 views
10

Mi sono laureato a dicembre in Informatica e ho acquisito una posizione di ingegneria del software. Ho sbattuto la testa contro il muro per 2 mesi cercando di imparare Hibernate, Spring e tutto il resto che mi è stato lanciato nel mio primo progetto. Prima di accettare questo lavoro ho avuto esperienza solo nella programmazione. L'architettura dell'applicazione e gli strumenti di ingegneria sono stati molto difficili da comprendere. Speravo che qualcuno fosse in grado di dirmi un buon posto per iniziare a capire come funzionano le applicazioni web basate su Java. Ci sono così tanti componenti e non riesco a capire come tutto va insieme. Quindi, le mie domande sono.Da Computer Scientist a Software Engineer

  1. Come si apprende una nuova tecnologia?
  2. Quale approccio è meglio per l'apprendimento di più tecnologie allo stesso tempo?
+1

Che cos'è per Hibernate e Spring e per qualsiasi altra cosa che non capisci? È solo codice. – mquander

+19

@mquander - Ahhh l'arroganza della gioventù. – willcodejavaforfood

+0

Penso che sia la comprensione di come tutto scatta insieme. Attualmente sto usando Maven, Flex, Spring e Hibernate. Tutti sono nuovi per me, quindi possono diventare davvero confusi. –

risposta

21

Inizia con le nozioni di base.

Con questo intendo solo servlet e un contenitore Web, probabilmente Tomcat. Dovresti capire il ciclo di vita della servlet, non importa quali strutture ti capita di gettare dopo.

Successivamente, se lo desideri, lancia le JSP nel mix. I JSP sono comunque servlet glorificati (sono compilati in codice servlet e quindi in bytecode).

Successivamente aggiungere un framework MVC. Anni fa quello era Struts (1). Al giorno d'oggi è un po 'più difficile. Mi piace Spring MVC, ma è un po 'previsto anche per Spring. E penso che staresti meglio (per ora) aggirando più framework di tipo Ajaxy (come Tapestry o Wicket) o più soluzioni end-to-end (come Seam) che superano il problema. Il punto che stai cercando di comprendere qui è proprio quello che è il concetto MVC, come funziona e perché lo stai facendo.

Successivamente aggiungere Spring. Il punto qui è di imparare il principio di Dipendenza dell'iniezione/Inversione del controllo (IoC). Questo è un concetto estremamente importante nel moderno sviluppo di Java e nello sviluppo di software in generale.

Quanto sopra effettivamente segue come queste tecnologie si sono evolute, nell'ordine in cui si sono evolute. Lo hanno fatto per una ragione e seguire quel percorso ti aiuterà a capirlo.

Non ascoltare nessuno che ti dice che non è necessario comprendere concetti e tecnologie di basso livello come l'API pura del servlet. Non ha senso.

+0

+1. Come scienziato informatico sono diventato io stesso ingegnere del software, concordo: la consapevolezza della struttura e del funzionamento dell'intero stack, dall'alto verso il basso, è inestimabile. –

8

Penso che il libro di Mike Gunderloy Coder to Developer valga la pena dare un'occhiata.

Per quanto riguarda l'apprendimento di una nuova tecnologia, non c'è davvero modo migliore di usarlo e practice with it il più possibile.

7

Il mio modo di apprendere è costruire qualcosa per conto mio. Di solito raccolgo qualcosa di banale che può essere implementato rapidamente e quindi utilizzare la tecnologia aziendale XYZ del momento in modo che io possa sondare e imparare i particolari. In effetti, sto facendo proprio questo, mentre sto cercando di imparare ASP.NET MVC.

1
  1. Devi solo iniziare a lavorare con gli strumenti per farti un'idea.
  2. Vorrei andare a cercare sul Web e iniziare a leggere libri e siti Web sulle tecnologie che stai utilizzando.
  3. Vorrei iniziare a cercare sul Web per quali libri sull'ingegneria del software in generale dovresti leggere. There are questions here surrounding this topic.
  4. Chiedere agli altri ingegneri di lavorare con domande su come fanno le cose e sul perché lo fanno in questo modo.
2
2

teoria & pratica

  1. lettura (cioè Primavera in Azione è impressionante, blog, ecc)
  2. pratica (cioè scrivere del codice, ottenere un feedback)
  3. goto 1
2

Mi è piaciuto molto questo libro quando si spostano da asp.net a JSP Head First Servlets & JSP, Second Edition.

Grande primer per chi conosce la programmazione e il web ma non tanto su come jsp, servlet e mvc lavorano insieme.

3

Nel momento in cui sei un esperto dei tuoi strumenti e delle lingue/tecnologia che stai utilizzando, un nuovo raccolto di bambini utilizzerà gli strumenti migliori e le lingue/tecnologia. Dovrai quindi imparare quelli per ottenere un lavoro. Quindi abituarsi a questo processo

+0

25+ anni di esattamente quello che hai detto! +1 – Taptronic

2

Basta andare avanti. Non è insolito passare 2 mesi a un nuovo lavoro come programmatore e sentirsi ancora come se stessi sprofondando nelle sabbie mobili. Ho avuto casi in cui mi ci sono voluti fino a 6 mesi per un nuovo lavoro per arrivare a un palcoscenico in cui sento che sto finalmente girando l'angolo e questo dopo 10 anni di esperienza come porgrammer. Anche se in quel caso fare i conti con il codice base era come cercare di decifrare i geroglifici egiziani.

1

Controllo di realtà: come nuovo laureato che entra nel mondo del lavoro, stai attraversando lo stesso processo che abbiamo fatto noi tutti. Stai entrando in un'ecologia completamente diversa da quella che hai appreso in un periodo di anni. Ci sarà una curva di apprendimento indipendentemente dal lavoro che svolgerete e i buoni datori di lavoro lo capiranno.

per rispondere alle vostre domande in modo rapido:

Come si fa a imparare una nuova tecnologia?

Leggere, esercitarsi, commettere errori, ripetere. Il prodotto più prezioso di questo processo sarà domande specifiche che puoi chiedere ai tuoi nuovi colleghi (e su Stack Overflow). Ricorda, fare domande buone in realtà ti fa sembrare più intelligente. Chiedere domande generiche o "Non capisco" ti rende solo fastidioso ....

Quale approccio è meglio per l'apprendimento di più tecnologie allo stesso ?

Creare un elenco di cose prioritario da imparare e quindi elaborare l'elenco. Non puoi imparare tutto il web-commerce in un solo fine settimana. Tuttavia, puoi conoscere aspetti specifici di Hibernate in un pomeriggio. Leggi la tua nuova base di codici con un IDE in mano e inizia a esplorare le API che sono in realtà utilizzate. Se riesci a concentrarti solo sui punti rilevanti di tutti questi nuovi strumenti, potresti effettivamente trovarti a fare progressi più velocemente di quanto ti aspettassi.

-1

RTFM !! Seriamente, LEGGERE e LEGGERE e LEGGERE. Quindi applica, LEGGI, commetti errori, LEGGI, torna indietro per capire cosa hai sbagliato, LEGGI, correggi, leggi, applica nuovamente e ancora e ancora.

Ho detto LEGGI? :-) Sono serio. Leggi tutto ciò che puoi mettere le mani su. Google è tuo amico. StackOverflow è tuo amico. Ci sono ottimi libri là fuori e post come this one descrivili e altro ancora! In bocca al lupo!!

+3

RTFM sembra non appropriato qui. Molti dei progetti Open Source pronti per la produzione hanno una documentazione scarsa (incompleta/non amichevole) (non sto parlando di qualcosa in particolare qui). Infatti, se sbatte la testa contro il muro, probabilmente significa che ha letto i documenti. – user54579

1

Ero nella stessa posizione 2 anni fa. Non ci si può davvero aspettare di imparare le strutture e l'architettura popolari mentre si è a scuola: si è lì per imparare le teorie dell'informatica e come programmare. Si spera che durante il lavoro si possa trascorrere del tempo per imparare Spring, Hibernate, ecc., Ma in caso contrario, sarà necessario passare del tempo da soli.

Se questi framework sono nuovi per te, ti suggerisco di procurarti un libro per l'apprendimento metodico e "tutorial like" in contrasto con il googling casuale o il tentativo di leggere la documentazione di riferimento. Lo farei sicuramente per Hibernate. In questo modo ho imparato il popolare stack J2EE all'inizio, ma ora posso solo leggere la documentazione fornita con i framework.

In ogni caso, inizierete a scoprire che tutte le tecnologie J2EE sono in qualche modo correlate e che raccoglierete piccoli frammenti di altre tecnologie correlate mentre ne apprenderete uno specifico. Ad esempio, l'apprendimento di JSF va di pari passo con JSP.

2

Ho dovuto affrontare una cosa del genere circa un anno fa quando ho iniziato il mio lavoro. La mia soluzione era di leggere ogni bit della nostra base di codice su cui potevo mettere le mani. Se hai problemi con la primavera, questo è particolarmente utile. Traccia tutti i file di configurazione che stanno accadendo e dove si riferisce al codice, dove le cose cambiano e perché. Per quanto riguarda l'ibernazione, giocare con esso e leggere la documentazione di annotazione (che è stata la parte più difficile per me).

Infine, fai volontariato per qualsiasi progetto casuale che si presenta, specialmente se non hai mai lavorato con quelle tecnologie. Ho lavorato a molti progetti nell'ultimo anno che non hanno nulla a che fare con il mio lavoro quotidiano e ho imparato di più da quei progetti che dai miei quattro anni al college.

Buona fortuna

+1

Fai attenzione a quella risposta ... Apparentemente la lettura non è una linea d'azione raccomandata. – Taptronic

1

La prima cosa da Grok è la specifica Servlet in quanto descrive tutte le caratteristiche di base che le applicazioni Java Web essenzialmente aderiscono. Non è una lettura leggera, ma solo una presa generale ti farà QUI lontano.

3

Tutte le buone risposte, e mentre stai lottando con essa, forse si potrebbe inviare un po 'di feedback per i tuoi professori:

  • Il mondo reale sarebbe davvero apprezzare se hanno pagato un po' più di attenzione a ciò che il mondo reale ha bisogno.
1

Non utilizzare Hibernate finché non si conosce a fondo JDBC.

Non si dice se si dispone o meno di background in database relazionali o SQL. Entrambi sono essenziali.

Amo la primavera, ma dovresti capire che non è necessario inghiottire tutto per trarne beneficio. Ad esempio, è possibile ottenere molto chilometraggio da un'interfaccia utente Web di Spring utilizzando JSP e il modulo JDBC. Lascia Hibernate fuori per ora finché non ti senti a tuo agio con Spring.

Il problem solving, in particolare in informatica, riguarda la scomposizione di problemi di grandi dimensioni in quelli più piccoli. Riduci le dimensioni del tuo problema e concentrati su una cosa. Le app Web con JDBC, quindi Spring, quindi Hibernate sarebbero la mia progressione consigliata.

2

Onestamente, per quanto sia umano, se si potesse passare dall'informatica all'università, la forza lavoro è onestamente più semplice, solo diversa. Non dovresti mai dover scricchiolare il cervello così forte come hai dovuto fare all'università, beh questa è stata comunque la mia esperienza. Non c'è molta differenza tra uno scienziato informatico e un ingegnere del software in ogni caso, differenze molto sottili ma piuttosto intercambiabili.

Il mio consiglio sarebbe assicurarsi di essere fluente con XHTML/CSS/Javascript/SQL prima di passare a framework di apprendimento e librerie di script di fantasia come hibernate, jQuery ecc. Probabilmente lo sei già a causa del tuo background, ma se no, queste fondamenta fondamentali ti permetteranno di capire cosa sta realmente accadendo quando i tuoi quadri di fantasia generano automaticamente il codice dappertutto e così via.

Conosco persone che sono entrate direttamente in ORM senza conoscere SQL in profondità. Amano ORM, ma non capiscono cosa sta succedendo sotto e lottano quando il piccolo ORM elaborato genera un SQL davvero inefficiente, perché non hanno la più pallida idea di come scavalcare e scrivere il proprio.

Anche essere consapevoli del fatto che l'ibernazione e alcune strutture del genere possono essere molto gonfie e non sempre il modo migliore per ottenere compiti semplici. Possono essere un eccesso eccessivo per un sacco di cose. Di nuovo, torna prima alle lingue del tuo pane e burro. Costruisci qualcosa senza un quadro. Se poi impari che hai sperimentato un sacco di codice ripetitivo, raddoppiamento, taglio e incollatura, alta manutenzione, prendi le lezioni da questo e poi passa a un quadro adatto alle tue esigenze.

Ma una volta acquisita familiarità con questa schifezza, il tuo cervello di informatica entrerà nel turbo e lo troverai abbastanza facile.

0

Trova un mentore che rispetti e faccia come loro.

Come un giovane diplomato CS ho avuto la fortuna di essere collegato con un architetto molto esperto. Ora, ecco la cosa che devi sapere sugli architetti esperti, loro (noi) sono pigri. Loro (noi) ti lasceranno prendere molte cose dai loro piatti, ti permettono di farlo e poi dirti perché è sbagliato. Approfitta di quel processo se puoi.

0

Una cosa che faccio quando apprendo nuove tecnologie o tecniche è scrivere una piccola applicazione di esempio. Esistono numerosi tutorial validi per Hibernate, Spring MVC e Maven. La chiave è limitare il numero di cose che si tenta in un momento: sarà più facile capire Maven, ad esempio, se ti concentri su Maven senza lanciare Spring e Hibernate nel mix. Una volta che ti senti a tuo agio con una cosa, puoi iniziare un altro micro-progetto.

Avere un mentore aiuta anche.Ti troverai in situazioni (tecniche e non tecniche) di cui hai bisogno con qualcuno con cui parlare. Non aver paura di chiedere consiglio a persone più esperte con cui lavori.

1

Provengo da un corso di informatica & Laurea in Ingegneria del software. Ho una tecnica che uso quando cerco di imparare nuove tecnologie. Di solito va così.

  1. Di solito cerco di leggere parte della documentazione sulla tecnologia e di prendere nota dei punti chiave.
  2. Cerco di mettere le mani su un tutorial e implementarlo.
  3. Una volta che il tutorial è in esecuzione come dovrebbe, apporto le modifiche finché non mi sento a mio agio.

Non posso garantire che funzionerà per voi, ma mi aiuta molto.

Problemi correlati