I haven't found a better source of software engineering knowledge than this book combined with Code Complete.
I read both The Pragmatic Programmer and Code Complete (2ed) before Thinking Forth. The latter provides a wonderful software engineering foundation (in clearer, more concise language too).