I dont agree with your comment ..
Thinking of developer and Good tester is different..
Developer always tries to make application work .
Tester always tries to BREAK application. .
(Tester can think of scenarios which developer cant. )
Moreover knowledge of product is very important , developer knows only his module but tester should know all the modules and their exact behaviour.