Come gestisci la natura dinamica dello sviluppo di software di alto livello? [chiuso]

25

Mi considero uno sviluppatore di software di alto livello. Mi piace molto leggere e mi ha aiutato nel corso della mia carriera. Penso di star bene.

In questo momento, passo molto tempo ad imparare nuove cose. Non faccio schifo quando si tratta di scrivere codice in questo momento, ma sto per iniziare una famiglia, e vedo regolarmente molti anziani con 14-15 anni di esperienza che, poiché riducono l'apprendimento di nuove cose, ora fanno schifo alla programmazione. Erano figure ispiratrici in un determinato momento, ma non lo sono più.

Si potrebbe sostenere che le basi non cambiano mai, ma sembra che facciano la differenza quando si codifica su Delphi per 10 anni e improvvisamente tutti usano il framework .NET. È vero che uno sviluppatore esperto impiegherà meno tempo ad apprendere un nuovo framework, ma richiede a richiedere tempo e impegno.

In che modo uno sviluppatore di software gestisce le richieste del lavoro pur essendo in grado di concentrarsi su cose che ti portano necessariamente fuori dal lavoro, come iniziare una famiglia?

    
posta Hemant 29.03.2011 - 15:16
fonte

11 risposte

30

Qualcosa che hai detto spicca: "Vedo regolarmente molti anziani con un'esperienza di 14-15 anni ... ora fanno schifo a programmare". È una pennellata piuttosto ampia che stai usando per dipingere le persone con esperienza. Mi piacerebbe sottolineare un paio di cose da considerare:

  • I praticanti più giovani / meno esperti amano sottolineare come i loro anziani non riescono a fare X o Y, quando non riescono a capire che l'esperienza ha dimostrato che quelle erano idee sbagliate. Eppure ogni nuova generazione di professionisti sembra voler ripetere quegli errori. Quel fenomeno è comune a tutte le professioni, non solo alla programmazione.
  • Non tutte le persone che hanno lavorato per un certo numero di anni sono esperti, maturi o bravi. Ci vuole sforzo per migliorare. Un sacco di sforzi da fare quando sei più giovane costruisce un buon bagaglio di esperienze da cui puoi attingere in seguito.

Forse le persone a cui ti riferisci non sono mai state brave. È proprio possibile che ti guardino pensando, perché ti ostini a fare le cose nel modo più duro?

È vero, tuttavia, che quando avvii una famiglia hai molto meno tempo per stare al passo con i nuovi giocattoli. In effetti hai meno tempo in cui i tuoi figli invecchiano rispetto a quando sono più giovani. I giocattoli non ti rendono un programmatore migliore. Neanche strumenti. Ciò che ti rende bravo è la capacità di abbattere i problemi e costruire una soluzione operativa. Ciò che ti rende grande è la capacità di insegnare agli altri ad essere buoni. È qui che l'esperienza inizia a splendere.

    
risposta data 29.03.2011 - 15:47
fonte
20

È difficile prevedere il futuro. Ma una cosa è sicuramente la più preziosa, indipendentemente dalla tecnologia.

È la capacità di uno sviluppatore di risolvere i problemi .

Molti sviluppatori di qualità sono indipendenti dalla tecnologia. Ad esempio capacità analitica è la qualità più importante che conosca. È come imparare la matematica. È semplicemente senza tempo.

    
risposta data 29.03.2011 - 15:28
fonte
5

Vorrei avere un pensiero positivo o concreto - ma penso che il modo in cui un programmatore tiene aggiornato e bilancia il lavoro / la famiglia varia enormemente da programmatore a programmatore.

Pensieri casuali:

  • Non tutti i progetti software o società hanno bisogno della tecnologia più recente, anche nel software. Il cambiamento è più drammatico al ribasso - le aziende che corrono leggermente dietro il margine del sanguinamento hanno spesso molte opportunità di crescita e cambiamento, ma non la diffusa richiesta urgente di cambiamento costante immediatamente.
  • Quanto più un programmatore è esperto, tanto più dovrebbe essere in grado di sfruttare l'esperienza al posto dell'ultima / più grande parola d'ordine. Ho notato che le persone che ammiro di più in 20+ anni nel settore hanno tonnellate di metafore su come l'ultima cosa in C # è la risposta perfetta al problema che avevano alla fine degli anni '80 con C. Sfruttando i problemi e le soluzioni precedenti, essi porta più comprensione al tavolo con meno ricerche.
  • Ogni volta che ho dovuto valutare i programmatori del team, la capacità di fare le cose e di giocare bene con gli altri ha superato la gamma di tecnologie con cui il programmatore è arrivato al lavoro. Anche se il settore si evolverà in molti linguaggi, API e strumenti nuovi e in concorrenza, è probabile che il progetto utilizzi il concorrente per volta. Ma fare le cose e aiutare gli altri a fare lo stesso non passa mai di moda e il modo in cui è fatto si evolve molto più lentamente - non che IM, social media, smart phone e tutto il resto dell'era digitale non stiano cambiando quell'aspetto della programmazione anche.
risposta data 29.03.2011 - 15:44
fonte
5

In primo luogo, Microsoft è nel business della vendita di strumenti e piattaforme di sviluppo software su cui eseguire quel software. Questo li incentiva a fare cambiamenti sia che siano necessari o meno. Questo non vuol dire che tutti i loro cambiamenti sono inutili, solo che ci sono molte aree nella nostra professione che sono molto più stabili. Con l'esperienza, sei in grado di discernere quali sono i merengari che valga la pena di saltare subito e quali puoi aspettare di maturare.

In secondo luogo, l'esperienza richiede solo tempo. La maggior parte degli sviluppatori con 15 anni di esperienza che sono cattivi ora erano cattivi 15 anni fa. Non attribuire erroneamente l'età a ciò che può essere adeguatamente spiegato dall'incompetenza.

In terzo luogo, non confondere le conoscenze obsolete con l'impossibilità di utilizzare le ultime e le più grandi quando si presenta la necessità. Di solito basta sapere cosa c'è là fuori. Ad esempio, fino a poco tempo fa la mia conoscenza della programmazione web era vintage alla fine degli anni '90, ma quando volevo costruire un sito web per mio fratello, ne sapevo abbastanza da controllare tecnologie "newfangled" come CSS, jQuery e sistemi di gestione dei contenuti, ed era abbastanza fino alla velocità tra un paio di settimane. In altre parole, se non hai avuto bisogno di qualcosa negli ultimi 10 anni, è improbabile che tu abbia un'emergenza dove vorresti essere in grado di accelerare in questo momento.

Infine, essere un genitore è davvero un grande impegno, ma meno tempo di quanto sembra pensare un sacco di persone senza figli. I genitori riescono ancora a leggere libri, guardare la TV, giocare, navigare sul Web e persino prendere lezioni occasionalmente. Shocker, lo so. Lo fai solo in porzioni più piccole e fai priorità. L'unica cosa che ho rinunciato completamente è guardare le repliche.

    
risposta data 29.03.2011 - 18:05
fonte
3

Posso assicurarti che le persone che mostrano scarse capacità di programmazione dopo dieci-quindici anni non hanno mai veramente interiorizzato lo sviluppo del software. La padronanza di un set di strumenti non equivale a padroneggiare l'arte dello sviluppo del software.

Scrivo codice da oltre trent'anni. Ho attraversato diversi periodi in cui ho dovuto mettere la mia carriera sul pilota automatico a causa di obblighi e / o interessi. Ciò che si deve imparare a fare come un tempo è evitare di saltare su un carrozzone tecnologico in anticipo. La maggior parte delle tecnologie non riesce a vivere fino alla loro campagna pubblicitaria. Come praticante più anziano con obblighi al di fuori del lavoro, bisogna essere avari con il proprio tempo. Un professionista esperto può permettersi di aspettare un paio d'anni prima che una nuova tecnologia maturi perché ha già padroneggiato l'arte dello sviluppo del software.

    
risposta data 29.03.2011 - 16:57
fonte
2

Durante i miei anni di esperienza:

  • Le lingue sono cambiate (di solito relativamente lentamente).
  • La gamma di problemi che possono essere praticamente risolti è cresciuta (un po 'più veloce);
  • La dimensione e la complessità delle soluzioni è aumentata (relativamente rapidamente);
  • C'è stato qualcosa che è flavor of the day (a volte buono, spesso cattivo)

Come notato in una discussione sui modelli, la banda di quattro non ha inventato modelli. Sono venuti fuori con la terminologia e modelli per soluzioni che sono già stati applicati.

A differenza di molti altri campi, c'è ancora molto che non è una pratica comune. Ho visto molte cose all'avanguardia andare e venire. Molti di questi erano riformulazioni di tecniche già in uso, e quelle in genere riuscivano in una certa misura. Altri sono più o meno andati via, e la maggior parte dove nuovi approcci. (Qualcuno ha visto una lingua di quinta generazione ultimamente?)

I programmatori che ho visto che sono più efficaci possono selezionare e assemblare componenti provati in una soluzione funzionante. Questo raramente comporta qualcosa di all'avanguardia, che generalmente aumenterebbe il rischio del progetto. La possibilità di costruire sul lavoro che è già stato fatto, ci consente di aumentare la portata di ciò che è possibile.

I linguaggi di programmazione tendono a cadere in relativamente poche famiglie. La familiarità con una lingua in una famiglia facilita il lavoro con lingue simili. Comprendere le librerie disponibili nella lingua e sfruttarle può aumentare notevolmente la produttività e l'affidabilità. In generale, sceglierei una lingua più vecchia con librerie appropriate su una lingua più recente senza librerie appropriate.

Quando si applicano le nuove tecnologie è importante evitare la sindrome di Because We Can . Aggiungere una nuova tecnologia perché è il sapore dell'anno, tende a causare più problemi di quanti ne risolva. Sapere quando la tecnologia risolverà un problema reale e quando aggiungerà solo complessità è un'abilità utile.

Un programmatore davvero bravo risolverà i nuovi problemi e userà le soluzioni esistenti per il resto. Poche aziende hanno bisogno di tecnologie all'avanguardia, tutti hanno bisogno di solide soluzioni.

Di solito mi pento di aver fatto scivolare la lama del rasoio. Non ricordo di essermi mai pentito di usare una tecnologia collaudata. Tuttavia, gran parte di ciò che è descritto come new è il riconfezionamento di qualcosa esistente. Di solito, questo riconfezionamento rende le cose più facili da capire e applicare in modo appropriato.

    
risposta data 29.03.2011 - 18:16
fonte
2

Nessuno può tenere il passo con tutto. Probabilmente sei stato piuttosto impegnato a stare al passo con l'offerta di Microsoft. Hai guardato Ruby su RAILS e database Python e NoSQL e Hadoop e la creazione di app mobili e CSS e HTML5 e jQuery e ExtJS e ...?

Sono nel software da un po 'di tempo. Cerco di stare al passo con una tecnologia davvero nuova, come le nuove idee per database massivamente paralleli, e di ignorare il brutto (ad esempio MFC, WinForms, SOAP, XML, EJB) e il più banale possibile. Per lo più vediamo grandi idee vecchie riconfezionate e finalmente adottate. Programmazione funzionale? Stavo usando INTERLISP nel 1977. App per telefoni cellulari? È la stessa grafica guidata dall'evento e 2D che stiamo facendo da almeno 30 anni. Certo, c'è un'arte per progettare un'app utilizzabile per un piccolo touch screen, ma la programmazione non è affatto nuova.

    
risposta data 27.01.2012 - 19:49
fonte
1

Sono d'accordo con @Amir che la tua abilità è la risoluzione dei problemi, non il tuo dominio Lanaguage, ma apprezzo la tua preoccupazione, quindi:

Se hai la libertà di scegliere la tua lanaguage attuale, scegline una che sia il più vicino possibile ai primi prototipi (cioè una lanaga di tipo C ++) in modo che quando il tuo lavoro spinge in un nuovo dominio la curva di apprendimento è inferiore sono solo astrazioni sopra di te. Se al momento investi solo in linguaggi di alto livello spostando un'astrazione è molto più difficile (anche se solo nella percezione).

Se non hai quell'alimentazione, usa semplicemente le tue 8 ore di lavoro. Se la tua passione è alta, non rimarrai "bloccato" e troverai sempre problemi interessanti da risolvere con la volontà naturale di guidarti per saperne di più.

    
risposta data 29.03.2011 - 15:54
fonte
1

Dipenderà dal tuo lavoro e dai lavori che desideri. Ci sono posizioni in cui gli sviluppatori stanno ancora utilizzando tecnologie obsolete. Ancora un sacco di COBOL per andare avanti (sono sicuro che qualcosa è cambiato.).

Lavorare in un'azienda che fa un cambiamento importante come quello che hai descritto può mettere alcune persone senza lavoro. A volte l'azienda fa un investimento nell'ottenere la formazione, invece richiede di apprenderla nel proprio tempo.

Avere una famiglia può limitare le tue scelte lavorative. Puoi renderti meno mobile. Puoi iniziare a lavorare per metà del tuo salario nella speranza di un grande giorno di paga - magari non con figli e mutui.

Più recente non è sempre migliore e molti non durano.

    
risposta data 29.03.2011 - 16:30
fonte
1

Non sono in campo medico, ma che ne dici di un'analogia tra uno sviluppatore e un medico? Entrambi i campi hanno visto enormi cambiamenti negli ultimi 20 anni e il ritmo del cambiamento è sempre più veloce. Tutti i dottori tengono il passo? No. Tutti gli sviluppatori tengono il passo? No. Puoi fare una generalizzazione su sviluppatori o dottori con 14-15 anni di esperienza? Più esperienza significa avere un maggior numero di risposte a problemi simili. Esperienza trump interesse? Non a lungo termine.

Pensa come uno squalo che deve continuare a nuotare o nuotare. Continua a studiare o muori (o vai in management, che è il posto dove la maggior parte va come la linea di carriera dello sviluppo raggiunge a circa 10-15 anni).

    
risposta data 30.03.2011 - 05:00
fonte
0

Ho le stesse preoccupazioni nel retro della mia mente, ma il mio pensiero recente su questo è smettere di cercare di prevedere la tua capacità di adattamento e di adattarmi. Trovo che se presumo di poter tenere il passo, di solito lo faccio. Se mi preoccupo di diventare obsoleto, ciò può renderlo una profezia che si auto compie.

Come hai detto, rimani sulla punta dei piedi. E se non riesci a tenere il passo, non preoccuparti troppo. La tecnologia ha un modo divertente di girare intorno al punto di partenza, e potresti ritrovarti immediatamente nel mainstream a esibirti in modo eccellente.

    
risposta data 27.01.2012 - 19:04
fonte

Leggi altre domande sui tag