In what universe is this true. I don't want to imply anything but I feel like maybe you're not sure what "buyer's market" means. That would imply that employer's have large pool to pick from an those looking for a job are essentially lucky to find one. I don't think you meant that ... I'd hope if you are really in charge of hiring people you wouldn't think that because, I feel perhaps you wouldn't be the right person to be in charge of hiring due to not recognizing what is happening in the world at this moment (3/23/2013). :(
On a side note, I hear the thing about FizzBuzz a lot. I find it, personally, hard to believe that it is common for someone to pass an interview that probed to any depth, pass with flying colors, and not be able to code FizzBuzz. I would think the person directing the conversation was not doing a good job.
And the ++i vs i++ .. that's pretty basic stuff, I get that that's potentially part of your point, but that is just silly stuff.
People are still afraid of losing their job. Some people have been under-employed for a long time, now, and are settling for jobs they previously left in distaste. A lot of people feel stuck.
Let me try to rephrase it - there are entrepreneurs, there are people who will accept a lot of risk... and then there are people who feel they cannot move, have a low tolerance for the imagined future pain of being unemployed, worry about the housing market, worry about losing insurance... and when they are unemployed, they stand in line to try to distinguish themselves to the large companies that are nearby, so they can get a stable job.
Heck, I know people with advanced degrees in their fields who have accepted Internships just to have a paycheck.
There's no lack of smart people who will work hard at a stable job, and consider themselves lucky to get an offer for the positions at the companies I've worked at.
If you accept candidates who are not citizens (H-1B), I find it hard to believe that ANY of you have a hard time finding candidates. If you're open to telecommuting, especially.
At the companies I've worked at, the evidence has been very much on my side.
Maybe I've just taken for granted how desirable the companies I've worked for really are.
It's a buyer's market where I've worked for my last three jobs.
Are you actually serious? You ask about a quirk in a 15-year-old single-platform compiler?
I always wonder what some interviewers think they're gaining from questions about minute historical trivia like this. It doesn't provide any real insight into ability at all.
I repeat my earlier declaration that I loved candidates who didn't know the answer, but could have a good conversation about the question.
A cookie-cutter interview will ask things that I've been asked by every other shop in town. For instance, I literally recite Fibonacci now. It's a completely useless test because it's over-used. This sort of thing makes a company look cold and - far worse - unimaginative. It's not insulting, it's just a red flag.
The other part of this is having people stand at a whiteboard or work on paper instead of sitting down with them at a computer. Every single thing you listed can be determined by sitting with the candidate at a computer, working with actual code.
None of this bars you from asking about historical quirks of compilers or anything else. If anything, it offers you the chance to have a more relaxed conversation about these things so you can get past the bullshit and see the person that you'll actually be working with.
I actually printed out about 20 sample bits of code, and discussed that. I worked with people on the Image Processing / Computational Geometry side who would set up a programming challenge with a compiler, and I respect that, too.
On what planet?
If it were easy to find programmers, you wouldn't have all these shops using spam-tactic recruiters to drive volume. They wouldn't need to.
It's most definitely a seller's market, if programmers can take their pick of corporate gig | freelancing | startup. My last job hunt took one hour. Their search went on for two months. If they fired me I could line up a dozen interviews next week, they'd still have to wade through a sea of unqualified/foreign/unmotivated alternatives.
It's not that I'm that good, I'm an entry-level Ruby guy working in a .NET shop. I interview well, but they interviewed a dozen guys before me. My job offer came the same day as the interview, after a token 4 hour wait. It's not that they were being overly selective, the pool they were fishing in was just that bad.
I don't know where you're getting the idea that it's a buyer's market for programming talent.
From my experiences, it is very circumstantial if you hit the ground running in a week like you said, or just get stuck in a mile of resumes, 3 week delays between responses with anyone from a 5 man startup to Amazon, and I think it is all about the network / school / area you are in. Besides being good, which I'm not either - that is kind of the golden ticket to glory.
And I mention recruiters only because it will open your eyes to the possibilities. Much better, got to any of the many free meetups (check the "NERD center" calendar) that happen almost daily and you will find plenty of like-minded introverts to talk code and network with.
Whether or not you're actually good, I of course don't know. But don's sell yourself short. Take a shot. I did about five years ago and it was like being fired out of a cannon. Good luck to you.
I think those are unrelated concepts. I think connecting with the right pool of talent is an art, and a lot of shops are completely artless.
> It's most definitely a seller's market, if programmers can take their pick
Maybe I've been lucky, but I've never worked at a company that felt like we couldn't take our pick of applicants. Especially the lower down the scale we went.
> My last job hunt took one hour.
I have applicants for positions that don't exist. My applicant search takes negative time.
> If they fired me I could line up a dozen interviews next week
If someone quits, I can line up a dozen candidates next week.
> they'd still have to wade through a sea of unqualified/foreign/unmotivated alternatives.
Every day, you make judgements about which companies would be fun to work through - you're always doing that background processing.
> they interviewed a dozen guys before me.
So, as a Buyer, they had a line of candidates applying. Most of their problem was probably announcing to the world that they had an open position that people should know to apply to. That sounds like a Buyer's Market to me.
> I don't know where you're getting the idea that it's a buyer's market for programming talent.
The length of time I've seen open positions sit unfilled, and the number of applicants who'd be qualified to fill it.
In any market, a good that's sufficiently - well - "valuable" - will be picked up in no time. Congrats on crossing that threshold, I guess.
But yes, I consider it a Buyer's Market.
The software industry is highly bimodal. There are two very, very clear camps - you fall into the other camp than most HNers.
The market for mid-top end talent is a huge sellers market. There aren't enough people to go around, salaries inflate double-digit percentages every year, and crazily does not seem to be stopping.
The market for low-end warm-body coders is a huge buyers market. There are more clueless VB coders than there are seats; many, many more.
Do you, by any chance, work for a consultancy where innovation, code quality, or engineering excellence aren't exactly high up on the list of priorities? This may explain your glut of candidates - whereas on the other side of the industry fence companies are offering six-figures to fresh graduates and creating bidding wars around entry-level applicants?
You've touched on one of the most involved and complicated questions in our industry. There are many qualified coders stucks on proverbial other side of the fence for no good reason.
The short answers, for me, is blind ass luck. I did well in high school, stumbled my ass (unintentionally) into what turned out to be a prestige school, stumbled into some interesting internships with well-known companies, and as a result attracted the attention of one of the "A-level" tech employers, whose name on my resume put me on the correct side of the fence (the employer is Amazon, btw).
It's not just the resume effect - being in said companies also puts you in a network of people already in the camp, which opens up networking and job opportunities also.
Being in the right camp is a self-reinforcing phenomenon. You get jobs at a particular level, with a particular type of employer, which in turn attracts more of that sort of employer. Unfortunately, the inverse is also true - if you're outside the camp, you attract the other employers, and your resume begins to look less and less like a resume from within the camp.
None of this particularly helps you, even if it does explain why you can't seem to get into the camp.
Here are some tips - but keep in mind that I've been in the camp from "the beginning" (i.e., right out of school) so I really cannot vouch, first-hand, how well these will work for you.
- Network more. A lot more. Look at technologies being used within the camp (Rails, Node, etc) vs. tech being used outside the camp (VB.NET, JavaBeans, etc), and learn according to where you want to be.
- Go to developer meetups hosted by companies/individuals in the camp. This community maybe small in Philly, but I'm certain it exists. This will reinforce both the learning and networking parts of above.
- Go to events in New York City, which is the closest tech hub available to you. There are events held all the time - hackathons, conferences, etc. Go, learn, make friends, network.
- After you've done this a few times you've probably collected at least a few cards from interesting companies. Hit them up, see if they're hiring, or if they know anyone hiring. Considering the severe, ridiculous high-end tech shortage in NYC, you will get substantial hits.
- Consider also traveling to NYC and crashing an AirBnb for a few days/week. Companies are a lot more receptive if you can talk to them face to face. If you can line up a few interviews beforehand, even better.
Then when you finally answer the ad, you'll be so far inside the person's head that it will look like God himself sent them the PERFECT candidate.
You need to be patient and to sharply cut down on the number of ads you're answering. So pick the good ones, the ads that look like they were written by engineers. The ones where you can see the thought processes of the people hiring.
In my job search, I sent out exactly one reply to exactly one ad, to the company that hired me.
-“What kind of work do you do?”
-“I do this, this and this. I just graduated and I'm hoping to find some work or freelance gigs. You?”
No, but it will give you just enough capital to move somewhere better. And you'll be working on your social skills, which is a big win for anyone.
Choice isn't all there is to it.
Let's say you're at a grocery store to get onions, but all the onions you see are terrible but really cheap. Being a discerning buyer, you decide to hit the next store. Same there too; more crap onions. It's like this at the next three stores. Finally you get to a store with decent onions, but they're 4x the price of normal onions. You, starved for choice and not willing to shop any more, despite the glut of onions, grab one and go home to make dinner.
This is a classic seller's market. The sellers with the goods command premium prices because there aren't that many of them at the quality that the buyer wants. Lots of crap onions to pick from, good ones are ridiculously expensive.
A buyer's market would be the other way around, there'd be lots of good onions, so you could get them at bargain rates.
I also think you might be misreading the fact that the company you work for is letting open positions sit. What this effectively means is that the workload hasn't gotten to the point where they have to take the next person that comes along. They can still afford to be discerning. If it goes on like this the workload will either get worse, at which point they will have to take the first guy that comes along, or they'll just stop looking, deciding they didn't really need a new guy. Both outcomes are exactly what happens in seller's markets, the buyer eventually gets fed up and takes a sub-par deal or walks away.
I think when you look at the DJIA, companies really are getting developers at bargain rates.
How much revenue do you think the top 30% of software companies are earning, versus how much they're paying their top talent?
> I also think you might be misreading the fact that the company you work for is letting open positions sit.
They're not - they're filling as quickly as we want them to. That's a Buyer's Market.
Why do you feel it's necessary to waste a candidates time by having them apply for make-believe vacancies?
There's an excluded middle here, where the ability of a company to choose correctly (avoid false negatives) is not a given, and that they are filtering properly in the first place (as I mentioned of a rockstar-seeking YC company elsewhere in this thread).
I don't know where you live, but where I live, there is NO market for programmers.
So "foreign" is in the same category as unqualified and/or unmotivated ? WTF ???
Basically, the more specialized you are, the more brittle your situation is. I also happen to be an immigrant, which together with the specialization means that for any given city, there might be 2-3 employers I can apply at tops. My plan going forward is to basically abandon my specialty in favor of a more common/in demand skill set.
Interesting choice of words ...
Foreign: On their ad, they specified that they couldn't sponsor H1-B Visas, because they had a lot of replies asking for that. They didn't want to deal with a language barrier.
Unmotivated: I learned after I took the job that of those applicants that weren't A or B, the rest of them really wanted to work in games. They decided against hiring them because they were worried about the guy jumping ship as soon as a game job opened up.
I was the first guy they interviewed that didn't have any of these hangups, and jumped immediately on me, despite having no real previous experience with C#, .NET or other C-like languages. They offered me the top-end of my salary request range. I had nothing to negotiate. I can't imagine this having happened in anything other than a seller's market.
Maybe I've been fortunate enough to work for companies that had enough gravitational pull that we attract good candidates without trying very hard.
Outside of the tech hub cities, yes, it can be very hard. Even just an hour out of Philadelphia, helping a local company offering $95k salary and benefits (well above average in their area), there were very few applicants and fewer actually qualified to do any professional programming. It took almost a year to fill a single developer position.
Programmers are a rare species in most of the country. My CS graduating class a few years back was probably 30-40 people and, having worked with many of them in various classes, many were completely incompetent, having only passed by copying and pasting or sharing code. The entire country graduated less than 10k people from CS programs in 2010.
I work for a NYC startup that has hired Philly residents in the past - either remote or remote-occasional-commute. Geographic salary fences are falling, and falling quickly - may I suggest $95K is below-market? Heck, around here $95K is below-market for a good, fresh undergrad.
I've gotten into a debate with some friends about this: a degree on a resume is really great, but it's not necessary for the vast majority of programming jobs.
> helping a local company offering $95k salary and benefits
I hear that driving a truck in the North Dakota oil boom can earn you $150k, to start. Even in a Buyer's Market, you have to offer a realistic salary.
> well above average in their area
Average what? Average programmer?
> there were very few applicants
How did the company find candidates? I feel like a lot of companies expect applicants... This is like expecting the phone to ring and having someone ask you out on a date. Putting your profile up on Match.com isn't much better.
If you want to hire people an hour out of Philadelphia, have you considered training people who live an hour out of Philadelphia for the job?
Again, I've said this a few times, maybe I've been very fortunate to work at companies with enough gravitational pull, because we work hard to make sure people know they're supposed to apply. But since we've put that effort in, we have overly-qualified applicants lined up for openings that don't exist.
> many were completely incompetent
You just told me that CS graduates can still be completely incompetent, but then you expressed surprise that apparently degrees don't matter that much any more. =)
In his defense, and as a recent grad with my CS degree this last year, the curriculum doesn't really sell itself at all for professional software development. Knowing algorithms / language theory / OS theory / theory in general doesn't mean you can throw together a Django app or use git. I had to learn those outside the classroom, because class projects were about convex hull and Monte Hall, not making useful software.
In 9 months since graduating I've gone from my favorite language being C, my experience being in Java and a smidgen of Swing (and still an incomplete knoweldge of the Java thread model, how to write for the JVM, and some others) I did know some CUDA / pthreads / openMP but from an elective on parallel systems, I had a touch of Python 2.7, and almost no sysadmin experience, to now my preferred language is Python3, I know and use qt for FOSS work, I learned html / javascript / C# / regular expressions / SQL / proper networking / the kde libs / pyside / simpy / numpy, I switched full time to Arch and learned Unix ground up, I learned about assembly, unicode, byte order marks, etc.
I never touched on any of that in school. Given, my school was a mediocre liberal arts place I went to just for the near-free scholarship, but I get the impression from other schools I encountered during ASM contests that the curriculum was similar.
Oh, I completely agree. It's a Liberal Art, essentially. As opposed to a Trade School. I'm a huge fan of a liberal arts education, and I think the background of a Computer Science degree is fantastic, but I can't lie to myself that it's necessary.
I think the future is more mentorship, and once someone is a bit established in their career, that they will take continuing Liberal Arts education to improve themselves.
those liberal arts places... :-)
It was a class project my freshman year. I already knew the probabilistic parts to it from junior statics in high school, so I was bored out of my mind.
This can happen in a seller's market if people with jobs are in such demand that they can try to create the position they want.
Maybe I'm just not looking in the right places. I'm absent a network, so I'm just using online job boards from Careers 2.0 to Dice to Linked In, and I just don't see anything.
If you feel that you've tried this and you can't find anyone, I see two options: 1. Establish these relationships online. HN is a good start. There's also no shortage of good software developers writing blogs. Interact with a few that you really respect. Comment on their posts. Connect with them on LI and Twitter. Email them. Taking it to a personal level where they'll feel the desire to go out of their way to help you could be difficult, but it's possible. 2. Move. If your present community truly is devoid of people you respect who would be willing to mentor you in some way, you need to switch it up and expand your circle of potential colleagues.
Some of the programmers in my team are fairly high profile within the community, but what they've been reporting back from conferences and meetups is "dude, half the people are trying to hire the other half..."
If, conversely, a candidate asked me the questions edw519 listed above, you'd pretty much be guaranteed a job. I don't care how well or badly you program. I don't care whether you know Boost or not. I want to know whether you'll fit in here. Ever read Peopleware [1]? There's a great example in there on why you should value the programmer that seems to deliver nothing of value, and yet makes the team gel.
If you don't know why this line of C++ code compiles with Visual Studio 6, but produces the wrong result, hey, that's ok. Are you giving me the impression that you like programming? That you will try and find an answer yourself before coming to ask for my help? If I ask you a question that you can't answer, do you bullshit, or do you say "Hey, I don't know, but I'll find out and email you the answer tomorrow."
The character is far more important to me than your ability as a programmer. The former is a fit, or it isn't. The latter I can work with. Because it's a long game.
I'm confused. Is it normal for an interviewee to ask the interviewer a tricky technical question at some point of a job interview now? Am I reading this correctly?
Do I know it exists? Sure, of course. Have I used all of the 50+ libraries in Boost? nope. Maybe about 10% of them. What exactly do you mean by "know Boost"?
> "Let Me Code, Damnit" doesn't help me assess that as well as something that looks - at first blush - like a Cooke-Cutter Technical Interview does.
You can also have a look at my GitHub where you can read actual code I have written and see how I've handled pull requests, bug reports, etc.
I get applicants who claim they're C++ experts, and they've never cracked Boost open to look for anything good, and they've never heard of TR1 or anything that followed. I'd like to have that discussion with a candidate. That's all I meant by "know Boost."
> You can also have a look at my GitHub
When I can do that, it's awesome.
Many candidates have been work-for-hire their entire careers, in states with Non-Competes that are either enforceable or people are afraid their previous / current employer might try to enforce it. I don't hold a lack of a GitHub account against someone.
It's a "Buyer's Market" right now for average talent. And honestly, most start-ups only need average (competent) talent.
But if you need above-average talent, there's a perpetual shortage. Speaking from experience (and I'm NOT a name you've likely heard of -- I'm just a generalist who is good at low-level through high-level code and API design and have a resume that reflects that), once I get through a technical interview with a company they usually are inclined to make a position for me, whether or not they previously had one available.
And by "usually" I mean that I've gotten a job offer from more than half the companies I've ever interviewed with. Feels like a Seller's Market to me, and has for 20 years (with the exception of the 6 months following 9/11 when most of the US was in shock).
Step outside the HN bubble and you'll know that this business is still seriously fucked, and not getting any better. The only thing that has improved is that many of us, both employers and developers, have gotten better at isolation ourselves from it.
We maintain our own little bubble of online communities, conferences and meetups (always the same faces right, never the other 90%) so well that we actually think tech is getting better.
Until you start seeing the CV's and talk to candidates from "outside". It's depressing. I wouldn't call that a "Buyer's Market" when it's almost uniformly shit.
And it has been that way for as long as I can remember. For the 25+ years I've been in this business any decent programmer can take their pick of offers withing a few weeks, crisis or no crisis.
It's a Seller's Market if you have something to offer. Always has been, at least since the 80's.
But I have seen CVs of people "outside." Heck, I've accidentally become an expert at fixing people's broken code, or porting crap code from one platform to another. I've SEEN how bad it gets. (And as I type this, I'm procrastinating from porting some code from one platform to another that I'm surprised works at all -- oh wait, it actually crashes All The Time. Sigh.)
And I know that even THAT work is filtered so that I only see the code written by people who eventually got something to run at all.
Oh, I know how bad it gets. In part it's why I've gone the consulting route; there's no way I'd be adequately compensated working as an employee anywhere. By at least a factor (divisor?) of two.
But you have to figure that all of those people who suck are still developers. Professionally. And some of them have been for 20+ years. So someone must hire them. At least sometimes. And that means there's a market for them. And in that market, I continue to assert, is a buyer's market.
Now it's a market I have no interest in shopping in. I assume all of these people end up in huge companies that can afford to have people who barely know what they're doing. But someone must hire people from that crowd or they'd give up and take blue collar jobs. Everyone has to eat, right?
But yes, you and I and a large fraction (at least) of the HN crowd live in the Seller's Market.
I know it's cliche to suggest, but learn by doing. You need to think about what you're doing, of course. Otherwise you're just doing things by rote.
One thing I love to do when designing an API is to write pseudo-code that is using the new API, before I even start to design the API itself. Just think to yourself, "What is the exact call I want to be able to make?"
That call probably doesn't have a dozen parameters, or 15 lines of set-up. It has the minimal information you need to get things done.
Oh, and one other trick: If anything EVER annoys you about an API, decide to fix it rather than putting up with it. I don't care if it's NOT "your" API to fix; wrap it with convenience functions if necessary.
Good luck.
Someone fresh out of school should expect to jump through hoops.
A company that's looking for senior developers who've Been There, Done That, should expect to have to empower, reward, and listen to them.
But senior developers really need to understand that there are Chameleons among them, who have floated from job to job, look like they have all the right skills, but can't perform.
Companies need to be able to distinguish those Chameleons from the real deal, and I have found that Cookie-Cutter Technical Interviews are a necessary step. I think I've kept out more Chameleons than I've lost good candidates. Or rather, I've determined that it's worth administering the Cookie-Cutter Technical Interview, because I've concluded that the cost of hiring a Chameleon is higher than the cost of making one of the many honestly good candidates walk away in distaste.
I also have to emphasize how empowered, rewarded, and listened-to the candidate will be, and that they'll be surrounded by other senior programmers with great skills that they'll have fun interacting with...
However, I am curious what you mean when you say that it is a buyers market. From everything I've read, there is a shortage of development talent, so those "selling" their service as programmers have the edge. Doesn't that make it a seller's market?
You may think that it's insulting to have to pass a Cookie-Cutter Technical Interview, but we are not (generally) a Professional group - we don't have a Bar that you have to pass to be considered a professional programmer.
When I give something that looked like a Cookie-Cutter Technical Interview, what I'm really assessing is, "How much of my time will I have to spend explaining to this person how to solve programming challenges they'll actually see in the code they'll be working on, and how hard will it be to have that conversation with them."
The absolute best candidates were the ones who understood why I gave them the Cookie-Cutter Technical Interview, and related to me their own frustrations with similar oddities in programming... I concluded that they knew how to dig in to programming problems, and solve them on their own.
The next best candidates, who I loved to recommend to hire, were the ones who didn't know the answer to my questions (which were purposefully challenging), but who had a great dialog with me. I would encourage them to ask questions, to think out loud, etc. I know this is very, very hard to do in an interview, and I tried as hard as I could to be encouraging, and patient, and give hints when they were needed. And if they responded by asking good questions, stating their assumptions, verbalizing what it was that was difficult for them... I concluded that they would be good at identifying when they were over their head, which I hoped meant they would know when to ask for help, and I could also assess whether they'd be able to explain their problem succinctly.
Let me circle back with an anecdote: we had a candidate who looked great on paper, spoke well in all of his other interviews, had lead impressive teams at competitors, and who couldn't solve FizzBuzz. Hiring someone like this is incredibly expensive. Spending one hour of time with a candidate to make sure they can... program... is well worth the time.
And I'm sorry, but it's a Buyer's Market. People trying to Sell themselves as good candidates are going to have to put up with one hour of demeaning technical questions. Hopefully they'll turn that hour into a fun discussion about how programming is challenging, and relating their own stories of the oddities of the languages and libraries they use, and why they have certain preferences, etc. - a whole meta level above why ++i is different from i++, and how it's burned them in the past when someone didn't know the difference, etc.
You say "Let Me Code, Dammit," but most of your job will be READING code that other people write. I know what the code looks like here, and you don't. If I show you the warts, I can tell how you'll react to them. Do you call ugly code "ugly"?
http://www.osnews.com/story/19266/WTFs_m
Do you know why this line of C++ code compiles with Visual Studio 6, but produces the wrong result?
Do you cringe when you see a %s with an int in the param list? Do you tell me that printf functions are inherently unsafe? How do you recommend making them safer?
If you code C++, do you know Boost?
Can you spot a new without a delete? Will you tell me to use shared_ptr or auto-ptr, or just use the stack?
Typing code is generally having good habits, using safe but powerful libraries and language constructs the right way. But maintaining code is a bit of an art. If you don't agree about what's "ugly" and why, you're probably going to push the body of code in a direction that I call unmaintainable.
And there are different strategies in how to make code more maintainable over time, but within one company, we should probably all be pushing roughly in the same direction.
"Let Me Code, Damnit" doesn't help me assess that as well as something that looks - at first blush - like a Cooke-Cutter Technical Interview does.