As someone self-teaching their way into software engineering, would you be able to suggest any resources aside from Code Complete for these principles?
But also remember that there's no one proper way of doing these things, it's all heuristics, not laws written in stone.