Come affrontare 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 stare bene.

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

Potresti sostenere che le basi non cambiano mai, ma sembra fare la differenza quando stai programmando su Delphi per 10 anni e improvvisamente tutti usano il framework .NET. E 'vero che uno sviluppatore esperto vorrà meno tempo per imparare un nuovo quadro, ma ancora fa ora la domanda e fatica.

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


1
Cosa, non pensi di poter gestire una Singolarità? Qualsiasi bravo sviluppatore può farlo! - scherzando, non ascoltarmi ...
Klaim

Risposte:


30

Qualcosa che hai detto si è distinto: "Vedo regolarmente molti anziani con un'esperienza di 14-15 anni ... adesso fanno schifo alla programmazione". Questa è una pennellata piuttosto ampia che stai usando per dipingere persone con esperienza. Vorrei 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 cattive idee. Eppure ogni nuova generazione di praticanti sembra voler ripetere quegli errori. Questo fenomeno è comune a tutte le professioni, non solo alla programmazione.
  • Non tutte le persone che hanno lavorato per un certo numero di anni sono esperte, mature o buone. Ci vuole sforzo per migliorare. Molti sforzi fatti quando sei più giovane costruiscono un buon corpus di esperienze da cui puoi attingere in seguito.

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

È vero, tuttavia, che quando inizi una famiglia hai molto meno tempo per stare al passo con i nuovi giocattoli. In realtà hai meno tempo quando i tuoi figli invecchiano di te quando sono più giovani. I giocattoli non ti rendono un programmatore migliore. Né gli strumenti. Ciò che ti rende buono è la capacità di abbattere i problemi e costruire una soluzione funzionante. Ciò che ti rende grande è la capacità di insegnare agli altri ad essere buoni. Ecco dove l'esperienza inizia a brillare.


1
Ti interessa elaborare il downvote? Potrebbe non piacerti quello che ho detto, ma è vero.
Berin Loritsch,

4
La percezione che ha è una grande parte del suo enigma. Tutto quello che ho fatto è stato gestire direttamente quella percezione. Insomma, io sono più interessato alla caccia strumento di me la sua capacità di diventare un stagionato buon sviluppatore. Potrebbe persino diventare grande . Questo non accadrà se tutta la sua esperienza gli dice che gli sviluppatori più anziani fanno schifo. È un terribile demotivatore da mettere nello sforzo di arrivare dove vuole essere.
Berin Loritsch,

1
@Berin Loritsch: Questo è un punto giusto. Il tuo intento era buono. // Negli Stati Uniti, troppe persone si inciampano per sgridare gli altri per aver fatto una generalizzazione. Ho fatto un'eccezione alla tua risposta perché mi sembrava che stessi facendo questo.
Jim G.

1
Spero che ciò che imparerai nel tempo sia quando investire tempo nell'apprendimento di nuove tecnologie e quando ignorarle. In conclusione, il tempo è una risorsa preziosa. Quando è uscito per la prima volta SOPC / XML RPC, era troppo presto per dire cosa avrebbe fatto davvero. Ora con alcuni anni sulle cinture abbiamo imparato alcune lezioni dolorose e modificato l'approccio con i servizi basati su REST. Inoltre, noi vecchi abbiamo bisogno dei giovani con energia illimitata per capire cosa vale la pena dedicare tempo all'apprendimento. Potremmo essere un po 'più lenti a premere il grilletto, ma non ci vuole molto per metterci al passo.
Berin Loritsch,

2
@Berin Loritsch: Forse ora capisco. In effetti, ho visto alcuni anziani (incluso il mio attuale capo) che scuotono semplicemente quando si tratta di risolvere i problemi. Non salta di gioia quando dico che puoi fare X facilmente usando questo framework ma non ha paura di usarlo quando vede che è effettivamente utile. Quindi forse altri anziani che non sono buoni, non sono buoni perché non lo sono mai stati. Non perché sono fuori dal mondo a causa delle nuove tecnologie. Adesso mi sento molto meglio. (Spero che ciò che ho scritto abbia un senso)
Hemant,

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, l' abilità analitica è la qualità più importante che conosco. È come imparare la matematica. È semplicemente senza tempo.


1
Sì, oltre alla capacità / onestà di sapere quando i tuoi strumenti / competenze disponibili non risolvono il problema. Quindi vai a imparare alcune cose nuove e poi torni a "capacità di risolvere il problema".
Peter Rowell,

1
eh ... Questo è un po 'vago e, a proposito, è un po' un copout. Se uno sviluppatore è ancora perfettamente felice di "risolvere i problemi" in vb6 ... beh, non voglio davvero lavorare con il loro codice. Rimanere aggiornati non è prevedere il futuro, richiede tempo / lavoro e ci sono meno opportunità quando si ha una famiglia.
Steven Evers,

5

Vorrei avere un pensiero positivo o concreto, ma penso che un programmatore si tenga aggiornato e che l'equilibrio tra lavoro e famiglia varia enormemente da programmatore a programmatore.

Pensieri a caso:

  • Non tutti i progetti o le società di software necessitano della tecnologia più recente, nemmeno nel software. Il cambiamento è più drammatico al limite: le aziende che corrono leggermente dietro il margine hanno spesso molte opportunità di crescita e cambiamento, ma non la diffusa e urgente richiesta immediata di cambiamenti costanti.
  • Più un programmatore ha esperienza, più dovrebbe essere in grado di sfruttare l'esperienza al posto dell'ultima / migliore parola d'ordine. Ho notato che le persone che ammiro di più con oltre 20 anni nel settore hanno tonnellate di metafore per come l'ultima cosa di C # sia la risposta perfetta al problema che hanno avuto alla fine degli anni '80 con C. Sfruttando i problemi e le soluzioni precedenti, hanno portare più comprensione al tavolo con meno ricerche.
  • Ogni volta che ho dovuto valutare i programmatori nella squadra, la capacità di fare le cose e giocare bene con gli altri ha superato la gamma di tecnologie con cui il programmatore è arrivato al lavoro. Sebbene il settore evolverà in molti, concorrenti, nuove lingue, API e strumenti, è probabile che il progetto utilizzi solo concorrenti alla volta. Ma fare le cose e aiutare gli altri a fare lo stesso non passa mai di moda e il modo in cui si fa si evolve molto più lentamente - non che IM, social media, smartphone e tutto il resto nell'era digitale non stiano cambiando quell'aspetto della programmazione , pure.

Può anche essere interessante lavorare in un'azienda che corre un po 'più indietro rispetto al limite massimo, diciamo 3-4 anni. Puoi vedere più chiaramente gli errori che altri hanno fatto e avere il vantaggio di strumenti e implementazioni più maturi.
Michael K,

Sono d'accordo. In realtà lavoro un po 'dietro il limite da solo, e mi piace sapere che altri hanno battuto la testa contro di esso per un po' prima di doverlo provare. :)
bethlakshmi,

5

Innanzitutto, Microsoft si occupa della vendita di strumenti e piattaforme di sviluppo software su cui eseguire quel software. Ciò li incentiva a apportare modifiche, indipendentemente dal fatto che siano necessarie o meno. Ciò non significa che tutti i loro cambiamenti siano inutili, solo che ci sono molte aree della nostra professione che sono molto più stabili. Con l'esperienza sei in grado di discernere meglio su quali bandwagon vale la pena saltare immediatamente e quali puoi aspettare per maturare.

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

In terzo luogo, non confondere con la conoscenza obsoleta con l'incapacità di utilizzare l'ultima e la più grande in caso di necessità. Di solito è sufficiente solo 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 per controllare le tecnologie "newfangled" come CSS, jQuery e sistemi di gestione dei contenuti, ed era abbastanza per accelerare in un paio di settimane. In altre parole, se non hai bisogno di qualcosa negli ultimi 10 anni, è improbabile che tu abbia un'emergenza in cui vorresti essere al passo con i tempi.

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


3

Posso assicurarti che le persone che mostrano scarse capacità di programmazione dopo dieci o quindici anni non hanno mai interiorizzato lo sviluppo del software. Padroneggiare 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 esterni. Ciò che si deve imparare a fare con l'età è evitare di saltare presto su un carrozzone tecnologico. Molte tecnologie non riescono a essere all'altezza del loro clamore. Come praticante più anziano con obblighi al di fuori del lavoro, bisogna essere avari con il proprio tempo. Un professionista con esperienza può permettersi di aspettare un paio d'anni affinché maturi una nuova tecnologia perché ha già imparato l'arte dello sviluppo del software.


Quindi non trovi difficile rimanere aggiornato con le nuove tecnologie quando maturano?
Hemant,

1
Questo settore è ciclico. La maggior parte delle nuove tecnologie sono poco più che vecchie idee riconfezionate. Se i fondamentali di uno sono forti, non si avrà alcun problema a tenere il passo. Ricorda, non è necessario essere all'avanguardia della tecnologia per guadagnare una vita decente come ingegnere del software.
twiddler

2

Nel corso dei 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ù velocemente);
  • Le dimensioni e la complessità delle soluzioni sono aumentate (relativamente rapidamente);
  • C'è stato qualcosa che è flavor of the day(a volte buono, spesso cattivo).

Come notato in una discussione sugli schemi, la banda di quattro non ha inventato schemi. Hanno escogitato una terminologia e modelli per soluzioni che erano già state applicate.

A differenza di molti altri campi, c'è ancora molto che non è pratica comune. Ho visto un sacco di cose all'avanguardia che vanno e vengono. Molti di questi stavano riformulando tecniche già in pratica e quelle di solito 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 più efficaci possono selezionare e assemblare componenti collaudati in una soluzione funzionante. Ciò comporta raramente qualcosa di all'avanguardia, che generalmente aumenterebbe il rischio del progetto. La capacità di basarsi 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 semplifica 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 rispetto a una lingua più recente senza librerie appropriate.

Quando si applicano le nuove tecnologie è importante evitare la Because We Cansindrome. L'aggiunta di 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 utilizzerà le soluzioni esistenti per il resto. Poche aziende hanno bisogno di tecnologie all'avanguardia, tutte hanno bisogno di soluzioni solide.

Di solito mi pento di essere scivolato lungo la lama del rasoio. Non ricordo di essermi mai pentito di aver usato una tecnologia collaudata. Tuttavia, molto di ciò che viene descritto newè il riconfezionamento di qualcosa di esistente. Di solito, questo riconfezionamento semplifica la comprensione e l'applicazione delle cose.


2

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

Sono stato nel software per un po '. Cerco di tenere il passo con una tecnologia davvero nuova, come le nuove idee per database estremamente paralleli, e ignoro il più brutto (ad esempio MFC, WinForms, SOAP, XML, EJB) e il più banale possibile. Principalmente vediamo solo grandi vecchie idee riconfezionate e infine adottate. Programmazione funzionale? Stavo usando INTERLISP nel 1977. App per telefoni cellulari? È la stessa UI guidata dagli eventi e la grafica 2D che facciamo da almeno 30 anni. Certo, c'è un'arte nel progettare un'app utilizzabile per un piccolo touchscreen, ma la programmazione non è affatto nuova.


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 il tuo linguaggio attuale, scegline uno che sia il più vicino possibile ai primi principi (cioè un linguaggio di tipo C ++) in modo che quando il tuo lavoro si spinge in un nuovo dominio la curva di apprendimento sia inferiore, poiché è solo astrazioni sopra di te. Se al momento investi solo in lingue di alto livello, spostare un'astrazione è molto più difficile (anche se solo nella percezione).

Se non hai questo feedom, fai semplicemente pieno uso delle tue 8 ore di lavoro .. se la tua passione è alta non rimarrai "bloccato", e troverai sempre problemi interessanti da risolvere che ti condurranno naturalmente a saperne di più .


1

Dipenderà dal tuo lavoro e dai lavori che desideri. Ci sono posizioni in cui gli sviluppatori utilizzano ancora tecnologie meno recenti. Ancora un sacco di COBOL per continuare (sono sicuro che qualcosa è cambiato).

Lavorare in un'azienda che fa un grande cambiamento come hai descritto può mettere alcune persone senza lavoro. A volte la società fa un investimento per ottenere la formazione invece che ti impone di impararla nel tuo tempo libero.

Avere una famiglia può limitare le tue scelte lavorative. Può renderti meno mobile. Puoi andare a lavorare in start up per metà del tuo stipendio nella speranza di un grande giorno di paga - forse non con bambini e mutui.

Le novità non sono sempre migliori e molte non durano.


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 stanno al passo? No. Tutti gli sviluppatori tengono il passo? No. Puoi fare qualche generalizzazione su sviluppatori o medici con 14-15 anni di esperienza? Più esperienza significa che hai un maggior numero di risposte a problemi simili. L'esperienza briscola interessa? Non a lungo termine.

Pensa come uno squalo che deve continuare a nuotare o morire. Continua a studiare o muori (o passa alla gestione, che è dove la maggior parte va mentre la linea di carriera di sviluppo raggiunge il picco a circa 10-15 anni).


Non sono sicuro della situazione in cui vivi, ma in Australia è necessario che i professionisti medici si impegnino nella formazione e nell'esame continui per conservare la loro registrazione (e quindi la capacità di praticare la medicina).
Sedate Alien,

0

Ho le stesse preoccupazioni nella parte posteriore della mia mente, ma il mio pensiero recente su questo è quello di smettere di cercare di prevedere la tua capacità di adattamento e adattamento. Trovo che se suppongo di poter tenere il passo, di solito lo faccio e basta. Se mi preoccupo di diventare obsoleto, questo può renderlo una profezia che si autoavvera.

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

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.