Come posso sentirmi più sicuro delle mie capacità di programmazione? [chiuso]

36

La programmazione non mi è estranea. Ho iniziato a fare il markup (HTML, ora per favore non ridere di me) quando avevo 12 anni e un po 'di BASIC quando avevo 13 anni (sapevo molto su Flowcharts, Pseudocodici a questo punto), ma poi sono stato ammonito Biologia al liceo e quindi mancata conoscenza "reale" della programmazione di linguaggi come C, Java, eccetera. Ho assunto CS per il mio UG B.E. (simile a BS, ma molto più teorico). Ho imparato C & C ++ (in misura minore) da solo (il mio prof era un dolore totale e la classe era piena di code-jocks (che lo avevano già imparato a scuola, e quindi non prestava attenzione alla classe e non permetteva ai mortali minori di sia io che presti attenzione alla classe)) e potrei creare un fantastico programma di aggiunta o moltiplicazione (che ora anche i giardinieri più gentili si fanno frustare con maggiore delicatezza) e una conoscenza pisside di Java (che è persino diventata arrugginita negli ultimi tempi).

Il mio problema principale è che mi sono sempre sentito inadeguato e strangolato dalle mie limitate capacità di programmazione e sminuito dai code-jocks (credimi, mi sono imbattuto in questo sito molto tempo fa, ma ora posso solo costruire il coraggio effettivamente pubblicare una domanda) ed è stato a volte persino depresso rispetto a detta incapacità. La maggior parte delle persone afferma che la programmazione non riguarda necessariamente la lingua, ma lo stato mentale della persona e le tecniche che impiegano per risolvere problemi / problemi. Sono d'accordo con tali sentimenti, ma posso mai acquisire un tale "stato d'animo", e se così come dovrei avvicinarmi a "Programmazione / Coding", e se ci sono dei modi e dei passaggi che uno di loro passa per raggiungere lo "Zen" di codifica ". Come faccio a farlo? Inoltre, non sarebbe male se qualche Santo volesse guidare questo pezzo oppresso di $ #! ^.

P.S. Sarei per sempre grato a chiunque mi considerasse degno del tempo, e come bonus chiamerei il mio primo pezzo di Software che spedisco dopo di loro. (Se mai dovessi spedirne uno, cioè.)

TL; DR: Non ho mai veramente imparato "Programmazione / Coding", non posso risolvere i problemi anche se provo a farlo. Aiutami!

    
posta 6 revs, 3 users 50%Ameen 07.12.2011 - 13:57
fonte

17 risposte

26

Direi che il modo migliore è semplicemente passare più tempo su di esso (cerca la regola delle 10000 ore). Trova qualcosa che vuoi fare e cerca di farlo. Scegli qualcosa che va oltre la tua abilità attuale, ma non così lontano da non riuscire a finire in un ragionevole lasso di tempo. Se ti piace davvero, ti ritroverai a ripetere questo finché non sarai davvero bravo a farlo. Se non ti piace, allora forse non è la cosa giusta per te. Prova a sfidare te stesso, probabilmente ti piacerà.

    
risposta data 09.04.2011 - 03:31
fonte
16

Spedisci cose . E l'unica strada. Fai le cose fatte. Al lavoro, i tuoi progetti, progetti open source. Inizia a spedire le cose. Possono essere cose molto piccole, come una correzione di bug o una funzionalità minima commercializzabile. inizia a spedire le cose . Niente è più soddisfacente o di fiducia che il successo.

Modifica: dovresti leggere Spedisci . È fantastico.

Modifica di nuovo: l'esperienza di fare qualcosa di diverso dalla spedizione è solo un fallimento dell'esperienza. Ho visto molti sviluppatori "senior" la cui esperienza principale non era la spedizione (e la ricerca di scuse per non averli spediti). Nave di artisti reali .

    
risposta data 23.04.2011 - 20:38
fonte
11

"problema", "inadeguato", "strangolato", "abilità X limitate", "sminuito", "depresso", "incapacità" in una frase, tutte dirette a te stesso mi suggeriscono alcune ferite / i non cicatrizzate dal passato ti fa ancora male. Se trovi dei modi per superarli, la programmazione o qualsiasi tipo di arte / artigianato sarebbe molto facile da padroneggiare. Forse leggere la resilienza di altre persone potrebbe aiutare qui. Ognuno passa attraverso tempi feroci nelle loro vite. Se quelle ferite / ferite non sono guarite, i loro successi non sarebbero arrivati. Guarisci prima le tue ferite. La programmazione può aspettare più tardi.

Per quanto riguarda le abilità di programmazione, come imparo una nuova lingua e inizio a pensare come gli altri che già programmano in quella lingua è, prima di tutto, di leggere tutto ciò su cui posso mettere le mani che è collegato a quella lingua. Poi, quando ho letto abbastanza, inizia a scrivere piccoli programmi.

    
risposta data 09.04.2011 - 03:57
fonte
9

Alcune cose che devi davvero andare avanti:

Perseveranza: Diventare un buon programmatore richiede tempo e pratica. Dovrai scrivere un sacco di codice cattivo prima di scrivere qualsiasi codice valido - un lotto di codice errato. Per fortuna, hai risorse come questo sito per aiutarti. Finché ti impegni a imparare a programmare, sarai in grado di mettere insieme giochi e utilità semplici in pochissimo tempo!

Obiettivi: imposta alcuni obiettivi per te stesso. Dì, impara come usare STL in C ++ tra due settimane. Guarda come te la cavi. Se impieghi più tempo, tieni traccia di quanto più a lungo, ti aiuterà a fare meglio in futuro. Ho imparato questo trucco da un collega; poteva stimare, per il giorno, per quanto tempo quasi qualsiasi compito lo avrebbe portato. Ciò mi ha aiutato a tenere traccia di quanto tempo trascorro per progetti personali e mi aiuta a evitare che si espandano in modo incontrollato (gestione degli ambiti che chiamano).

Curiosità: Devi essere interessato e coinvolto. Se non sei il tipo di persona che non si avvicina ai problemi con il desiderio di trovare la soluzione, iniziare la programmazione sarà inizialmente difficile e il debugging può essere da incubo. Ma non deve essere così. Se hai un problema, chiedi su siti come questo, google il tuo errore. Se non riesci a capire come implementare qualcosa, chiedi! Ci sono sempre persone che sono disponibili ad aiutare!

Fiducia: sii sicuro di ciò che vuoi fare e abbastanza sicuro di fare domande. Se qualcuno ti mostra un altro modo di fare qualcosa, non stare sulla difensiva o pensare a te stesso di aver sbagliato; pensala mentre ti viene insegnato un approccio diverso per risolvere il tuo problema!

Soprattutto, mantieni una prospettiva positiva, leggi un sacco di tutorial e fai molte domande e sarai un programmatore felice! Un altro consiglio che devo dare è scegliere un linguaggio, un bastone con quello finché non sei più sicuro. Hai un sacco di tempo per imparare una vasta gamma di lingue, ma quando inizi, basta lavorare con uno.

Buona fortuna! E ricorda, questo dovrebbe essere divertente! = D

    
risposta data 09.04.2011 - 03:46
fonte
7

In fase di sviluppo sembra che il paradosso "più conosci, più sai di non sapere" è vero.

Se sei una persona premurosa e onesta, dovrai accettare questo fatto e imparare ad affrontarlo.

La fiducia, nel senso implicito nella domanda, è una cosa molto personale che in realtà non ha nulla a che fare con un particolare insieme di abilità o metodologia.

Su una nota più superficiale, il sentimento descritto nel link (sezione: hai sovrastimato radicalmente l'abilità media della competizione a causa della folla che ti circonda) mi ha sempre aiutato.

Suggerirei di imparare a essere più fiducioso nel lavoro che hai fatto piuttosto che aumentare la fiducia nelle tue abilità nel loro complesso. L'unico modo migliore per farlo è scrivere test ripetibili per tutto il codice. Farà miracoli sulla tua psiche.

    
risposta data 01.03.2012 - 23:14
fonte
4

WhiteFang34 ha perfettamente ragione. Come biologo, ho scoperto che l'unico modo per imparare la programmazione è iniziare a farlo. Leggi alcuni libri, hai Google e così sempre a portata di mano, e "fallo e basta". I tuoi programmi saranno molto semplici, mal codificati e buggati all'inizio, e migliorerai nel tempo. Non ho il tempo di prendere lezioni di programmazione, ma trascorro molto tempo a programmare (perché è divertente farlo).

Scegli una lingua che ti permetta di pensare di più a ciò che vuoi fare e meno a come farlo. c non è un ottimo esempio di ciò. Prova i linguaggi di livello superiore come java o c #, perché ti consentono di fare di più, così avrai il coraggio di provare sempre di più.

(Ovviamente, supponendo che tu non stia perseguendo una carriera da programmatore professionista, nel qual caso direi semplicemente tornare a scuola ...)

Buona fortuna e buona programmazione

PS: Oh, e avrai bisogno di molta pigrizia, impazienza e arroganza

link

    
risposta data 09.04.2011 - 03:52
fonte
4

La cosa divertente è:

programmer's mind isn't that much about computer, programming language,
design-patterns or algorithms

Riguarda la comprensione delle sottigliezze del mondo reale, l'interazione tra le cose. Possibilità di pensare in astratto . Possibilità di notare le cose e ricordarle . Ciò porta inevitabilmente a una buona risoluzione dei problemi.

Implementazione, il codice stesso viene solo dopo quello - dopo che hai avuto successo con risolto problema dato all'interno della tua mente.

    
risposta data 09.04.2011 - 14:34
fonte
4

La fiducia non è qualcosa che dovresti provare a provare per le tue capacità. La fiducia è scarsa (probabilmente anche negativamente) correlata all'abilità effettiva. Dovresti lavorare per migliorare il tuo set di abilità professionali (o di valore per hobby), indipendentemente da ciò che ritieni riguardo al tuo attuale livello di abilità.

La fiducia è qualcosa che le altre persone, quelle che ritieni siano competenti, dovrebbero provare le tue capacità dopo aver lavorato con te o visto il tuo lavoro.

    
risposta data 07.12.2011 - 18:52
fonte
3

È molto semplice: essere interessato a questo ! Sembra che tu sia già, quindi trova qualcosa che pensi sia bello da fare, e poi fallo, ponendo tutte le domande che ti servono sulla strada, usando tutte le risorse che puoi, per mettere insieme il progetto proprio come lo voglio. Risciacqua e ripeti, e ti troverai ad essere un programmatore fantastico senza nemmeno aver fatto sforzi, dal momento che è stato interessante / divertente lungo la strada.

Inoltre, trova un buon equilibrio tra capire cose e fare un sacco di domande. All'inizio, in particolare, è di grande aiuto avere altri che ti dicono dove stai andando male, per dare una spinta alla prima parte della curva di apprendimento. Da lì, prova a capire le cose da solo, e se rimani bloccato dopo un po ', allora fai una domanda al riguardo. Quello che faccio spesso è postare una domanda su SO, e poi andare a cercare la risposta, controllando di tanto in tanto SO nel processo. A volte trovo la risposta per prima, a volte mi trova prima.

Non preoccuparti di quale tecnologia, anche se potrebbe essere molto divertente fare grafica con HTML5 + JavaScript + il tag canvas, dato che è abbastanza semplice da configurare, i premi sono immediati e puoi condividerli .

    
risposta data 09.04.2011 - 04:06
fonte
3

Approccio alla programmazione con un atteggiamento più positivo e apprendente. Nessuno sa tutto. Secondo, scopri perché sei interessato alla programmazione, che ti piaccia:

  • risoluzione dei problemi
  • imparare cose nuove
  • costringendo un computer a piegarsi al tuo volere
  • qualcos'altro ...

Una volta che sai cosa ti piace della programmazione, puoi concentrare i tuoi sforzi di apprendimento in quella direzione. Sono un risolutore / risolutore di problemi. Mi rende estremamente pragmatico. Algoritmi e strutture dati, la teoria dell'informatica in generale mi ha fatto addormentare.

Il mio background è simile al tuo. Ho iniziato a costruire computer all'età di 10 anni. Un po 'di HTML / C ++ nella mia adolescenza ... mi sono stufato di ... smettere per alcuni anni. Non ho mai smesso di giocare con il computer però.

Ora, sto amando la programmazione. Quindi cosa è cambiato? Ho trovato la mia motivazione. Ho iniziato a lavorare dove mi viene data una pletora di problemi da risolvere. Trovare soluzioni intelligenti e semplici a problemi complessi mi fa davvero bruciare il fuoco.

Infine, non preoccuparti di come il codice degli altri o se sia "giusto" o meno. È giusto se fa quello che vuoi che faccia. Quando inizi a lavorare su una squadra, gli standard diventano importanti. Ciò è dovuto al fatto che altre persone dovranno essere in grado di interpretare e modificare il tuo lavoro. Gli standard di progettazione non sono qualcosa su cui un nuovo programmatore dovrebbe preoccuparsi.

    
risposta data 09.04.2011 - 04:21
fonte
3

C'è sempre inerzia da superare quando si imparano cose nuove. I curiosi programmatori che ho conosciuto faticano a trovare la motivazione per continuare ad apprendere nuovi linguaggi e paradigmi. Diranno: "Ho bisogno di un progetto per provare X on". per imparare X. Alcuni troveranno / inventeranno quel progetto.

Essere informati che una carriera nella programmazione sarà un processo permanente di frustrazione, studio, esperimento e inclinazione contro i mulini a vento. Fino a quando le IA non prenderanno il controllo di tutto.

Se continui a fare scienza vera, dovresti essere in grado di immaginare un progetto / bisogno di qualche tipo. Ad esempio, combinando i dati da più fonti su o da Internet. Questo potrebbe ispirare che stai imparando javascript o R o anche Excel / VBA. Se riesci a connettere alcuni punti per gli altri nel tuo campo, verrai riconosciuto, et voilà, sarai un programmatore.

Usa ma fai attenzione ai mentori. Autorità domanda.

E a proposito, "zen coding" è un ossimoro.

    
risposta data 23.04.2011 - 18:13
fonte
3

Non ti sentirai mai sicuro delle tue capacità di programmazione.

Il modo in cui descrivi le tue abilità, indica una mentalità in cui non sarai mai soddisfatto delle tue capacità. Hai padroneggiato il C ++? Aspetta, c'è Java! Hai padroneggiato Java? Aspetta che ci sia la programmazione parallela. Hai padroneggiato la programmazione parallela in C ++ e Java? Aspetta, c'è SOA! C'è OOD! E MVC! SOLIDO! Programmazione funzionale! Programmazione Web! Programmazione cloud! Programmazione mobile!

Il punto non è di sentirsi depresso a causa di questo. Devi spingere alcuni pulsanti nella tua testa: il tuo dubbio sulle tue capacità è puro carburante. Probabilmente non raggiungerai mai un livello soddisfacente di capacità di programmazione. Finché questo è il caso, andrai avanti. La parte difficile è realizzarlo e fare qualcosa contro di esso, anche se non ci sarà mai un obiettivo. Più a lungo puoi sopportarlo, più alto sarà il tuo livello di abilità.

    
risposta data 07.12.2011 - 17:42
fonte
3

Ero abituato a sentirmi allo stesso modo, e in realtà erano i siti di Stack Exchange che mi hanno aiutato a darmi fiducia.

Ho iniziato a utilizzare StackOverflow per trovare le risposte alle mie domande e un giorno ne ho visto uno a cui ero a conoscenza della risposta. Ho postato la risposta, ho ricevuto alcuni voti positivi e un commento che diceva che era una buona risposta, e questo mi ha incoraggiato a cercare altre domande a cui potevo rispondere.

Ben presto divenne una dipendenza per me, trovando domande senza risposta che potevo risolvere, e col passare del tempo ho iniziato a guadagnare fiducia nelle mie risposte. Non dovevo più dire "Penso che sia perché ...." o "Questo dovrebbe causare ...", ma potrei invece dire con una certa sicurezza che "Questo è perché ..." o "Questo causa ..."

Mi piacciono i puzzle, e per me QUINDI domande erano come i puzzle di mini-programmazione, con l'ulteriore vantaggio di ottenere un feedback positivo se ottenevo la risposta giusta. Se ho sbagliato una risposta, l'ho appena cancellata e ho imparato dalle soluzioni degli altri allo stesso problema.

Quindi la mia raccomandazione sarebbe quella di andare su SO e sfogliare le domande in qualsiasi tag a cui sei interessato, e cercare qualcuno che pensi di poter trovare una risposta. Non c'è niente di meglio che le persone che ti dicono che le tue risposte di programmazione sono utili / buone per darti fiducia nelle tue capacità di programmazione:)

    
risposta data 07.12.2011 - 20:05
fonte
3

Al tuo cervello non piace lavorare troppo. Data la scelta, preferisce prendere la via più facile. Questo è il motivo per cui è facile rinunciare alle cose quando si tenta di affrontare qualcosa di troppo ambizioso: troppo da imparare, troppi dettagli pratici per avere ragione, troppa rasatura degli yak.

Ci sono molte cose che puoi fare per combatterlo. Prima di tutto è l'energia. Prova a fare pratica quando sei ben riposato e ben nutrito, altrimenti il tuo cervello non avrà abbastanza carburante per un pensiero astratto complesso. Il secondo trucco è l'interesse o l'importanza. Se riesci a convincere il tuo cervello che sapere che il tuo maven è vitale per sfuggire alla tigre che ti insegue, imparerai e manterrai più di quanto non pensi quando il tuo cervello pensa che sia un compito marginale senza senso sulla strada per quello che vuoi veramente. Un terzo fattore che è importante è allungare senza esagerare. Alcuni sforzi ti daranno quel brusio del successo e aiuteranno a formare nuovi percorsi mentali, senza essere irraggiungibili.

C'è anche qualcosa da dire per la pratica ripetuta. Vuoi abbastanza varianti per essere romanzo, ma abbastanza somiglianza che puoi esercitare le stesse azioni e ingenerarle.

Un altro punto è che dovresti cercare di rimboccarti le maniche e sporcarti le mani. È facile passare molto tempo a pensare ad approcci alternativi o alla soluzione ideale, nella misura in cui non si è mai all'inizio. Questo è un esempio del tuo cervello che cerca di prendere la via più facile. Cerca di riconoscere quando ti sta succedendo ed evitalo cercando di iniziare. Anche un test o un esperimento è buono. Questo ha anche il vantaggio di far sì che il tuo cervello desideri la chiusura del completamento dell'attività o di trovare la soluzione migliore.

    
risposta data 08.12.2011 - 01:35
fonte
2

Tre cose da considerare: (o no, ovviamente.)

  1. Practice. Cosa succederebbe se il fallimento significasse nient'altro che un'indicazione che stai praticando? Se rinunciassi a imparare a camminare la prima volta che cadevi, avresti ancora a gattonare.
  2. Gioca con qualsiasi cosa tu stia facendo. Il gioco è semplicemente provare qualcosa e notare quello che succede. Rinunciare a giudicare i risultati buoni / cattivi, basta giocare e vedere cosa succede. Rinunciare a un determinato risultato, basta provare qualcosa e vedere cosa succede.
  3. Che cosa succede se non sei l'unico programmatore al mondo che si sia mai sentito in questo modo?
risposta data 02.03.2012 - 15:52
fonte
2

Ci sono molti commenti positivi sulla pratica qui, fa davvero la differenza.

Dovresti preoccuparti meno dei "code jocks" e prendere i loro consigli o commenti per quello che sono. Se sono difficili da gestire in una discussione, probabilmente sono difficili da gestire anche nella vita reale; e davvero, chi ha il tempo di preoccuparsi della loro inettitudine sociale?

Il risultato finale è che ci sono migliaia di modi per affrontare le attività di programmazione. Molte cose si riducono alle preferenze personali. Ad esempio, odio leggere il codice con operatori di tenar. Altri, li adoro. Penso che abbiano ragione o torto? .. in realtà, nessuno dei due. È una preferenza personale, anche se si terranno molti dibattiti accesi sull'argomento.

Se qualcuno rimprovera il tuo codice perché hai preso 25 righe anziché 20, tenderei a ignorarle a meno che non abbiano trovato un vero difetto nella logica. A volte nel mondo reale, dobbiamo solo fare le cose (e chi vuole davvero ascoltare qualcuno che sbuffa di petto per quanto sia complicato ... err, elegante sono riusciti a creare un pezzo di codice che avrebbe dovuto essere fatto in 10 minuti) . Puoi imparare qualcosa da infiniti dibattiti filosofici su quanto lontano alle cose astratte? Certo ... ma ci sono rendimenti disastrosi nel farsi risucchiare in un'eleganza costante al 100%. Non è realistico tutto il tempo tanto quanto vorremmo far finta che lo sia. Alcuni dei miei codici meno eleganti che mi verrebbero in imbarazzo a condividere con chiunque (che ho scritto all'inizio della mia carriera) hanno salvato persone settimane su settimane vale la pena del tempo, sono stati usati sin dal suo inizio oltre un decennio fa e avrebbero dovuto essere preda delle fredde dita degli utenti (e funziona anche, non ha mai rotto così non è mai stato dato il tempo di tornare indietro e "ripulire" che è sempre la storia).

C'è un ottimo post sul blog di Joel Spolsky chiamato Duct Tape Programmer. È una lettura fantastica e IMO mette in prospettiva alcune delle tue paure.

link

Non sto dicendo di scrivere codice di merda e di ignorare le best practice, ma di prendere i programmatori con un pizzico di sale.

    
risposta data 05.03.2012 - 09:37
fonte
1

Chiediti perché in effetti provi mancanza di fiducia. Penso che sia perché ti interessi cosa pensano i tuoi colleghi, e questo è completamente comprensibile. Ma per essere veramente zen al riguardo, è necessario cancellare tali pensieri e confrontarsi solo con se stessi nel tempo. Lasciati guidare dal tuo interesse, impara e lavora sodo, e diventerai un buon programmatore senza tutti i problemi psicologici.

Non è davvero la sicurezza di cui hai bisogno, è meno rumore nel tuo percorso di progresso.

    
risposta data 02.03.2012 - 22:54
fonte

Leggi altre domande sui tag