When I first started programming as a profession in 2000, the idea of a cross functional developer was still in an infancy. However, I suppose, the idea originated with the mainframe. There, you would find a COBOL developer who knows SQL. Mainframe developers know those two programming languages due to the coupled nature of SQL and COBOL. It didn't make much sense to have a DBA or SQL-only expert come in an 'install' SQL to your COBOL program. In today's world those two concepts compose two parts of the three-tier architecture application; business logic and persistent storage.
No one talked about full-stack or T-shaped developer just 17 years ago. Today, it's a big deal.
Term review:
Full-Stack Developer: A developer who can easily cross tiers of an application by creating usable solutions. The three tiers commonly associated are presentational, business logic and persistence. This developer has skills in: JavaScript, HTML, CSS, an OO-language like Java or C#, and SQL or noSQL database concepts. It is also becoming increasing clear that some sites may skip over the OO-language in preference of JavaScript for their business logic tier. What's also become useful in a DevOps world as well are skills related to configuring the platform where all of the above is going to run.
T-shaped Developer: A developer who has a breadth of knowledge (the top line of the T) and a depth of one or a few skills within that knowledge (the down line of the T). To a degree the Full Stack and the T-shaped developer go hand in hand. However, a T shaped developer may also include skills related to project management, business analysis and people management.
I look for both types of developer depending on the role being hired for. If I'm looking for a pure developer; a coder with headphones on most of the day, churning out commit after commit, and interfacing with other developers, then I'm looking for the Full-Stack variety. If I'm looking for a lead or senior developer, then I'm looking for the T-shaped developer.
What do you need to get there?
First, I think a Full-Stack developer becomes a T-shaped developer over time. This is a natural progression as you become more experienced and have the social skills to push properly for your vision. Therefore, T-Shaped is really a very experienced Full-Stack developer!
So how do you become a Full-Stack developer? Lots of training. I think you have to spend time on your own to find the bits, pieces and parts that make up the above description. The world is about websites and mobile applications; you can make your own on your own time. There are plenty of tutorials to cover all of the technologies involved in a Full-Stack developer. You just have to invest the time. Finally, I think you have to put yourself in a professional position to do all of the above as well. Interviewers like experience that involves for a business and what you do on your own. You have to have both. That will set you apart from others.
Conclusions:
A full stack developer is a T shaped developer! Being human we are unlikely to be able to master many disciplines at a high level of performance in each. Full-Stack Development is a starting point. You can get going on the three tiers and see where that takes you as you go deeper and deeper into software development life cycles. Good luck!