Ok ill tell you how, it took me about a month and I had 2 of them.
First you have to write down your dreams every time you wake up, if you don’t remember every dream then you will have a lucid dream and just not remember it.
So you need to ask yourself all day everyday “am I in a dream?” And don’t just say it, really look around and think about it a lot. See if things are how they should be. You need to do this at least once a hour.
Then by habit sometime when your dreaming you will ask yourself that, and realize your in a dream! Then you can do whatever you want, just stay calm or you will wake up.
Keep at it, just don’t give up. Good luck!
Lucid dreaming to me is a very fascinating thing to do and definitely worth the effort. However, most of the more mainstream techniques such as mild, reality checks etc. are low quality and even after the large amount of time it gets to make them work, its uncertain if you’ll have a lucid dream on any given night. There are more sophisticated and ingenious methods out there that I’ll give you a link too. http://www.youtube.com/user/LucidDreamTricks
This guy’s methods are better than most the ones you’ll find in books, and it’s completely free! I’ll just give you one tip, though. When you get to the timer method, I like to go to bed around 10:30-11:30 and set the timer to beep about 5-6 hours later. Maybe even seven hours later if you need it. I have found that when you get more sleep before doing the method it aids in waking you up. Set the timer very loud to if you need it to wake you up. Then you can use the RAMP timer setup or whatever works for you and do his methods. If the timer still isn’t waking you up, after the initial 5-7 hour rest period, you can set it to extremely short intervals of like 3 minutes to wake you up. You may not understand what I’m talking about now, but once you watch the videos, you’ll understand. Trust me, this is the way to go if you want to learn how to lucid dream. If you get good, you can virtually have lucid dreams at will! Best of luck to you 🙂