A white box tester openly reviews the source code.
A grey box tester will typically manually verify that the code functions correctly and then review the source code.
Automation engineer writes code that tests the code.
Often times a person can perform all 3 (I currently do).
Typically a white/grey box tester will assist in the writing of the code but, depending on the organization, should not check in code. Their code should be more or less suggestions to developers. By doing this it reduces the conflict of interest in testing the code you wrote.
The major benefits to a white/grey box tester is the extremely in depth understanding of the project as a whole that the tester will obtain. The amount of time reduced by having a white or grey box tester review defects can drastically change the pace of the development process as well. Often times these testers will have a much better understanding of the AUT than anyone else and can find the root cause of the defect a lot easier.
The skillset needed .....
- Development Language(s)
- Communication (Both verbal and written)
- Ability to interpret code
- Ability to spot a minute error in code without execution
And many many more.
As an example of a benefit to a white box tester, a few weeks ago we made a change to our source code. I was reviewing the source and realized that a variable was never being used after being declared and a function called to set it. The function to set it was quite resource intensive, the developer did not realize that this was no longer necessary for anything in the code. The declaration and set was removed and that segment of code's performance was increased drastically. Without a review of the source code it would have been impossible to detect this since the variable literally was only set and nothing happened.
This happens more than you'd like to imagine.