Hacker News new | past | comments | ask | show | jobs | submit login
Balsamiq : Salary Policy (balsamiq.com)
122 points by pirate_is_back on Sept 12, 2011 | hide | past | favorite | 134 comments

A common trap: We want amazing programmers, and we pay them slightly better than average.

I'm good at what I do, and I aim for more than "a little better than someone with your same job in your geographical area."

Some of the most amazing consultants I know charge far above their local market average. And I'm always happy to write them checks, because they're amazing programmers, and they would be a steal at 5 times the typical market rate.

Could you provide an example what such an amazing programmer knows? In my experience beyond a level employers cannot even measure your knowledge, because that would require them to be really good at what you know best. If you are an extremely good developer, you can get a job at Google or at a similar company, and you will receive slightly better than average compensation. But getting 5x market rate? Being a good programmer is not enough for that I think, no matter how good you are (unless you built something truly special, like solving NP problems in P.:)). You have to build up your personal 'brand' for that I am afraid.

Edit: I am really curious who are those extremely smart programmers.

Guys on the top of this list?


Or guys who were at the top of the Netflix prize top scores list?

Those are some truly gifted guys (one in a million caliber), but even most of them don't earn 5x market rate.

I'm 13th on the TopCoder list (1st in US). I'm not sure that the list matters as much as you think. I can solve algorithms problems (those similar to what you see on TC) very quickly, but they just don't come up that frequently at my job. That skill does make job interviews a joke.

The main difference is that I have spent a lot of time working on writing code quickly and correctly. Every time I competed in TC I would read the code of the best people and try to figure out why their code was so much simpler than mine. Now I think I can write clean code faster than most.

The downside is that I have spent a ton of time working on 50-200 line projects. Throw me into a 500k line code base and I'm no longer world class.

Getting to where I am is mostly a product of spending a ton of time in college practicing for programming contests. In college I saw a very strong correlation between time spent programming outside of class and programming skill.

When I'm interviewing programmers, I would define "amazing programmer" as a combination of 3 things:

1) Talented: Can they code well, even when things get tricky? This loosely correlates with things like TopCoder rank, but it leans more towards software engineering and debugging skills.

2) Driven: Are they relentlessly productive, even without supervision?

3) Solves the right problem: If there's a solution which provides 80% of the benefits for 20% of the cost, do they find it? Do they also know when it's time to turn a nasty ball of hacks into a rigorous model?

If you have these 3 things, then you will easily create 5 times more value than the average programmer. Note that you won't necessary get paid 5 times more, because that also depends on your negotiating skills, your marketing ability, and how much money your clients or employers have.

I live in Eastern Europe. I have worked at the local branch of several multinational companies. When I applied to a job, I solved the interview problems and then I was offered a slightly more than average salary the same way as my colleauges. None of the interview questions were deep enough to mirror how I think about really hard problems. The only way I can really measure myself is to work on problems like the Netflix prize, build my hobbyprojects (and I participated in math competitions when I was a child), etc.., but these are not related to my day-job. I earn $36000 a year currently. I once started a topic on HN where I have written this: please give me a very hard 'test' task (which can be solved in one or two days, but very tricky), and if I can solve it I would be interested in remote work for more than $36000 a year. (Which is slightly above market in Hungary) But no one answered.

About your 3 points: I agree that having these in one person is a good combination. However people are rarely exceptional in all 3 points. Some guys are exceptional algorithmizers, others have really good intuition for enginering, creating an amazing design (for code), yet others have exceptional memory so that they can dive into huge bloated shitty code, and yet others deal well with monotony (when you have to do unchallanging tasks, or deal with other people's shitty code). Some people are fast like hell, others can grow beautiful thoughts if you give them days to think about a problem. But I agree that a bit of all of this is needed mostly. Also being strong in one territory you can emulate other strengths. If the tasks are not on your limit, you can emulate fastness with smartness, and emulate smartness with being fast. But when the problems are hard enough that you are at your 'limit', this emulation no longer works.

One of the most amazing programmers I've ever worked with was Vadim Zeitlin, a core contributor to the wxWidgets project and resident of Paris. We hired him to port Quake 2 to run on top of the wxWidgets, and it took him 3.5 days. His work helped save a multi-million dollar project. Now, his daily rate wasn't cheap, but we were delighted to pay it.

If you want to earn more than average, here are some suggestions:

1) Contribute heavily to an open source project, preferably one used by people with lots of money. This demonstrates your talent and drive more clearly than a few interview questions.

2) Learn how to market your skills and how to negotiate. For the former, study patio11's career. For the latter, try reading "Getting to Yes" from the Harvard Negotiation Project.

Thanks. I am creating a component-based GUI lib right now which is written in pure Javascript and which is all painted on a HTML5 Canvas. (it is intended as a Flash/Flex killer) (5200 lines is ready currently) I've implemented all the styling, dynamic layout and painting from scratch. I will open source it, so even if it will not be successful as a startup, I hope at least it will be good to convince clients/employers that I can design/program nontrivial things.

I am a bit confused by this post. You have a multi-million dollar project that runs on a port of Quake 2?

I think that employers generally don't pay employees significantly above market salaries. Certainly not double, even if they're worth 5x or 10x another employee. Their HR departments won't let them. To do significantly better, you need to be starting a business or contracting. And if it's contracting, you'll probably have to be doing fixed bid contracts, something that divorces your hours worked from the amount paid - so that you don't run into a "we pay no more than $x/hour" clause, where x is whatever the local lousy body shop charges.

^^ this. Fixed bid contracts are the ONLY way off of the hourly merry-go-round if you're a contractor/consultant. Highly, HIGHLY recommended.

Knowing things isn't really the tip off of a good programmer.

Put them in a foreign environment, with a foreign language/api/framework/application/etc and within a short learning curve they will find solutions to problems 1) you didn't know you had, or 2) you had long since given up on finding a better solution to.

If you can replace the programmer with books (and time to read them), they can't be that valuable. You don't pay one person 5 times market rate if 5 people at market rate can do their job. You pay someone for the concentration of talent.

You don't need provide 5x to the value, you just need to convince the employer you are.

Also, much of a programmer's worth pays off over time: specifically how easy is it to maintain their code? Writing truly maintainable code is HARD and difficult to quantify.

"you just need to convince the employer you are."

Yes, and I think you cannot convince them on a standard job interview. A job interview is like this: you solved the problems we gave you, congratulations, we hired you (for slightly more than market rate). They will not give you harder and harder inteview questions and finally give you 5x market salary in my experience.

Earning 5x market rate is not only about capabilities but more about building a very interesting track record, personal brand, which helps you differentiate yourself and helps you convince clients about your value. It is a bit like a long-term strategy game.

This is especially true if they are hiring via recruitment agency.

With our formula, the job category to compare these people with would be "amazing consultants", not average consultant. In other words, these people are very senior. No?

Seniority does not, in my experience, correlate with productivity. The programmer I most want to hire has the job title "intern", and he will be hired straight into a major tech company at a princely salary. He'll be worth it, too.

I've interviewed enough programmers to know that the average talent level is absurdly low. But there are amazing people out there, at every level of seniority, who do 5 times more work than average, and keep doing it.

If you pay only a "little bit" more than market rates, you'll lose these people late in the hiring process, when they take an offer for 40% more at another company.

I meant "senior" as in "more capable", not tied to years worked. Sorry ESL here.

Amazing people don't travel in homogeneous pools whose salaries can be averaged out meaningfully. Finding these people is hard enough, finding out what they would get offered down the street is harder yet.

What has being senior got to do with quality of work delivered? Sure experience counts for some thing. But measuring someone's worth by looking number of years on the resume seems to be a bad metric for hiring.

I generally put in twice the effort as a my boss on almost daily basis, I expect to be what he is now in half the time he took to be.

Why not just flatly pay them on the amount of work done, regardless where(location) they work.

And how do you measure the amount of work done? Lines Of Code (haha)? Function points? Hours?

The grim reality is that there is just no meaningful way to objectively measure the "amount of work done" by coders and the likes.

Let's take this from the realm of the abstract to the concrete:

Let's imagine an absolutely top-notch consultant with excellent hard and soft skills that mesh nearly perfectly with your current and projected needs.

How much would you offer them if they lived in NYC, Detroit, or San Juan, PR?

Hi rscale don't take this the wrong way but it would take me a couple of hours to do this research (plus I would do it with the consultant, who knows their local market way better than me), and I don't have the time right now...getting flooded with comments here, plus I actually have work to do. :)

Comparing consultant comp to full time salary is an apples/oranges comparison, as is the sort-of "second derivative" comparison of (a) how different consultants set their comp relative to each other and (b) how full time developers set their comp relative to each other.

The mechanics by which a consultants comp are set are just wildly different from how full time salary is worked out.

everyone knows how much everyone else makes

This may work well when things are going well, but as soon as there are internal "issues", it is a recipe for disaster.

"Joe earns 25% more than me, but doesn't show up until 10:00, so why should I bust my ass coming in earlier."

"For what she earns, Shirley should be providing way better specs than this."

"Cut me a break. I spent 3 weeks overtime getting that thing done, and Fred gets all the credit (and money!)"

"I'm way better than Jim. Pay me as much or I quit."

"Jerry must have something on the boss to be paid that much for doing so little."

I could go on and on, but you get the idea...

Team building is tough enough. Making compensation public adds another layer of complexity. Now every internal concern is made more difficult because the dollars come into play. There is no argument or discussion where salary is off limits. Before long, that's what everyone will be thinking about when you really want them thinking about anything else.

Salary information is never really secret, even if the official policy says it's secret. There's always salary information, often inaccurate information, percolating through the grapevine at every large organization.

I've never worked anywhere with an open salary policy, but my guess would be that, while it might be hard for some people to adjust to, in the long run it would remove a large source of internal politics.

People get over it.

I work for a public sector employer. My salary is fully searchable and posted on the local newspaper's website.

Unless your company is doing dumb things like discriminating against certain types of people, there aren't many surprises to be had. Frankly, working with a useless coworker is frustrating regardless of salary.

Yeah, but your employer probably has a pretty well defined process for setting salaries and giving raises, right? Perhaps it isn't a fair process, but at least consistent. Private companies aren't always like that.

Exactly -- inequity is the issue, not disclosure.

It's a bigger issue for the employer -- it doesn't take a rocket scientist to figure out that certain people are buying new cars at bonus time, while others cannot afford lunch.

When it comes to compensation (for tech workers), fair is not equal and equal is not fair.

I know that you didn't make the claim that they were, but it's a logical half-step to "unequal is definitionally inequitable".

My best colleagues made/make more than my average colleagues, at every place that I've worked, and that's exactly as it should be, IMO.

I agree.

IMO, it shouldn't be an open secret that the top performers make more. Designate them Senior Widget-Makers or whatever. If they are masters of their craft, recognize them for it.

When things are kept secret, there are abuses. The top performers whom you respect may get paid more, but then so can the below average performer who is politically strategic to whomever makes compensation decisions.

Obviously that is not an issue with a startup, but that happens everyday in larger orgs.

Obviously that is not an issue with a startup

... if only that were true...

>My best colleagues made/make more than my average colleagues, at every place that I've worked, and that's exactly as it should be, IMO. //

Do they do a different job or produce more output in the same job? That's the only reason, IMO, for them to get paid differently. I believe that you should get paid the same to do the same job.

They tend to have the same level/track/title/whatever-your-company-calls-it, but produce more output in the same job. Sometimes, they produce so much more output or produce output that none of their peers could produce, that it's as if they have a different job.

Said another way, these are the people that I cannot help but think of when I read Joel's essay on hitting the high notes: http://www.joelonsoftware.com/articles/HighNotes.html

Making compensation public adds another layer of complexity.

Doesn't hiding compensation also add layers of complexity? Not only does the boss need to dedicate energy to maintaining the secrecy, but she must also keep track of the possibility that the secrecy has been breached without her knowing (i.e. the scenario you describe is in effect but nobody can talk about it).

To be frank hiding the compensation creates more complexity. It creates 'us' vs 'them' hidden internal rivalries.

No matter what, if you comparatively underpay a hardworking guy compared to some who is earning more and doing less. There is going to be huge friction, and salaries often leak out in some way or the other. And the good guy is either going to have his way or worst walk out.

Now please don't point me to some survey taken by some one in some corner of the world, where some group of people had bigger long term motivations when compared to immediate money and then declare tell that money doesn't matter.

Money is a huge motivating factor. Its strange that employers feel its unethical and unhealthy to compare salaries whereas at they same the keep comparing work all the time.

This information was leaked internally at a company I worked for years ago. It turned out there were some pretty wide discrepancies in salaries for people in similar positions. I suspect this is often the case at private companies and it definitely wasn't good for morale.

> "Cut me a break. I spent 3 weeks overtime getting that thing done, and Fred gets all the credit (and money!)"


tl;dr Don't work overtime, work sustainably.

All your other issues are with differences in pay, which is exactly what the article is advocating against.

Sorry to say, but I don't buy this thing.

Deadlines and goals are fatal to the success of any software project today. And that is so for a very simple reason, you have to always drive towards something under well defined clear timelines.

This is very essential for two reasons. The first being measurement and continuous improvement. The second being you must decide what is a acceptable time for something to get done, and stick to it and adjust pace accordingly(The definition of a deadline). Else all it leads to overly delayed projects.

I have worked in a similar set up you described for a year or so. Have never seen such clueless roaming about in my whole life. Last time I heard they are still developing. I have done more work in a month than what they have done in say half year.

The reason is simple, pace again has a metric - Its, how fast?

I didn't describe this setup, but it sounds to me like they are using Kanban. Properly executed Kanban should have Queueing and WIP limits to prevent clueless roaming, make sure tasks get completed, and provide feedback. If something doesn't get finished in an acceptable amount of time you hit the WIP limit, a red flag is raised, and that task becomes everyones priority. If you regularly hit the WIP limit then you have a problem that needs to be addressed.

If you don't set these limits then you are absolutely correct. In this perfectly acceptable scenario you do need deadlines, however I'd argue that adjusting pace isn't the correct step. Here you should remove low priority unfinished features from the deadline, maintain a sustainable pace, and use features completed as your metric.

> fatal

vital? I can't make sense of your post otherwise.

all those sound like fairly valid concerns. if somebody isn't pulling their fair share, somebody should say something about it. if you actually should be making more than somebody else, you should be able to say something about it.

i have no problem thinking all these thoughts even without [ or may be precisely because of not ] knowing other people's salaries :) Knowing other people's salaries would allow to stop my imagination run wild about their huge salaries (while i'm getting peanuts :) and may be turned my thoughts into useful way, like for example :

"Joe earns 25% less than me, yet shows up at 10:00 - 2 hours earlier than me - may be i should start busting my ass a little bit." ( and if he does happen to earn 25% more, than, well, nothing lost and changed :)

Anybody in the United States may be interested to know that they are permitted by federal law to discuss their salaries with their co-workers.

The NLRB is known primarily as the board that governs unions and union organizing. Well, for many years they've considered employees discussing salary info as protected organizing activity. Any employee that experiences adverse action by an employer after discussing salary with a coworker should contact the NLRB. They will pursue the issue on the employees behalf.

This advice comes from my lawyer, but you should consult your own before you do anything. Also, my 0.02 is that as an employee, I feel I'm often at the higher or top end of my employers range, and despite the fact that I legally COULD, I don't really see any value in discussing my pay with a coworker.

> Also, my 0.02 is that as an employee, I feel I'm often at the higher or top end of my employers range

That's what you think, and that's why your employer also likes you to keep your mouth shut. Or?

(After all, more than 50% of people are above average drivers, or whatever the exact anecdote is...)

While I appreciate your concern for my general welfare, you can see some write-ups about my negotiation experience in my comment history, and in a few instances where I've been privy to department payroll information, I've been at or near the top.

> I feel I'm often at the higher or top end of my employers range, and despite the fact that I legally COULD, I don't really see any value in discussing my pay with a coworker.

Back in the day, I used to work for this place where, you've guessed it, according to the people who did my salary reviews, I was always close to the top end of my employers range. So, yeah, you can imagine how that worked out :)

While it's always possible to get a general impression of what a coworker earns (always assuming it's possible, or legal), it's no substitute for numbers.

When I went to buy a new car, the salesman said the "market for trade-ins was awful", and my car was worth like $8,000. Meanwhile, not 50 feet away, the same car with more miles was listed for $22,000.

The salesman fluff I heard is identical to the "you're near the top end of the range for this title" crap that you hear from HR. It's fluff, intended to make you suck it up and go away.

Yes, exactly - I only wish someone had explained that to a younger, dumber me back then.

See my reply below. But suffice to say, don't be so quick to apply your experience to others. My comfort that I'm either the highest or nearly the highest paid developer where I've worked isn't coming from some blind promise from HR.

If it seemed that I was trying to apply my experience to you, I apologize - that wasn't my intention. Keeping salary details secret is usually a valuable form of information asymmetry that HR, in general, try their best to maintain (funnily enough, that was a clause of my NDA.)

> despite the fact that I legally COULD, I don't really see any value in discussing my pay with a coworker.

It depends on your goals. If your main goal is negotiating more money for yourself, and it's true that you're already at the high end, then yes, not much motivation. If you're interested in seeing a more equitable distribution among your coworkers, letting them know your salary can help them negotiate a better salary.

Other reasons to publicise your salary include helping to recruit people to your field (if you're paid a lot) or debunking the idea that you're well-paid (if you're not).

For instance: I teach college, and I'm happy to do so, but I'm not in it for the money. I discovered that my students often think that us professors make a lot more than we actually do, and I decided to start telling them: in my seventh year as an assistant professor (in my previous job) I made $52k/yr, and was (I think) the highest-paid member of the junior faculty. Many of my students made more than that as starting salary. It was enough for me, but the students were shocked, and came out with a better understanding of where graduate school might lead them. Knowing my salary also helped some of my colleagues negotiate a better salary for themselves.

The trouble is, if coworkers know you're paid more, it seldom engenders trust, appreciation and respect.

I read this somewhere on HN a while back "Pay a man by the hour and he will put in as many hours as he can, Pay a man by the brick and he lay down as many bricks as he can".

I would go on to add and say, If you a pay people flatly some will work, some won't and rest will do mediocre. The guide to get work done is to drive the rewards in that direction.

I fail to understand what stops companies from paying people on the basis of work done, rather flatly or hours spent. Is it because it will set a dangerous precedent and that productive people will end up earning more than what you expect to pay?

I refuse to believe that people are not motivated by money or that money is somehow not a major motivating factor. All passion, determination et al management talks is OK. But I'm not happy earning less than what I'm supposed to. Just because I could it doesn't mean I should. I do more than everybody else back at work, so I obviously I deserve more.

The way salaries work is to get bulk of the work from a few. But then reward every body equally on a average basis. That to me seems like expecting a few to carry a burden of the whole lot. And has a strong stench of communism to it.

The problem with this idea is that it's very easy to incentivize the wrong metric.

What are you going to do for a programmer?

Feature? Prepare for features that barely meet the spec and nothing else.

Lines of code? Prepare for massive code bloat.

And all of these will also mean no-one will bother with internal tools or any quality of life clean ups. Refactoring will be avoided. Helping other people will mean earning less money.

There's also research out there that shows this is a bad idea. This type of incentivization has negative effects on productivity in our type of work. People won't say no to more money, but it doesn't make them work better.

Your final paragraph highlights bad management, not communism. If you've a few stars and a lot of mediocre then your management has failed. Be it their hiring, their day-to-day management, their personal development of their staff, their lack of challenging work, poor planning, whatever it is it's not expecting a few to carry the burden, it's letting a few carry the burden because of bad management.

I disagree here,

There is good enough metric for your 'work', its wealth generated at the end of it. Many even refer to it as value created. Again I know the next question you will ask is what if the person worked hard and still fail. Well that is not going to be often.

Team work is every body working to achieve something. One set of people making up for other peoples inefficiency isn't team work.

I am not telling people must be paid more money to motivate them, I am saying.. We must ask people to work more to earn more money. Which is perfectly acceptable. I don't know why I should earn equal to some guy sitting next when I do far more than what he does.

Again counter argument to that which people put is, that putting in extra effort is personal choice so it shouldn't be compared. Well in that case, the other argument is also valid. If some one chooses to be inefficient its his/her problem.

> There is good enough metric for your 'work', its wealth generated at the end of it.

In a company larger than a startup, this is usually outside the employees control. A project with a small (or no) market, isn't going to make a lot of money, even if it was a lot of work to create. The people assigned to work on such a project may not be there by choice. Also, what about "internal" projects that don't actually generate revenue, but make everyone more efficient?

Those projects generate wealth too!

The point isn't that a productivity can't be measured, but there seems to be a lack of willingness to measure it.

Its simple, if you actually start paying people by their work. You are at the same time putting a lot of other not-so-good-but-lucky people in serious trouble. People higher up in the hierarchy are especially very afraid of this. People who got quickly promoted during the gold rush, people who benefiting from job hopping by claiming 30% hikes on each hop every 9 months will be in serious trouble.

In a place where all your work is transparent and your rewards are driven by it. A few productive people will run the asylum.

The majority isn't going to be happy with this. People love getting rich by chance and not by choice and work.

This still doesn't deal with the problem of "what you work on isn't your choice" If I get assigned to, maybe, improve the front page by implementing a design from the graphic designer who gets paid more if the front page drives more signups?

The graphic designer, for his/her awesome design? Me, for the time I spent implementing it? Both of us?

What if it fails horribly? Do I take a hit (in the sense of not creating wealth/not getting paid more) because the graphic designer did a horrible job? Orders came down that said "Implement this" and I had no choice but to say "ok" (maybe I could argue the point, but at the end of the day it's not my decision)

Don't misunderstand, I'm not against measuring output - but you make it sound easy and it's not. In a small (< 20 people) company, you may be able to measure an individual's contribution to the bottom line, but in a company where an individual project may involve 30+ contributors, how do you evaluate who was most important to the projects success?

I also fear that trying to measure output, like you suggest, would create perverse incentives. When everyone's pay depends on their contribution to the bottom line, it's in everyones interest to attribute as many accomplishments to themselves as possible (while downplaying any mistakes). In this kind of environment those who float to the top are not necessarily the best individuals, but the ones most skilled at self-promotion. This is no better than the current situation, really.

Edit: In principle, if you could (in a non-political way) measure someone's contribution to the bottom line, this would be an ideal yardstick for setting compensation. But I think that the complexity of large projects and human nature makes this kind of measurement impossible.

Again I know the next question you will ask is what if the person worked hard and still fail. Well that is not going to be often.

This happens all the time. Startups are risky propositions, and sometimes people work hard for years and come away with nothing to show for it.

At least with software, productivity is very hard to measure without introducing perverse incentives. This is especially true at small or innovative companies, where people must be flexible.

Moreover, software is creative work, not brick-laying. There's a fair bit of evidence that incentive schemes harm that work. (See "Punished by Rewards" for details.)

I code because I love it. If it didn't pay, I'd be like my actor/musician friends and get a day job. So I just want my salary to be livable and fair. I don't really care about maximizing it.

Yes, Even I love to code.

But just because true hearted altruistic people like you exist. It doesn't mean I must replicate the same. I'm motivated by many other factors apart from money. But just because that is the case, I feel no reason to settle down for less than what I deserve.

And just like you mentioned I want my salary to be just fair. Just pay me for my work. That's all I'm asking. And is that a unjust demand?

"what I deserve"?

Your demand is not unjust, it's meaningless. This is not some god-given court that determines what you "deserve".

You say that you are motivated by money and other factors. So then the question is: If job A pays x and gives you the other factors that you say motivate you, and job B pays y but gives you none of those other factors, what is the minimum ratio of x/y for you to take job A over B? If you say 1.0, then no, those other factors do not matter to you. If it's <1.0, then why is it not "fair" for the job A to pay that?

>>>This is not some god-given court that determines what you "deserve".

Well in that case let karma decide for itself.

Now lets come to what you are talking about. I guess you didn't understand me. I was asking why is it that employers for people under the same conditions pay the same money for different work delivered?

What you are saying is true, but that is a totally different question in itself. What you saying is to consider a trade off between other factors and money in two different setup and is perfectly acceptable.

But that's not what we are debating here. We are debating why some who is doing a lot more extra is getting paid the same as some who isn't doing all that. In that case I don't see any reason why the first person shouldn't make extra.

I would go to an extent to say he doesn't just deserve but has the right to make that something extra.

You are assuming there's different work delivered. The null hypothesis has to be that there is the same work delivered, unless there's evidence to the contrary. And it's clear getting unbiased such evidence is difficult, at best. Hence, a reasonable baseline is same pay.

Note that they have different levels of positions, so "the same" is only valid within a level. If you are so awesomely skilled and productive, presumably you will have a higher-level position.

You are focusing on one aspect to the detriment of others. If you have individual (i.e., arbitrary) salaries that lead to people who are better negotiators getting higher salaries for reasons that have "nothing* to so with work delivered, how can you say that is fair.

The world is a big optimization problem, and in my opinion the policy described in this post does a pretty good job at that optimization.

I'm all for fair. I just think incentive systems are a bad approach to that for programmers.

That concept just doesn't work for knowledge workers. Cash incentives for non-mechanical tasks have minimal value.

You need to pay people enough, but not too much. The rest is about having leadership in place that can create a good work environment.

If compensation was correlated to performance, industry would have figured out a way to pay for performance and let the people doing nothing go.

Also frequently referenced on HN is the TED talk about how monetary rewards lowers performance in creative endeavours.

People in creative jobs are not simply monetary-maximizing machines. They will work hard if their work is interesting and rewarding in all kinds of non-monetary ways. (I also assume that what they think is that if you don't like the work, you'll leave and find one you like better, or that pays better. So you don't get people who don't like the work, don't do a good job, but will try to hang around as long as possible because it pays so well.)

Besides, I agree with the other posts that any practical scheme for paying programmers for performance will be subject to issues of "optimization by proxy". Just look at finance: there, where you'd think it would be easier than most other fields to measure "the wealth generated" by people, all that apparently happens is that you incentivize short-term gain at the cost of assuming huge long-term risks.

To quote from the article: "This is the base salary. To participate in the company's profits, we also have a generous profit sharing program as well."

So an employee that lives in X makes less than an employee who lives in Y for the same amount of work... I don't see how that's fair, since I would be getting paid $1000/mo by those standards. Conversely, I would get a raise of an order of magnitude if I wanted to up and move to, say, New York.

But of course, and that was handily left out of the post, in Italy developer don't really have all that much options, so the whole discussion is moot anyway...

Look at it the other way around. If where X lives a decent home costs you $1,000/mo, and where Y lives the equivalent home costs $2,000/mo, how fair would it be to get the same wage?

Completely fair? They're getting paid to work, not to live in expensive houses.

The relevant issue isn't "fairness", it's "market value". There is a lower supply of people willing to work in regions with high cost of living (for the same wage).

If I'm working remotely, I'll go to whomever pays the highest (hint: it's not the company that gives me a salary cut based on location).


I am working remotely. I'm getting paid "London" rates, not "Greek village" rates.

you're right, it's not about it being fair, it's about it being the market rate for your skills in your area. If you want to live in Podunk, Nowhere, how can you expect an employer to pay you twice what anyone else in your town is willing to offer you? Especially considering that you'll be mostly telecommuting. Most companies prefer to have you working in their offices. Paying NYC rates to someone working from home, in a low wage area, makes no sense.

What should the company be bothered about what and where I'm spending my money. If I spend more will my work become more valuable to the company or vice versa?

On the similar lines I don't understand the concept of companies asking people about their compensation in the previous company. You are supposed to pay for my work, how does my compensation even matter here?

If my previous compensation was high will my work in the current company become more valuable or earn higher profits?

I've seen a handful of companies with remote employees adopt a different policy. Essentially, they pay you an average salary by hot-market standards and don't adjust downwards. So, if you live in an expensive city (SF, NY, TK, LO) you are paid a fair market wage in those cities. If you live in a cheaper area, than lucky you.

Personally, I prefer this. Maybe because I tend to like smaller and less hip cities. But it keeps things simpler for the company, and it means that, as an employee, you have a pretty significant say in, what we can call, your net income.

I don't think that's fair, not everyone can move easily (family etc).

It seems unfair to me that I might be paid less because I've opted to live in a cheaper area. Why should I have to subsidize my teammate's expensive, hip, urban NYC lifestyle if I've decided to live somewhere cheap and save money for early retirement, starting my own business, supporting a larger family etc?

Sorry, am I reading correctly? Peldi should subsidize you starting your own business? That seems unfair to me :)

Aside from the clear moral judgement you're making here, which doesn't belong in any salary policy, the problem with your argument is that chances are that you made that choice while maintaining a "urban" salary... i.e. you are fundamentally exploiting a loophole in "classic" remuneration systems thanks to telecommuting, and you're now complaining that those systems might be catching up.

If I'm providing exactly the same quality and volume of work, why should my zip code matter? You're reading a moral argument in my comment that I'm not making. If anything this sets up a reverse incentive to live in NYC like a college student and pocket the difference.

What you're calling a loophole is the new reality of information-based labor. Companies that penalize their employees for taking advantage of this flexibility to set their own lifestyle priorities are going to suffer in the market for top talent.

"If anything this sets up a reverse incentive to live in NYC like a college student and pocket the difference."

It's a choice; everyone makes lifestyle choices, like you say, as an employer there's nothing you can do about that. Peldi's policy gives you a chance to make enough money to live comfortably wherever you want to live; I think that's quite a perk, for most people. If your lifestyle choices completely trump your professional interest in joining the company, you'd probably not be a good match anyway.

Besides, the policy is weighted by bonuses, and sounds more like the starting point for a conversation rather than a straight-jacket. Knowing the man a little -- we went to the same highschool, although he already was a celebrity and I wasn't ;) -- I'm quite confident he'd do his damnedest to find a satisfying and realistic agreement for anyone interested in joining.

If you're willing to effectively penalize people for making lifestyle choices, why not also cut salaries for people without kids? Or people with spouses with good jobs? They don't need the extra cash. This sounds like a deal you'd offer a co-founder, not an employee.

I'm sure Peldi's intentions are good here but from a potential employee's point of view I don't see why anything but the quality of my work should determine my salary.

I think in 99% of the cases you are mistaken "can" with "want". That aside, whatever way you pick isn't going to be fair to one of the two groups...at least my way 1 group gets an advantage out of it (and the other group doesn't, out of choice (the vaste majority of the time)).

If an employee was to get rid of his/her car, would you reduce his/her salary by $~1200/month because it isn't fair that he/she nets more money than the people who can't live without 2 cars?

If the job requires that they be in a particular location, paying them based on that is fair, and very common. For example national services in the UK do that (such as post office), because if you're a postman/nurse/whatever in one place, you can't chose to live anywhere.

However if you don't care where they live, they should all be paid equally - a person living in Thailand doesn't deserve less money than a person living in NYC, and just because they don't need as much money, doesn't mean they don't deserve it.

How do you deal with someone who says they live in Manhattan, but actually lives in Mumbai?

Fire them for lying when they provided an address in their employment contract. Do you really want to employ someone who does that at all?

Sorry. I meant someone who has a legal residence in Manhattan, pays US taxes, US social, but actually spends 350 days of the year "vacationing" in Mumbai, Buenos Aires, etc? And by "legal residence" I mean paying $100 a month to a mate to collect my mail and occasionally crash on his couch. Believe me, the IRS will back me up when I claim to be a US resident, as will New York State, and they would penalize balsamiq if balsamiq tried to claim otherwise.

So what matters? Is it the law? Or is it the spirit? Is it the quality of work or the location where the person was at the time they did the work?

What if the Mumbai resident comes to a conference in SF. Do you pay them SF rates for that week? What if they come for a month? Six months?

This may seem like I'm looking for (what we call in video games) an exploit. I am of course. But so is balsamiq. It wants to have lower salary costs. It could pay everyone the same, no matter where they live. But it knows that Mumbai residents can't up and move to SF. So it claims to be fair (if they moved we would pay them more!) but the reality is that it knows they cant.

I'm not saying I have a better idea. But I'm not the one blogging about it.

So I'm about signing the contract. And I somehow know that when I write down Mumbai I will get $20k/yr and when I write down NYC I will get $100k/yr.

Guess what I am going to do ...

> Do you really want to employ someone who does that at all?

Do you really want to work for someone discriminating based on location and not performance?

No, you shouldn't go work for them, and people shouldn't hire you. The situation works to everyone's advantage.

Using location based salary comparison sites is broken if the job is for remote not onsite work.

If hackers in NYC are paid $150k, and Philly $80k, neither of those numbers matter. What you want is the going rate for remote-working English speaking US citizens in eastern time zone close to a major airport with the given skill set.

What this company is doing is like deciding how much to pay an employee based on whether or not they have a pool and tennis courts in their backyard, rather than based on supply and demand.

Note: Location still matters, which is why I mention timezone because depending on business, location/timezone of existing employees, and where HQ is located it may change the demand. Also since most remote workers travel to gettogethers occasionally I mentioned airport.

The average wage where I live now is shockingly low - and that's after coming from a somewhat depressed former mill town. I moved here though because it's absolutely stunning and my life will be immeasurably better because of it (once I finish this damn never-ending contract and get some free time at least!).

I'd hate to have to take a giant pay cut just for wanting to actually enjoy my life. If anything my productivity and quality of work has gone up. Pay me less for that and I'm off!

I'm curious as to how this policy affects someone like me - the jack of all trades. I'm the guy who comes into a place wearing one hat, and for better or worse, ends up wearing four or more different hats in sometimes quite diverse positions. It's hard to figure out what salary I "should" get on the market because my position doesn't exist on the market.

Could you identify people in your industry that perform a similar job to you? If you could select the comparison pool than I would think it would be more accurate/useful than, say, an aggregate based on simply job title.

I'm in a similar situation, and I can't. I sometimes do IT for a small Windows network and for Linux and the VPN that connects everyone to both. I program in C#, perl, Java, shell, and XSLT depending on which part of my job I'm doing, and some of my job is "software architecture" which other people actually program. My industry is a tiny niche, and generally hires programmers from outside it and trains them, so salaries aren't a function of the industry. How would I find a good comparison?

Just read Dan Pink's Drive where this idea comes to fruition and it makes complete sense (especially in my own life). From Drive[1]:

Instead of paying employees the wages that supply and demand would have predicted, they gave their workers a little more. It wasn't because they were stupid. It was because they were savvy. Paying great people a little more than the market demands, Akerlof and Yellen found, could attract better talent, reduce turnover and boost productivity and morale.

Highly recommend reading Pink's book.

[1] - http://www.amazon.com/Drive-Surprising-Truth-About-Motivates...

Enjoy it while it lasts. Sure its cool and fun while there is a small 'startup-minded' team, racking in huge bonuses.

But once you grow a bit, you will inevitably have employees take a look around and think:

  "Hey.. home come I am much better than these two guys around me, 
  and we all make the same money ?"
Socialism has been tried in many different forms and ways, sadly "equality between equals" is not a concept Humans are willing to accept too well.

Not everyone makes the same money. If you're better, you will be compared with more senior jobs (and I mean senior as "more capable", not with more years worked).

So you basically have two people sitting in the same room:

  a) 45 year old veteran, 3 years in the company, titled "Software engineer II"
  b) 25 year old grad, 1 year in the company, titled "Software engineer V"
Sure its all open and nice, but don't you think (a) might be a bit.. disgruntled ?

I'm not sure they would, actually.

It's been my experience that there are several clearly recognisable personality types and work ethics in a typical software development team, with two groups in particular that always stand out.

You can have people who come into work, do a decent job, and then go home and spend time with their kids and other things that really matter to them. The job isn't something they live for or feel deeply invested in, and they are unlikely to go "above and beyond" on a regular basis. They welcome training to develop their skills and will consider new working practices with a reasonably open mind if a good case is made, but it is up to the company to arrange and manage such things. However, the bottom line is that these people do competent work to a reasonable professional standard. In my experience, this is by far the largest category in most software companies.

Then you have the geeks, the ones who love the work, spend a lot of their spare time programming as well just for fun, follow all the latest trends, and -- dare I say it -- often frequent forums like this one. It is in the nature of this group that they will learn and develop their skills faster both because they spend more hours programming themselves and because they are exposed to more diverse influences within a shorter period of time. These people won't be the ones waiting for the company to organise training, they'll be pushing to get the latest book or go to a useful conference, or they'll be giving the training themselves to share with their colleagues some new ideas that they've discovered elsewhere. The risk with the younger members of this group is always that they will go too far: while they can be many times more productive if properly guided, almost all architecture astronauts, latest-shiny-development-process evangelists, and similar poisonous influences fall into this category as well. The risk with older members of the group is that their priorities in life may change, often as they have growing family commitments, so even if the desire is still there, the time to keep up as much as they used to may not be. You can usually recognise the ones who manage it, because they'll be the ones who somehow manage to help half a dozen different colleagues to solve some non-trivial problem each day, even though they still get their own work done faster than most anyway.

In my experience, everyone in the office knows which of these (or other) categories everyone else falls into within a few weeks of working with them. The former group don't tend to begrudge the effective keen ones the faster career advancement and more rapid pay rises they tend to achieve, because they recognise the difference in approach. On the other hand, they also have little time for the keen-but-poisonous ones, and become mighty upset when someone who thinks they're all that but isn't really generating the results to back it up is being mistaken by management for one of their more productive brethren and rewarded disproportionately.

In short, there are different types of people and they know who each other are. As long as reward and career advancement are based on genuine merit, I don't think most older "journeyman" professionals do begrudge the young high-fliers their faster progression.

(Edit: As an aside, I assumed your examples were exaggerations. I have never met the 25 year old, my egotistical self included, that was worth a senior job in a larger development group, even if they thought they were at the time.)

Heheheh... all these comments just go to show that no one policy can be fair for everyone. :)

Balsamiq have a policy that aims at fairness, is transparent (and yet open for discussion!) and has a better-than-average chance of appealing to their target audience - people who aren't driven by money but don't want to be taken advantage of.

If you can't find a compromise that works for your situation - go work somewhere else.

Great post Peldi.

Before people get too bogged down in just the salary piece of this puzzle, you should also read Peldi's comments on bonus: http://news.ycombinator.com/item?id=2986673

Balsamiq is a fairly unusual business and Peldi has grown something pretty extraordinary. This is a highly profitable business that has made a conscious decision to be great on its own terms, not on the terms that a Silicon Valley venture capital firm might impose on the business.

If you want some more background, go and watch this video of the talk Peldi gave at Business of Software last year. There is also a transcript you can speed read if you don't have an hour to spare.


I think this policy could use something about fairness, too. Some great programmers don't care much about money and hate negotiating. You want to be sure they get paid as well as somebody who is as good but is greedier or more aggressive.

I didn't care much about money when I was younger. Now that I appreciate more how brutal this field is for older programmers and what it means to be older and less employable in a bad economy I'm much more aware of my running bank balance. I'm also more aware that I have a finite amount of mental energy for coding every day and if I'm selling it instead of building my own things I'm not willing to do it cheap.

This is all bullshit. Each company pays what is profitable for its business model. Work in a hedge fund? Your pay is commensurate with the business model. Work in a digital agency, likewise. As far as I can tell a digital agency is a digital agency, is a digital agency. They all work the same market with the same overheads. It doesn't matter that the dev in the hedge fund is doing precisely the same job (in my hypothetical scenario).

"You are paid a little better than someone with your same job in your geographical area."

Of course you are, otherwise your employer wouldn't be in business. The operative word being "little". Substitute "a lot" and either they have a disruptive business model and are willing to pass on the cream to their employees (unlikely), or they are going out of business.

Give me any dev in any city in my country and I will be able to tell you what they are on based on their seniority and sector plus or minus a few grand (and what's a few grand after higher-rate tax?).

Tldr - this policy is moot because salaries are open secrets.

FWIW, if you want to earn more go into contracting (i.e. take on more personal risk), move sector (i.e. go into finance), start your own company, or move into a more traditional profession.

So how is this going to work? Pick the highest salary found in the area and add X, where X is a little? I never found the numbers from sites such as 'salary.com' or 'glassdoor' to be very reliable as it always 'depends'.

It is indeed a bit of a fuzzy process. We look at stuff together (ranges from salary.com, other similar job postings), then we agree on what's "a little better than the average". Maybe it means picking 3/4 point in the range...in general, I have found that people have a number in mind that would make them happy...it's a matter of finding it out and making sure it fits within the policy...it's easier to do than to explain. :) So far, those one-on-one where we decide the new level have been fairly easy meetings.

Has this resulted in anyone taking a pay cut yet? Does everyone know what everyone else gets paid (including management)?

Why not go further? Everyone submits their living expenses to the company including food, shelter, and so on. Limits are set on what is considered to be a reasonable expense. Above and beyond that, everyone gets the same base weekly stipend plus an additional 50% of the stipend, cost-of-living adjusted for their area. To further promote equality amongst employees, company robes can be distributed to everyone. Multiple employees living in the same city can move into the company commune to further enhance the brotherhood and keep everything fair.

I think the problem is what happens with time. Imagine that you have a graduate in a time when the economy is doing poorly. There will be lots of people out of work and competing for jobs, so salaries (in general) should be less generous. Later, if the market picks up, then that year's crop of hires will have higher salaries. Fast forward a few years. Assuming that the difference in skill levels is negligible, salary differences could still be significant. Now, imagine that salaries become public...

That is sort of a odd policy. I get the impression everyone works remotely from wherever they live (but I might be mistaken). For someone with a computer science background the salary here is like 80k - 100k USD. I don't know what people average in the US but it's certainly not the same across the globe. For bigger companies I can understand this might not be such a problem but for smaller ones the salary difference would make up a lot of money.

But I guess they stick to having people work remotely from within the US?


How does the open salary policy work? Are salaries posted on a big white-board? Does the open salary policy have an effect on employee behavior? In many cases people are reticent and fearful to talk about/compare their compensation. People tend to attribute their personal self-worth to their number and consequently hold on to it pretty tight. How did you guys get over this particular hurdle?

They are in a spreadsheet in a shared drive, along with all the rest of the stuff. What I have found is that because of our base salary policy, people don't really care about the hard numbers...they know that they are paid well and that their colleagues are paid well...at least that's from what I can see. One employee told me that they'll not look at the numbers because it makes them uncomfortable, and that's fine with me too.

Ah -- so it's just the base salary in that spreadsheet? Why not share total compensation as well (including bonuses)?

That's so awesome! How did you guys come up with this idea? Did it meet any resistance initially?

That stuff is there too (in the monthly expenses).

Really cool to see a company implement such open policies! Have you by any chance read Maverick or The seven day weekend by Ricardo Semler? Lots of similar ideas in there, and well worth the read!


What about this situation:

X and Y are places with similar cost of living, but people in X have lower wages and they are used to live cheaper (i.e. they buy less goodies, etc..) than in Y.

In other words, maybe it would be better (more fair) to compare costs of living instead of average salaries?

I think that's too subjective. We look at average local salaries as a way to see "what does the local market say this job is worth right now?" - basically deferring the range to what the market decides is fair.

On the other hand, you seem to use cost of living comparison for profit sharing.

Quote from: http://blogs.balsamiq.com/team/2011/09/12/profitsharing/

"9. then all weighed by the cost of living in each location: this is important because it's fair. The fact that we're using cost of living instead of average wages is even more fair (i.e. Italy has low wages relative to the cost of living)."

The last sentence, regarding Italy, corresponds to the situation I described. So, if it is fair for profit sharing, then it also seems logical to treat it as fair for salaries as well.

Competitive wages are incentive to not leave. Profit sharing is incentive to do good things.

The former must be dependent upon local wages. The latter is able to incorporate fairness.

I wouldn't differentiate it regarding fairness. Salary + Profit == Compensation for the work done. Compensation should be fair.

I'm amazed at some of the replies here. "He'd pay a better-than-average base salary -- THAT'S NOT ENOUGH!"

Guess what? Outside the Valley bubble, more often than not it IS quite enough.

How do you do the profit sharing? Does everybody get the same percentage, or is it based on how "senior" they are?

In a world of tele commuting it's pretty backward to base salaries on locations. If someone is great pay him what he is worth to you and not what he would get if he decided to go and work at the local cubicle farm.

I'm hoping for a future where you get paid what you are worth and can travel around the world working from wherever you want. A boss that says "Yeah, the beaches there are wonderful and people earn $5/month. So your new salary is $6" is a deal breaker in that dream ;)

> I'm hoping for a future where you get paid what you are worth and can travel around the world working from wherever you want.

If you're a competent programmer, you're already living in that future. Remote work is pretty easy to get these days, especially if you freelance and do either web dev or iOS/android. I don't do either and I've still managed to live on three continents in the last year or so.

This policy rubs me the wrong way, because I believe in value-based pricing.

If I generate $1m of value for your company, I should be able to negotiate the capture of a reasonable chunk of that value. My decision to live in a high or low cost city doesn't change how much value I'm delivering, so it shouldn't have a meaningful effect on my price. Either I'm worth it, or I'm not.

Hi rscale, we have a profit sharing program in place as well. Also, if you're a super-senior person, that's who your base salary will be compared to. Also, you might get an extra performance-based bonus. Basically I consider the base salary to be just that...the base.

Your profit sharing program does not answer rscale's question, it compounds it, since you also reduce profit sharing by cost of living.

Balsamiq and profit sharing. Should be read alongside Balsamiq on salary policy.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact