Cosa fare quando la codifica inizia a sentirsi noiosa, come se fosse tutto più o meno la stessa? [chiuso]

32

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

Sto iniziando a annoiarmi a scrivere codice dopo tutti questi anni. Ho seguito un corso di informatica nei linguaggi teorici del computer e 10 anni di codifica del sistema C nel campo della sicurezza delle reti e non ottengo alcuna stimolazione dalla scrittura del codice.

Posso scrivere codice in C, C ++, Python o qualunque altra lingua tu voglia, ma non posso entusiasmarmi per quello che sto facendo. Non riesco a provare alcuna sfida. Ho scritto codice multi-thread, proxy HTTPS MITM e un'applicazione WSGI senza la necessità di alcuna competenza specifica degli algoritmi.

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

Nel mio lavoro di tutti i giorni mi sento annoiato anche con la ricerca di bug, o facendo benchmark sul codice, o risolvendo 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 grande 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 materiale più impegnativo in Informatica? Magari prendi una laurea in CS?

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

Forse sta 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 in gestione.

Qualche suggerimento?

P.S: ho molto interesse, non sono depresso :) Amo la montagna, il trekking, fare il servizio fotografico e sono uno scalatore, amo nuotare e fare sport in generale, a volte corro, in realtà sto leggendo un libro sulla storia del mio paese (Italia) da AC a oggi e io viaggi d'amore (quest'estate ho fatto 4000 km per vedere un sacco di posti in Spagna e arrampicarci, tutto in soli 3 settimane, non una vacanza ma una maratona, 24 km di trekking hanno provocato la mia ferita di 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 sommario possiamo generalizzare la risposta più votata.

Prima di tutto tutte le persone votano la necessità per fare del nostro lavoro un sostegno alla tua vita e non l'unica ragione per restare nella vita (non è il mio caso), quindi, se sei solo una ragione della vita se lavori ti avvicini velocemente a una situazione davvero depressiva. Come dice la gente, Vienna non ti sta aspettando:)

Dopo questo promemoria, le persone suggeriscono di:

  • aumentare la complessità tecnica In realtà sto lavorando per aumentare la sfida e annoiarci meno.
  • cambia il campo di competenza in un campo non tecnico cercando di diventare un manager o fai avanzare l'assistenza in campi non tecnici relativi al tuo lavoro.
  • cambiare il campo di competenza in un altro tipo di sfida tecnica, sei un programmatore di sistema? prova a diventare meno annoiato sviluppando applicazioni per umani in modo da farti sentire 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, poiché ritengo che la programmazione non sia l'unico modo per ottenere l'informatica e penso di riuscire a ottenere un altro percorso nell'informatica diverso da quello dell'ingegneria del software.

    
posta boos 19.01.2011 - 19:22
fonte

11 risposte

50

Questo era destinato a succedere.

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

Diventa interessato a sviluppare prodotti e divertiti a vedere le persone che li usano. Questo è l'obiettivo finale di scrivere il codice, giusto? Il codice è semplicemente uno strumento per ottenere qualcosa di più grande fatto.

    
risposta data 19.01.2011 - 19:37
fonte
21

Risponderò alla tua domanda con una domanda ...

Il lavoro di un programmatore è in grado di codificare o risolvere problemi?

Dici di annoiarti perché scrivere codice sembra qualcosa che hai già fatto, come se ogni bit di codice fosse 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 davvero non trovi alcuna sfida, curiosità o interesse nel trovare soluzioni o nella risoluzione dei problemi, allora sei davvero obbligato a cambiare. Anche se non sono sicuro che sarebbe la gestione dello sviluppo del software. Non vorrei lavorare per un gestore di software che sentisse quell'apatia per il problem-solving. Probabilmente dovrebbe essere solo un settore diverso, con un diverso insieme di problemi.

Se ti piace risolvere i problemi ma non ami la programmazione, forse non troverai abbastanza problemi da risolvere. Ogni volta che il mio lavoro inizia a sembrare noioso, credo che ci sia un problema da risolvere. Perché sto facendo un lavoro intenso? Che soluzione posso ottenere per rimuovere il lavoro impegnato dal mio lavoro? Questa è la bellezza della programmazione.

    
risposta data 19.01.2011 - 19:51
fonte
9

Mi sembra che tu abbia fatto un LOT di programmazione procedurale e stanco di farlo - cosa che capisco perfettamente. Specificare passo dopo passo è lo stesso in ogni linguaggio procedurale.

Dal momento che sembra che tu abbia molte attività non lavorative suggerirei di imparare alcuni concetti che non assomigliano a quello che sai ora, e - sì - ce ne sono molti, ma per iniziare consiglierei Haskell perché è

  • funzionale - scrivi le funzioni che hai messo insieme per rendere le funzioni più grandi alla fine risultando in un programma.
  • valutazione lazy - invece di specificare passo dopo passo, il runtime richiama i valori necessari secondo necessità. Ciò significa che è molto comune trattare elenchi infiniti nei tuoi programmi.
  • corrispondenza modello - invece di avere strutture grandi se, si elencano i modelli per l'aspetto dei parametri, e il runtime seleziona il modello 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 link per una spiegazione)

Se qualcosa di questo è nuovo per te, ti incoraggerei a iniziare ad avventurarti.

Buona fortuna: divertiti.

    
risposta data 19.01.2011 - 23:10
fonte
8

I computer sono utenti noiosi. Quando si utilizza la codifica per interagire con le interazioni per tutto il giorno, la macchina reagisce sempre allo stesso modo. È bello portare a termine il progetto, ma dopo un po 'è noioso. Aiuta davvero a rompere la monotonia con qualcosa che non è direttamente correlato alla macchina.

Ho trovato ispirazione sia con la fotografia, sia studiando l'esperienza utente. Pensaci, come fa Apple a farsi venire le iniezioni di persone che si inturgidiscono per la prossima cosa che esce da Santa Clara quando gli altri distributori ottengono una risposta tiepida? Pensi seriamente che Android avrebbe ottenuto una risposta così grande se Apple non avesse resistito alla pubblicazione di iPhone su Verizon per così tanto tempo? Ti darò un grande suggerimento: non è necessariamente che questi prodotti siano così tecnologicamente avanzati. C'è un'enorme componente psicologica nella mania.

Comprendere la progettazione del prodotto e l'esperienza utente è qualcosa che molti di noi hanno molto da imparare. Cosa rende qualcuno tic tac? Come si progetta qualcosa di abbastanza bello da far uscire le persone dalla soluzione stabilita? Come crei il tuo culto della tecnologia come Apple (non che io aspira ad essere un capo di culto per te)? Queste sono tutte domande molto interessanti e stimolanti. Tornano allo sviluppo del software, ma ora la tua attenzione è diversa.

    
risposta data 19.01.2011 - 19:49
fonte
7

Probabilmente non hai abbastanza sfide tecniche?

  • Prova i sistemi altamente distribuiti. Puoi facilmente codificare un sistema per raccogliere i log da 1000 computer in un cluster, con precisione al microsecondo?
  • Prova in tempo reale. Imballare tutti i processi in una rotazione di un motore.
  • Prova la visione artificiale o l'elaborazione delle immagini. Competenze matematiche, abilità da codice a codice, capacità di ottimizzazione sono tutte utili.
  • Prova AI. Guarda come il computer di IBM gioca a Jeopardy? Probabilmente alcune sofisticazioni algoritmiche sono coinvolte in quest'area.

Ecc. Certo, sii pronto a guadagnare inizialmente meno in un campo in cui il materiale è stimolante per te, non noioso.

    
risposta data 19.01.2011 - 20:34
fonte
4

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

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

Ma è un'opzione che potrebbe valere la pena di essere presa in considerazione.

    
risposta data 19.01.2011 - 19:36
fonte
4

Sì, a volte ho la sensazione che si stia in realtà scrivendo lo stesso tipo di codice più e più e più volte. Ma no, non mi annoio ancora. Perché è così?

Perché fondamentalmente mi diverto a scoprire nuovi modi di codifica e modi nuovi, concisi ed eleganti per esprimere qualcosa nel codice. Ci sono due modi possibili su come procedere: apprendere nuovi linguaggi di programmazione o imparare nuove librerie o framework.

Imparare un nuovo linguaggio di programmazione è diventato più facile per me con ogni lingua che ho provato. E dopo un po 'di 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. Sento che questo ha davvero arricchito le mie capacità di programmazione e mi ha dato una nuova prospettiva da cui posso guardare un problema di programmazione. Sto cercando ora di scoprire diversi paradigmi di programmazione, anziché solo diversi linguaggi di programmazione. Questa è una sfida più grande.

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

Quest'ultimo bit probabilmente ha bisogno di spiegazioni. Darò un esempio: per il più lungo tempo, mentre praticavo le mie capacità di programmazione, non ho mai veramente pensato seriamente al mantenimento del codice che stavo scrivendo. Da quando ho iniziato a programmare un lavoro, la mia prospettiva è cambiata. Scrivere 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 le probabilità sono che alla fine dovrai passare il tuo codice a un successore.

Trovo che scrivere codice gestibile sia in realtà una grande sfida. Significa spesso che non si scriverà codice di assemblaggio super-intelligente e altamente ottimizzato (ricorda The Story of Mel - Un vero programmatore , chiunque? ;-) Invece, è più probabile che tu tragga vantaggio dall'astrazione. Più vicino è possibile ottenere il codice per alcune regole aziendali e il dominio del problema, meglio è. Ecco dove arrivano 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.

Scusa se questa risposta è piuttosto lunga. Ho cercato di mostrare da dove proviene la mia motivazione nella programmazione ... e sarei interessato a sapere se, in qualche momento, ti sentivi allo stesso modo, e se (e perché) le tue motivazioni alla fine se ne siano andate, comunque.

    
risposta data 19.01.2011 - 20:14
fonte
3

Se sei stanco di scrivere codice, se non ti eccita, se ti annoia, potrebbe essere il momento di cambiare. Potresti passare a 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 i 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 tuo lavoro dei sogni, se qualcuno potesse dartelo?

    
risposta data 19.01.2011 - 19:34
fonte
3

Inizia a giocare con i microcontrollori. È l'applicazione più rinfrescante ed eccitante del talento di programmazione che riesco a pensare.

    
risposta data 22.01.2011 - 18:09
fonte
2

Sembra che i punti di partenza dei nostri sfondi siano simili in quanto entrambi abbiamo iniziato a programmare circa l'età di 6 anni su macchine simili e siamo stati entrambi dentro e fuori dalla programmazione per vari motivi. Nessuna delle mie lauree ha nulla a che fare con la programmazione - ho tutti i titoli di studio di musica - anche se ho seguito alcuni corsi di informatica di livello post-universitario.

Hai ragione, penso, osservando che i programmatori risolvono spesso gli stessi problemi ripetutamente e che il "nuovo" è tutto basato sul "vecchio". Che ti rendi conto che 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 ti interessa. Cosa sarebbe interessante? Ti piace risolvere i problemi in generale? Forse una vita da sviluppatore di software "business" non fa per te.

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

    
risposta data 19.01.2011 - 19:38
fonte
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: fare qualcosa di diverso solo per fare qualcosa di diverso. Anche se non risolve il tuo problema, probabilmente ti farà scollare.

I can write code in C, C++, Python or whatever language you want, but I can't get excited about what I'm doing. I can't feel any challenge. I've written multi-threaded code, HTTPS MITM proxy and a WSGI application without the need of any specific algorithms skill.

Non prenderlo nel modo sbagliato (sono risultati decenti), ma questo non è certo un elenco completo di tutti i problemi stimolanti ed entusiasmanti nella programmazione. Ci sono ancora molti problemi difficili da risolvere. I problemi più impegnativi riguardano il lavoro su vasta scala. Hai scritto un'applicazione WSGI, ma ne hai scritta una in grado di gestire un miliardo di pagine viste 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ì.

    
risposta data 22.01.2011 - 19:09
fonte