Dovrei essere un buon programmatore subito dopo il college?


28

Possibile duplicato:
mi sono laureato con una laurea in Informatica ma non mi sento nemmeno vicino a essere un programmatore esperto

Mi sono laureato di recente all'università e da allora mi sono unito a un team di sviluppo in cui sono di gran lunga lo sviluppatore meno esperto con forse un paio di termini lavorativi sotto la cintura. Nel frattempo, il resto della squadra sta facendo 5-10 anni di esperienza.

Ero uno studente molto bravo e un programmatore piuttosto bravo quando si trattava di compiti e prove in bottiglia. Ho lavorato su alcuni progetti con successo, ma ora sto lavorando con una base di codice molto più ampia e la curva di apprendimento è molto più alta.

Mi chiedevo quanti altri sviluppatori iniziarono la loro carriera in team e se ne andarono come se avessero succhiato. Quando cambia questo? Come posso accelerare il processo? I miei anziani mi stanno aiutando, ma voglio essere eccezionale e mostrare il mio valore ora.

Risposte:


50

La cosa interessante dello sviluppo del software è che non importa quanto tu sia bravo: c'è sempre qualcuno migliore o almeno abbastanza diverso da insegnarti ancora qualcosa. Inoltre, non è raro guardare il codice scritto qualche mese fa e pensare che faccia schifo, indipendentemente dal tuo livello di esperienza.

Per me, una volta capito il divario tra le mie capacità e le capacità dei miei colleghi, ho iniziato a imparare come non avevo mai imparato prima - leggendo il codice di altre persone, post di blog, libri, prestando attenzione a come i miei colleghi hanno realizzato le cose, ecc. L'università mi ha preparato per l'informatica, ma non per lo sviluppo del software. Sono passati quasi 4 anni e sono uno sviluppatore di software molto più forte di prima. Quindi, resta lì e impara il più possibile dalle persone intorno a te. Andrà meglio.


+1. Mi è anche piaciuto molto essere quello che fa schifo a qualcosa nella squadra e mi ha costretto ad adattare le mie conoscenze.

27
+1University prepared me for computer science, but not really for software development.
George Marian,

1
Spero di avere la stessa esperienza quando finisco uni e ottengo il mio primo (oh aspetta, secondo) lavoro nel settore della programmazione.
gablin,

4
@George: Quel che è peggio è che un sacco di sviluppo software nel mondo reale cade sotto l'ombrello "IT", che di solito si riduce a schiaffeggiare brutte interfacce utente su tabelle di database. :( Non esattamente qualcosa per cui l'università potrebbe mai prepararti.
Adam Paynter,

@adam Assolutamente. Anche se capisco la necessità a volte, l'approccio "abbastanza buono" mi fa impazzire.
George Marian,

23

No. Ho imparato molto di più sulla programmazione / ingegneria del software nei primi 6 mesi di lavoro dopo aver lasciato l'università rispetto a quanto avessi fatto negli anni precedenti. Tuttavia, ciò non significa che l'università sia stata una perdita di tempo, mi ha preparato la mente e fornito le conoscenze di base su cui basare.

Poi di nuovo, guardando indietro ora, non sapevo ancora cosa stessi facendo da 6 mesi.


4
Ben detto, i miei professori dicevano sempre "C'è una grande disparità tra industria e mondo accademico". Difficile da credere fino a quando non esci nel mondo reale e ti rendi conto che in realtà lo è!
Chris,

Questo. Questo è esattamente il motivo per cui uno stage, non retribuito o qualunque cosa tu possa ottenere, è così prezioso. Al diavolo, anche uno stage non programmabile ha un'esperienza molto più preziosa di quanto possa essere una singola classe, perché impari alcune delle insidie ​​del lavoro con le persone.
Kzqai,

10

L'istruzione ti dà le basi su cui basarti, ma non ti preparerà allo sviluppo del software nella vita reale. Questo viene con l'esperienza. Sicuramente mi trovavo nella tua stessa situazione quando ho iniziato a programmare per un lavoro. Fintanto che continuerai ad imparare, a leggere libri, a post di blog e ad applicare ciò che impari nel tuo lavoro , migliorerai. La chiave sta applicando ciò che impari. Basta leggere non aiuta, devi applicare attivamente nuove conoscenze.


+1 per applicare ciò che impari. Ho dimenticato di menzionare quella parte. :)
Adam Lear

7

Ho sicuramente pensato di esserlo, ma non lo ero.

Fidati di me, ad un certo punto della tua carriera tornerai indietro e lavorerai su un codice che hai scritto, ma non ho toccato per anni e desideri disperatamente che nessun altro sviluppatore professionista abbia mai visto quel codice o sappia che lo hai scritto. Ciò significa che stai crescendo.


4

In un certo senso, imparare un linguaggio di programmazione è molto simile a imparare un linguaggio naturale. Puoi imparare una buona dose di teoria a scuola. Impara la grammatica e gli elementi di base del vocabolario e pensi di essere abbastanza bravo, fino a quando non ti ritrovi in ​​una vera conversazione con un madrelingua, e poi ti perdi completamente.

Il modo in cui impari davvero la lingua, al punto in cui sei in grado di trattenere la tua in una conversazione con madrelingua, è in realtà parlare la lingua, ogni ora di ogni giorno. Questo di solito significa andare a vivere da qualche parte dove si parla. Ed è allora che succede una cosa interessante. Sebbene ciò che hai imparato a scuola sia inutile, in sé e per sé, per le strade di un paese straniero, ti dà una solida e solida base teorica che rende molto più semplice l'apprendimento delle lingue. (Questa è stata la mia esperienza con lo spagnolo, almeno.)

La programmazione è allo stesso modo. Ciò che impari a scuola non ti prepara per il lavoro che dovrai fare come un vero programmatore, ma (supponendo che tu sia in una scuola competente che non offuschi tutto nell'interesse della popolarità), aiuta a preparare la tua mente in modo che quando arriva il momento di imparare davvero ad essere un buon programmatore, i concetti fondamentali di cui hai bisogno siano già in atto. (Questa è stata la mia esperienza con la programmazione, almeno.) :-)


2
Buona risposta, ma non vorrei dire che "ciò che [ho] imparato a scuola non ha valore". So comunque a cosa stai puntando.
gablin,

4

Molti bravi programmatori escono dai titoli universitari di informatica, principalmente gli stessi che li hanno frequentati.

La cosa sull'informatica è che non è lo stesso della programmazione, come hanno discusso in precedenza. Un sacco di cose che ho studiato all'università, in pratica, non ero pronto per- c'erano molte cose che sembravano assurdità accademiche pie-in-the-sky quando stavo ascoltando lezioni a riguardo, ma qualche anno dopo avrei desiderato ci avevo prestato maggiore attenzione quando ho finito per imparare di nuovo un sacco di cose che avevo archiviato come inutili. In realtà penso che si potrebbe usare qualche anno di programmazione in un ambiente commerciale prima di iniziare una laurea in informatica se questo è quello che vuoi fare.

Inoltre penso spesso che all'università non si sappia necessariamente come imparare. Molte cose che ho imparato per errore o imparando da altri sviluppatori sono sicuramente cose che i miei docenti e studenti universitari sapevano all'università, ma non avevo idea che sarebbe stato utile capirli. Chiedere alle persone i problemi che stai riscontrando mentre stai imparando a fare qualcosa (e questo si applica a qualsiasi cosa davvero) rende il processo di apprendimento più fluido e meno doloroso. La maggior parte delle cose che puoi imparare da te o da altre persone - dato che molte delle lezioni che ho imparato per me stesso sono state apprese dai miei errori dolorosi, sceglierei di imparare da altre persone quando posso ...


2

Vorrei citare il post di Brian Hurt

Informatica e programmazione sono cose separate

che si riferisce anche alla programmazione universitaria di Joel Spolsky e al brillante articolo intitolato Who Killed the Software Engineer

Tutte queste discussioni descrivono abbastanza bene la realtà e, secondo me, rispondono alla tua domanda come "No", perché l'università non ti renderà un buon programmatore. Devi diventare un buon programmatore da solo.

Non sono laureato in CS, ma sto programmando e sviluppando software da 8 anni. Tutte le competenze di programmazione che ho, ho imparato da solo.


1

No, fingevo di essere un programmatore e l'ho imparato nel modo più duro. Ho ottenuto il mio primo cliente come libero professionista e ho combattuto molto male con C / C ++ e alla fine ho vinto. Ricordo che ci vollero alcune ore per capire che fare malloc su una struttura non era abbastanza per allocare memoria anche per i puntatori nella struttura.


Qual era la tua laurea originale? Il tuo duro lavoro è stato finalmente ripagato?
rwong

Sono un ingegnere elettronico, ero abbastanza bravo in Matalb, ma con una conoscenza molto scarsa di C / C ++ e Java. Che ci crediate o no, il mio primo vero lavoro di programmazione è stato scrivere driver per Windows CE e portarlo su questo dispositivo: eurotech.com/EN/innovation.aspx?pg=wearable . Ho avuto un piccolo aiuto dall'azienda, ma fondamentalmente stavo lavorando da solo a casa, perdendo molto tempo per piccole cose. Ma scommetti che non ho dimenticato nulla! Sto ancora imparando, ma ora possiedo una startup che fa un programma molto grande ... quindi ha dato i suoi frutti.
martjno,

1

Ero un buon programmatore quando mi sono laureato alla mia università. Ho anche avuto un'abbondante offerta di lavoro mesi prima ancora di laurearmi (che sono stato in grado di rifiutare per uno ancora più sneaker).

La chiave era che avevo fatto molto lavoro come hobbista, con un lavoro di sviluppo web durante l'anno scolastico, e facendo stage estivi di qualità con IBM ("ExtremeBlue speed-team" e il programma ExtremeBlue vero e proprio). Una buona esperienza preprofessionale ti permetterà di saltare un po 'di roba entry-level dopo la laurea.

(Detto questo, sono ancora molto più bravo a programmare nei miei primi sei mesi o giù di lì in un vero lavoro (tm). Non che fossi finito in seguito, ma fu allora che mostrò molto.)


1

Posso darti una risposta inversa, mentre mi recavo direttamente dalle superiori al lavoro. Ho iniziato a lavorare come programmatore di auto-pensiero ed ero quasi immediatamente produttivo sul progetto che i miei datori di lavoro mi danno. Avevo dei colleghi che avevano una nuova laurea in informatica e non erano affatto produttivi.

Nel tempo, alcuni colleghi laureati hanno migliorato notevolmente le loro abilità, mentre altri no, e questo non era correlato al loro GPA.


1

L'università non ti insegna a diventare un programmatore del mondo reale. Immagino che questo sia simile con molti lavori rispetto ai loro corsi di laurea. Non direi che non ho ottenuto nulla dalla mia laurea, ma è stato molto meno utile che passare 4 anni in realtà sul lavoro.

Ma va bene Ogni lavoro che ho iniziato probabilmente non ero qualificato. Se sei sicuro delle tue capacità e ti dedichi all'apprendimento, allora puoi intensificare e fare il lavoro.


1

Non credo di aver appreso nulla sulla programmazione in generale a cui non ero almeno esposto al college. Certo, ho acquisito nuovi linguaggi di programmazione qua e là, ho imparato nuove API, nuove basi di codice e nuovi strumenti, ma i concetti generali erano tutti presenti appena usciti dalla scuola.

Quello che fai con l'esperienza è una sorta di istinto che accelera il modo in cui ti limiti a un bug segnalato o ti porta direttamente al modo più affidabile per scrivere un nuovo codice. Quando sei nuovo, puoi ancora correggere lo stesso bug o implementare la stessa funzionalità, ma richiede più tempo e hai maggiori probabilità di dover tornare indietro e risolverlo per un problema imprevisto.

Ecco perché è importante coinvolgere i colleghi più esperti come mentore. Vai da loro e dì: "È così che penso che dovrebbe essere gestito. Riesci a pensare a un modo migliore?" Questo ti dà il vantaggio sia dell'esperienza di scoprirlo da solo, sia dell'apprendimento dall'esperienza degli altri.


0

Ero un programmatore migliore dei miei insegnanti all'università.

Poi ho imparato grandi pratiche di programmazione quando ho iniziato a lavorare.


0

Un buon programmatore sta sempre imparando ... imparando un modo diverso per farlo o un modo migliore per farlo. Qualsiasi cosa i tuoi colleghi programmatori debbano insegnarti, ascolterei.


0

Una delle cose che nessuno ha menzionato è che i problemi che ti vengono dati per risolvere a scuola vengono deliberatamente messi a tacere per rendere più facile capire come usare come tecnica specifica che ti viene insegnato. Di solito sai quale tecnica dovresti usare per quel particolare problema perché è quella che hai appena trattato in classe. I progetti per l'intero semestre sono un po 'più belli, ma ancora limitati in termini di portata e complessità rispetto al mondo reale.

I progetti della vita reale sono disordinati e si evolvono nel corso degli anni (il nostro software ha più di dieci anni e da allora è cambiato continuamente) e sono toccati da molte persone diverse con molti livelli di abilità. È possibile che si stia ancora toccando una versione del database di 10 anni e che non sia possibile utilizzare alcuna nuova tecnica SQL. Potresti utilizzare uno strumento eccezionale 8 anni fa, ma che non hai imparato a scuola perché è stato sostituito da qualcos'altro. Ma la società non vuole pagare per mesi di sforzi di sviluppo per sostituirlo totalmente.

Sei bloccato in un mondo in cui il tempo di sviluppo è fortemente limitato da ciò che il cliente pagherà e da quali sono le scadenze, a volte (OK usualmente) artificiali.

Potresti essere costretto a utilizzare gli strumenti richiesti specificamente dal cliente. Potresti avere requisiti vaghi o quelli che hanno poco senso. Potresti avere a che fare con un settore aziendale molto complesso di cui non sai nulla e quindi non puoi nemmeno giudicare se i requisiti hanno senso.

I problemi del mondo reale non sono in alcun modo paragonabili ai bei problemi puliti che ti danno a scuola. Se non sei confuso e ti senti fuori posto per la maggior parte del primo anno, mi preoccuperei per te.


0

È peggio di così ... dopo alcuni anni in questo lavoro, ti sentirai abbastanza bene con quello che hai imparato. Ma poi cambierai lavoro e la tua nuova azienda (o forse anche un nuovo gruppo all'interno della stessa azienda) farà le cose in modo diverso e ti sentirai come se fossi tornato al punto di partenza. Ci saranno codici diversi, standard di codifica diversi, strumenti diversi e processi diversi e dopo due giorni ti chiederai se hai davvero imparato qualcosa nel tuo ultimo lavoro. Questa volta riuscirai a superare quella sensazione di pesce fuor d'acqua più rapidamente, ma ci vorrà ancora più tempo di quanto desideri.

C'è un periodo di adattamento ogni volta che cambi lavoro. Diventa più breve man mano che acquisisci esperienza, ma è sempre lì.

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.