Learn languages by switching between massive input and massive output
I've recently changed my Mandarin learning from massive output (speaking/writing) to massive input (listening/reading). My technique for learning involves trying to keep myself motivated to practise everyday. This I believe involves a rotation of massive input and massive output. When I say massive, I mean you are intentionally trying to get as much exposure for that side of the language as possible. You will still output when you are in your massive input cycle, but the aim is more to attain knowledge and vice versa, when you are in a massive output cycle, you will still listen and read things, but the aim is to practise what you know.
Input helps you build your knowledge of the language, vocabulary, grammar, a feeling for the language (what people naturally say, native pronunciation). Output helps you build fluency, which is basically you practising what you've learnt from all the input. My method involves switching from massive output to massive output when fluency = knowledge, which means you need more input to push your knowledge up. And then when your knowledge > fluency, that's when you need to switch back to massive output. You will know when your knowledge is greater than fluency, because when you are trying to talk about a topic, the words don't flow from your mouth smoothly. You just need to discuss that topic 10 times and you'll begin to figure out how to talk about it in many different ways.
So for instance I just came back from Shanghai a month ago, where I've literally been speaking only Mandarin for 2.5 weeks, and the weeks before I was on Skype everyday harassing people to go on audio with me. In Shanghai, I got to the point where I was pretty fluent in all the words I knew and the only words I was really practising was the words I was words I was learning whilst speaking. With no new vocabulary to practise to fluency, you end up stagnating and you just use vocabulary and grammar patterns you know. Simply put, output is about practising what you have learnt from input. As languages learners we are just copying natives speak. If we didn't - no one would understand us.
So now that I'm back to England I've switched back from massive output to massive input I'm watching raw tv shows, listening to music and learning the HSK4 vocab list and grammar so I can up my knowledge and then I'll move on to practising those words to fluency again. I'm trying to listen to Chinese videos in the background whilst doing other things to increase my exposure to the Chinese language and to increase my listening skills through osmosis as much as possible.
I believe you could also learn a language through more balanced forms of input and output, but I think it's more boring to have a solid routine all the time. You need to do what you need to do to keep yourself motivated and interested. And for me I'm quite an obsessive person, so if I get into a TV show, I'll just keep watching it until I finish it, or if I am enjoying speaking to people over Skype, I'll keep at it for a whole week. It keeps things interesting for me to focus and then switch rather than having a set routine that never changes.
These videos I'd also like to share are from Khatzumoto from ajatt.com who blogs mostly about learning Japanese (but also sometimes Mandarin and Cantonese). However 99% (especially since Japanese has characters as well) is relevant to learning Mandarin as well. He talks about how massive input is important as you can't say something like a native if you've never heard anything before. He also talks about how input is the way you learn, output is the way you show off. There is also a lot more you can learn from his website as well so check it out!