Stop complaining and pay programmers more
It seems like every time I check HN someone is bitching and moaning about how difficult it is to find competent programmers. Newsflash: competent programmers apparently have a skill that is extremely rare. Rare commodities are expensive.
It strikes me as senseless to complain endlessly about how 199 out of 200 candidates who are interviewed for a programming position are literally incompetent. No competent hiring manager should put out more than one ad posting which attracts a horde of unqualified candidates. Why not? Because the second time around he will offer a much more attractive salary.
And that's really the end of it. Enough of this nonsense.
289 comments
[ 5.5 ms ] story [ 343 ms ] threadIn conjunction with a phone interview we typically only have an actual sitdown with 2 to 4 candidates out of the initial pool of 100. We recruit out of college so resumes get handed in like candy, but this process has effectively helped us find candidates that are at least capable of learning the monolithic code base and getting fully up and running in a few months.
Our company still has an absolute terrible code base. It is very feasible to nuke skilled programmers once you have them.
Isn't this what happened throughout the industry? (with a very few exceptions).
This is exactly what makes my belief about "great programmers" just went out of the window: no matter how great an individual is, the fact that plenty software houses have terrible code base show something else.
People can blame the businesses, the time-to-market, the deadline or whatnot and I believe you guys.
But at the same time, are you being fair toward your profession at the same time?
If great programmers do exist, I'm expecting them to change these ugly code bases everywhere to the point where 50% of any companies out there would have good code base (and that includes unit-tests)
Given that, I wouldn't expect '50% of any companies' to be good. "If it ain't broke..." is really good advice about 95% of the time. If you're 50-100% overbooked, you don't screw with other peoples' code just to try to make things better around the office.
If you are "sucky" you might still apply for a $60K job, thinking that you might slide through. But you wouldn't bother applying to a $100K job, thinking that there'd be way more competent people applying so it'd be a waste of time
Never done hiring before, eh?
Is "upvote for x" too reddit-y?
Before clicking the reply button, ask yourself, "Am I really adding something, or should I stop procrastinating and get back to work?"
I still don't see why the child-post was downvoted. In my view I wasn't whining there, merely asking.
So I'm skeptical that everyone here behaves perfectly rationally in the context of the community rules you've listed. And I don't view this as a waste of time, because I'm trying to figure out how things work here.
Edit: OK, forget it. I'm taking it too personally. You're right, asking 'why the downvotes' is also not good content I'd like to read from other comment'rs.
I regret not having applied to many great opportunities as a younger programmer because I filtered myself out, when many who are worse off never do.
Self-promotion: http://blog.codeboff.in/2010/06/25/good-programmers-are-hard...
You've got it exactly backwards: it's not intended to deter the unqualified, it's meant to attract the qualified.
And yes, high salaries do tend to attract good people. Maybe not exclusively, but it's an important factor. So, if the complaint is that "there are no good programmers" (and we assume that your screening process isn't totally arbitrary), there's a pretty good bet that you're not attracting good programmers from the places where they currently work. High salaries are a good way to do that.
...which is why you have a screening process.
When people are complaining that there are no good programmers (and this is a common complaint on HN; it's not just a straw man), there's at least one of two things going on:
1) Their screening process sucks.
2) They aren't attracting good programmers.
High salaries help with #2.
Also, if you have a stellar programmer in an interview, they tend to stick out more than their non stellar counterparts.
Edit: by 'we' I meant 'we as programmers'.
Of course it would be better to make them define a salary range, but until now I was never able to do this.
Once you reach senior level development in popular technologies, companies are often eager to come after you. (At least, that's what the recruiters and help want ads seem to indicate about senior level J2EE developers around the Philly area.)
Find someone who doesn't actually want the job, but who has the skills to help you narrow things down. Trim out the people who obviously aren't qualified (or who didn't even read the job application properly). Pay him by the hour (his normal IT wage, $75-150/hr, whatever he's worth) to sift through the resumes you've narrowed it down to. Have him pick out the most qualified or most interesting candidates with little annotations as to why yes or why no. Doesn't have to be complex - notes like 'Only Microsoft experience listed', or 'lots of experience with web app development' or 'he lasted four years at BlahTech; if he weren't awesome they'd have fired him after three months', or 'he wrote half the code on the database system you're using'.
It's something he could probably do in his spare time, lounging at home on the couch with a stack of PDFs. If he spends five hours at $100/hr over the course of a week, that's $500 that went towards not wasting your time in useless interviews, or less risk of hiring the wrong person and wasting far, far more. That could be a dozen first-round phone interviews you've skipped over by narrowing the candidates down. If each interview is an hour long, that's a day and a half of everyone's time saved.
It's pretty easy to find someone with technical skill if you do your research; the hard part is finding someone who's looking for a job, or at least the one you're offering specifically. A 'clueless' manager won't know what to look for in a candidate, but if they can narrow things down and then hire someone else who can, it can save a lot of time and money.
Personally, I this kind of work terribly tedious, at best. One would have to pay me at least double my normal rate.
The traditional model might call this role an "in house" conteract recruiter, and I doubt the good ones get paid what a good programmer or sysadmin do, thoug perhaps they should.
That's the hard part of hiring programmers. How do you incentivize the good ones to work for you? If you have a solution to that problem, I suspect you'll be a very much in-demand person.
Bonuses, perks, and congrats on jobs well-done. If I spend 40 hours between Dec 31 and Jan 2 writing up a new wireless barcoding system because the powers that be decided at the last minute to begin the new year with a different process for warehousing, I better get a damn bonus, at least 1.5 x 40 hours of my rate. You know what I got upon successful completion of my last-minute project? "chime, if you had originally developed a flexible enough system to accommodate changing of bin/zone locations, you wouldn't have had to work in the last minute." I resigned from that job.
Nothing says "I love your work" more truthfully than a bonus or a raise.
By the way, it is proved by countless experience that once salary is good enough, it is disconnected from happiness at work.
Good pay and respect will bring you way further than good pay, bonus and "you are my slave".
That's not any different then what they OP is saying. The issue people have at finding good programmers is that they aren't paying enough.
Yes, other things matter, but if you start off by offering minimum wage, a "Good job!" doesn't really matter.
For me, high-enough regard can mean someone whose work I know of and can appreciate on its merit, or it can mean someone who used my software by choice.
For example, if my boss' actions don't show that he's interested in my happiness at work and he thanks me for making his pet project happen, it means nothing to me. But, if a customer, or someone whose work I admire, tells me they like the software I created, they've just made my day.
If an employee says to the boss "Hey, I think I'm worth X more than you're paying me", and after extensive "due process" the answer comes back from management as "No, and you can't have more time off either", that's a clear sign that the decision makers have, at best, limited respect for that employee's work. Verbal claims of respect, at this point, are almost offensive.
That said, on the other hand, piles of cash but nary a kind word is also not very respectful.
Maybe... certainly respect is needed but...
What about a sane work environment??
What about a system which is actually aiming to produce good software??
What about not structuring your system for 80 hours weeks from the get-go???
I don't know how many vile, worthless hoops I've had to jump through in previous job searches.
Still, I've also interviewed for places that made a virtue of their good process to the point of expected people to work for less (I think SAS was their model). That won't fly either because it's not really respect either.
Speaking only for myself, non of those things would really swing it too much for me. Give me challenging projects in my preferred problem domain, sane working hours and environment, an opportunity to grow and improve my skills and surround me with brilliant colleagues to work with, and I'll happily forgo the perks and bonuses.
The projects were challenging, that's why I stayed for so long. When you have tons of student loans, mortgage, and hospital bills, you can't forgo the perks and bonuses. I have a family to take care of so what I really want is everything. I want a good work environment, I want good money, and I want fun projects. Why? Because I give them back what they need: stable/reliable, problem-solver, productive etc.
As for incentives, there are lots of posts on HN about incentives that work, like time out for pet projects, like telecommuting, like 2-3 month holidays, like no drone work, like excellent tools, LCDs, chairs, perks.
And ... the best of them all .... NO PHB's !!!
How about an online test? A web server that runs sandboxed C? Or maybe a character in Lambda MOO that requires you to complete a "quest" in a time frame that would require a programmed response? (telnet://lambda.moo.mug.org:8888)
That's probably half-true: you're right that there's more to hiring programmers (and many other kinds of professionals) than paying lots of money, but there's also probably a minimum barrier to entry. I doubt you're going to find high-quality programmers to work for $30K per year, even if you buy them an Embody (http://www.hermanmiller.com/Products/Embody-Chairs), give them a window, offer to let them rewrite everything in Scheme, and do whatever else Joel Spolsky has mentioned.
I'm not sure what the minimum really good programmers will go for in most of the country, but I'd be surprised if the answer is less than about $50K, and even that's probably way too low. Until you hit the minimum threshold, the rest of your comment doesn't take effect.
I believe OP is trying to say: Money is an incentive. But it isn't the only incentive.
(== in php isn't the equality operator insomuch as the 'kinda like' operator.)
http://www.jslint.com/lint.html#equal
My friend is trying to hire some devs for her big bank. They offer ~$50K more, but the work environment is HELL and the projects are mind-numbingly boring (back office). They can't find any competent devs. He said they hired an ex-MSFT and ex-GOOG once, but both quit within a week.
A good start is not to use words like "incentivize" around reasonably intelligent people :)
I think Fog Creek gets it right. You don't treat programmers like second-class drones who make things for you; you treat them like the primary creators of value for you company, and yourself as their support staff (abstracting away the mechanics of running a software company so all they have to think about is coding and typing commit.)
Bingo! The best managers I have had over the years spent far more time getting me what I needed in order to do my job than they did telling me what to do. They also got the most value out of me, and ended up looking the best in front of their bosses.
Easy. Instead of giving the programmers managers, put the programmers in charge of their own projects and give them administrative assistants to handle all of the non-programming and non-decision-making parts of the job.
Being a non-technical co-founder, I did learn this the hard way a few times.
I totally agree that having a competent, hardworking and passionate programmer is probably the most important part of a startup.
My Buffet said it best IMHO... I've worked with some competent, hardworking, and passionate with no integrity who have really caused a lot of problems.
No, they do care about cash. How do I know?
>They work on the most interesting project they can find that pays them enough to live.
There. That's why. If they weren't making enough money to meet their needs, they'd be looking to trade up. Money isn't the only answer. Everyone likes to talk about how money isn't the solution. I'm pretty sure every one is making a bit more than minimum wage or aren't looking to get compensated in some other way in the future.
If "great programmers" work attitude is based on mood swing, business owner will be in danger hiring "great programmers". Cause what you just said boils down to human's mood to perform. "I'd like to do this because that's what I want to do now, I don't like to do X,Y,Z" where X,Y,Z are usually "testing, documentation, and mentoring".
Anyone who wants to start their own startups and not making money is like having a business not turning profitable. Eventually they want the profit to be bigger than working as an employee.
If there are people who would want to work for free, or work for less money in return they get to do cool stuffs (but hear me: cool stuff including writing clean code base, writing proper documentation and writing unit-tests), let me know, I have several ideas that I'd pitch to them and let them run wild and add their own ideas... as long as I get some profits out of them...
Getting people to perform always comes to getting them in the right mindset! The more complex and creative the task, the less money matters in doing that.
If your work is mind-crushingly boring and repetitive, you'll go to the highest bidder. (That seems to be pretty much how investment banking works). But if your work is something you love, involves intricate problem solving and creativity, it will take more money to pull you away from a good job.
And for some reason I don't know, most (but not all) the great programmers I've come across haven't been all that interested in money in general.
The sooner people stop equating money with compensation the better off we'll all be. Money is but one small piece of the the puzzle.
Also, I think you're right - it's not always best to hire a great programmer, regardless of cost. If you can't keep them interested and engaged in the right type of problem, they will underperform under the crushing boredom. Get the right person for the job.
Which is completely besides the point. Listen, I understand that point of view. I agree with it. I live it.
> My point is that, in my experience, great programmers place a much higher value on doing interesting work than they put on making more money.
Only after they have enough money to not have to worry about it.
Offering programmers minimum wage isn't going to entice them from their 6-figure job, even if the work is challenging and fun. Most likely their 6-figure job is already exciting and fun enough.
I was advising a startup recently about what tech stack to use. Their default notion was PHP-centric. I pointed at the advantages of other languages/stacks. I said that while it's generally true you can get the job done in a variety of languages and tech mixes (anything that's Turing complete, eh?) it's still very important to pick the right mix, because it impacts other things. One of the things I mentioned was that it effects not just the quantity of folks you'll find on the market with that skill set, but also the quality and really the kind of person.
For example, if I had to wade through 100 random resumes from strangers for a dev job I had to hire for, I'd get very different kinds of people if it were for say a PHP stack versus if it were a Java stack or a Lisp stack. Very different folks, on average. To be more explicit, I'm confident there would be way more applicants if it were PHP, but way better applicants, on average, if it were Lisp. (I did not literally recommend they go with Lisp (dev scarcity factor still a bit too strong for my tastes right now, though Clojure may change that), but I will say that it was not PHP.)
Often the case is the hiring manager or firm not being upfront and the potential programmer running from the interview process due to that dishonest behavior
we tend to like upfront honesty and transparency because most of us are realists
I've never known the salary for a job at the time I applied. I'm not even sure I had a ballpark. It does come up in interviews, since companies tend to want to know what you're expecting. But why should I care? That's what an offer is: if I don't like the offer, I don't have to accept.
To attract good talent, you have to put your requirements right into your job posting. Ask for proof of work on open-source projects, for example; things that are hard to fake. A candidate that feels daunted by your application won't even make it to the interview.
If you know ahead of time they're only interviewing for a position that tops out at $35k and you don't want anything less than $60k, it's better to not waste everyone's time.
http://www.rethinkdb.com/blog/2010/06/will-the-real-programm...
Pay is but one factor, and resume (or job description) plus salary requirements aren't going to communicate what you really need to know. More than 90% of the jobs I've interviewed for had laughable interview processes. I've asked harder questions of my interviewers than they've ever asked of me. Most people just don't get it.
A "competent" developer needs to be hard working, interested in your particular problem set, and like the work environment you've created. You need to dig in and find out what this person is really about. Even if they're competent they may not like your company, idea, or even you. These are things you, and they, need to find out before the hire.
You/They aren't finding competence because you/they aren't looking for it.
EDIT: sponsoring hackathons may be another way of finding great programmers. And don't forget the colleges in your area: if you have an interesting piece of technology you can show off, you can present a talk and hopefully get a handful of resumes.
Hackathons and design contests like topcoder.com are great for employers but really bad for contestants, most of whom are left with nothing.
http://codeanthem.com might turn into something of an inverted marketplace where employers can compete for the attention of good programmers. (I'm not associated with codeanthem.com)
This seems to have something to do with the relationship between creative effort and intrinsic vs. extrinsic motivation. The prospect of an incentive seems to gum up the creative works.
When you compound that with how difficult it is to recognize, let alone find good talent, especially with an interview process, you have a real conundrum.
Real conundrums are rarely solved by naive one-dimensional solutions like "offer more money." An actual solution would have to solve the dual problems of finding good help and not spoiling it with overt incentives.
Clearly there is a real problem here. Perversely, if you could solve it, you could make a lot of money!
I do what I do because I enjoy it, but I never take my eye off the bottom line - and either should you.
The idea that the OP put forward was that simply offering more will solve the problem of finding competent programmers. My comment was related to recent and compelling research into motivation in creative work. It seemed related. I'm not sure I mentioned my pay grade.
Having one's eye on the bottom line is different from being subject to an incentive program, and different still from being competent. The latter is the more to the point. Anyone can be greedy. Even the incompetent. In fact, due to the Dunning-Kruger effect, it might even be suspected that the incompetent are likely to feel more entitled to a higher wage than the competent.
I am not your buddy. However, I will offer the following friendly advice: You might enjoy the level of discourse on Reddit or Digg more than that on YC.
Particularly your second point about developers ignoring jobs salaried at less than their current pay. Working in a toxic environment, or doing meaningless work, or staying where one's range of expression is limited, all have a cost. You won't know until you get there, but when you do, you will.
Did I miss the large paycheques? Sure. Did I miss the stress? Or people breathing down my neck for results, a week after they said they'd get me the information I needed but never did? Or being denied my vacation pay because my previous management-approved sick days (most of which I spent working from home) were suddenly 'excessive'? I didn't miss that at all.
It isn't about offering people a better salary, it's about offering people a better package. If you only offer $60k to someone who's making $70k, but give them 4 weeks paid vacation, let them work from home three days a week, and let them expense their cellphone data plans and home internet, they'll be more interested.
Especially once you interview someone, you can sometimes figure out what kind of perks will most appeal to them. Mac fanboy? Offer to buy them a new iPhone on launch day every time one is released. You've just gone from $60k to $60.7k, but the employee is going to appreciate it a lot more, since he'll never have to budget for it again.
Does he like to travel? Offer up extra paid vacation, and then add to that $3000 of 'travel expenses' per year, for personal use. That's usually enough to fly two people anywhere in the world, return, so he and his girlfriend can take a nice long trip to Europe after you ship version 1.05 and everyone's ready to unwind. The idea that he won't have to budget for it - that he can just suddenly decide to go to Laos or Mumbai or Morocco, even if his bank account is on empty - will be appealing. It's like a 'get out of town free' card.
Tell all your employees you'll pay an accountant to do their taxes for them. It's a huge hassle for most people, and if you take that away tax season gets far less stressful.
So many programming jobs I've seen offer high salaries, but with minimal benefits. You get a stock health package, minimal vacation, and MAYBE you get to expense PART of your phone bill, if you're an admin on call. Take away all the junk that people don't want to worry about and let them focus on being geeks.
It's hard to offer this sort of thing in a job posting, but if you can lure the good people in to an interview, this is how you get them on board.
My attitude is, look, I have friends, I have a life, I have things I want to do, I don't need the company to fill in these gaps. The only "rewards" I want are cash and time to spend it.
Buying vacation would just mean not being paid for that time.
Here in California, vacation/PTO is treated just like wages for regulatory purposes, including final paycheck.
What I can imagine being hard to buy is company holidays, but I'd rather have the "vacation" (read: cash) instead.
(My job allows you to "buy" extra time off, so it's not an issue for me; but I figured this was uncommon, especially in the States.)
The much larger sample size I have for a related question: is it any easier to take vacation at a company which offers 3 weeks instead of 2 weeks annually? To this, I've found the answer is "no."
Both situations have a simple explanation, which is that, except for the smallest companies, the person(s) setting the PTO policy is not the same as the one approving absences. That is, my manager cares about my availability, whereas HR and/or Accounting cares about how much I get paid during such absences.
Right now a large majority of very smart, creative people are going into medicine because they want to be challenged and most likely also want the prestige and security of a well paying job. I know more than a few very bright friends who took some CS classes in college and weren't challenged, they ended up going into physics.
Software Engineering should be a high prestige job, to better attract talent to the field, not necessarily to keep your star programmer working for you.
I get the impression that the mechanism for that is that anxiety about getting/losing the incentives can starve the creative processing of mental CPU time and maybe lower your risk tolerance below the optimum. A flat salary shouldn't trigger that regardless of how high it is, and conversely a poor environment (antagonistic management, mandatory overtime if you're not meeting some almost-reasonable deadline, ...) ought to be able to trigger it even if money isn't involved at all.
Unadulterated nonsense. On the one hand, I recall a cartoon-drawing presentation about school contests and the like. On the other hand, there are these centuries and centuries of evidence that PEOPLE RESPOND TO INCENTIVES, PERIOD.
If you think that a company couldn't assemble a team of OUTSTANDING programmers by offering each $200k a year, you're crazy or stupid or both.
This is simplistic and naive. Money isn't what motivates most programmers. I know this may be hard to understand for many people on HN, but it's true. Many of the best programmers I know are passionate about a specific area or two. Imagine going up to one of the jruby developers and saying "Hey, I think you should stop working on jruby and make an asp.net site with me and I'll pay you $200k". They're polite so they probably wouldn't laugh on the outside.
The second major problem is the assumption that offering a lot of money will some how magically make it easy to identify good talent. It won't.
The third problem is that most good programmers aren't looking for work. Offering more money won't make a difference because they'll never know anyway.
(I just noticed you were a new commentor so I hope that comes across ok :))
People who are really good tend to have their own ideas of what platforms they want to work on and what kind of problems they find interesting. Anyone paying $200K a year probably doesn't expect to give much leeway.
Note: I know people who get paid that much, I wouldn't want their jobs. I've been approached for positions paying roughly that amount and said "no" purely on the description of the working conditions.
It's interesting that your gut reaction is that this is all nonsense, and that you dismiss a single presentation as being nonsense purely on your own feelings and reactions. The book that Dan Pink wrote, and the work being done in the field is at odds with your reaction.
I know I won't convince you, and I know that you'll simply dismiss me as crazy, or stupid, or both, but the programmers who work for me often took a pay cut to do so. And they've stayed.
My recent complaints haven't been about being able to find good programmers, they've been about incompetent programmers who claim they're great, and in all probability honestly believe it.
If you're solving any problem at all, it's the wrong one. I don't want more job applicants, I just want applications from better candidates. My experience, and the studies I've read, say that offering more money won't help. I hope you understand that I'll put more stock in them than in your naked and unsupported assertions.
At the most basic level, if your developers aren't earning enough money to easily solve the myriad money-related problems of everyday life, those stresses will seriously affect their work. Money doesn't buy happiness, but lack of money can sure make it hard to find.
The pay also needs to be high enough that your developers don't feel worried that they're being ripped off -- that is, if they notice they you pay below the industry standard for the region, but they know their work is above average (in fact it may be way above average), they'll be forced to dedicate time to figure out if they're being taken advantage of. Not because they need the money, but because we all tend to think people who get tricked out of their money are fools, and they don't want to be seen as fools.
Once you get those two things out of the way, then you can focus on building real, non-monetary incentives for creative work -- interesting and diverse projects, sense of purpose, constant learning without forced massive leaps (good flow), allowing & encouraging mastery, etc..
It's absolutely true that just raising the money won't fix hiring problems once it's "high enough", but if you're simply paying too low, you don't have a chance.
The same goes for fun: rarely you know exactly what you'll be doing or how interesting it'll be.
The thing about money is that easy to compare. If you have 2 offers from companies that are both startups, both well funded with seemingly great people and interesting problems to solve, it's very compelling to decide based on salary, because all other aspects are hard to compare and judge before you spend a few months working at a company.
this is a real challenge. I'm trying to get better at judging if a company is good to work for, but so far it still feels like a crapshoot.
Of course, we often cheat and go to places where we already know someone :)
It's not about money.
I'd take Google job if I'm fresh out of college for the sake of experience so I can get better position, salary, and wide-range of opportunities in the future.
But check this out: if there's a better place than Google and they pay better, do you not expecting Google's employees to jump ship? (for example, Facebook pays more or Facebook has a good potential to make yourself to become a millionaire)
These 3 examples are strategy to position yourself for a better future. A better future usually involves better position and/or compensation. Sometime it's not about money, but it's about power. Power to tell fellow developers that they're not that good so they have to do TDD, code-review, and help QA to test their own shit.
Yes, it's not _entirely_ about money, but at the end of the day, mostly it is about money, especially for people who can accept other negatives.
Unfortunately programming is really the first discipline where the primary determinant of the "factor's" productivity is not the manager's skill but actually the intelligence of each individual. There's huge conflicts created, not just about salaries, but job roles, and really the structure of society (which is really built around an educated managerial class overseeing (and living apart from) a less educated working class.
The primary issue with paying programmers more is that they're butting up against those managerial salaries and life roles. Programming doesn't fit Taylor's theory. To change that isn't just about micro changes in business, it's about macro-changes in society.
- You won't drive your car cross country to a cheaper mechanic. - You won't get a lawyer from India to represent you in America. - You don't go to a doctor... well thats changing isn't it? Too bad doc education still costs so damn much in America.
Its about group supply and demand. Don't forget that homes cost and arm and a leg and that a programmer in a particular neighborhood should be able to afford a home in that neighborhood and should charge accordingly.
I think most programmers, and even non-programmers, don't really understand how much domain specialization affects their value. To me, this is "localized knowledge" just as much as any mechanic, accountant, or lawyer has.
The author defined a professional as someone whose work you have to take on faith. Not being doctors or lawyers ourselves, we're usually unable to evaluate the quality of legal advice or medical care we're receiving. The best we can do is seek another opinion.
The author drew this line because he feels it necessitates the things we expect from a profession: shared ethics and a rigorous certification process. Professions require would-be professionals to jump through a number of hoops to make sure that all who deal with these professionals receive some minimum level of service from someone with a minimum level of competence.
Have software developers arrived at this point? Can someone check the quality of what they receive from a developer without being a developer? If they can't, will this always be true?
http://news.ycombinator.com/item?id=1477763
Apologies in advance for engaging in the clichéd 'submit a Wikipedia page' pattern!
I work on a free browser extension called After the Deadline. It picks a lot of this stuff up. It didn't pick up this particular example, next time I deploy an update to our service it will.
You may want to check it out, it works here on HN too: http://www.afterthedeadline.com
(as a note, I tend to make the same types of errors)
I think the thing that separates licensed professions from unlicensed ones , is usually issues of safety,i.e. when the price of an error is just too expensive.
So truck drivers(which is a pretty easy to verify job - are goods delivered ? ) are licensed, and have a conduct code("sleep every X hours" , speed limits ) , and computer maintenance technicians aren't, even thought it's more complex to verify their job(are updates installed ? is the computer secure ? ).
That's the QA team right there. And the ones I work with are very good at it!
There are many differences between the professions of programming, medicine and law. So it's hard to make sweeping generalizations and use that to draw definitive conclusions.
Programming is very different.
Agree programming has less barriers to entry. But the barriers to entry for doctors and lawyers are not imaginary. They're real. Are they arbitrary and "made up" via government rules? Of course, and perhaps that's what you meant. But they are real. If you willfully ignore or bypass them you will suffer real consequences to your person including fines and imprisonment.
And if you fail to meet the high barriers to entry for doctors and lawyers, the likelihood that you'll make disastrous errors is pretty high.
I think the vast majority of times one needs to use the services of a doctor could be handled by someone with far less training and certification.
So in practice , non-doctors might be able to offer better medical treatment , than you average doc.
The vast majority of medicine could easily be done by the intelligent layman. Like programming.
The proliferation of nurse practitioners and physician assistance may provide something of a release valve to counteract the elitism, scarcity, and costs associated with doctors at least until there is reform within the medical profession itself.
eg. A trading platform, an advertising platform, etc.
This is not that rare.
Almost every doctor or pharmacist you deal with on a daily basis can say something or do something that, if mistaken, can end up getting you dead or seriously sick -- or at least fail to prevent you from becoming so. A dead website can be fixed and brought back to life. Dead humans cannot. Well, for now anyway! :)
I guess you will now ask me "why the hell did you choose programming then"? Yeah, I could earn more money with less work, with less thinking. But it would be much less enjoyable. And I guess this is the reason why programmers get paid less. We love our job. And we are willing to do it just for the sake of doing (and a little money for living).
So i finished the course and am looking forward to going into practice. As far as having a closed and (seemingly) elite community goes thats actually not such a big problem. Textbooks are available to anyone. The closed society should just be considered as a quality control. It is possible to get hold of any of the equipment required for medical practice but when you go to a doctor (a member of a profession) you are seeing an individual who has their competence vouched for and is subjective to professional discipline should their service be found to be lacking. I think it is difficult to justify the rates doctors get paid but self regulating professions do at least have quality assurance.
I also agree that there is a lot of university education in terms of what is learnt didactically is unnecessary for most of the day to day job but this totally misses the paint. Even though pharmaceutical tools may be fairly limited our understanding of pathology and epidemiology is continuously expanding fairly rapidly and what it teaches you is to educate yourself rapidly as this information emerges (and particularly in veterinary medicine collate this information sensibly when the information you want is not directly addressed in the literature - something that can only be done with a thorough understanding of physiology, immunology etc). Secondly since this discussion seems to be focusing on edge cases a lot we should not forget emerging diseases since these cannot be properly addressed by someone that is limited to the day to day 'do the job skills'. An excellent example of this is the diagnosis of blue-tongue virus when it first arrived in England.
As for wanting to be in a profession where you have to think all the time, I think it is possible but I think you need some kind of developer spirit. To do this you need to try and get yourself to some kind of cutting edge. This is easier to find with programming because it is a much newer skill set (and with veterinary medicine as compared to human medicine). To this end if you consider specialising and doing clinical research or doing something that involves policy making, or practicing somewhere where resources are fairly limited then I think you can have an intellectually rewarding career. Any career can be as interesting as you make it. If you find yourself bored because you are having to treat the same thing over and over again either change your specialty in medicine (pick a different "style" or "philosophy" [you may see the problems the patient has differently and take a different approach in addressing them]) or go and try address the root cause of the problem. You miss also that what is interesting in programming is that problems that you are faced with also seem to be changing rapidly as do areas of new development. I'm sure new tools would eventually get boring if the problems became static.
I think you're spot on about picking a career that you enjoy. I you've shown as well how important it is to consider where your at regularly and make an effort to keep what yo do interesting. The implication that all programmers love their job is as easy to disprove as other professionals not loving theirs. Providing you have some control on the development of your own skills I think any job can be satisfying. Don't use this love as an excuse for poor pay. Price yourself to show how much your are worth.
I wanted to debunk the myth saying that medicine is the holy grail of professions. It is not. It's overrated, over-regulated and over-idolized. It's quite like the music industry. And it has to change, but changing it will be much more difficult than changing music industry.
Similarly, poking around on a keyboard doesn't make a ten year old a programmer, merely an enthusiast (no matter how gifted).
Same thing with doctors and lawyers.
Realtors control their numbers and qualifications too. But you can still be a real estate agent without being a Realtor. Having and protecting a brand is ok. Getting government to put some group in charge of all people addressing a need will raise prices.
Oh I don't know, the idea of programmers being better paid has a certain attraction to me :-)
On a more serious note, the way that lawyers and doctors (and some other tradesmen in some jurisdictions) have managed to illegalise competition is wrong and needs to be stopped. Vets can perform operations for a tenth the cost doctors can -- is this because vets are less competent? On the whole, no.
I'm pretty sure that salary dose play an important part of people wanting to get into these professions so while you have bright people doing them it is not always what they would be best at. So there is a bottle neck when applying for higher education and I think the problem is when you are 18 you have no idea what will make you happy when you actually graduate. By that point your pretty well financially committed to the profession and thereafter you'll be saying t least the money is good.
Also while I don't like monopolies how you break them is important and hard to do.
Yes it is. The whole point is that certain professions have got politicians to pass laws making it illegal for people without the right piece of paper to compete with them.
As Adam Smith said: "People of the same trade seldom meet together, even for merriment and diversion, but the conversation ends in a conspiracy against the public..."
Since medicine historically was distributed and built by community doctors , the classic competition limiting strategy of using big monopolies didn't fit here.
So the medical profession uses many different strategies for limiting "distributed" competition.
In fairness to lawyers and doctors, they serve needs that have a larger societal impact thus the need to to have more stringent process of instilling the right training and enforcing ethics.
Programmers are perceived to be be neutral in this regard.
People understand this concept as it applied to lawyers and doctors. Most folks frown on ambulance-chasers and boob-jobs plastic surgeons.
I mean, PE (or CEng in the UK) is an "elitist, protectionist mechanism" but it hasn't hurt innovation in aviation or civil engineering, has it?
We all know programmers who would be sunk without it.
(We do hardware/embedded software)
Programming isn't a profession, it's a craft. The trouble is that traditional crafts are not really valued any more, as their purpose has largely been supplanted by mass production. So, we have no current role models for how to organise ourselves.
We already have mass software production.
Firstly, obviously, some aspects of programming are crafts-like. When we write conditionals as if(4 == x) instead of if(x==4) (for languages where variable assignment in a conditional is legal but not what you want), that's craftsmanship. Analogously, part of the process of designing a building is drafting, and that is a craft. A common error is to think that drafting is the primary task of architecture (at least, that's a common error about programming).
Less confidently, I would argue that the closer you get to the metal, the more craft aspects appear (without claiming that these aspects dominate), and that when we use a compiler, part of what we're getting is automated crafting. So we see three cases where we take back that crafting aspect into human hands...
First, for a new platform, sometimes some of the work is done by hand.
Second, many programmers _enjoy_ the craft of programming, and so practice it for fun. For example, code golf is craft.
Third, sometimes crafted is more appropriate. We usually prefer a cheap mass-manufactured physical object (high-quality, but not customized), but sometimes we want something handmade for the situation. I think that writing assembly by hand has some parallels with this (not to argue that writing assembler is more craft than design).
Outsorucing, Java schools churning out schlubs, seem like mass production analogs to me.
The primary problem is that organizations seem to want to treat developers like other office workers, rather than as professionals.
Oops, just saw someone else said this below. He is correct.
Are you really suggesting that programming is the <b>first</b> profession to arrive on the world-scene in which productivity scales with intelligence? I think that's a bit egocentric. I can think of a few others.
I think this is true for most professions based on knowledge and using mostly mental capabilities: scientists, journalists you name it...
Rating mental work is very hard and still quite a new requirement for our societies, thus we are really missing reliable and acknowledged "frameworks" to handle this.
We don't have to show that it would make inept people stop applying. We just have to be able to get better at weeding out the rubbish ones - i.e. in less time, lower cost.
It's illegal to filter applicants based on age, but you can require '15 years experience with enterprise java'
a) Salary is rarely disclosed in a job posting. Salary negotiations usually happen after a candidate was interviewed and deemed worth hiring.
b) Even if you were to disclose a salary in a job post, an unusually high salary might make it easier to find a qualified programmer (because more people will apply) but it is not likely to increase an average quality of submitted resume, so you'll still have to look at 200 resumes to find 1 good candidate.
But paying the good programmers you already have a much higher salary and looking after them well will deter them from jumping ship.
Our salary structure is designed to select for exactly the type of people we want to attract - the kinds of people that will go through walls to bend the world to their will, for some deeply ingrained reason unknown to anyone but them. For people like that, we pay an incredibly high salary that they're unlikely to find anywhere else (2.25% of everyone's contribution on the high end). If you're the type of person who wants to change the world and have a shot of building a one billion dollar business while doing it, you're unlikely to find a higher compensation anywhere other than choosing to start your own business.
If you're interested in having a stable, $200K job, RethinkDB is not for you. Neither of these choices is better or worse, simply different. It's a question of temperament. We weren't complaining, we were working to recruit great programmers who are driven to change the world. This is exactly what the post accomplished.
Hmmmm.
$125k to work in Silicon Valley? Will that even cover my rent? I used to work in Palo Alto - shared a 1 bedroom apartment - took turns on the couch. It was fun, when I was straight out of college.
Which is exactly what I did. Freelance contract programming pays the bills (and is quite enjoyable) and I'm bootstrapping a startup on the side. It's not so much for the compensation as the challenge of something new and the independence to make my own decisions.
So at least in my case, it's not your fault. You can put the most attractive job offer out there and I won't bite. I'm wondering if there are a lot of programmers like me. That would certainly reduce the supply.
I'm probably dense, but what does that mean?
fire them!
If Salary.com tells me that the 75th percentile for my general qualifications in my area is 80k, I'm not going to believe that I'm qualified for a job paying 120k. My mind would resolve that discrepancy in favour of the job requiring something I don't have, not just they employer's willingness to pay well. This may even be true if they say why the salary is so high
[1] http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
The really bad news is its starting to catch up with many doctors as well.
Not sure where you are from, but here in Canada nurses lead very cushy lives. Salaries of 80 to 120K are not uncommon, and that's with 4 weeks of vacation, 1 day in / 3 days out schedule, etc.
If being an RN was cushy, I think there'd be less of a shortage of working nurses in Canada.
My gf is an EMT, and two of my sisters are nurses. Here's the actuality:
Nurses are paid OK. They work long stressful jobs with severe penalties, both moral and civil, for screwing anything up. There is a high chance of serious injury, particularly while trying to move or assist fat or obese patients, of which there are more and more due to the obesity epidemic and diabetes. Working as a nurse or EMT means physical labor involving long periods of standing on your feet; little control over when your shift ends, no matter what the schedule says; having to work very early morning or very late evening shifts to get 100% coverage; and very little flexibility during the day. You know how you can run small errands and do little errands with your computer? They, for the most part, can't.
They also have ongoing education and certification requirements that they most often pay for out of pocket.
Finally, being an EMT, paramedic, or nurse means not only developing an intimate relationship with bodily fluids of all sorts but seeing on a daily basis the worst things that can happen to a human being. From mangled bodies from car accidents to cancer, to diseases (including those that require hazmat suits and offer severe risks if anything goes wrong), to infected wounds, to septic shock or heart failure or stroke, they see all the things that can go wrong with a human.
So yes, they're fairly well paid, but I wouldn't describe their actual jobs as anything like "cushy".
I do. My best friend is an ER nurse.
> I wouldn't describe their actual jobs as anything like "cushy".
Cushy in terms of compensation and benefits. Not in terms of work being easy. Please read the post that I was replying to.
There is a mechanical solution for this. A crane like apparatus for moving a patient. It was used in a revalidation center when i saw it last. Instead of a couple of nurses who move one patient, one nurse uses the device. This one nurse moves the 'cloth' which holds the patients under the patient etc.
A couple of Nurses are faster though.
http://www.nhscareers.nhs.uk/details/Default.aspx?Id=4
This is totally wrong, and the key is "enough to live". I love programming as much as I did when I was 10. My expenses, however, are now somewhat higher than when I was 10. I have a wife, two kids, will not live in a small house, have very expensive car insurance, and I road-race big cars, hard on tires. If you want to hire me, it will cost a lot more than $100k.
Then there is the issue of mobility. Programmers tend to be loyal. They tend to be realists. If I make X here, and I know here to be fun, why would I risk moving for 1.1X, or even 1.5X?
What you have a reversible reaction in equilibrium. You want to bind seats to programmers. Programmers will bind to a seat for a while. But not all programmers will bind for the same price. Sure you can fill a seat for $100k. You might be able to fill a seat for $20k - but you'll have to wait a loooong time. If you want to fill all your seats, you're going to have to appeal to the largest possible pool of good programmers, and some of us need more money.
Even if you ignore the fact that those of us with higher expenses have more experience, the simple math of the equilibrium reaction tells you that if you want to fill more seats, you have to have a bigger pool. Even if we are of no more value than the 20 year old, the question is: Are 5 programmers better than 4 for your business?
Whether or not that makes economic sense for your business is up to you.
So yes RethinkDB, $125k for an Engineer III will get you some hires, but are you going to insist that this is the right price, even if it means that you have empty seats? What is your opportunity cost? It may be the right decision. But it may not.
The same ratio probably applies anywhere, but the relative scale changes.
And of course the $100K programmers are happy to accept an offer at $150K as well (though they won't be any more productive), in which case you've actually just chopped out a third of your productivity.
Ah, you are saying that because programmers don't come with labels, you are unable to tell the two apart. I would suggest that you don't be involved in recruiting then.
Sometimes bargains can probably be found, but they're probably rare and difficult and don't last very long.
Getting really good grant writers (like us) is going to cost at least $100 an hour, and probably more like $125 – 200. The same is, as far as I can tell, true of web consultants. Good lawyers? $300/hour. Escorts? Probably also $300 in most of the country.
If you don't realize how much things and services costs, you'll end up with sub-par quality, or you'll pay, and/or you'll complain. A lot of people do the latter. I wouldn't expect it to stop.
In Finland, if you leave out top 0.5%, the variance is between 2000€-5000€. And most of it settles around 3000-4000€. Finland is very eqalitarian society when it comes to salaries and thus that has to be taken into account. But still. 2.5 is not much, think how much variance there is in salaries of managers, lawyers, doctors.
How's it in States, what are the typical salaries for good or great programmers vs. below-average progammers? Leave out top 0.5% - i.e. rare individuals with specialized skill sets in e.g. bank security.