In college i took some Japanese classes to bolster my knowledge of kanji, and being forced to read and write in these classes made my kanji repertoire increase dramatically. That being said, there's really only one way to effectively learn the written language, and that's practice. I've heard that setting up a goal like passing N1 is a great way to force yourself to become Japanese newspaper literate. If you're a beginner, i've heard that Heisigs "remembering the kanji" is a slightly unique but effective way to go. As for speaking, that comes from practice with native speakers of the language, as they can correct you and help build your vocabulary with neat little local phrases unique to a region. Also, if you're learning a new word or grammar phrase, making a sentence about it in your head rather than just banging that one word in can be effective, so you have something to help you remember it by. For example, the phrase "Me ni amaru" means something so horrible that something must be said about it. I had a student of mine say "Ano inu wa unchi wo shi makutte me ni amaru", which means "that dog poops so much something really must be said about it". It's silly, but it helps you remember.