Because sharing information helps developers solve two problems.
1. Too many talented developers cannot interview worth shit. I cannot change the way companies conduct their interviews, but I can help good programmers become better interviewees.
2.Too many talented developers are taken advantage of because they do not know their market value. For example, one of my friends is a level 4 engineer at Google in Mountain View and only making 115k base. How did he end up with a signifcantly lower wage than his peers? Because he told Google his absymally low salary at his previous job before joining.
Let's be honest, people hire who they like. An interviewer's preception of your technical skills will be influenced by how much he likes you. The halo effect is real.
At first I was reluctant to share compensation details because a company's offer is their private information. Then after a few more offers rolled in I realized all of the companies knew exactly how much each other was offering. They all gave me the same numbers. This included companies whose recruiters said, "Our HR department is too small to know what others are paying. Can you please help us out by telling us your current salary and expected salary?"
I compared my offers with friends and concluded a mid level (non-senior, not college hire) dev should make at least 135k for base salary and enough stocks and bonuses to surpass 200k per year. This is for Seattle as of spring 2014. However I followed my heart and accepted a slightly lower offer to join a start up.
Caveat: never believe any compensation numbers you read online or hear in person. People brag and exaggerate. Engineers lie to recruiters, recruiters lie to engineers, recruiters lie to other recruiters, and engineers lie to each other. I only believe numbers when I 1) see an offer letter, 2) see a pay stub, or 3) hear multiple people with the same job title tell me identical numbers.
Update: I love this article!There are plenty of people who says syntax doesn't matter. But I met enough people who would aggressively chastised me for missing a semi-conlon. This means there are: people who vocally care about syntax, people who won't say anything but still care about it, and people who clain they don't care but probably do on a sub-conscious level. So just always write code that compiles. It's not hard.