Since I work with both developers and employers, I hear about payment from both sides—those that think people charge too much and those that think that people pay too little.
Normally I fall on the side of “charge however much you can.” I think developers making more money is generally a good thing.
I saw an interesting blog post from Nathan Barry about value recently. He mentioned a certain product that he likes but that constantly increases their price aggressively. Anytime the value of the product increases, they raise the price.
In a way, that’s fair. But there’s something nice about leaving some money on the table and giving more value to keep from driving people away.
I think a similar analogy applies to developers. Is it good to be underpaid? No.
But if you aren’t being underpaid, you’re probably being overpaid. It’s not really possible to be paid exactly correctly since you get better at your job every day. Being overpaid isn’t really sustainable.
I see some developers constantly changing jobs to get a higher salary. If you can do that, great. Most people will struggle to find work that way.
I’m not suggesting you charge less than what you are worth, but sometimes it’s good to fall on the underpaid side a little bit and leave a slight margin there to keep more opportunities open.