Anytime that you are in the tech field especially (this applies to some other fields too) there is a huge amount of chance taken on by the employer in that they are unsure of your skills. There isn't any governing body that tells the employer, John is a great developer.
So they usually pay very low at the beginning. I have hired really really good developers out of college and paid them 35K a year. Think of it almost like the NFL or MLB when owners get to pay great young players the minimum because of their rookie contract. That doesn't mean the player is bad. It just means that is what they were paid.
Also just like my NFL/MLB example you pay for talent. So take two baseball players with same rookie contract - Player A hits .230 with 10 HRs and Player B hits .290 with 34 HRs. There is a good chance Player A will see very little raise (and could get demoted) and Player B could end up making 10 times as much a year than he was making. Note that it doesn't matter that these players aren't 10 year veterans when they ask for their raise.
Well you aren't in MLB so the 10 times your current pay is out, but luckily unlike MLB you probably don't have a 3 year rookie contract.
That means once you show your worth to your current company you deserve to be paid at least how much they would pay someone coming off the street with your skill level. And since you are proven and having understanding of the company and projects I would think the average salary is just a starting point.
As a manager of developers it was very normal for me to give a developer who was with us 1.5-2 years a 20-40% raise - and a few times even higher. And this all depends on what I hired someone at. If it is 35K - which I know seems very low but it works - I have given some developers 50% raises before the two year mark. I know other companies will pay them 50-60K a year so I want to match that.
How do you handle this? Be honest with your boss. Since your boss isn't in your field (not sure how technical he is) you might need to educate him. You need to figure out where you would be hired in at in your company and other companies for your skill level. Then find the salary ranges based on position, tenure, competency, and region.
Then you have to come up with a number. So let's say that you are making 45K a year and your position makes 60K a year normally in your region/industry - middle of the range.
You don't want to come to your boss demanding 60K. You probably want to say something like, "Hey BOSS, I really think I am underpaid. I feel that I am a high contributor and do XYZ. I see that my current expertise and position would normally pay me 65K. I know this isn't in the range of our normal yearly raises so how should we proceed?"
This does two things. First it isn't demanding anything and it let's your manager feel a bit in control. Second you are giving your manager padding to work with (you want 60K but said 65K).
Your manager will work with his boss and HR. They will determine what your value is and how to deal with your case. Even if you are worth 70K they might not give you 55K. Also having a non-tech boss could really help or hurt you.
You can go back and forth a few times to get to an acceptable level but if they give you a final offer you basically have to take it. If you don't like it then you start looking for other jobs. But know that when negotiating it isn't how much you are currently making but is your replacement worth to their company.
pay raise of 20-25% or would that seem offensive- offensive is a rather strong word :p , I don't tink he'd spit out the coffee he's drinking. But let's face it , 25% raise is NBA salary – Caffeinated May 11 '15 at 19:35