Who is a good software developer?

Technical Interview process is really complicated. Some company give tests, ask a lot of technical details, ask to write code on white board. But the really good developer may be not selected but this way.

Who’s a good developer?
1. Smart (may understand somebody else written code and find issue) and good problem solver.
2. Person who develops clean: if he saved code - no issues, he/she will check twice all things.
3. Person who will think for several steps ahead: who in one email will answer all questions even though they are not asked yet. Who will explain anything for anybody (will add some screen shots and will use normal language without technical details if he/she needed to explain something to business).
4. Person who may learn fast.

If you have this person he/she may resolve all your problems, may learn new language or new technology. But often these type of people cannot remember all small pieces of technical things. They don’t need them. If it’s easy to google why we need to remember it?