Genuine interest and patience. You'll need that to be good at anything. Trite, but so rarely exhibited by the folks in the fast lane.
Anyone who really wants to be a programmer can be a software engineer, because if you are really interested in programming you spend a lot of time programming and that will be enough to get you an engineer role somewhere.
My dad, an MBA, would never admit to it, but I once caught him coding Excel macros. I asked him "Isn't that programming? There's loops, conditions, variables and procedures!" And he goes "I don't program, I automate tasks for moving Excel spreadsheet data into the our data warehouse.".
Moral: Not all programmers can be software engineers, you have to be someone interested in programming.