The oldest software engineer I have met and worked with yet is 56 and it shows in his work. Like New-farer says, it takes time to become a great software engineer (or architect). Only experience can teach you that. But then you've got to go through all of the "low-level" programming stuff before you get there, and that too calls for time and patience and persistence. And passion too. But the thing is that the whole software engineering world is build around some basic and timeless concepts and those are the ones that are most important to get right - data structures, algorithms, design patterns... Once you are beyond those then you can mostly create software in any language for any problem domain. That's the long answer to your question. The short answer is "for as long as you are not senile!".
Learn first to treat your time as you would your money, then treat your money as you do your time.