Thank you .
A lifetime, and honestly, no one - contrary to the current trend in job titles - will ever be a true full-stack developer these days.
Now they should be considered individual stacks like LAMP stack, MERN stack, etc.
That, however, is my personal opinion based on over 20 years of experience.
My advice would be to focus on learning a single programming language. You will find that it will snowball into learning other programming languages, frameworks, resources, etc.
It's more about mastering your own work ethics and dedication to the art of what you're learning, and when you've reached an advanced level of one or more of those skills - it's most likely because you've realized that anything we become great at, can always be refined and made greater.
It takes a lifetime; don’t trust anyone who says they are full-stack.
I’m doing this since 1998. I did a lot of server maintenance, network building, application programming, web programming, and so on. I really do know a lot about how all the things work behind the scene, yet, I don’t even dare to call myself a full-stack developer.
If you want to learn it, you should start from the basics. Here is a list of questions, assuming you are into web development:
- What are computers made of?
- Which part does what?
- How are they inter-connected?
- How computers are connected?
- What other devices are in a network?
- How computers communicate over the network?
- How applications communicate with each other?
- What is the protocol used for communication?
- What are the important parts of a message?
- What software can you use to serve static files?
- How about dynamic content?
- Learn databases.
- Learn about at least one SQL server and its dialect.
- Learn about at least two NoSQL servers. I suggest two because NoSQL gets more and more popular, and you already have plenty to choose from.
- Learn about running environments.
- How to run your code directly on the OS?
- How to run your code in a VM? How to instrument new VMs when you have to scale?
- How to run your code in a containerised environment? Again, what do you have to do to scale?
- Learn HTML. Not just the tag names, but what they do, what they can be used for, how they are rendered.
- Learn CSS. You should know about browser differences, selectors, and all the like. Don’t get surprised when you hear the term “box model” and such.
- Now learn a JS framework of your choice.
And at this point, when you have mastered all the above, you may consider calling yourself a full stack developer. But you won’t, if you have a bit of honesty in yourself.
This answer has received 1 appreciation.
I'm not sure I agree with any of the given answers so far. I very much consider myself a full stack developer; have so for quite a bit of time. It's at the top of my resume; I mention it when I interview and is a badge of honor for me. I also have > 15 years of experience in my stack of choice (LAMP)
I also think most of the answers given are getting the definition of a full stack developer wrong. The full stack is which ever language / server is chosen. So a stack can be MERN or MEAN or LAMP or etc... It's impossible to be a pro at every single language; or every single stack. A stack can be whatever a company chooses it to be. Your "stack" could be as simple as Swift on the frontend (iOS) and Apache / Laravel / MySQL on the backend (an app I'm working on now). I wrote the entire app - configured the server; setup and configured the DB, wrote the API and wrote the app in Swift. I am very much a full stack SALM developer (I just made that term up, lol)
To actually answer the question (which I'm not sure anyone did) how long will it take you? Nothing is earned over night and it takes years to get good at any given language. Spend the time you can on it; try to learn something new every day and try your best. There is no race here; there is no who is better then who. Don't kill yourself trying to keep up with others and try to have fun. This is a marathon, not a sprint.
I agree with Gergely Polonkai and Steven Ventimiglia but I would like to add one small bit; there are lots of "full stack" jobs out there now. Just because they said "don't trust anyone who says they're full stack" or "no one is full stack," doesn't mean you should not apply for these jobs in some circumstances because the term is thrown around loosely. What this means is that if you see a job posting for example which specifies "at least 1 year experience in full stack development." This shouldn't translate into "oh crap well the guys I trust at Hashnode said I'm not fullstack or shouldn't call myself fullstack so I won't apply." But rather
This company says they want a full-stack master but what they really want is someone who is familiar with one group of technologies and can use them to solve problems from CSS to SQL and inbetween.
In other words, many firms now adays aren't looking for a real "fullstack master" when they ask for fullstack devs. They're just looking for people who have done some projects throughout the stack and are comfortable solving problems with it; Someone who can pick up and start chugging with the stack and who has developed good habits with it.