Lottando come programmatore. Hai bisogno di un consiglio [chiuso]

20

Sono stato uno sviluppatore per diversi anni. Sono abbastanza bravo in quello che faccio e posso "fare il lavoro".

Ma c'è una differenza tra "portare a termine il lavoro" e "fare il lavoro correttamente". Usiamo un esempio.

Recentemente ho sviluppato un sito web da zero. Il sito web funziona bene e non ho avuto problemi. Guardando attraverso il codice ho pensato a me stesso che avrei potuto farlo meglio. Avrei potuto ridurre le mie query MySQL. Avrei potuto usare MVC rendendolo più facile da estendere (ora è necessario estenderlo).

Ho deciso di riscrivere il progetto usando CodeIgniter. Mi piace il quadro. Ma poi sono stato sviato perché per ridurre le mie query MySQL ho dovuto imparare i join avanzati.

E questo è il problema. Ogni volta che faccio un lavoro correttamente sono in una ruota di apprendimento costante. E argomenti come i join MySQL avanzati richiedono tempo per imparare e quindi il tempo di implementare.

Non lavoro per un'azienda. Faccio tutto da solo. Quindi immagino che se lavorassi come sviluppatore PHP per un'azienda ci sarebbero squadre separate che gestiscono SQL.

Essere solo è difficile. E a volte, anche se la mia conoscenza è avanzata, mi ritrovo a fare domande, dopo domanda. Probabilmente ho molto orgoglio nel mio lavoro. Ma se dovessi lavorare per un'azienda che gestiva progetti completi, potrei immaginare che i progetti richiedano un po 'di tempo, perché dovrei imparare sempre di più per soddisfare il mio orgoglio e assicurare che sto facendo le cose "correttamente".

Ho intenzione di ottenere un lavoro dopo il nuovo anno. Ho bisogno della sicurezza del lavoro. Ecco perché sto facendo questa domanda.

Che consiglio puoi dare in termini di sviluppo personale e miglioramento personale? Dovrei preoccuparmi di meno? O forse cerchi un lavoro come sviluppatore PHP quando non gestirò direttamente le query SQL?

    
posta James Guvna Jeffery 28.12.2011 - 22:10
fonte

10 risposte

33

Consigli: non aver paura di imparare cose nuove - hai fatto un buon primo passo nel riconoscere che avresti potuto fare di meglio e poi hai fatto lo sforzo di imparare come potresti fare meglio. Sì, ci vuole più tempo in anticipo, ma il guadagno di solito vale la pena a lungo termine. Ora che conosci CodeIgniter, puoi usarlo per i prossimi progetti futuri. Puoi metterlo sul tuo curriculum. Ora che conosci le tecniche SQL avanzate, i tuoi progetti futuri saranno vantaggiosi. Se smetti di imparare, ristagni.

    
risposta data 28.12.2011 - 22:12
fonte
21

Ciò che stai passando mi sembra abbastanza normale. È così che lavoriamo sul nostro mestiere e miglioriamo sempre di più in ciò che facciamo.

    
risposta data 28.12.2011 - 22:20
fonte
10

...I decided to rewrite the project using CodeIgniter. I like the framework. But I then got sidetracked because to cut down on my MySQL queries I had to learn advanced joins.

And this is the problem. Whenever I do a job properly I'm in a constant learning wheel. And topics such as advanced MySQL joins take time to learn, and then time to implement...

Ben detto sopra, penso che abbia senso concentrarti sul miglioramento della tua capacità di pianificare in anticipo, stabilire e dare priorità alla coda di lavoro, gestire il tuo tempo - cose del genere.

In realtà, questa sembra essere l'unica cosa che manca nel tuo atteggiamento. Quello che chiami "sidetracking" è essenzialmente un altro pezzo di lavoro ("learn advanced joins") che deve essere pianificato, ordinato per priorità e messo in coda.

    
risposta data 28.12.2011 - 23:10
fonte
9

Essere un professionista in questo campo è di annientare costantemente te stesso contro la tua stessa inadeguatezza. Fai da 8 a 5 dal lunedì al venerdì, forse di più se c'è una scadenza, fai un bel fine settimana e rientri per lunedì. Questo è il lavoro.

Fare software richiede una certa umiltà. Se sei qualcuno che deve avere ragione e chi deve dimostrare di sapere già tutto, questo potrebbe non essere il campo per te.

Non riesco a immaginare di non imparare qualcosa ogni singolo giorno. Non penso che vorrei quel lavoro.

    
risposta data 28.12.2011 - 22:56
fonte
6

Essere in solitario è difficile. Al contrario, quando si lavora con un team di sviluppatori, tutti imparano gli uni dagli altri. Come parte del team, acquisirai molte conoscenze lavorando con altri sviluppatori e con uno sforzo molto minore rispetto a quando cerchi di capire tutto da solo.

Detto questo, come sviluppatore, devi impegnarti a imparare costantemente. Che si tratti di leggere documentazione per nuovi quadri o libri sullo sviluppo, devi fare uno sforzo costante per mantenere le tue conoscenze attuali e in crescita. Tuttavia, far parte di una squadra può chiarire quale area devi conoscere di più in un dato momento.

Riguardo al tuo punto sulla rivisitazione del tuo vecchio codice e sulla riscrittura: ho scoperto che il mio codice rappresenta sempre il meglio di ciò che sapevo nel momento in cui l'ho scritto. Molte volte torno a qualcosa che ho scritto anni fa e mi schiaffo sulla fronte, quando vedo quanto avrei potuto fare meglio, dato quello che so ora . Ma questa è la natura dell'esperienza, la ottieni dopo averne bisogno ...

Infine, quando sviluppi un'applicazione, devi sempre esercitare un buon senso degli affari, per decidere quando è meglio tagliare le curve per finire più rapidamente e quando è necessario impiegare più tempo per imparare qualcosa di nuovo che possa migliorare il design e qualità dell'applicazione. C'è un universo di cose da imparare nel mondo del software. Senza esercitare quel tipo di giudizio, potresti ritrovarti a girare le ruote imparando, pensando, ridisegnando, ma senza mai fare nulla.

    
risposta data 29.12.2011 - 00:08
fonte
3

Penso che le tue preoccupazioni siano valide, ma non dovresti perdere tempo a dormire. Sono convinto che un essere tecnologo abbia il seguente bagaglio:

  • Devi imparare costantemente cose nuove. O impari ad amare questo o non lo fai.
  • C'è molto più cose che vorresti padroneggiare di quanto si possa mai sapere.
  • Svilupperai abilità durante un progetto che desideri durante il progetto.
  • Di conseguenza, vorrai sempre tornare indietro e ripetere il progetto. È così difficile pubblicare qualcosa che sai potrebbe essere migliore.

Alla fine, ti sembra cura di costruire software di qualità, che è qualcosa che non puoi imparare . Sappiate che è necessario differenziare la costruzione di una soluzione di alta qualità con la costruzione di qualcosa che è perfetto. Sembra che tu sia come me e non sentirai mai perfetto. Sarebbe più preoccupante se tu non sentissi come se avessi la possibilità di migliorare te stesso e il tuo lavoro.

È difficile essere un tuttofare (maestro di nessuno), ma devi davvero capire come identificare le cose che ti sono più interessanti e utili e concentrarti su di esse. Scopri come meglio "esternalizzare" altri lavori ad altre persone o strumenti .

    
risposta data 28.12.2011 - 22:55
fonte
2

Penso che devi preoccuparti di meno di "farlo funzionare correttamente". Cerca la perfezione, ma renditi conto che non è davvero possibile progettare una soluzione perfetta, ancora di più la prima volta. Il fatto che tu sia abbastanza preoccupato per fare in modo che sia fatto correttamente per fare questa domanda significa che sei già sulla strada giusta.

Per quanto riguarda la tua frustrazione nell'apprendere cose nuove, Ho scoperto che lavorare in un gruppo e essere in grado di chiedere e discutere il problema con altri programmatori mi ha tolto il dolore di scoprire di cosa ho bisogno per imparare e l'ho sostituito con la gioia di scoprire qualcosa di nuovo e di imparare come per applicarlo.

Adoro scrivere software, ma a volte c'è davvero dolore non nell'apprendimento reale di qualcosa di nuovo, ma nel trovare quello che è esattamente quello che devi imparare per essere in grado di ottenere quello che vuoi fare.

Da quanto ho capito, mi sono trovato in una posizione simile a te. Codificare qualcosa da solo può essere frustrante e difficile a volte, e gratificante e un po 'divertente altre volte.

Fai esattamente ciò che pensi di fare, trova un lavoro in cui farai parte di una squadra (e fai del tuo meglio per assicurarti di far atterrare un lavoro da qualche parte che non faccia schifo). Lavorare con altre persone che utilizzano le stesse tecnologie e progettare lo stesso software amplierà la comprensione e l'applicazione di tali tecnologie e modelli di progettazione quasi da un giorno all'altro.

Per sapere come fare qualcosa di giusto la prima volta, beh, come faresti a sapere che c'era un modo migliore a meno che non lo avessi già fatto in un certo modo la prima volta? L'abilità nella progettazione del software dipende in gran parte dall'esperienza. Joel Spolsky è un genio del software, ma se leggi molti dei suoi articoli noterai che sono molto il risultato sia dell'esperienza che dell'intelligenza.

Per quanto riguarda la parte SQL, come sviluppatore .NET devo ancora lavorare ovunque con uno sviluppatore di database dedicato, scriviamo tutti il nostro SQL, ma ci sono spesso sviluppatori che sono veramente bravi con SQL che sono disposti a aiutandoti con le cose più approfondite.

Sembri un ragazzo intelligente, non penso che dovresti essere così duro con te stesso.

    
risposta data 29.12.2011 - 11:49
fonte
1

Questo è assolutamente normale e non qualcosa su cui dovresti preoccuparti troppo. Hai bisogno di imparare continuamente nuove abilità, ma devi anche imparare a stabilire le priorità e a gestire il tuo tempo. Devi anche evitare la trappola di una ricostruzione non necessaria.

Il programmatore inesperto viene spesso coinvolto nella trappola di riqualificazione:

I didn't write this program perfectly, and now I need to extend or alter it. It's going to be a lot of work to modify the existing code due to the way I wrote it. I've learnt so much more since then, I'm sure the best thing would be to rewrite the whole program. I'm sure I could write it much better this time.

Ci sono molte cose che non vanno in questa logica.

  • è molto lavoro da modificare o aggiungere al codice esistente, ma non sarà molto più lavorare per riscrivere tutto?
  • se riscrivi tutto ci sono buone probabilità che tu crei nuovi bug, & ci vorrà più tempo di quanto pensi (specialmente se sei inesperto). Stai prendendo in considerazione tutto ciò che è coinvolto nella scrittura del sistema? (ricorda quanto ti ci è voluto per la prima volta)
  • hai imparato molto da quando hai scritto il programma originariamente (quindi potresti essere in grado di migliorarlo), ma avrai anche ulteriori informazioni sul prossimo mese / anno. Cosa ti fa pensare che non vorresti riscrivere tutto di nuovo in futuro?
  • il test finale di un programma è che funziona . Non hai niente di meglio da fare?

Non può mai ferire contemplare e pianificare una riqualificazione. Ciò significa prendere in considerazione il modo in cui vorresti riscrivere il tuo programma e cercare di identificare eventuali problemi che ti colpiranno. In questo caso, avresti identificato i "join SQL avanzati" che ora richiedono e poi studierai come funzionano e apprenderanno di loro.

Se ritieni di non aver identificato il divario avanzato di conoscenza del join attraverso la pianificazione (senza avviare lo sviluppo), allora devi migliorare le tue capacità di pianificazione. Cerca di pensare a quale parte del piano non è stata sufficientemente dettagliata. Dovresti inserire tutti i dettagli necessari finché non sei sicuro che l'intero sistema sia tecnicamente possibile.

Questo approccio ti permetterà di imparare in anticipo .

Infine, l'apprendimento sul posto di lavoro è una parte normale della programmazione. Ciò non significa, tuttavia, che inizi un compito e poi ti rendi conto che devi fermarti per una settimana per imparare, per esempio, l'HTML di base. Puoi fermarti per qualche ora per imparare qualcosa, ma il tuo datore di lavoro ti paga solo per portare a termine il lavoro. Impara in modo efficiente: non leggere l'introduzione e la cronologia, come funziona e come si adatta al tuo programma. Se devi smettere di lavorare per giorni e giorni per imparare come completare una parte del programma, stai sbagliando.

    
risposta data 29.12.2011 - 00:15
fonte
1

Potresti pensare che imparare nuove tecnologie e problemi sia una perdita di tempo. Ma non fatevi prendere dal panico. È normale. Fa parte della tua pratica come programmatore per imparare ... altrimenti saremmo tutti bloccati con COBOL.

I professionisti freelance aggiustano le loro commissioni di conseguenza e i periodi di apprendimento sono tra le molte altre cose che dovrebbero essere prese in considerazione nelle stime del tempo. La prossima volta che decidi di creare un nuovo framework, assicurati di pianificare in tempo sufficiente per apprenderlo.

    
risposta data 29.12.2011 - 12:10
fonte
0

But, there is a difference between "getting the job done" and "doing the job properly".

No, non c'è, e penso che questo sia la radice del tuo problema qui. Mi sembra che tu sia troppo attaccato a preoccuparti di fare le cose 'correttamente' perché, come singolo sviluppatore, non vedi come operano gli altri. Ma correttamente secondo chi? Chi è questa persona magica che arriva a decretare che quello che stai facendo è 'corretto'? Prendi 100 dei migliori programmatori del mondo, e garantisco che nessuno dei due sarà d'accordo al 100% su ogni argomento di programmazione.

In definitiva ciò che conta è se i tuoi clienti sono felici. Se i programmi che crei risolvono i problemi che dovrebbero svolgere e lo fanno in modo economico, lo stai facendo correttamente. Ad esempio, non è più corretto, ad esempio, utilizzare il codeigniter piuttosto che utilizzare il proprio framework. Il corollario di questo è se produci una pila di merda, lo stai facendo 'sbagliato' a prescindere dai processi o dalle "migliori pratiche" seguite.

Il fatto che tu stia rivisitando il tuo codice e vedendo come migliorarlo è una parte normale del processo di sviluppo. Non è un segno che non stai facendo le cose 'correttamente'. È un segno che ti stai dedicando all'apprendimento e al miglioramento. Da tutto quello che vedo nel tuo post, non hai problemi.

Ora vai a calci qualche * * *

    
risposta data 28.12.2011 - 23:08
fonte

Leggi altre domande sui tag