You can find Fly off Route 16 (West of Celadon City). To find the location, go North from where you would find the Snorlax, then you will need to cut two bushes. There is 1 trainer battle, and then go North for the house from there.
You are awarded Fly after you beat Chuck at Cianwood Gym
You can find the correct way to Fly in the Controls section.