Same way you get better at anything: practice!

Here are some additional tips:

1) Learning to code has a lot to do with how well you Google things and how easily you give up.

Needless to say, you should be great at Googling and not give up easily.

2) Break new things into smaller chunks.

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.

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.

(Note that this always applies to web development, but not always to lower-level stuff.)

3) Stop using PHP.

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.

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.

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.

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.

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.

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).

4) If using PHP, Ruby, Python, or Node, learn how to write unit tests and start writing them.

This is incredibly important. They're not that fun or interesting, but you need 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.

5) Learn what the following mean and make them your religion (Google is your friend here):

- (Related to #4) Test-driven development

- "Premature optimization is the root of all evil."

- DRY (don't repeat yourself)

- Principle of least astonishment

- "You aren't gonna need it"

6) Always have a mission.

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.

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.

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.

7) Look around at different APIs.

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, and so many more things.

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.)

8) Ask the right questions.

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.

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.

So instead of saying, "how do I do [x]?", say "I've done [x] like this. Is there a better way to do it?"

That's how you learn. You're basically turning the anonymous experts in those communities into your personal mentors.

9) Seriously think about taking some classes.

Fundamentals are important and will save you lots of time and Googling. I'd highly recommend a class on relational databases as well.

I don't know anything about boot camps, but if you try one out, make sure you "Ask HN" about it.