it-swarm.it

Cosa fare quando il codice inizia a sembrare noioso, come se fosse tutto più o meno lo stesso?

Ho iniziato a programmare all'età di 6 anni su un Commodore 64. Ora ho 28 anni e devo completare 4 corsi da un primo grado in Informatica.

Sto iniziando ad annoiarmi con la scrittura del codice dopo tutti questi anni. Ho seguito un corso di informatica in linguaggi teorici e 10 anni di codifica del sistema C nel campo della sicurezza della rete e non ho alcun tipo di stimolo dalla scrittura del codice.

Riesco a scrivere codice in C, C++, Python o in qualsiasi lingua tu voglia, ma non riesco ad eccitarmi per quello che sto facendo. Non riesco a sentire nessuna sfida. Ho scritto codice multi-thread, proxy MITM HTTPS e un'applicazione WSGI senza la necessità di competenze specifiche sugli algoritmi.

Sento che tutte queste nuove cose sono tutte uguali, con astrazioni o automazione più semplici (o più), ma a me sembra tutto uguale. Ancora e ancora. Il linguaggio calcolabile è tutto calcolabile di Turing, quindi la codifica è solo una replica di un modello simile in questo sottoinsieme di una funzione parziale.

Nel mio lavoro quotidiano mi sento annoiato anche quando cerco bug, faccio benchmark sul codice o risolvo il problema con la libreria X, Y, Z.

Sono una persona molto curiosa. Sono sempre stimolato da qualcosa. Ma non posso nemmeno quando guardo un ottimo codice. Mi sento più a mio agio nel modo in cui funzionano le cose.

È tempo di fare un progresso nella mia carriera? O di ottenere cose più impegnative in Informatica? Forse ottenere una laurea in CS?

Ho iniziato a leggere il mio primo libro sulla gestione del progetto "Peopleware" e mi sto interessando di più al ciclo di vita dello sviluppo del software. Cosa suggerisci di fare?

Forse cercando di entrare in Google o Microsoft o Apple come hanno fatto alcuni miei amici. O forse un percorso di carriera più manageriale. Ho anche cercato di trovare un buon libro sulle regole di comunicazione e "persone personalità "per prepararmi alla possibilità di entrare nella gestione.

Eventuali suggerimenti?

PS: Ho molto interesse, non sono depresso :) Adoro la montagna, il trekking, scattare foto e sono un arrampicatore sportivo, amo nuotare e fare sport in generale, a volte Io corro, in realtà sto leggendo un libro sulla storia del mio paese (Italia) dall'AC ad oggi e adoro i viaggi (questa estate ho fatto 4000Km per vedere un sacco di posto in Spagna e arrampicarci in esso, tutto in sole 3 settimane , non una vacanza ma una maratona, 24 km di trekking mi hanno fatto male all'ernia), adoro il teatro e la vita in generale.


Grazie a tutti, pensare a tutte le risposte mi dà l'opportunità di rendere più chiaro il mio percorso.

Per uno scopo di sintesi possiamo generalizzare sulla risposta più votata.

Prima di tutto, le persone votano necessità per rendere il nostro lavoro un supporto per la tua vita e non l'unica ragione per rimanere nella vita (questo non è il mio caso), quindi, se solo ragionassi della vita se si lavora si arriva rapidamente a una situazione davvero depressiva. Come dice peopleware, Vienna non ti aspetta :)

Dopo questo promemoria, le persone suggeriscono di:

  • aumentare la complessità tecnica su cui sto attualmente lavorando per aumentare la sfida e annoiarmi meno.
  • cambiare il campo di competenza in un campo non tecnico cercando di diventare un manager o fare qualche passo avanti in un campo non tecnico relativo al tuo lavoro.
  • cambiare il campo di competenza in un altro tipo di sfida tecnica, sei un programmatore di sistema? cerca di diventare meno annoiato nello sviluppo di applicazioni per umani, così puoi sentirti più a tuo agio nel vedere le persone usando il tuo utile software
  • fai qualche progresso nella tua laurea in informatica nel tuo percorso accademico

Per il mio scopo, la risposta giusta è avanzare nell'informatica, secondo la mia sensazione penso che la programmazione non sia l'unico modo per ottenere informatica e penso di potermi sentire meglio nel prendere un altro percorso nell'informatica diverso dall'ingegnere del software.

33
boos

Questo doveva succedere.

Se il tuo interesse principale risiede nel codice, ti farà impazzire, frustrato e depresso una volta ogni tanto, un giorno in modo permanente.

Interessati allo sviluppo di prodotti e divertiti a vedere le persone usarli. Questo è l'obiettivo finale di scrivere il codice, giusto? Il codice è semplicemente uno strumento per ottenere qualcosa di più grande.

49
user8685

Risponderò alla tua domanda con una domanda ...

Il lavoro di un programmatore è programmare o risolvere problemi?

Dici di essere annoiato perché scrivere codice sembra qualcosa che hai già fatto prima, come ogni bit di codice è già stato fatto prima.

Ma come sei arrivato alla conclusione che quel codice è il codice che dovrebbe essere scritto? La maggior parte dei problemi ha centinaia di modi per risolverlo, ma esiste un solo modo migliore.

Se non trovi davvero alcuna sfida, curiosità o interesse nel trovare soluzioni o nella risoluzione dei problemi, allora sei davvero tenuto a cambiare. Anche se non sono sicuro che sarebbe la gestione dello sviluppo del software. Non vorrei lavorare per un software manager che provasse quell'apatia per la risoluzione dei problemi. Probabilmente dovrebbe essere solo un settore diverso, con una serie diversa di problemi.

Se ami la risoluzione dei problemi ma non ami la programmazione, forse non trovi abbastanza problemi da risolvere. Ogni volta che il mio lavoro inizia a sentirsi noioso, credo che ci sia un problema da risolvere. Perché sto facendo un lavoro occupato? Quale soluzione posso trovare per rimuovere il lavoro occupato dal mio lavoro? Questa è la bellezza della programmazione.

21
Nicole

Mi sembra che tu abbia fatto un [~ # ~] lotto [~ # ~] di programmazione procedurale e mi sia stancato di questo - cosa che ho pienamente capire. Specificare passo dopo passo è più o meno lo stesso in ogni linguaggio procedurale.

Dal momento che sembra che tu abbia molte attività non lavorative, suggerirei di apprendere alcuni dei concetti che non assomigliano a ciò che conosci ora e, sì, ce ne sono molti, ma per iniziare consiglierei Haskell perché è

  • funzionale: scrivi le funzioni che hai messo insieme per creare funzioni più grandi alla fine risultanti in un programma.
  • valutazione lazy - invece di specificare passo dopo passo, il runtime estrae i valori necessari secondo necessità. Ciò significa che è molto comune gestire elenchi infiniti nei programmi.
  • pattern matching: anziché disporre di strutture if di grandi dimensioni, vengono elencati i pattern per l'aspetto dei parametri e il runtime seleziona il pattern appropriato ed esegue il codice corrispondente.

Ecco una funzione di ordinamento completa:

qsort []     = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

(Vedi http://www.haskell.org/haskellwiki/Introduction#Ease_of_understanding per una spiegazione)

Se qualcuno di questi è nuovo per te, ti incoraggio a iniziare l'avventura.

Buona fortuna buon divertimento.

9
user1249

I computer sono noiosi consumatori. Quando stai programmando interazioni macchina-macchina per tutto il giorno, la macchina reagisce sempre allo stesso modo. Buono per portare a termine il progetto, ma noioso dopo un po '. Aiuta davvero a spezzare la monotonia con qualcosa che non è direttamente correlato alla macchina.

Ho trovato ispirazione sia con la fotografia sia con lo studio dell'esperienza dell'utente. Pensaci, come è che Apple può far brontolare le persone che salivano su se stesse per la prossima cosa che esce da Santa Clara quando altri venditori ottengono una risposta tiepida? Pensi seriamente che = Android avrebbe ottenuto una risposta altrettanto grande se Apple non avesse resistito a rilasciare iPhone su Verizon per così tanto tempo? Ti darò un grande suggerimento: non è necessariamente che questi prodotti sono tecnicamente avanzati. C'è una grande componente psicologica nella mania.

Comprendere il design del prodotto e l'esperienza dell'utente è qualcosa che molti di noi hanno molto da imparare. Cosa rende qualcuno tick? Come progettate qualcosa di abbastanza interessante da indurre le persone a lasciare la soluzione consolidata? Come si crea il proprio culto della tecnologia come Apple (non che sto aspirando a diventare un leader di culto, mente te)? Queste sono tutte domande molto interessanti e stimolanti. --ma ora la tua attenzione è diversa.

8
Berin Loritsch

Probabilmente non hai abbastanza sfida tecnica?

  • Prova sistemi altamente distribuiti. Puoi facilmente codificare un sistema per raccogliere registri da 1000 computer in un cluster, con precisione in microsecondi?
  • Prova in tempo reale. Imballa tutti i tuoi processi in una rotazione di un motore.
  • Prova la visione artificiale o l'elaborazione delle immagini. Abilità matematiche, abilità da formula a codice, abilità di ottimizzazione sono tutte utili.
  • Prova AI. Vedi come il computer IBM riproduce Jeopardy? Probabilmente in questo ambito è implicata una certa sofisticazione algoritmica.

Ecc. Naturalmente, sii pronto a guadagnare inizialmente meno in un campo in cui le cose sono difficili per te, non noiose.

7
9000

Ho trovato motivazione spostandomi in un campo che non ha soluzioni "corrette", sto scrivendo strumenti editoriali e il mio lavoro è buono come gli utenti lo trovano utile. Ho incontrato molte persone non tecniche e insieme stiamo cercando di trovare modi per migliorare il software con cui devono lavorare, trovo l'interazione umana e la necessità di cambiare costantemente le prospettive in modo divertente e improvvisamente la codifica non lo è così più noioso.

So che non è per tutti, alcuni gestiscono l'insicurezza di non avere una misura obiettiva della qualità del tuo lavoro più dura di altri.

Ma è un'opzione che potrebbe valere la pena considerare.

4
biziclop

Sì, a volte ho la sensazione che uno in realtà stia scrivendo lo stesso tipo di codice ancora e ancora e ancora. Ma no, non me ne sono ancora annoiato. Perché?

Perché fondamentalmente mi piace scoprire nuovi modi di codificare e nuovi modi concisi ed eleganti per esprimere qualcosa nel codice. Esistono due modi possibili per procedere: apprendere nuovi linguaggi di programmazione o apprendere nuove librerie o framework.

Imparare un nuovo linguaggio di programmazione è diventato più facile per me con ogni lingua che ho provato. E dopo qualche tempo, ha smesso di essere molto interessante. Ma poi, circa uno o due anni fa, sono finalmente arrivato alla programmazione funzionale, che come paradigma di programmazione è abbastanza diversa da OOP per essere una nuova sfida. Penso che questo abbia ho davvero arricchito le mie capacità di programmazione e mi hanno dato una nuova prospettiva da cui posso guardare un problema di programmazione. Sto ora cercando di scoprire diversi paradigmi di programmazione, anziché solo diversi linguaggi di programmazione. Questa è una sfida più grande.

In secondo luogo, apprendere una nuova libreria, framework o API: come hai giustamente detto, i nuovi framework spesso non risolvono nuovi problemi; lo risolvono in modo diverso, ad es. aggiungendo un ulteriore livello di astrazione. Ciò è forse possibile perché i computer di oggi sono più potenti delle macchine precedenti; o, forse, perché nel complesso stiamo migliorando nella scrittura di software.

Quest'ultimo pezzo probabilmente ha bisogno di qualche spiegazione. Faccio un esempio: per molto tempo, esercitando le mie capacità di programmazione, non ho mai pensato seriamente al mantenimento del codice che stavo scrivendo. Da quando ho iniziato a programmare un lavoro, la mia prospettiva è cambiata. La scrittura di codice gestibile è spesso molto importante in un ambiente aziendale, perché ogni ora che spendi per la codifica costa denaro reale, quindi una società cercherà di aggrapparsi al codice esistente, se possibile, e è probabile che alla fine dovrai passare il tuo codice per un successore.

Trovo che scrivere codice gestibile sia in realtà una grande sfida. Spesso significa che non scriverai codice Assembly super intelligente e altamente ottimizzato (ricordi The Story of Mel - A Real Programmer , chiunque? ;-) Invece, è più probabile che tu ne tragga vantaggio di astrazione. Più si avvicina il codice ad alcune regole aziendali e al dominio problematico, meglio è. Ecco dove entrano in gioco tutte quelle nuove librerie. Se ti permettono di scrivere il codice in modo che sia pulito, chiaro, conciso e facile da capire, allora è una buona cosa.

Scusate se questa risposta è piuttosto lunga. Ho cercato di mostrare da dove viene la mia motivazione nella programmazione ... e sarei interessato a sapere se a un certo punto ti sei sentito allo stesso modo e se (e perché) la tua motivazione alla fine se ne è andata, comunque.

4
stakx

Se sei stanco di scrivere codice, se non ti eccita, se ti annoia, potrebbe essere il momento di cambiare. Potresti cercare di entrare in una posizione di gestione e gestire e guidare altri programmatori con i tuoi anni di esperienza. Oppure prova a spostarti lateralmente nell'architettura di sistema, dove potresti progettare e pianificare sistemi e altre persone farebbero la maggior parte dell'implementazione.

Oppure, potresti cambiare completamente carriera, a qualcosa che non ha assolutamente nulla a che fare con i computer. Ti sei chiesto quale sarebbe il lavoro dei tuoi sogni, se qualcuno potesse dartelo?

Inizia a giocare con i microcontrollori. È l'applicazione più rinfrescante ed eccitante del talento di programmazione che mi viene in mente.

3
Rob S.

Sembra che i punti di partenza dei nostri background siano simili in quanto entrambi abbiamo iniziato a programmare circa 6 anni su macchine simili e siamo stati entrambi in e fuori programmazione per vari motivi. Nessuno dei miei diplomi ha nulla a che fare con la programmazione - ho tutti i titoli di musica - anche se ho seguito alcuni corsi di informatica.

Hai ragione, penso, osservando che i programmatori spesso risolvono ripetutamente gli stessi problemi e che il "nuovo" è tutto basato sul "vecchio". Che realizzi questo fatto è a tuo credito; troppi sviluppatori e uomini d'affari vedono le nuove tecnologie come completamente disconnesse da quelle vecchie.

Quindi, risolvere questo tipo di problemi non è interessante per te. Cosa sarebbe interessante? Ti piace la risoluzione dei problemi in generale? Forse una vita come sviluppatore di software "business" non fa per te.

So di aver fornito più domande che risposte, ma spero che rispondere a queste domande fornirà alcune informazioni su una direzione che dovresti prendere.

2
Andrew

Mi sembra che tu sia bloccato. Sei in una situazione in cui non vuoi essere e non sai come uscirne. Il mio consiglio è semplice: fai qualcosa di diverso solo per il gusto di fare qualcosa di diverso. Anche se non risolve il tuo problema, probabilmente ti bloccherà.

Riesco a scrivere codice in C, C++, Python o in qualsiasi lingua tu voglia, ma non riesco ad eccitarmi per quello che sto facendo. Non riesco a sentire nessuna sfida. Ho scritto codice multi-thread, proxy MITM HTTPS e un'applicazione WSGI senza la necessità di competenze specifiche sugli algoritmi.

Non prenderlo nel modo sbagliato (questi sono risultati decenti), ma questo non è certo un elenco completo di tutti i problemi stimolanti ed eccitanti nella programmazione. Ci sono ancora molti problemi impegnativi da risolvere. I problemi più difficili riguardano il lavoro su vasta scala. Hai scritto un'applicazione WSGI, ma ne hai scritta una in grado di gestire un miliardo di pagine visualizzate al giorno? Hai scritto codice multi-thread, ma hai scritto codice multi-computer (con centinaia di computer)?

In breve, se vuoi provare a fare qualcosa di non tecnico, provaci. Ma non farlo perché ritieni di aver risolto tutti i problemi che devono essere risolti perché non è così.

2
Jason Baker