Same way you get better at anything: practice!<p>Here are some additional tips:<p>1) Learning to code has a lot to do with how well you Google things and how easily you give up.<p>Needless to say, you should be great at Googling and not give up easily.<p>2) Break new things into smaller chunks.<p>If it seems like something is too hard, figure out the first step. Google it if you can't do it yourself yet. Then move on to the next step.<p>Every program can be distilled down to very small, very simple parts that are then assembled into something more complicated. It doesn't matter how complicated the end result is: the basic parts are still the same.<p>(Note that this always applies to web development, but not always to lower-level stuff.)<p>3) Stop using PHP.<p>It's inconsistent, and it has these weird mashups of features from other languages that add to the confusion. It is harder to learn other languages when coming from PHP.<p>I think that Go is a great language to learn on because it's simple, consistent, and explicit. By explicit, I mean that there isn't a lot of "magic" going on underneath your code.<p>You may also want to check out Python, which has some weird "gotchas" (e.g. inconsistent naming of iterating functions), but is mostly a good learning language.<p>Java is the traditional beginner's language, but that philosophy has come under fire. I still think it's a good way to learn fundamentals, though. Java has a lot of vanilla implementations of concepts from object-oriented-programming theory.<p>3b) If you continue to use PHP, turn on strict errors when in development mode. Also use phpStorm (not free) or NetBeans (free). They understand PHP shockingly well.<p>Using a good IDE is surprisingly vital to learning and coding quickly. You'll want to be able to CTRL+click on classes/methods/functions to go to their definitions (among many other useful shortcuts).<p>4) If using PHP, Ruby, Python, or Node, learn how to write unit tests and start writing them.<p>This is incredibly important. They're not that fun or interesting, but you <i>need</i> to get comfortable with them. Not only do they make you much faster at finishing an app, they also make you a better programmer by forcing you to write only testable code.<p>5) Learn what the following mean and make them your religion (Google is your friend here):<p>- (Related to #4) Test-driven development<p>- "Premature optimization is the root of all evil."<p>- DRY (don't repeat yourself)<p>- Principle of least astonishment<p>- "You aren't gonna need it"<p>6) Always have a mission.<p>If you get up and say, "I'm going to learn how to make a single-page app today," you're not going to learn it. You need to have a real, finished product in mind.<p>That's what professional coding is (plus getting paid), so that's what you should practice. Many of the philosophies I mentioned above actually require knowing what you want to accomplish.<p>So as you go through your life, think of apps you want to create and write down your ideas. Don't remove ideas because they're hard -- remove them because you're not interested in them anymore.<p>7) Look around at different APIs.<p>There are a ton, and you can mash them up in really interesting ways. There are APIs for payments, text/video/instant/audio messaging, cars, movies, maps, places, government data, weather, finance, <i>and so many more things</i>.<p>There are countless projects you could put together in a weekend that use all of these different APIs. Do it for fun or profit, but make sure you learn how HTTP APIs work! (Strict REST APIs are a fairly rare subset of HTTP APIs, but you should definitely understand REST principles, as they pop up everyhwere.)<p>8) Ask the right questions.<p>Don't ask "how do I do [x]?" on Q&A sites or forums. You can just Google stuff like that. "How do I write cookies in JavaScript?" There are a million answers. "How do I send an HTTP request in PHP?" Again, a million answers.<p>If you really want to grow, take chunks of your code that are clunky or inefficient and ask people if there are better ways to write them.<p>So instead of saying, "how do I do [x]?", say "I've done [x] like this. Is there a better way to do it?"<p>That's how you learn. You're basically turning the anonymous experts in those communities into your personal mentors.<p>9) Seriously think about taking some classes.<p>Fundamentals are important and will save you lots of time and Googling. I'd highly recommend a class on relational databases as well.<p>I don't know anything about boot camps, but if you try one out, make sure you "Ask HN" about it.