Are advanced degrees such as Master's degrees or PhDs beneficial for software engineers? Should they be compensated for their advanced degree? There are plenty of programmers that don't have a degree that are better then programmers with advanced degrees so by which metric do you rate programmers? KLOC is not a good metric. For many areas of the hard sciences there is a vast difference in salary between the people with a B.S. and those with a Master's degree and a PhD. Should it be the same for software engineers? Why or why not?
I've yet to work anywhere where advanced degrees were directly compensated. When I interview people, I actually don't want to know their educational background--I've worked with enough PhDs who were luggage and people who went to Chubb or SetFocus who were excellent to know your academic pedigree doesn't mean much.
At the end of the day, if you have a Masters and PhD and they've given you the skills and expertise to perform at a higher level, that's their reward. Few employers will pay you for that upfront. Now, Google, quant employers and others are typically interested in candidates with specific post-graduate work--in this case they want specific academic backgrounds, so the degrees provide access to that track. But for your average developer, I think there are too many ways to get the right type of skills and experience to constrain it to a purely academic track.
How are developers evaluated--that's a whole different measure, but it's not degree and not KLOC, where I work, it's typically based on production, skill, and collaboration/mentoring.
The place I used to work for gave people $500 extra on their starting salary for a conjoint and I think $1000 for a masters. Hardly worth it in my opinion, since the pay rise you'd get for the year (or two) of extra experience is worth (way) more.
That's not to say that it didn't helped them get the job to begin with though.
I've worked for a company that had a strict formula of computing an employee's salary and it had been taking a degree in account (+10% to salary for every CS degree - BSc, MSc, PhD). After some time, they changed their policy as it was clear that not every time a degree tells about one's actual skills and knowledge. On the other hand, I've never regretted going to not only through BSc program but MSc CS program as well as it gave me additional, let's say broader, perspective on how to look at things. Although I realize that that's not the only way how to become proficient in CS and IT industry.
Actually, if I am talking to someone who owns a BSc degree in CS, I know that he or she has successfully completed at least one project - his or her education. If I am talking to someone with MSc degree, I know he or she has successfully completed at least two projects, etc. And that's generally a good thing.
I've worked with numerous people who have degrees, multiple masters and only two people who had PhD's.
Of the two with PhD's one was a fantastic programmer but the other would get mistakes in "Hello World".
The best programmers I know only have degrees. Of the few people with masters, they are generally so-so programmers.
So how did they fare? The PhD's had higher starting salaries, but the benefit to the company is the contribution and in the end the better programmers got the better pay they deserve. Consider also the degree-only programmer has 4 year head start on the PhD in the earning scale probably means they start on a similar pay scale.
A better question is: Why are you hiring someone with an advanced degree to be a code monkey?
Put their education to better use for the company, and then yes, pay them more.
It really depends on the job. Some employers need the extra skills that come with an advanced degree and the compensate for it. Others don't, and thus will usually not pay much more for it.
It's pretty typical for it to be a fiscally smart idea for a person to get an MS degree from a decent school. You often get an automatic promotion or pay bump out of the deal, and at someplaces get put on more of a fast track for management or more senior technical positions.
If you want the same type of job that BS and MS people do, then a PhD is a waste of time. Any extra pay that you'll get from a PhD will not be worth the lost wages while getting the PhD. On the other hand, if you want to work on more creative problems or in specialized domains where a PhD is required, then go for it. In some fields a PhD is treated as being equivalent to an MBA (although it takes much longer to get).
It may be better to ask:
Should you pay someone with 3 years less real world development experience less?
Remember getting a PhD means you will have worked 3 years less then other software engineers of the same age as you.
In the hard sciences the research jobs are a lot closer to what someone does in a PhD, then a software engineer job. Now if the person were doing real cutting edge research it would be a different matter.
As always it depends on what the job is. If the job is to invent and implement a new cryptographic system, then a Ph.D. in C. Sci. or Math is relevant and might be well worth paying extra for. If the job is to maintain a forum and shopping cart on a web site, there are lots of folks with NO degree who can do a terrific job of that, and I don't think a Ph.D. would bring any extra value. Microsoft hires lots of Ph.D.s, and the ones hired for Microsoft research do make more then the average MS SDE straight out of undergrad. The value they bring is that they are experienced, insightful, state-of-the-art, researchers, with original ideas, not necessarily because they have superb software design and coding skills.
Ph.D.s in the both the hard sciences and computer science are like professional athletes. Exceptionally talented ones can command a premium for their services, but the market for people with ordinary levels of talent is very weak. There are plenty of folks with doctorates in the hard sciences who can't find work in their fields, or end up teaching at small colleges for considerably less then a reasonably skilled programmer might make in the larger markets. You generally do not pursue a Ph.D. in hopes of making a ton of money, you do it so you can work on interesting problems.
In "hard sciences", a PhD often represents actual relevant training which will then benefit you if you get a job in the area. This is particularly the case in e.g. laboratory-based life and physical sciences. Such degrees aren't so relevant to programming obviously, unless they teach you programming as part of the degree. Computer science degrees should be more relevant as a measure of a potential programmer's usefulness, but that assumes the degrees are practically orientated, rather than being excessively academic (which I know that some CS degrees have been accused of in the past).
Also, just because someone's done a PhD in a non-computer science subject (e.g. physics or maths), doesn't mean that they'll be any better a programmer, which means that there's probably no justification in paying them any more initially.
A good exception to this though is in cases where programmers have to solve problems in a domain that involves detailed knowledge or techniques from elsewhere. In such a case, having a PhD in a relevant subject AND being competent at programming can be very lucrative. A good example of this is quantitative finance, where a relevant PhD (e.g some areas of maths, computer science or physics which might expose you to relevant techniques) and strong programming ability will get you paid very well indeed, assuming you can make a strong contribution to the company bottom line at the end of the day.
Regarding metrics for measuring programmer's performance - that's hard. Very hard. And probably worthy of a separate question already (if one hasn't already been asked).
I have a physics PhD so I am obviously biased here.
Do not expect a PhD (unless they have a Computer Science PhD) to be a better developer just because they have a PhD. It is very rare that a hard science PhD will teach you anything about good software development practices. It is mostly a throwaway code. The only exception is numerics, but then most people just use standard libraries polished by the relevant experts.
You can expect (but no guarantees) that a PhD will be an intelligent, hard working person with well-developed analytical skills. Banks like to hire PhDs because they know that somebody who's gone through the process can complete a difficult project on time, working largely on their own and under much stress.
If you hire a PhD to be a "code monkey", they will probably get bored and leave. I need intellectual stimulus in my job, otherwise my morale plummets. Keep this in mind.
As for the salary, I would base it more on how they manage the interview, the projects they've done during the PhD, their academic publication record (the scientific equivalent of Joel's "Getting Things Done"), than just on the fact they have a diploma. If you lowball them, you can always give them a raise later, it's more difficult the other way round.
Looking back through some of the questions here I think there might be a little bit of apples or oranges comparison going on in that one of the posters pointed out, and correctly so, that someone with an advanced degree is unlikely to be doing "code-monkey" work. Also, as someone else pointed out, just having a Ph.D. doesn't mean that people are going to line up to give you large salaries and you still have to have the talent to command that salary.
In general though, you can usually expect an advanced degree to lead to more income, but you may also find that the salary difference is not worth the time and money you invest in getting the degree. Usually, the bigger difference is that the advanced degree is going to open doors that might otherwise be closed to you if you only have an undergraduate degree.