1 - can it be easily reverse engineered if somebody gets their hands on 2 of your passwords?
2- use a different formula for banking and other highly secure sites.
The above formula fails the 1st test, but it's easy to tweak. Here's another formula:
first 4 letters => the 4 letters to the right of the first letter of the domain name on a qwerty keyboard, wrapping as necessary. the number "3" last 4 letters => the 4 letters to the right of the third letter of the domain name.
So for google the password would be:
hjkl3pqwe.
ycombinator would be:
uiop3pqwe
et cetera.
Make sure you have a number in your formula, so you don't get thrown by sites that require a number.
P.S. the formula I use is much different from that described. :)
Edit: If they compromised one of his other accounts...
So his method is: For every domain use separate password which you can simply generate in your head every time you need to log in. For example by the formula f(domain_name)
Ex:
f(domain_name) = "abc"+first_and_third_letters(domain_name)+"123";
f(google) = "abcgo123"
This way if one site you use is hacked and your password stolen, they can't get to any other of your data online.