The development of efficient algorithms is as much an art as it is a science.
Success requires persistence, the ability to not give up in the face of failure, and to learn from that failure.