The tools and languages you use do not matter as much as your understanding of sound programming principles. I've programmed in a variety of languages and frameworks, and I could tell you that they're just tools that will help you get the job done, IF you use them properly.
If I was just starting out, here is what I would do:
1. Read and learn about Object-Oriented Programming (OOP). If you're going to build anything more than a few web pages, you'll need to know OOP. Checkout Deitel & Deitel books for a relevant title. These textbooks are just excellent.
2. Once you have mastered the above, research, choose a stack and stick to it. Unless you have very specific needs, all of them should get the job done. Learn that framework, and get really good at it.
3. Once you feel you have mastered your current skills, challenge yourself by trying to improve things even more. (e.g. better code commenting, version control...) If you want to succeed as a full stack web developer, you'll have to keep learning and pushing your boundaries. (Hint: You should also enjoy it)
I hope this helps.
"Full-stack" web developer does get thrown around. However I believe that is still has a pretty static definition.
My understanding is it is a "jack of all trades" scenario. Except by "jack" I mean ver knowledgable just not a master, and by "all trades" I mean the layers of of a full stack developer mentioned here:
I would like to think that I am on my path to becoming a full stack developer. I believe this takes a long time. So I started by taking freelance work that enabled me to get my hands dirty. The more client need I answer the more I become familiar with all of these layers.
The only path I know to becoming a full stack developer is just start building things.
Want a starting point? Build an SPA that communicates with Wordpress for managing the state over the new WP JSON REST API, using Backbone.,js.
It's not something you want to achieve unless your goal is to be the technical cofounder of a startup. If you're the technical cofounder, *you* get to make whatever stack you want! You're the CTO. It's entirely up to you. Woohoo! Now you're the king of the mountain, but how are you going to make money? Technology is a means to an end. Nobody cares how the widget works. We only care about results. If you're caught up in the "programming for the sake of programming" mindset, get a PhD in Computer Science.
If you don't have a strong opinion about what stack to use, I think you're getting ahead of yourself. Maybe talk to your future cofounder about the market adoption of various technology. If you don't have a cofounder yet, maybe poke around Angel List and LinkedIn.
How hard will it be to hire people that know XYZ stack? Choosing unpopular technology will make it harder to scale the business. Assuming you're actually able to create something from scratch that works at all. I hear most computer science graduates can't create anything from scratch. Computer science programs crank out the employees that will work at your startup--after you cash out.
Ultimately, you need to be able to create something from nothing with your chosen language and do everything yourself--and have it all work flawlessly without weird bugs in the code causing intermittent problems. If you can't do that, you're probably barking up the wrong tree. You're only a full-stack developer out of necessity, because you can't afford to hire yet and you don't want to split more equity with a third person.
(As long as we're on the subject, I think an ideal cofounder for a full-stack dev would be someone that knows business law and marketing.)
After your imaginary startup starts growing, you'll want to hand the software over to a software architect, a dev-ops genius, a project manager, people to take it to the next level. Once it's time to hire, the business needs a completely different skillset that the full-stack technical cofounder doesn't have.
Working for any large company, they should have you doing specialized work. There can be only one CTO and it's probably not you. If it's a small company that can't afford to hire a sysadmin and a designer and a developer and a DBA, do you *really* want to do the job of four people?
"Full-stack" is more like a battle scar you get to talk about. Maybe it looks cool, but in retrospect it wasn't something you wanted.
The "full-stack" is a vague term, but in the context of web development I would define the following group of skills:
* HTML/CSS (the basics)
* A script-based programming language (one that allows you to think in procedures as well)
* An OOP language (or the flavor of the first language with all of the OOP paradigms in it)
* Database programming
* Design patterns
* MVC in particular - most frameworks out there are MVC-based
* Computer architectures - I don't believe you can be a senior backend engineer without understanding the actual hardware components responsible for everything
* Networks and server management - some good basics of hosting management skills
* Security - related to everything before, but it's another important topic for full-stack developers to always take into account
* Performance and scalability - writing a high-performance code is a skill that depends on your understanding of the server stack, the memory layer, CPU executions etc.
* DevOps paradigms - testing (all sorts of), continuous integration, tooling (version control, automated deployment, staging setup)
UI/UX/etc don't click with me when I hear "full-stack web developer" - that is more of a frontend developer/designer aspect, and is definitely not a requirement for full-stackers. It's always helpful to be able to wear more hats - design, UI/UX, marketing, soft skills could help you build a better product, lead your team or be a mediator between the team and the client, but it's hard to juggle with everything and the first group is easier to keep together in the same basket while improving your skills.