Currently, best way to learn salesforce is Tralihead:
As of late 2014, by far one of the best options for getting up to speed on the platform is Trailhead, a free online training option provided by Salesforce which makes for a more interactive and easier route than simply reading the documentation. To test your learning in different modules you actually write code which is executed and verified by the Trailhead system.
Click on above link and begin your journey from beginner level.
There are a lot of moving parts in the force.com platform and it can definitely seem overwhelming at first, but the real trick is not to jump straight into the code side of things—there is a lot to learn about what you can do without code, and on any project you should leverage the declarative side of the platform as much as possible.
Personally I think the best route for you to take is the following:
Work through the Force.com Fundamentals Book
Next work through the Visualforce Developers Guide — IMO this is a MUST for every developer creating Visualforce pages… you’ll be amazed at how much you can achieve without a single SOQL query or Apex controller
Once you’ve got Visualforce nailed down, then start learning about Apex via the Apex Workbook. This will explain some of the fundamental concepts of working with the platform, specifically around limits etc.
If you work through the above you’ll no doubt pick up some SOQL along the way, and it’s not a particularly complicated query language to get to grips with. Once you’ve done all this you’ll have all the basics covered and then you can pick and choose which areas to focus on specifically, i.e. custom apps, mobile apps etc.
Few more things:
Learn the non-code side of Salesforce first. You absolutely cannot be a good Apex programmer unless you know core Salesforce extremely well. Here’s a great, free resource: https://www.udacity.com/course/ud162
Start learning Java. There are a ton of great books on Java and no good beginner books on Apex. The good news is there is 95% overlap between the two languages. Out of the five or so books I used, my favorite was Head First Java.
Once you’re ready to learn Apex, start off with a simple Hello World trigger. Then move on to SOQL. Then, combine SOQL and Apex. From there, you want to learn about Governor Limits, batch Apex, Visualforce, etc.
Finally, I created a site to teach people how to code in Apex from the absolute beginning. It was so unnecessarily difficult for me to get to where I am today that I decided to do something about it! Another answer referenced my site on this question as well.
I’m a long-time Salesforce admin who has no programming background and is starting to dabble in code. Echoing a previous commenter, make sure you have a solid understand of Salesforce as a platform and everything you can and cannot do with the declarative (non-code/point-and-click) tools before you even touch code. Build out some apps, build complex business logic, etc. If you’ve been an admin/developer on Salesforce for a while, you probably already have that. If not, I’d look into resources for the 401-Developer exam–if you have your head around all of those concepts, then you’re ready to touch code.
When you are ready to dig into code, I highly recommend: Hands-On: Introduction to Force.com Code (Apex) for Non-Developers
For Dev use:
For Admins use:
Good luck, and don’t hesitate to ask questions on this site, remembering to show what you’ve tried and what you’re stuck with.