The biggest reward is not financial gain, but the ability to impact people's lives in a positive way.
The most important single aspect of software development is to be clear about what you are trying to build.