Perché gli sviluppatori devono tenersi aggiornati con tecnologie e metodologie? [chiuso]


28

Mi viene sempre dato il consiglio di cui gli sviluppatori hanno bisogno per rimanere aggiornati con le ultime tecnologie: cose come webrtc, aggiornamenti su html5 e css3 e nuove librerie js, metodologie software come TDD, DDD e BDD.

La domanda è: perché ? Perché dobbiamo aggiornarci costantemente? Non possiamo semplicemente attenerci a ciò che sappiamo e migliorarci?


16
Nello sviluppo del software, c'è una spinta a fare entrambe le cose: conoscere alcune tecnologie in profondità e tenere il passo con le nuove tecnologie in continua evoluzione. Questo è in parte il motivo per cui è così difficile trovare buoni sviluppatori.
joshin4colours,

2
Per affrontare i voti stretti finora, penso che sia una domanda giusta e non riesco a trovare un duplicato esatto sul sito. Per favore, cerca di tenere d'occhio le risposte scadenti in modo da poterle ripulire.
maple_shaft

4
Non riesco a capire perché i programmatori come classe debbano "rimanere aggiornati" con le ultime novità della "tecnologia web" per qualunque cosa entrambi questi concetti significhino effettivamente nella pratica. Una mente curiosa e un apprendimento continuo sono certamente fondamentali per la crescita personale in qualsiasi professione, ma il falso dilemma che presuppone che la "tecnologia web" sia l'unico asse per la crescita personale rende questo un po 'troppo carico di una domanda per i miei gusti. Guardando criticamente le risposte più votate: qualcuno di loro risponde alla domanda oltre a offrire banalità di incoraggiamento e slogan motivazionali per "rimanere in gioco"?
bmike

1
@bmike: sono d'accordo con te: ovviamente una mente curiosa vorrà imparare cose nuove continuamente. In questo caso, nuove cose significano qualcosa che non conosci, che potrebbe essere un linguaggio di programmazione interessante che esiste da 40 anni o più (ad esempio Lisp). L'industria ci spinge ad aggiornare e a considerare le ultime novità interessanti, più efficaci per impostazione predefinita. Il mio punto principale: apprendere una tecnologia che non ti serve solo perché è nuova è una perdita di tempo.
Giorgio,

1
@RobertHarvey Non è come se la domanda fosse "Come?" o cosa?" come quello sarebbe NC. Si sta chiedendo PERCHÉ e personalmente ritengo che sia pertinente e responsabile.
maple_shaft

Risposte:


42

Le nuove tecnologie emergono per un motivo. Di solito questa ragione è perché sono più efficienti o potenti nel compiere un determinato compito.

C'è ancora valore da tenere nel rimanere con la vecchia tecnologia per il bene dei sistemi legacy, ma quando alla fine raggiungeranno la fine della loro vita sarai dietro il gioco.

A parte le ragioni di business, l'apprendimento costante delle nuove tecnologie ti tiene sempre aggiornato e ti aprirà gli occhi su diversi modi di affrontare i compiti, anche nelle vecchie tecnologie e così via, e così via.


3
+1: l'apprendimento di nuove tecnologie è spesso utile, anche se non si applica mai direttamente quella tecnologia: nuove viste e prospettive che ha fornito possono certamente essere applicate usando la "vecchia" tecnologia.
Joachim Sauer,

7
D'altra parte, saltare ad ogni nuova tecnologia può anche essere controproducente, perché molti di loro scompaiono velocemente quanto affiorano.
Gordon Bell,

@GordonBell - Vero ... Non posso parlare per nessun altro, ma di solito non collaudo le acque con nuove tecnologie finché non mostrano almeno segni o potenzialità di diventare più "mainstream" - il che porta i benefici di molti documentazione per aiutare l'educazione e una base di utenti ecc.
Anonimo

Spesso sorgono per soddisfare le esigenze del mondo accademico, ma non nel mondo reale. Devi scrivere la tua tesi su qualcosa .
dbracey,

@dbracey: Giusto, e venti anni dopo alcune grandi aziende possono trovare questa tesi che nel frattempo i ricercatori hanno sviluppato una tecnologia matura e hanno iniziato a venderla come nuova tecnologia .
Giorgio,

27

Anche se è certamente possibile costruire una carriera su un singolo stack tecnologico se si è fortunati 1 , è quasi una certezza che la tecnologia cambierà più di una volta durante il periodo in cui si è impiegati con profitto. Puoi (e dovresti) migliorare ciò che già conosci, ma apprendere nuove cose in anticipo ti aiuterà a ridurre la curva di apprendimento quando il prossimo cambiamento tecnologico arriverà nel tuo angolo del settore.

C'è anche un lato meno apparente: l'apprendimento di cose nuove molto spesso ti aiuta a vedere le cose che già conosci da una prospettiva diversa, allo stesso modo in cui l'apprendimento di una nuova lingua ti aiuta a imparare più cose sulla tua lingua corrente 2 .

Infine, un puro valore di intrattenimento nell'imparare cose nuove non deve essere sottovalutato: per me, è meglio guardare la TV a mani basse.


1 Ad esempio, selezionando COBOL su PL / I all'inizio della tua carriera nel 1965.

2 Funziona allo stesso modo con i linguaggi naturali e di programmazione.


1
+1 @dasblinkenlight Adoro questa affermazione: "... apprendere nuove cose in anticipo ti aiuterà a ridurre la curva di apprendimento quando il prossimo cambiamento tecnologico arriverà nel tuo angolo del settore." Questo è il motivo per cui sto imparando Opa ora
Anthony,

12

Non possiamo semplicemente attenerci a ciò che sappiamo e migliorarci?

È possibile , ma è davvero facile cadere nella trappola di non voler imparare qualcosa di nuovo. Le tue prospettive di lavoro diminuiscono, i tuoi compagni di squadra smettono di voler lavorare con te perché sei "quel programmatore che è completamente fuori dal mondo".

Principalmente, è necessario mantenere un equilibrio. Cercare di imparare tutto ciò che è nuovo per tutto il tempo ti porterà ad essere povero in molte cose, percepito come un armeggiare volubile. Impara bene alcune cose e concentrati almeno sulla conoscenza di ciò che esiste, anche se non puoi usarlo in modo efficace.


2
Niente mi fa più infuriare sul lavoro, che dover essere bloccato in una squadra con un programmatore che scrive codice come ha fatto 10 anni fa. I quadri si sono evoluti. Gli strumenti si sono evoluti. Non vuoi semplificare il tuo lavoro? Non vedi i carpentieri che usano i trapani a manovella e le seghe per tutto il giorno quando ora hanno utensili elettrici. Si sono evoluti. E come ogni professione vengono inventati nuovi strumenti per risolvere i bisogni. Non usare il nuovo strumento e cercare di hackerare qualcosa insieme alla vecchia maniera è di solito dannoso per la qualità di ciò che viene costruito. Sia nel codice che nel legno.
CaffGeek,

2
"I framework si sono evoluti. Gli strumenti si sono evoluti. Non vuoi semplificare il tuo lavoro?": Esistono infiniti modi per risolvere determinati problemi e talvolta un nuovo strumento o linguaggio non è migliore ma è equivalente a quello precedente. Ma hai molta più esperienza con quello vecchio in modo da poter essere più produttivo con esso. Assumiamo troppo spesso che NEW == MIGLIORE. Invece, dovremmo sempre contestare questa affermazione.
Giorgio,

2
@Giorgio - Una cosa è avere un sano scetticismo su "la prossima grande cosa". È un altro per mettere la testa nella sabbia mentre i veri progressi ti passano accanto. Il secondo è troppo comune.
Telastyn,

4
@Telastyn: assegnerei il 50% ad entrambi gli atteggiamenti: a volte ho l'impressione che una nuova tecnologia venga spinta solo perché è nuova. Ed è solo un modo alternativo (non un migliore) di fare le cose. Quindi dobbiamo passare mesi a diventare esperti con la nuova tecnologia e successivamente siamo di nuovo produttivi come una volta con la vecchia. Ma, naturalmente, hai ragione sul fatto che mettere la testa nella sabbia è anche sbagliato e bisogna sempre fare attenzione alle cose nuove.
Giorgio,

@Giorgio, come fai a sapere se il nuovo modo è migliore o no se non lo conosci o non lo provi?
CaffGeek,

7

Beh, probabilmente è dovuto al fatto che sei uno sviluppatore web e le tecnologie in quel campo sono molto volatili con lingue, piattaforme, strumenti e metodologie che aumentano e diminuiscono di popolarità. È un campo di altissimo livello. Se uno degli strati sottostanti viene modificato, ciò cambia la posizione in alto. E, francamente, è nuovo (ish). I nuovi campi hanno molto spazio per l'innovazione.

Personalmente, lavoro su dispositivi embedded, ho imparato C e per me ha funzionato abbastanza bene.

Ma sto ancora imparando cose nuove su base abbastanza regolare. Socket, librerie SQL, ncurses, oggetti in C. E le metodologie sono liberamente legate alle tecnologie. I test unitari sono stati insegnati in modo orribile nella mia scuola e proprio ora mi sto avvolgendo la testa. L'altro giorno ho sentito parlare dell'iniezione di dipendenza e ho capito che era esattamente così che ho risolto il mio ultimo problema con il test dell'unità su una funzione console.

La maggior parte dei programmatori non sono operai che fanno la stessa cosa ogni giorno. Tali lavori possono (e dovrebbero) essere automatizzati. Nessuno paga per l'ennesima implementazione bubble-sort. È stato fatto.


+1: buona risposta. Uno dovrebbe imparare le tecnologie di cui ha bisogno o trova utili. Le nuove tecnologie sono importanti e bisogna guardarsi intorno per sapere cosa sta succedendo. Ma NEW non dovrebbe essere l'unico criterio per scegliere ciò che apprendiamo. Inoltre, se C soddisfa le tue esigenze di programmazione, concordo sul fatto che può essere un buon linguaggio con cui lavorare, anche se esiste da molto tempo.
Giorgio,

Ciò sottolinea anche che le nuove tecnologie sono spesso più strati rispetto alle tecnologie esistenti. In che cosa è implementata la tua VM? C o C ++.
dbracey,

L'iniezione di dipendenza è solo un nuovo nome per un'idea molto antica.
MarkJ,

6

Direi che puoi ignorare molto di quello che c'è là fuori. Gran parte di esso è hype e moda e nuovi nomi per la vecchia tecnologia. I veri progressi saranno presto sostituiti da quelli ancora più nuovi che non dipendono realmente da quelli vecchi, anche se i vecchi timer dicono che dovresti capire quelli vecchi per capire il nuovo. Se lasciassi il campo per 10 anni, quando torni saresti solo 2 anni indietro.

Detto questo, individuare la vera nuova tecnologia può essere complicato. Sono contento di non aver perso OOP, ma all'inizio sembrava solo una manciata di parole d'ordine. E spesso devi usare la tecnologia attuale per fare un lavoro, anche se tutti lo dimenticheranno tra 3 anni.

La confusione e la confusione della tecnologia software moltiplica il cambiamento che dobbiamo affrontare quotidianamente. Ma la tecnologia elettronica sta avanzando rapidamente e sta spingendo il software insieme ad essa. Ci sono molti cambiamenti reali là fuori. Stiamo ancora guidando le macchine, pilotando gli aerei e andando nello spazio con gli stessi veicoli che abbiamo usato nel 1965. Ma l'hardware elettronico del 1995 è irrimediabilmente obsoleto.

Quindi la risposta profonda alla tua domanda è che gli scienziati e gli ingegneri che lavorano con l'elettricità sono stati molto impegnati. Il software deve evolversi per sfruttare l'hardware. Peggio ancora (o meglio - meglio?), Penso che il software sia stato lasciato indietro dall'hardware. Se domani tutti gli hardware si ritirassero, il software si evolverebbe furiosamente per i prossimi due decenni.

Se hai bisogno della nuova tecnologia per fare un lavoro, devi impararla. Se c'è una possibilità che sia una nuova tecnologia che sarà ancora qui tra 20 anni, devi tenerla d'occhio - e se guardi 20 tecnici che muoiono per ognuno di quelli che vivono, stai andando abbastanza bene. E in realtà puoi ignorare tutto il resto. Fatta eccezione per quel po 'di fumo evidente che sarà alla base di tutto il software degli anni '20.


+1: sono d'accordo con te per quanto riguarda l'hype. Molta innovazione è (purtroppo) pubblicitaria e dovremmo scegliere le nuove tecnologie sulle quali dedichiamo molto tempo. Uno degli hypes del momento è lambdas (che, a proposito, considero un concetto molto utile): ogni linguaggio moderno deve averli (C #, C ++, Java?) Altrimenti non è più bello! Ma i lambda esistono da 50 anni e a nessuno importava quando queste lingue furono inizialmente progettate. Ora vengono aggiunti come ripensamento solo per seguire l'hype più recente. ;-)
Giorgio,

@Giorgio: spero non Java. Le lambda sono un buon esempio (anche se più semplice e quindi meno problematico di alcune). Li uso in C # e li adoro, ma l'unica persona che rimpiangerà di non sapere cosa sono è la persona a cui è stato appena detto di correggere il codice che è pieno di loro.
RalphChapin,

Cosa intendi con "Spero non Java"? Che non saranno introdotti? Mi piace e uso i lambda (in Scheme, Haskell): sono un concetto abbastanza semplice. Ma in C #, C ++ e Java mi sembrano un'aggiunta tardiva che in qualche modo non si adatta al resto del linguaggio. Dubito che gli inventori non conoscessero il Lisp ma decisero che le lambda non appartenevano a queste lingue. Ora sono diventati un must. Quindi, mi piace molto lambda, ma in C #, C ++ e Java sembrano solo un clamore che viene utilizzato per vendere nuovi compilatori, libri e così via.
Giorgio,

1
@Giorgio: Java è (o era) un linguaggio piuttosto minimalista. Non hai bisogno di sapere molto (lambda, per esempio) per capire cosa ha scritto qualcun altro. Mi piace. C # è un linguaggio massimalista. Ogni nuova linea può introdurre la tecnologia che non hai mai visto prima. Scrivere è un'esplosione, meno leggere. Nessuno dei due ha bisogno di lambda, sebbene aiutino più in C # di quanto non farebbero in Java per motivi di sintassi. Ma sono fantastici e salvano un paio di righe di codice. In altre parole, hai ragione. Ma questo è C #, non Java. Ancora.
RalphChapin,

1
@iconoclast: con 20 anni di esperienza come programmatore, non mi considero un principiante. Tuttavia, il fatto che Java sia (era) un linguaggio relativamente semplice e pulito mi rende più produttivo (posso sviluppare software più complessi con meno sforzo). Penso che sia un'idea sbagliata che un linguaggio semplice sia per i principianti: un linguaggio semplice consentirà a qualsiasi programmatore con qualsiasi grado di esperienza di concentrarsi maggiormente su determinati aspetti dello sviluppo (ad esempio gestione di un'architettura complessa, refactoring) perché trascorrono meno tempo a trattare con altri aspetti (ad es. gestione della memoria, sintassi criptica, ecc.).
Giorgio,

3

IMHO, devi trovare un equilibrio. Ciò richiede abilità ed esperienza.

Devi trovare una o due lingue in cui sei specializzato, tenerti aggiornato sui cambiamenti di struttura / stile che si evolvono in questa lingua e mantenere le tue abilità di prim'ordine.

Ma devi anche vedere come si evolve questo linguaggio e capire le dinamiche dello sviluppo del software nel suo insieme. Java sarà in giro tra 10 anni, Phyton rimarrà, PHP verrà sostituito con .NET e Mono?

Queste sono domande strategiche su larga scala, le risposte alle quali ti permetteranno di diventare un professionista di grande valore nel tuo campo, pur avendo un solido backup (1 o 2 lingue) e sapendo quando passare dalla tua piattaforma principale.

IMHO, seguendo tutti i linguaggi moderni che vengono sviluppati ogni giorno è uno dei maggiori problemi per l'intero settore. Abbiamo un sacco di lingue non sviluppate e senza vicoli ciechi con quasi nessun professionista, e le persone che perdono tempo su di esse sono raramente veri professionisti anche in 1 lingua. Principalmente scrivono codice che è un mix di tutte le lingue e non fa nulla di giusto. Allo stesso tempo, una quantità di anni-uomo sprecata in queste lingue non standard potrebbe essere spesa per migliorare alcuni quadri e specifiche linguistiche di base.


2

Come altri hanno sottolineato, molte nuove tecnologie emergono per rispondere a nuove esigenze e quindi semplificano la risoluzione di determinati problemi. Pertanto, dovresti tenerti aggiornato e almeno sapere cosa sta succedendo nel tuo campo e capire quali nuove tecnologie sono rilevanti per te.

D'altra parte, penso che a volte ci sia anche un fattore di hype in alcune innovazioni: alcune idee sono estremamente vecchie ma solo negli ultimi anni sono state spinte a diventare mainstream. A volte ho l'impressione che venga spinto un nuovo linguaggio di programmazione (o una sua nuova versione) solo perché "nuovo è meglio" e una nuova tecnologia significa nuovi libri, nuovi strumenti di programmazione, nuovi compilatori, nuovi corsi di programmazione o, in altre parole, reddito.

Quindi può succedere che devi imparare una nuova tecnologia senza vedere alcun reale vantaggio rispetto alla tecnologia che hai usato prima, altrimenti rischi di essere fuori dal mercato perché le tue abilità sembrano vecchio stile . Spetta a te seguire lo sviluppo di nuove tecnologie e cercare di capire quali possono renderti più produttivo e quali sono solo convenienti per rendere migliore il tuo CV.

In conclusione: penso che dovresti provare a imparare ciò che ritieni davvero utile, indipendentemente dal fatto che sia nuovo o vecchio.


2

Perché "attenersi a ciò che sai" rappresenta un fallimento nel "migliorarsi". Non devi adottare ogni nuova pratica e quadro che si presenta, ma dovresti almeno avere un'opinione informata su quelle popolari. Nello sviluppo web, solo porre la domanda sarebbe orribile per un intervistatore. Lo sviluppo web è disseminato di cadaveri di persone che volevano smettere di imparare nuove cose dopo il 2000 ed è come dovrebbero essere perché fanno più lavoro per il resto di noi. Stai lontano dagli sviluppatori se non ti interessa. È un pessimo rapporto $ / ora se la parte in cui apprendi nuove cose sembra funzionare.


Perché "attenersi a ciò che sai" rappresenta un fallimento nel "migliorarlo". Un modo per leggerlo è che attaccando la stessa tecnologia più a lungo si ottiene una conoscenza più approfondita di esso, mentre saltare da una tecnologia al prossimo ogni due o tre anni ti permetterà solo di avere una conoscenza superficiale, cioè non avrai mai familiarità con nessuno di essi.
Giorgio,

Non capirei JavaScript come faccio se non mi fossi ramificato un po 'e lo capissi dal punto di vista di come funzionano effettivamente le altre lingue o tenevo d'occhio le nozioni attuali di buone pratiche e esploravo ciò che le persone stanno effettivamente facendo il cappuccio dei loro quadri e librerie. Non penso che sia davvero possibile migliorare come sviluppatore a un ritmo ragionevole in termini di carriera senza una regolare esposizione a nuove idee.
Erik Reppen,

Reppen: sono totalmente d'accordo con te su questo.
Giorgio,
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.