Jag får nog vara klyschig och säga öva. Öva, öva, öva - kika runt efter inspiration, försök återskapa men sätt en egen spinn på det. Utmana sig själv, försök lösa problem. När man stöter på problem går det utmärkt att googla (många träffar leder till StackOverflow för min del) och sedan lära sig utifrån det. Kopiera inte kod rakt av - försök tolka den och förstå den innan användning. Det sistnämnda hade jag problem med ganska länge, men till slut fastnar det mesta.
Jag har aldrig lärt mig från böcker eller liknande - men det finns säkert massor av bra sådana inom ämnet! 
#2 Jamen precis - det är lätt att tänka "det här ser ju bra ut, det spelar ju ingen roll om jag förstår så länge den funkar". Det är väl inget fel med det i sig, men man lär sig ju så mycket mer om man försöker sätta sig in i koden! 
Man kan börja med att formulera en enkel idé till ett projekt, det ska dock vara något överkomligt som inte tar allt för lång tid. Sedan är det bara att börja söka efter exempelkod och sätta ihop allt tills det fungerar som man vill.
Efter det kan man expandera projektet med fler funktioner, på det viset lär man sig ganska fort och man får också se hur saker fungerar i praktiken.
Man tjänar också mycket tid och kraft på att lära sig hur man gör saker på ett bra sätt från första början, så få genvägar som möjligt föreslår jag. Det går att uppnå resultat med en massa ful-lösningar i koden, men lär man sig att göra saker korrekt har man igen det senare.