Advice to New Programmers
If you're just beginning on this path, don't worry about choosing the "right" first language. Once you learn one language, you can apply the same basic principles to any language. Trust me, once you know about data types, control flow, and error handling, these things will not change. And once you learn one language, picking up another will be vastly easier. But first you need to get over the hump of learning your first language. I personally started out with Ruby, which is wonderful for beginners. The Ruby community is also extremely welcoming and helpful.
Which brings me to my next point. Go to meetups! I know what you're thinking. "What?!" you say, "You want me to go to meetups when I can't tell the difference between a client and a server yet?" Yup I get it. I've been there and feel your pain. But you need to get out of your comfort zone, precisely because you don't know anything right now. The thing is, you're basically in this catch-22 loop where you don't know what you don't know, and trying to figure it out on your own is going to be painful. When you go to meetups, you beat the catch-22. Nice and friendly people will help you get your environment setup, help you find your way around the file system with bash, etc. Isn't that amazing? Seriously, go to meetups!
Okay, so you've been to your first meetup, but what should you focus on in your day-to-day practice? Or what if you live in a rural area where you don't have access to meetups? Fortunately, there are an abundance of online resources targeted towards beginners right now. This particular roadmap is both free and awesome, and also happens to be one I used when I first started out. If that one doesn't work for you though, a quick google search should help you find one that does.
The important thing is that you follow some roadmap. Don't try to reinvent the wheel. Other people have walked this path before, and following their advice will save you precious time and effort. Learning to program is hard enough as it is. You want all your brainpower to go to understanding concepts, not trying to figure out what you should be learning next.
This is another trap I think a lot of people fall into: trying to find the absolute best learning resource. Sounds so harmless right? What's wrong with this? It's easy to rationalize that you're being productive by shopping around for different learning resources. But you're not. Every minute that you spend searching for that holy-grail learning strategy, is a minute that you're spending not learning programming. If this is a problem for you (and I'm guessing it most likely is), go on ahead with your "research". I'm not saying you can't do that. Just don't count that time as time spent learning programming. After all, you don't want to fool yourself into thinking that you spent 2 hours on learning to code, when what you actually did was surf the web for 2 hours.
Consistency isn't sexy, but it's the only thing you need to be concerned with right now. Think about it, who would you rather bet money on: someone who's obsessed with finding the perfect exercise routine, or someone who goes out for their daily 6am run like clockwork? If you're consistent, you're already well on your way to becoming a
bad ass programmer.
Oh yeah, and go to meetups!