- Not enough practice
- Misguided practice
- Lack of conversation
- Too much grammar
- Lack of grammar
- Leaving no stone unturned
Not enough practice
A kid spends 10,000 hours learning his native language, and that's even before studying it formally in school. You won't reach your dream of fluency with 5 min of DuoLingo. Or as FSI (Foreign Service Institute) puts it:
There is no substitute for simply spending time using the language.
– Frederick H. Jackson and Marsha A. Kaplan
Learning words in isolation won't help you form sentences. Learning unnatural language won't help you speak naturally. Working from text alone won't help you speak.
You need to practice (and not just study) the language and to use it. The rule of thumb is: learn sentences you would like to use.
Lack of conversation
Living languages are first spoken. Learn to walk before you run; learn to speak before you read & write. If you wait years before you have your first conversation, then you will be slow and awkward when comes the time to speak and feel bad about your level and the (misguided) efforts you put into the language.
Again, practice what you need.
Too much grammar
As you pick up a language, you will naturally repeat the things you hear. This means that, if things you hear are correct, you will speak correctly as well. Similarly, speaking well means speaking without thinking: you know this is how people speak in a given situation, and just use the same wording. You need to think in terms of intents and sentences ("I want this, so I say this") and not in terms of rules. Studying grammar has its place, but is no replacement to learning useful sentences. Getting obsessed with grammatical concepts will mess you up. Focus on picking up sentences you fully understand and grammar will take care of itself.
Lack of grammar
While being obsessed with grammar from the get-go is counter-productive, you do need to study it eventually – at least if you want to speak without mistake and sound educated.
Leaving no stone unturned
When you start (and even later on), you need to practice selective ignorance. You won't jump from zero knowledge of the language to full mastery of 10K+ words. So you need to focus on those words that you know are common and useful to you personally – and that means ignoring everything else.
But once you get to the advanced level (C1, C2, and beyond) you need to get obsessed with being able to understand everything (at least, if your goal is to speak as well as a native speaker does.) This means looking up every word you don't know and investigating any grammatical structure or phrasing that still trips you up.