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


33

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 alcuna competenza specifica relativa agli 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 passo avanti nella mia carriera? O per 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 sulla "personalità delle persone" 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 uno scalatore sportivo, adoro nuotare e fare sport in generale, a volte faccio corsa, in realtà io ' Sto leggendo un libro sulla storia del mio paese (Italia) dall'AC ad oggi e adoro i viaggi (quest'estate ho fatto 4000Km per vedere un sacco di posto in Spagna e arrampicarmi 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 la necessità di 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 ragioni di vita se lavori, vieni veloce 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.


10
Questo è davvero deprimente. Perché vuoi diventare un manager?

14
Sfortunatamente per te, e anche se può sembrare duro, i manager devono capire come comunicare in modo efficace. Ciò che hai scritto sopra è estremamente poco chiaro e appena comprensibile. Se stai pianificando un cambio di carriera nella gestione, lavorerei sulle tue capacità comunicative prima di ogni altra cosa. Ci scusiamo per la tua situazione.
George

9
@George: penso (ma lo ammetto non sono sicuro) questo è scritto da qualcuno che non parla / scrive l'inglese come prima lingua.
FrustratedWithFormsDesigner

2
Vedi Qual è l'uso della metaprogrammazione per una divertente metafora su questo argomento (facendo la stessa cosa dappertutto).

2
@George: ovviamente, l'inglese non è la mia prima lingua. Comincio a fare qualche modifica per migliorare il mio inglese e spiegare la mia frustrazione per la programmazione.
fischi

Risposte:


50

Questo doveva succedere.

Se il tuo interesse primario 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.


Il mio primo interesse non è solo la programmazione, sono uno scalatore sportivo, adoro andare a teatro, adoro fare un viaggio e vedere un nuovo posto, 2/3 città europea ogni anno e 4000 km nelle mie vacanze estive. Questo non è il punto. ho pensato di aver raggiunto il punto di non ritorno sulla programmazione. tutti i problemi nel mio lavoro non sono così difficili da gestire e non posso avere più sfide. penso che la risposta giusta sia cambiare lavoro e ottenere più sfide in problemi più complessi. attualmente sono già in una divisione di ricerca e sviluppo.
fischi

@boos, prova clojure.org/Jobs
Giobbe

2
+1 A che serve la codifica senza scopo? È come continuare a costruire un muro anziché una casa.
Mayank,

+1 Ho iniziato a scrivere codice e ho continuato fino ad ora (più di 10 anni) solo per creare giochi e vedere persone che si divertono. Sono stato in periodi davvero difficili in cui ho iniziato a capire che alla fine non sapevo nulla. Ho ri-imparato tutto dall'inizio in quel momento, perché volevo ancora creare giochi per le persone.
Klaim,

Questo ha sicuramente funzionato per me. Di recente ho svolto un piccolo lavoro di sviluppo gratuito per la ditta di mia moglie e, pur supportando il software, è un po 'una seccatura, ha riacceso un piacere nel programmare che non provavo da un po'.
Eremio

21

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 solo un 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.


1
@Rnesis: amo risolvere i problemi, smetto di amare la programmazione! questo è il cuore della mia "domanda". Tutti i problemi del programma sono sempre le stesse cose, cercare un materiale, ordinarne un altro, se ciò fa, se altro, ad altri elementi, connettersi a un DB, stabilire una connessione a un servizio remoto, comunicare ad esso, tornare a un altro servizio, ecc.
fischi

1
@boos - Grazie per la risposta, aggiunto un paragrafo per "se ami la risoluzione dei problemi".
Nicole,

9

Mi sembra che tu abbia fatto MOLTA programmazione procedurale e ti sia stancato di questo - che capisco perfettamente. Specificare passo dopo passo è più o meno lo stesso in ogni linguaggio procedurale.

Dal momento che sembra che tu abbia molte attività non lavorative, ti suggerirei di imparare 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.


+1 Questa è la stessa conclusione a cui sono giunto dopo aver letto il PO. L'OP deve abbandonare la procedura. Il mondo della programmazione è molto più grande, ha solo bisogno di uscire ed esplorare! :)
Darknight,

8

I computer sono noiosi consumatori. Quando codifichi interazioni macchina-macchina 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 è possibile che Apple riesca a far brontolare le persone che salivano su se stesse per far uscire la prossima cosa 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 siano così tecnicamente avanzati. C'è un'enorme 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 si progetta 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 io aspiri ad essere un leader di culto, mente)? Queste sono tutte domande molto interessanti e stimolanti. Si rifanno allo sviluppo del software, ma ora la tua attenzione è diversa.


1
+1 Trovo molta soddisfazione nella programmazione e penso che mi piaccia a causa degli aspetti del design, ma ammetto che la mancanza di un aspetto visivo nella programmazione non mi rende completamente soddisfatto. Anch'io amo la fotografia e provo a praticare altri tipi di design, come la grafica o l'architettura.
Nicole,

Prova la programmazione del gioco: D, sono soprattutto problemi visivi
Dominique McDonnell,

7

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 campo è 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.


4

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 piacevole 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

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. Credo che questo abbia davvero arricchito le mie capacità di programmazione e mi abbia dato una nuova prospettiva da cui posso guardare un problema di programmazione. Ora sto 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 esempio 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, mentre esercitavo 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 dovrai scrivere un codice assembly super intelligente e altamente ottimizzato (ricordi The Story of Mel - Un vero programmatore , chiunque? ;-) Invece, hai maggiori probabilità di trarre vantaggio dall'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.


tutte le lingue e tutti i paradigmi e in generale possono essere ricordati a una "Macchina di Turing" qualunque cosa tu impari una nuova lingua, un nuovo quadro, tutti i calcoli possono essere fatti da una macchina di Turing, quindi non posso essere più entusiasta della programmazione. amo scrivere codice pulito, e a volte amo scrivere un frammento di codice davvero strano per scherzare con il mio collega, come una sorta di piccola offuscamento.
fischi

1
+1 Anche io mi sento così. Penso che la mia sfida preferita personale non sia tanto fare qualcosa di nuovo, ma farlo nel miglior modo possibile. Il miglior complimento che ho potuto ottenere è "Ho letto il tuo codice e ho capito perfettamente". Adoro le recensioni di codici in cui nessuno può pensare a qualcosa per migliorare.
Michael K,

@boos, se ti piace la teoria, allora ci sono migliaia di argomenti in cs / matematica / fisica in cui perdere la testa.
Giobbe

3

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?


3

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


2

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

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 alcuna competenza specifica relativa agli 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 visualizzazioni di pagina 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ì.


Ovviamente, so che ci sono un sacco di cose stimolanti qui :) Sono un piccolo programmatore in questo momento! il problema è che la complessità della programmazione non mi rende felice. Con tutta la risposta che ho capito, ho bisogno di studiare più cose accademiche per sentirmi meglio. Comunque grazie :)
fischi
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.