Raggiungimento dello stato di programmazione intermedia [chiuso]


32

Sono un ingegnere del software che ha programmato posizioni in VBA (anche se non oso considerare quell'esperienza "reale", dato che è stata una prova ed errore!), Perl con CGI, C # e ASP.NET. Gli ultimi due sono post-universitari, con il mio ingresso nel "mondo reale". Ho 2 anni al college e ho avuto 5 anni di esperienza (in totale) in tutte le lingue che ho citato. Tuttavia, quando si tratta del mio curriculum, posso solo mettere 2 anni in meno per C # e meno di un anno in meno per ASP.NET.

Mi sento come se conoscessi C #, ma devo ancora passare del tempo andando "Cosa fa questo metodo?", Mentre alcuni degli ingegneri di livello più alto possono immediatamente dire "Oh, il Metodo X fa questo, senza mai averlo visto metodo prima ". Quindi so empiricamente che c'è un abisso lì, ma non sono esattamente sicuro di come colmarlo. Ho iniziato a programmare in Project Euler e ho preso un libro sugli schemi di progettazione, ma mi sento ancora come se trascorressi ogni giorno a camminare sull'acqua, invece di andare avanti.

Questo non vuol dire che non mi sento come se avessi fatto progressi, significa solo che per quanto vengo ogni giorno, vedo ancora la cima della montagna in lontananza.

La mia domanda è questa: come hai superato questo altopiano? Quanto ci hai messo? Quali metodi puoi suggerire per aiutarmi in questo?

Ho letto Code Complete , The Mythical Man Month e CLR tramite C #, 2a edizione - la mia domanda è: cosa devo fare ora?


Modifica : ho appena trovato questa domanda sui progetti per un programmatore di livello intermedio. Penso che si aggiunge alla discussione (anche se non soppianta la mia domanda). Come tale, lo sto aggiungendo alla domanda come "Per ulteriori informazioni".


2
Ho giocato con Project Euler di recente e copre solo una gamma piuttosto limitata di tecniche. Sta ottimizzando molto bene una funzione tramite memoisation o programmazione dinamica, ma non ti aiuterà a scrivere GUI o webapps. I problemi difficili sono progettati per essere matematica dura, non per scrivere codice.

Molto divertente, nonostante tutto: non ho nulla contro di esso, semplicemente non è progettato per aiutarti ad imparare una lingua oltre i tipi di dati di base, le strutture e forse alcune tecniche di ottimizzazione se come me preferisci mettere le tue soluzioni sotto 0.1s dove possibile.

@Gortok, sono d'accordo che ci sono molte cose specifiche che puoi fare per migliorare il tuo skillset, ma ciò dipende sicuramente dal tipo di programmazione che fai. Gli sviluppatori Windows hanno bisogno di competenze diverse rispetto ai programmatori di dispositivi integrati, ad esempio. Penso che la domanda posta sia in realtà troppo ampia per ottenere una buona risposta.
Nathan Fellman,

1
Sto programmando da quando avevo 2 anni. Ho fallito nel diventare il miglior programmatore del mondo e ora odio la mia vita. Vorrei che il mio obiettivo fosse quello di essere la migliore porno star del mondo.

Non ti senti di avanzare perché la tua intuizione ti sta dicendo di un divario tra la pratica accademica e la pratica aziendale (mondo reale). E la tua intuizione è corretta. La pratica accademica riguarda piccoli problemi ed esercizi autonomi. Il business sta risolvendo un bug o aggiungendo una funzione / pagina web ecc. A un colosso (di solito). La pratica accademica è la ricorsione. Il business è leggibilità e manutenibilità. La pratica accademica è conoscenza matematica e informatica. Il business è abilità delle persone e analisi dei requisiti tanto quanto la programmazione. Lo metterei come una risposta ma la Q è chiusa.
Brad Thomas,

Risposte:


41

Congratulazioni!

Dalla descrizione, si è uno sviluppatore intermedio.

Questa fase durerà circa 3-8 anni, a seconda della tua volontà di apprendere al di là del problema del momento

Per accelerare il processo, leggere, navigare, blog, andare alle riunioni del gruppo di utenti, trovare un tutor, fare ricerche indipendenti, programmare progetti collaterali e seppellire te stesso nelle nuove tecnologie. Questo può radere un anno o due fuori tempo.

Oppure potresti avere una vita al di fuori della programmazione ;-)

Seriamente, mantieniti aggiornato e introspetto, ma disattiva la cosa #% $ @ ogni tanto

Addendum: quando esci, ricorda di indossare i pantaloni.


17
e attenzione a citare Tolkien, è un hobbit difficile da spezzare
Steven A. Lowe,

1
Ben giocato Mr. Lowe, ben giocato.
kemiller2002,

1
Scherzi a parte, avere una vita al di fuori della programmazione. Uno: c'è di più nella vita oltre al codice. Due: molto può essere appreso da altre discipline.
kemiller2002,

1
+1 - Ben fatto. Niente sostituisce la pratica (o un buon senso dell'umorismo).

15

Uno dei modi migliori per salire sulla montagna è scrivere qualcosa per te perché vuoi. I migliori programmatori hanno risposte meravigliose alla domanda "qual è il programma più interessante che hai scritto nel tuo tempo libero". Se non stai scrivendo alcun codice nel tuo tempo libero, non ami il tuo mestiere abbastanza per migliorarlo.


8
Non mi piace questa teoria, le persone hanno un lavoro a tempo pieno e quindi altre responsabilità. Non è responsabile presumere che a coloro che non hanno progetti secondari non piaccia abbastanza programmare o siano cattivi programmatori. Come afferma la risposta accettata, avere una vita al di fuori della programmazione.

10
Non sono d'accordo --- i migliori programmatori sono come i migliori scrittori: non possono letteralmente impedirsi di fare ciò che fanno meglio.
Norman Ramsey,

2
Potrebbero non essere in grado di fermarsi, ma la vita può, e per un po 'di volontà.
Shannon Severance,

@ShannonSeverance, per molti lo sarà, non solo per alcuni.
Pacerier,

9

Devi passare attraverso lo stadio larvale.

Sebbene ora programma in VB.NET su Windows, ho attraversato una fase larvale su Linux x86 con assembly come lingua principale.

Per un po ', devi dedicarti al mestiere fino a quando non lo padroni. Quelli che sono chiamati istinti di un programmatore principale sono comportamenti davvero appresi. È una cultura condivisa. I programmatori devono pensare l'uno con l'altro e come la macchina.

Le pecore diventano come i pastori e i pastori come le pecore, ma nessuno dei due è molto lungo al mondo. Con [alberi ed] Ent è più veloce e più vicino, e camminano insieme lungo i secoli. - Tolkien

Conoscere e capire Le più grandi abilità non sono quelle legate a una lingua specifica, ma possono essere applicate a quasi tutte le lingue. Conoscere i concetti, cercarli in entrambi i problemi e le lingue, essere pronti a inventare cose nuove quando necessario.

Questo è il percorso verso la grandezza.


2
In qualche modo coinvolge cheetos? L'immagine nella mia testa coinvolge cheetos.

2
lol "Non è facile essere di cattivo gusto!"
gnovice,

Palcoscenico larvale o palcoscenico Laravel? ;)
Brad Thomas,

9

Sto programmando da quando avevo 8 anni ... Sarò 33 alla vigilia di Natale. Vedo ancora la montagna in lontananza. Non importa quanto lontano arrivi, c'è sempre altro da imparare.

Prendi i paradigmi sotto la cintura e scopri come il linguaggio in cui stai attualmente codificando implementa quei paradigmi. La programmazione è un'esperienza che ha sempre più da imparare. Questa è la gioia, non importa quanto tu sia abile, c'è sempre di più.

Un modo in cui trovo di imparare cose nuove che normalmente non imparerei è passare del tempo qui e in altri forum di programmazione come scambio di byte ed esperti in cui le persone fanno domande. Se riesci a rispondere alla domanda, vai avanti, se non puoi, quindi prova a capire come completare l'attività da solo, non solo l'OP apprezzerà i tuoi sforzi e l'assistenza, ma imparerai anche qualcosa di nuovo.

Trovo che imparo di più aiutando altre persone a trovare risposte a cose che non conosco ancora di quanto avrei mai programmato semplicemente programmando le mie cose quotidiane che faccio giorno dopo giorno.


9

Lo stato di programmazione intermedio implica che stai uscendo dalla mentalità "digita più veloce" della scimmia del codice e nel regno del voler costruire sistemi reali come carriera. Questo è un grande cambiamento professionale e, francamente, non si tratta davvero di abilità tecniche. Lavorare a livello intermedio (noto anche come "sviluppatore") richiede un insieme significativamente avanzato di abilità delle persone.

Ecco alcuni sintomi a cui potresti pensare:

  1. Ti piacciono le guerre di modifica online? In tal caso, potresti mostrare che ti piace discutere dei dettagli all'interno della tua zona di comfort più di quanto ti piaccia provare a capire il punto di vista dell'altra persona.
  2. Pensi alle lingue come cose veramente diverse? C # e Java portano entrambi le proprie piattaforme e risorse sul tavolo ma entrambi sono modelli efficaci di calcolabilità. Riesci a imparare una nuova lingua e piattaforma abbastanza velocemente da essere pagato per fare lavoro?
  3. Pensi ancora alle attività del software come a digitare? Se ti viene assegnato un compito sul lavoro, perché? A cosa servirà questo codice? Di quale sistema farà parte? Tali informazioni possono cambiare radicalmente la soluzione proposta.
  4. Ti sei lasciato alle spalle la fase del sapere della tua vita? Stai ascoltando il resto della squadra o stai solo cercando di pensare alla prossima cosa da dire?
  5. Ti sei reso conto che "tirare una notte" per produrre una soluzione dell'ultimo minuto buggy non è più impressionante? Dopo le prime otto ore, puoi facilmente immaginare che il resto del tempo sia stato usato solo per digitare i bug.

Il miglior riassunto che posso trovare è che il programmatore intermedio (o "sviluppatore") ha imparato ad essere più produttivo in otto ore lavorative in modo da poter andare a casa e avere una vita fuori dal lavoro.

Punti bonus assegnati se riesci a trovare un coniuge e a riprodurti ....


8

Quello che stai facendo ora è fantastico, ma se vuoi accelerare incredibilmente i tuoi progressi puoi fare altre due cose:

1) "Insegna" - Un modo semplice per farlo è quello di avviare un blog e provare a contribuire con qualcosa di utile su base regolare (forse settimanale). Punta su cose che hai imparato di recente o che non conosci ancora . Ciò significa che ti costringerai alla ricerca, alla comprensione e alla ri-scadenza.

A proposito, puoi facilmente registrarti per un account SingingEels a cui ottieni un blog gratuito su una comunità di sviluppo esistente.

2) Scrivi molti mini-programmi - Con questo intendo circa 1 a settimana. Puoi usarlo in congiunzione con quanto sopra ... o solo per divertimento. Quello che ho fatto da giovane sviluppatore è stato semplicemente scegliere casualmente (non sto scherzando) uno spazio dei nomi nel framework .NET. In questo, scegli una classe che non hai mai visto / usato prima e crea un piccolo programma che lo utilizza.


8

Prova a

Leggi altri libri Raccogli quei grandi titoli da Amazon e leggili. Ad esempio, l'autore di Code Complete aveva scritto un ottimo libro sull'ingegnerizzazione del software - Rapid Software Development, acquistane uno e leggilo.

Impara un linguaggio di programmazione diverso Vale la pena studiare un linguaggio di scripting come python / ruby. O forse un linguaggio di programmazione funzionale :) Questo potrebbe farti cambiare idea sulla programmazione. Potresti sapere che alcuni dei modelli GOF non sono necessari per quel tipo di lingue.

Unisciti a una comunità Le persone possono scambiare il loro pensiero ascoltando gli altri e facendo presentazioni.


4

Trova programmatori intelligenti e impara da loro. Imitali. Nota le cose che fanno diversamente da te.

La tua azienda fa recensioni di codice? Questo è uno dei modi migliori per imparare. Potresti essere stupito dai suggerimenti che i programmatori più avanzati fanno e dalle cose che fanno durante la programmazione.


3

che ne dici di essere coinvolto in altri progetti open source in corso, in modo che almeno il tuo lavoro valga la pena per qualcuno e tu possa imparare e interagire con altri sviluppatori più avanzati che fanno il lavoro nel mondo reale.

in modo che almeno non ti limiti a ciò che vuoi imparare o che tipo di progetto che vuoi fare. ed è già uno strumento gratuito che stai utilizzando, puoi essere orgoglioso di contribuire effettivamente a migliorarlo.

e si presenta bene anche con il tuo curriculum. :)

quindi se questo ti lascia ancora con un po 'di tempo libero, perché non tenere un blog che documenta il tuo apprendimento, le esperienze e cosa no. chissà, potresti essere il prossimo joel nel software o nel codice horror: p


-1

Per eccellere come sviluppatore C # leggi i seguenti due. Nota che il focus di questi libri è più sul linguaggio (C #) e non sul framework (.NET).

  1. C # essenziale : il link è per l'ultima edizione. In realtà ho letto quello precedente (C # 4.0) ma presumo che il più recente sia il migliore. Questo libro ha anche alcune cose di base, ma sii paziente leggi quella copertina del libro per copertina.
  2. C # in profondità : il collegamento è di nuovo per l'ultima edizione che verrà rilasciata tra 10-15 giorni. Ho sfogliato solo il libro, ma i miei colleghi che lo hanno letto hanno grande considerazione per questo.

Hai già letto CLR tramite C # , altrimenti è probabilmente il terzo suggerimento di chiunque per gli sviluppatori C #.

Questi dovrebbero anche renderti uno sviluppatore migliore: linee guida per la progettazione di framework e lavorare in modo efficace con il codice legacy .


ti interessa spiegare perché downvoted?
Asim Ghaffar,
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.