Un sacco di ottime risposte già qui. Volevo solo indicare una cosa: se sei nuovo di zecca, ovviamente stai facendo degli errori stupidi. Sei un principiante. Se stavi appena iniziando a imparare uno strumento musicale, oa giocare a baseball per la prima volta, o qualsiasi altra abilità, saresti piuttosto maldestro anche a quello. È una parte normale e atteso del processo di apprendimento e tutti la affrontano. Come dice la vecchia battuta, fai le cose per esperienza, e fai esperienza facendo cose sbagliate.
Per diventare veramente bravo a qualsiasi competenza generalmente è necessario circa dieci anni o 10.000 ore di pratica seria in cui sei spingersi costantemente per imparare e crescere. Se sei disposto a dedicare tempo e sforzi, uscirai dall'altra parte come un buon programmatore.
Penso che la differenza sia che in questi giorni gli strumenti di base sono liberamente disponibili a chiunque (praticamente tutti hanno un computer e una connessione Internet) e che poche ricerche su Google sono tutto ciò che serve per iniziare a scrivere molto codice semplice che non realizza nulla di utile. E 'l'equivalente morale di imparare a suonare "Hot Cross Buns" su un flauto, ma per farlo, devi davvero fare a modo tuo per ottenere un flauto, ottenere la musica e memorizzare un mucchio di posizioni delle dita per fare il gli appunti. Ma per la programmazione, hai già un computer, e tutto ciò di cui hai bisogno è scaricare un compilatore, copiare e incollare un codice scritto da qualcun altro e hai un programma funzionante! Nessuna reale comprensione richiesta! Quindi la gente pensa "Oh, wow, questa roba di programmazione è facile!" E quando incontrano il loro primo vero problema, non hanno idea di come risolverlo e si scoraggiano.
Quando ci si avvicina ad esso, la programmazione è in realtà solo due competenze di base: scomporre un grosso problema in problemi più piccoli ed esprimere correttamente piccoli problemi nella logica formale. Gran parte dell'esperienza acquisita nel rendere qualcuno un buon codificatore sta nell'apprendere a riconoscere e risolvere un'ampia varietà di piccoli problemi.
Oggi posso ottenere una richiesta per implementare una nuova funzione, la guardo e dico "OK, questo comporta l'ordinamento di una lista, questa parte è una mappatura associativa, ho bisogno di una ricorsione per questa parte qui, e la sua memorizzazione nel database richiederà due tabelle con una relazione di chiave esterna. " Sono tutte cose che ho imparato a fare nel corso degli anni e ho imparato a riconoscere quali tecniche sono appropriate per i vari tipi di problemi.
Se studi la codifica con uno sforzo consapevole per apprendere nuovi modi per abbattere i problemi in problemi più piccoli e nuove tecniche per risolvere diversi tipi di piccoli problemi, scoprirai che diventa più interessante e più gratificante. E scoprirai che i tuoi problemi con i problemi basati sulla logica scompaiono quando impari ad affrontarli. (Ma scoprirai anche che ti viene chiesto di risolvere i problemi più difficili, sarà sempre una sfida, e se non lo è, lo stai facendo male.):)
E quando ti imbatti in qualcosa che ti blocca, chiedi su StackOverflow. Ci sono migliaia di programmatori che hanno già inserito i loro dieci anni e poi alcuni, e siamo disposti ad aiutare e dare una mano, specialmente a coloro che sono seriamente interessati all'apprendimento.