Hacker News new | past | comments | ask | show | jobs | submit login
I Don't Agree That There Really Is a Tech Worker Shortage
50 points by MichaelCrawford on Dec 7, 2014 | hide | past | favorite | 148 comments
I know lots of engineers who are unable to find work.

I do believe the hiring managers who say they can't find the workers they need. What I don't believe is that the workers aren't out there, hoping to get hired.

I speculate that the reasons for the perceived - and ONLY perceived - shortage is that it's far more difficult for employers and potential employees to find each other. Another problem is that us engineers are expected to have real-world, paid experience in whatever technology the hiring company uses, rather than these companies providing on-the-job training.

At one time, a college degree and a demonstrable grasp of computing technology was all one needed. Companies were happy to train. No longer.

What really kills me is that when a new technology is introduced, one is _immediately_ required to know about it before getting a job where that technology will be used. Consider that Swift, a new programming language that Apple hopes will make it easier to write iOS Apps, has only been available for a few months, yet one cannot get a job writing Swift code, unless one already has PAID Swift experience on one's resume. It's not enough to just read a book. Neither is anyone willing to train.




If you do an HN search for "shortage" you'll see many links, to things like:

http://math-blog.com/2014/03/10/stem-shortage-claims-and-fac... - which points out that it's not "difficult for employers and potential employees", giving an example of how Facebook decided to not employ the people who became the founders of WhatsApp, then paid $19 billion for their company a few years later.

http://www.theatlantic.com/business/archive/2013/04/the-myth... - titled "The Myth of America's Tech-Talent Shortage: And what it should mean for immigration reform."

If you want the economic details, you might look at at http://www.epi.org/files/2013/bp359-guestworkers-high-skill-... , which (among many things) points out that two people get a STEM degree for each STEM job available.

The general conclusion is that there is no shortage, and that complaints by various large businesses about a lack of trained people is a strategy to pay lower wages and spend less on training. This has been known for over a decade. Eg, http://www.cis.org/sites/cis.org/files/articles/2005/back130... concludes """Overwhelmingly, the H-1B program is used to import workers at the very bottom of the wage scale. The wide gap between wages for U.S. workers and H-1B workers helps explain why industry demand for H-1B workers is so high and why the annual visa quotas are being exhausted.

Many in industry have called for an increase in the number of H-1B visas, citing the early exhaustion of the cap as reflective of widespread need for skilled workers. However, the fact that very few H-1B workers are earning salaries as high as U.S. workers in the same profession would seem to refute that claim, and should make lawmakers wary of increasing the H-1B quota. The exhaustion of the H-1B quota may reflect employers' interest in lowering labor costs or widespread fraud rather than an insufficient number of visas."""

HN comments include those of https://news.ycombinator.com/item?id=8656028 , https://news.ycombinator.com/item?id=7372574 , https://news.ycombinator.com/item?id=3689383 , https://news.ycombinator.com/item?id=5804016 and more .. again, search HN for "shortage".


Very simple fix: instead of lottery, award the visas to the highest paid employees in each field. That salary cannot drop more than 10%. (I'd add, the employee can switch companies, instead of being tied to one, given they are again paid the same amount in salary).

The "offending" companies are not the likes of Facebook or Google, or small start ups (other HN discussions mentioned the concrete companies that get the most visas). There is an apparent shortage of highly-skilled highly-qualified workers. Maybe not "code-monkeys" (whatever that means).

edit: One more thing, the above argument is supported by the sources you link, but it is not clearly indicated in them whether they considered that the majority of H1-Bs are (I presume) people starting their careers, so comparing their wages with the average of all Americans regardless of tenure is misleading.


Such a lottery would give priority to areas of the country where the cost of living is highest. While I believe that the "apparent shortage" is artificial propaganda, and used as a strategy to keep wages low, if it does exist, what evidence is there that the shortage isn't most severe in Alabama, South Carolina, and New Mexico, which are some of the poorest states in the US?

If it were the case that those states were desperate for developers, then your lottery would make things more difficult.


The Canadian Province of Nova Scotia "bet the farm" when it built a really well-equipped Computer Science facility at Dalhousie University in Halifax. It's really easy to get financial aid in Canada as well.

Of course the province was hoping to build a robust software industry.

What actually happened is that most of Dalhousie's CS grads get jobs in the US. I lived in Nova Scotia for several years, I was only able to get one job there. All of my other jobs were remote work for clients in the US.


You wrote: "I speculate that the reasons for the perceived - and ONLY perceived - shortage is that it's far more difficult for employers and potential employees to find each other.", and follow it up with an example of how most of Dalhousie's CS grads are able to find work in another country?

How is it meaningful to say that it's hard for the students and their potential US employers to find each other when apparently it's quite easy?


You're using anecdotal evidence to argue against the general case.

Consider the book "Laughter is the Best Medicine". Some guy's cancer went into remission when he watched a whole bunch of really funny movies.

Given that, would you suggest that we should do away with chemotherapy, radiation and oncology surgeons?


You started off by saying it was difficult, then used an example of where it was easy.

Given the existence of Craigslist, Monster, Stack Overflow Careers, etc. over and beyond what was available 30 years ago, it should be easier now to find employees rather than harder. You need to demonstrate that it's actually harder.

Under your analogy, you haven't shown that the people actually have cancer in the first place.


Craigslist, Monster, Careers 2.0 are the problem, not the solution.

At one time I only had two ways to look for a job: under "Computer Programming" in the Yellow Pages, and in the Sunday San Jose Mercury News.

Now there are vast numbers of job boards, newspapers are going bankrupt because craigslist job posts are completely free of charge in most cities, and no one even knows what the yellow pages are.


"You're using anecdotal evidence to argue against the general case."


Relatively moderate nit: Using the WhatsApp founders is a very poor example. If you look at their resumes (VP of Eng at Yahoo for Brian, presumably a very senior/architect-level engineering role for Jan), I have no doubt they were interviewing at Facebook for architect/engineering director-level roles. Whether or not you get hired at that level obviously depends on much more than baseline coding competency.


I'll pick some at that nit. In the link, the author contrasts it to the quote from Zuckerberg: "Our policy is literally to hire as many talented engineers as we can find. The whole limit in the system is just that there aren’t enough people who are trained and have these skills today."

The example is to point out how this quote is not true, as two such engineers were not hired by Facebook. You point out that it depends on more than coding competency. While true, neither I nor the author of the piece suggests otherwise. The author, for example, suggests that ageism is one factor, and further quotes Zuckerberg as saying “Young people are just smarter. Why are most chess masters under 30?”

So I don't see how it's a poor example. You argue that they were a poor fit for the position. That essay brings up “purple squirrels” several times, to highlight how a generic "poor fit" can be a surface excuse for other reasons.


If you apply for a architect / VP level position, they're not going to reject you and then suggest you work for them as a staff software engineer or something (which many people would find insulting). Zuckerberg's statement about hiring talented engineers is perfectly consistent the norm in hiring at any company.


What's App founders were not looking for position as engineers - they were looking for position as senior managers. The fact that those two guys can write code is not that relevant. Jan managed 150 people at Yahoo - FB had in total that many engineers at the time.


I have searched, but found nothing which verifies your statement that they were looking for positions as senior managers. Or as software engineers, for that matter. Only that Koum was turned down by Facebook, and Acton by Twitter and Facebook.

For what it's worth, FB had 200 engineers at the time, says http://algeri-wong.com/yishan/engineering-management.html . According to the FB IPO prospectus, they had a 81% growth in 2010 and 57% growth 2011, in engineering headcount. That's about 600-800 engineers at IPO.

Isn't what you're suggesting still a subtle aspect of ageism? If the only positions are for low-level engineers, with little in the way of management advancement, then there's a preference for those with little experience or those with little desire to take on more management roles.


You're right by the way. But I believe that my inference, based on their resume, is the correct one. Nobody takes a dip from VP of Engineering at Yahoo to a standard software engineering position.


In the US, Federal Law, and the law of all the US states that I know about, forbid discriminating for reasons of age against people over forty.

I'm puzzled as to how Zuckerberg could have been so ignorant as to say such a thing. All I would have to do is to apply to Facebook and I'd have a good case - it's pretty obvious from my resume that I'm olde and greyye.

That's not to say such discrimination does not happen, actually it's quite prevalent. It's quite common that I am asked to come in for an onsite interview, but the instant they see me in person, the way they talk it's plainly apparent that I'm not getting the job - before I even say anything. I really do have grey hair, you see, and wrinkles.


When you are worth a bajillion dollars you tend to think your opinions are right.

You would have to show that your rejection from Facebook was due to age bias. Just because the head of a company makes a statement like that doesn't mean that the company carries out those actions. So no, you would not have a good case.

Did you even read the first link I gave? It explains the situation; absurd requirements are used to reject people based on hidden criteria, in addition for being a strategy for lowering pay.

> Technology companies can probably solve their “shortage” by discarding hidden and/or unconscious non-technical criteria as well as discarding excessively narrow “purple squirrel” technical requirements in hiring software engineers and other STEM professionals. Doing this will save them time and money (possibly $19 billion in Facebook’s case) and even make the world a better, fairer place at the same time. :-)


That's what "Discovery" and "Deposition" are for.

In the United States - specifically the US, I don't know about other countries - the Constitutional right to not incriminate oneself only applies to criminal procedures, not to civil ones.

So all I would have to do is put Zuckerberg - or whoever I think may have made the decision not to hire me - under oath in a deposition, then ask them directly whether the didn't hire me as a result of my age. If they perjure themselves, they would do hard time in prison.

Now there are people who will lie in depositions, or on the witness stand before a jury, so we have discovery. I would just say "Give me all of your email" and they would have to - or again, they would go to prison.

I myself have Amazon cold for violating the Americans with Disabilities Act. I have two very prominent links at the top of every single page on my website, to essays about my mental illness. Amazon's HR was all over me like a cheap suit until I asked them to have a look at my site. Within the hour I received an email that informed me I would not be getting an interview.

I myself am reluctant to file an ADA complaint, what I would rather do is to address the problem by writing more essays. However, were my writing to have any effect, that would only happen very slowly.

I might file that complaint, as it would help other mentally ill people get work.

The reason I work as a coder, and not a physicist, is for the specific reason that computer programming "accomodates" my mental illness in a way that academia does not.

That is, I can be floridly paranoid, even hallucinating - and I do hallucinate from time to time - yet I can still write really good software.


You are making things up and don't understand how the legal system works.

The immediate response from Facebook will be that you have no grounds for your lawsuit: you have no evidence of age or disability discrimination, only conjecture, they decline to hire many applicants, and there are legitimate reasons for not going forward with hiring you. Such as they found a better candidate.

Even under Reid v. Google, a stray remark like this only helps if it's part of a larger picture. It cannot be used on its own, because Zuckerberg wasn't part of your hiring process. The comment was made years ago, and under EEOC you have less than a year before you can file for discrimination. (The Supreme Court of California decision in Reid points out that Brewer v. Quaker State Oil Refining Corp used statements that were two years old, but that's the most extreme example. Six years is unreasonable.)

And in a deposition you cannot ask for "all of your email". Otherwise people would abuse the system and sue a company under any pretext in order to get all email, to spy on the internal operations of the company.


Actually I think it's _you_ who don't understand how the legal system works.

When one is the respondent in a civil lawsuit, one has to depose under oath, and one must supply what is requested in discovery.

Yes, the respondent can ask that a judge quash a discovery subpeona, with the usual argument being that it's "just a fishing expedition". However, given Zuckerberg's adamant insistence that young people are smarter, and that no one at all should hire anyone over the age of thirty, it would not be hard to convince a judge to force Facebook to hand over all of its emails.


Has Zuckerberg said anything about the matter in the last 5 years?

If not, then you have no standing, and you have no legal power to compel FB to do anything for you. Legal precedent is against you, and I quoted a California Supreme Court case which went into the details for both California and US anti-discrimination law. Anti-discrimination laws give you 180 calendar days from the day the discrimination took place (or more depending on state or local laws, but not more than a year). You cannot sue over one even that happened that long ago.

If so, then show me an example of how Zuckerberg continues to insist on that belief. I have found nothing beyond 2007. And kindly point out in the EEOC guidelines where there's a violation of the law.


I was refused a job at Amazon just two days ago, because I am mentally ill.

My website makes that plainly apparent. That's called "Voluntary Self-Identification" in the Americans with Disabilities Act.

I am dead certain that I am a far, far better coder than most of those who are already employed by Amazon.

While yes, Zuckerberg said that in 2007 I don't see any evidence that he's changed his attitude.

I never said that I myself ever applied to work at Facebook - and I never will. If I already know I won't like my place of work, I won't even apply.

However, I'm not the only fifty year-old coder who's looking for a job.

All that the UNITED STATES JUSTICE DEPARTMENT - not the applicant - would have to prove is that just one facebook employee turned down an applicant because he was forty or more years old.

Now are you going to tell me that that doesn't happen at facebook anymore?


Under the 'stray remarks' doctrine, a single remark made many years ago is not evidence that there is a discriminatory practice now.

He doesn't have to change his mind. The EEOC doesn't care one whit about what people believe. It only judges actions. You need more evidence than simply that you weren't hired, and a stray remark from 2007, to justify an EEOC lawsuit.

Had you read Reid v. Google you would see how hard it is to make the case based on the paltry evidence you have. You know that you were refused a job. You don't know that it's because you are mentally ill. You don't even know if the person who got the job is mentally ill.

I never said you applied to work at Facebook. All of this assumed the antecedent to your proposition "All I would have to do is to apply to Facebook and I'd have a good case".


Under the 'stray remarks' doctrine, a single remark made many years ago is not evidence that there is a discriminatory practice now.

He doesn't have to change his mind. The EEOC doesn't care one whit about what people believe. It only judges actions. You need more evidence than simply that you weren't hired, and a stray remark from 2007, to justify an EEOC lawsuit.

Had you read Reid v. Google you would see how hard it is to make the case based on the paltry evidence you have. You don't even know if the person who got the job is mentally ill.

I never said you applied to work at Facebook. All of this assumed the antecedent to your proposition "All I would have to do is to apply to Facebook and I'd have a good case".


Yes I know.

That's what Discovery and Deposition for.

The EEOC would go through the emails and other written documents, to see whether someone might have made discriminated in an illegal way, then they would depose them.


The FB/Yahoo/whoever lawyer would point out that there's no indication of any discrimination. Your only evidence is permissible under the stray remarks doctrine, promulgated by Justice O'Conner in the Supreme Court decision for Price Waterhouse v. Hopkins (1989). You have no evidence of them doing anything illegal.

Stray remarks "standing alone" are not sufficient prima facie evidence of age discrimination. Nor is not hiring someone who is a member of a protected class, without evidence that being in a protected class was a factor.

You can't make up a random conjecture about them violating the law and do discovery. You have to have some evidence first. Show me a court case which says otherwise. If it were true then there should be thousands of court cases, or an EEOC guideline, which discussed it. I quote instead from http://www.eeoc.gov/eeoc/litigation/briefs/fried.txt :

However, “[s]tray remarks, even if they occurred as plaintiff claims, are not enough to satisfy the plaintiff’s burden of proving pretext. Stray remarks alone do not create an issue of material fact to defeat summary judgment.” Bunk v. General Services Admin., 408 F. Supp. 2d 153, 158 (W.D.N.Y. 2006). See also Shapiro v. N.Y. City Dep’t of Educ., 561 F. Supp. 2d 413, 424 (S.D.N.Y. 2008) (“[t]he stray remarks of a decision-maker, without more, cannot prove a claim of employment discrimination”). In this case, the single, isolated mention of Fried’s age, the only such mention in the entire record, cannot, standing alone, create an issue of material fact sufficient to defeat summary judgment. This is especially true given that State, by Fried’s own admission, qualified his remark by asking “what if you get hit by a bus.” Accordingly, unless other indicia of discrimination are properly presented, see [Shapiro, 561 F. Supp. 2d at 424], this comment alone is insufficient to sustain plaintiff’s burden of proving pretext as a matter of law.

You have no other 'indicia of discrimination.' You have not demonstrated prima facie evidence.

If what you were saying were true then why did Reid in Reid v. Google have to take the case to the California Supreme Court?

Answer: because what you believe isn't actually true, and you don't understand the relevant case law.


Amazon's HR guy was all over me like a cheap suit until I directed him to my website.

About an hour after that I got his "Dear John" mail.

At the top of every page of my site is a link to "Living with Schizoaffective Disorder".

http://www.warplife.com/mdc/books/schizoaffective-disorder/

That's known as "Voluntary Self-Identification" under the Americans with Disabilities Act.

I do not require any accomodation whatsoever. I write good code when I'm symptomatic. That's why I'm a coder and not a physics researcher.


Right, so now you've completely dropped the Facebook hypothetical that you thought was relevant, and bring the topic to something where I have access to zero information, so you can make the topic be all about you.

Just go ahead and contact the EEOC. Stop boasting about some mythical power you wield, and go ahead and use it. Bring Amazon to their knees. Make them weep.


H1Bs are used not only to pay lower wages, but to enable employers to treat their employees poorly without fear that they will leave.

As a US Citizen, not only can I work for any US employer, I can reside here as well, even if I don't have a job. If I work for someone who treats me poorly, or who I regard as unethical, I will resign. One time I just walked right off the job - I left on a Friday, then never returned, due to an ethical lapse on the part of my employer. I gave no notice at all.

By contrast, a close friend who was a UK citizen, who worked with me on an H1B, was treated quite poorly by our employer. He was given a far heavier load, he was never given any help when he asked for it, in general he was taken advantage of. Really he was a far more skilled coder than I was at the time, but I was treated far better than he was.

I myself have no objection to foreign workers. If someone comes to the US hoping to make a better life for themselves than they are able to do in their Mother Country, I say more power to them. I know from hard experience that it totally sucks to be poor.

But I do feel they should be paid as much as a US Citizen would be.


A possible solution here is for countries to treat labor the way they have started to treat capital and goods and services. Start signing reciprocal free-labor agreements. If country Y is willing to allow anyone who can legally live and work in country X to legally live and work in country Y, then country X will do the same for people who can legally live and work in country Y.

In my mind, if companies were serious about this shortage (and not just trying to hire more people they can abuse as you described) they would be pushing for far more than a few more H1Bs. But we haven't really seen that, at least that I know of.


Such exists between many countries in the EU. It's not so simple though.

Free movement of labor also requires a correspondence in the national health care and retirement programs, so for example totalization agreements to eliminate dual Social Security coverage. The US has such agreements with only a score or so countries (see http://www.ssa.gov/international/agreements_overview.html ). It gives an example of a 66% tax rate when such an agreement does not exist.

As it stands now, there is no such agreement between the US and, say, New Zealand. A NZ citizen working in the US for 8 years before returning to NZ would pay US Social Security taxes for those 8 years, but receive no benefits.


Sorry, I didn't mean to imply that it would be easy, just that it would be a much, much better solution to the problem (in part because it would address the general problem of labor shortages / surpluses instead of being specific to some industry or type of work).


The North American Free Trade Agreement (NAFTA) established such a free labor market under the TN-1 visa, which is extremely easy to get, however it only applies to twenty different occupations. It's commonly thought that Computer Programming or Software Engineering qualify, but they don't - the TN-1 provides for Systems Analysts, who are commonly programmers as well, but Systems Analysis is really quite a different thing.

Before we were married, my Canadian ex-wife obtained a TN-1 so she could live with me in California. She has a Biology degree, and so was able to find work as a Biological Lab Technician, which is one of the twenty on the list.

In general, Canadians, Mexicans and Americans can get a TN-1 if they have a written offer letter for one of those twenty kinds of jobs and a four-year college degree. The visa expires in a year, but is renewable. Canadians and Americans just show up at a port of entry, request the visa, present the offer letter and their diploma or college transcripts, then pay a fifty dollar fee. The visa itself is a small card that is stapled onto one of your passport pages.

For a Mexican to work in the US, they must request the visa at the US embassy in Mexico City. I don't know what they must do to get a TN-1 for Canada.

For my ex-wife's TN-1, the whole process of applying for her TN-1 only took ten minutes and cost fifty bucks. By contrast, an H1-B costs thousands of dollars in attorney fees, one must apply months in advance, and one must qualify before the cap is over its limit.

It's not well-understood that, in Canada and the US at least, it's completely legal for foreigners to work without a visa provided they are paid in their home country. That's how I myself was able to work in Canada. I'm a self-employed consultant, so I deposited all of my clients' payments in a bank back in the US, then withdrew Canadian currency from ATM machines in Canada.

I don't have a clue whether this last applies in other countries.

Strictly speaking I overstayed my Canadian tourist visa. I started paying Canadian taxes after I got a work permit, as I had applied for landed immigration - what the US calls a Green Card. However, no one actually objected.

Just being married to a citizen of some other country does NOT automatically permit one to reside or work there! That fact is also poorly understood. That's not right, but that's the law in the US, Canada and the UK that I know of, I expect many other countries as well. One must apply for a visa after getting married; before one is wed, one can apply for a fiance visa.


I'm a TN-1 visa holder and you've got some misinformation in your post. Nothing major but some of the details can be important when talking about working in another country. First you're correct that computer programmer is not on the list of approved occupations. However, both systems analyst and software engineer are listed. Most people view software engineer and programmer as being the same but you have to make sure you use the correct terms.

The length of the visa is up to three years. It also can't go past when your passport expires and may be shorter depending on your job offer. It can be renewed many times (I think up to twenty years but could be wrong).

Application and renewal is normally pretty easy. If you're doing a border crossing it takes a little time and a $50 fee. If you're doing it through the mail it takes about 2 months and a larger fee (several hundred dollars).


A common problem I find is that companies that have open positions either do not advertise those positions on their own websites, or even if they do, they don't link to those pages from anywhere else.

Lots of companies have "Careers" or "Jobs" links, typically in the footers of their pages but often at the top. They're real easy to find.

But some companies have no such links.

I speculate that this is because the HR department is granted access to a specific directory on the corporate webserver, but somehow it never occurs to them to ask the webmaster for a link from the homepage.

Another problem is that the URLs are sometimes hard to figure out. If I speculate there might be a Jobs page, I can often guess at the URL:

   http://www.example.com/jobs
   http://www.example.com/careers
   http://www.example.com/careers.aspx
But sometimes it's something really obscure like:

   http://www.example.com/corporate/join-our-team.html


Here is an alternate point of view. I recently went through the process of hiring a programmer. I probably interviewed 30 candidates. All of them had the required knowledge and experience listed on their CV's. Guess how many could write a simple program in the language of their choice? Exactly 3.

Yes, there are many people with the right credentials. In my own personal experience, many of these people can't do the work. They either don't really enjoy what they do or they simply aren't smart enough. They got into this field because of the money.


3 out of 30 is still a lot better than... 1 out of 200:

http://blog.codinghorror.com/why-cant-programmers-program/

Having heard of some rather... dubious grading practices in universities, I'm not surprised at all that a lot of people who claim to have the knowledge actually don't.


Could you provide an example of your definition of a simple program and the resources they had to write it?


Not parent, but I've sat though way too many interviews where the candidate failed the "FizzBuzz" test, either through super convoluted code that barely works or with complete failure to produce the expected results.

And that is while sitting at a desktop computer, full internet access and no one eyeing behind them.


So you are saying that many people failed to type "FizzBuzz code" in Google? I do not really buy that.


How many interviews have you conducted?

If the answer is more than 0, I feel you have gotten lucky in the candidates you interview or are far more selective on who you actually interview.

If the answer is 0, then you would be incredibly surprised. It isn't quite as simple as this dialog is making it sound, but essentially, yes, a not-insignificant number of candidates cannot solve problems with a fizzbuzz level of difficulty.

It is something that surprised the hell out of me as well. From what I have seen, there are many people with CS degrees who have written virtually no code outside of class and never have come up with an original program on their own. It is incredibly clear that programming is just not something they are passionate about.


I have done about a dozen or so interviews. I can totally imagine some people not being able to do a simple fizz buzz from scratch. But when they have full internet access and no one is watching them. "Solving" fizz buzz is then as simple as performing a search and copying the results.

I'll probably get down voted because it seems people on HN are incredibly attached to the FizzBuzz story. Possibly I am totally wrong and I am too positive about the skills of people with a CS degree. But it seems the crazier the anecdote (full internet access, coding at home, etc.) the more eager people are to believe it.


I'm the parent who said the story (although parent I answered to was also using fizzbuzz it seems, which shows just how real it is) . And I totally understand what you mean, in that before I ran interviews I would probably never have believed it myself.

Truth is, I think a lot of people in this field are not "bad" or "stupid", they simply don't care. That's what struck me the first couple of times, not that they failed fizzbuzz or to understand how simple of a problem it's supposed to be, but that they don't even copy it.

At first you think it's a couple of bad apples, then you think you're really bad at choosing interviewee, then you get that no matter what, almost half of the people you see shouldn't even be working in that field.

Frankly, it might not be politically correct to say that but running interviews had to be one of the best thing of my career for my self esteem.


Some people don't even know how to do Google searches.

This suggests a productive interview question: ask your candidate a question that they could not possibly answer on their own, then provide them with an internet-connected box, and see whether it even occurs to them to use web search.

It's not just programmers; I devoted twenty years to asking medical professionals why I have a constant, raging, unquenchable thirst. That's a symptom of the very worst kind of diabetes, so of course they'd order a fasting blood sugar test. "No doctor, it could not possibly be diabetes. If I had diabetes, I would have been dead twenty years ago." When the tests came back normal, the doctor would lose all interest in talking to me, then refuse to investigate further.

Just a few years ago an emergency room resident who I never personally met, but was a member of one of the other websites I frequent, diagnosed it as Psychogenic Polydipsia - "Thirst of the Mind" - which is an uncommon side effect of the medicine I take for my schizoaffective disorder.


Caltech didn't offer any programming language courses at all when I majored in Physics there in the early eighties. One was expected to learn any required languages completely on one's own.

I have only taken one CS class in my entire life, Caltech's CS 10, which is commonly taken by first year CS majors; I took it my second year.

I found it quite puzzling that the CS majors were often stymied by the final project, which required us to write a full-featured GUI vector graphic editor. That was a tough project but I aced it. Many of the CS majors would go totally out of their minds trying to get their editors to work, but were unable to.

When I entered the workforce after dropping out of school, I was quite concerned that the folks with CS degrees would eat my lunch, so I worked very, very hard to perfect my craft. However it was not long at all that I found that recent CS grads often knew very little about writing the kind of code that was required of coders in private industry.

Consider that an algorithms class would teach all the common ways of sorting - quicksort, mergesort and so on. One is then expected to write a program that sorts an array of integers using quicksort, a second program that sorts the same array using mergesort, a third that uses insertion sort.

None of these programs are very large. They're easy to debug. You're not expected to handle edge cases, like what would happen if someone unplugged the network cable while your program was running.

In the kind of code that's sold for retail sale, or for eCommerce websites or what have you, you wouldn't be expected to implement quicksort, someone else would already have done that so you'd call a library function like the standard C library's qsort(). However what your code WOULD have to do, is handle all that nastiness like unplugged network cables.

It's not that Computer Science schools could not teach that stuff. It's that they don't.

Also, it's quite uncommon for CS students to collaborate on large projects. While I do know of it being done, it's uncommon. It would be very helpful, were CS students - at least occasionally - required to collaborate.

Finally, many of the technologies which are of crucial importance to private industry, are of very, very little interest to CS professors. I learned all about what most refer to as "Game Physics" in my upper-division physics studies, but I can't imagine a CS instructor wanting to teach her class about how to do, say, ad syndication.


> It's not that Computer Science schools could not teach that stuff. It's that they don't.

Yes, this is the classic Academics v. Industry gap you see everywhere.

Teachers in an accredited program that leads to certification spend most of their time studying theory on psychology, child development, learning, and (now more than often) special education. When they get to the point where they actually have to go student teach, they have lots of knowledge but lack practical experience. As someone who has tried teaching and knows lots of teachers, classroom management is the foundation for everything that happens in a classroom.

In the whole 'teaching more people to code' momentum, the problem is usually that there is some perverse incentive to give the impression that coding is 'easy'. Coding, as most of us know, is by far, 'not easy'. In fact, for many of us, that fractal difficulty is the draw.

The whole movement of teaching CS in high schools baffles me because, again, CS does not teach one how to code. I would much rather see AP CS go away and be replaced by something that teaches Scratch and other tools as a stepping stone to teaching youth to think computationally.


This is a problem in other occupations, not just computer programming.

I have a friend who is a clinical psychotherapist. After she successfully defended her PhD dissertation, she had to complete a residency. That's typically done by working in an inpatient psychiatric hospital.

By contrast, attorneys are not expected to know how to argue actual court cases until they are taught to do so by working in a law firm - AFTER they pass the bar exam.

What really had me puzzled was that I once quite successfully defended myself - "Acted Pro Per" - in a felony case. I picked up a few legal textbooks at Powells City of Books in Portland, Oregon.

One of the books was entitled "The First Trial: Where Do I Sit? What Do I Say?"

While it is quite a good book, what I remain puzzled about is that the book addresses attorneys who have already passed the bar exam, and have been working for some time at a law firm before they even start to learn about arguing a case before a jury.

I would have thought that would be taught in law school, starting one's very first semester, but it's not. I've asked a couple of attorneys about this, and they said that yes indeed, that's they way it works in their profession.


I am commonly asked to reverse a C string.

The first time I did that, I wrote out what I regarded as the obvious solution. The owner of the company pointed out that I had paid attention to performance. That had me puzzled - while I could see that there are lots of really slow ways to reverse C strings, I found it hard to believe that anyone would provide slow solutions to such a simple problem in a job interview.

I got an offer the very next day.

It was not long after that I discovered that many of that company's other coders were, while not actually clueless, just not very adept. Like they really would be challenged to write a fast C string reverser.

At least I got the fizzbuzz test right. I've only been faced with that challenged just once, but three times now I've had to reverse strings.


I found it hard to believe that anyone would provide slow solutions to such a simple problem in a job interview.

These sorts of overly complex solutions usually indicate someone who doesn't actually know how C strings work/how they're stored in memory. Reversing a string is one of the instances where these weaknesses show up. I've seen various people with degrees in CS who claim to have worked with lots of C do this problem, and it's almost amusing the volume and variety of code they can produce for such a simple problem. What should only involve two array indices or pointers in a loop can turn into something containing numerous malloc()s (often with no free()s), copious copying and moving of data around, recursion (this one isn't so bad), and I've even seen sprintf() make an appearance.

However, none of this compares to one individual whose quite memorable solution involved creating a temporary file, writing the string into it, then executing an external command to reverse that file, and reading it back in. His reasoning was "because I don't want to reinvent the wheel."

(Related article about std::string in C++: https://news.ycombinator.com/item?id=8704318)


For C++ std::string, I might well code up an iterator adapter. :-D

A while back I mentioned this on Kuro5hin. "K5" members are reknowned for being total jackasses. Some kuron told me that the correct solution was to call the C standard library function that reverses strings - "strrev()" or some such. His point was that one should never implement code from scratch, if one could use a library call.

I pointed out that I was required to implement strrev() myself. My interviewer wasn't asking me to call a library function.

This set off a flame war that lasted for hours. This compleat gentleman flatly refused to accept that there was any other correct solution than to call a library routine, despite that it was quite clear to me, when I interviewed, that I was not permited to.


I've interviewed at Google a few times. They don't ask the fizzbuzz test. Actually I was totally stymied.

I regard it as poor form to post the questions I've been asked online. However I could describe them reasonably by saying that I was asked to design algorithms that would efficiently perform some computational task, with a very large input set, given a distributed system with a specific number of computers, disk drives and ethernet cards.

By the time one is actually called in for an onsite at google, one has been through at least two, maybe three phone interviews.

During one such interview, I was asked by Google's engineer what actually happened after the user clicked a certain button in a popular GUI program. I went on for twenty solid minutes - "Well there's a system call, which is typically implemented by calling some manner of illegal instruction, so there's a trap into the exception handling mechanism. The registers are saved on the stack, the CPU sets a flag to indicate that it is in supervisor mode, then a table is consulted to find the address of the function that actually implements the system call..." and then I went on about what happens in the kernel.

Someone who didn't know how computers actually worked might say "When you click that button, the program saves your document."


A couple of times I've had written tests, where I was given a pencil and paper, then left alone while I wrote out my answers.

That worked really well both for me and for the interviewer. But I can only recall just two interviews that were conducted that way.

In one of the tests, I was given the source to a C++ program and was asked to debug it. Note that I did not have a computer, only a hardcopy of the program source. That same test also gave me a hex dump of a network packet; I was required to reverse-engineer as much of the network protocol as I could.

Another interviewer gave me a hardcopy that explained the assembly code of a hypothetical microprocessor - not one that actually existed, so I could not draw on previous knowledge of any specific processors. I was also supplied with the source of a program that was written in that same mythical CPU's assembler, with my requirement being to write down what it's output was.

This last was actually quite difficult - I required several hours to come up with the program's output. I don't know whether I got the output correct, but I did get the job.


Quite a serious problem I myself have - at least I'm willing to admit to it - is that when presented with any coding task at all, I start looking for ways to optimize it. That's lost me more than a few jobs.

It's not that I can't write fizzbuzz. It's that I won't write anything at all because I'm trying to figure out a faster way to implement it than the obvious way.

Here's a little exercise for you: give your candidates what you call the "fizzbuzz test", but instead of 2 and 3, use, say, 4 and 7.

I bet quite a few candidates will write out the code for 2 and 3, because that's what they memorized before the interview, without understanding what the code actually does. Source code for fizzbuzz is all over the series of tubes these days, you see.


Hm, I'd like to know the answer to that question too.


It was FizzBuzz.


For the specific reason that resumes are often, if not actually outright faked, at least "enhanced", I've been contemplating starting a business in which I would perform resume screening for folks like you, for a fee.

I don't really know how to structure it yet. I don't want to be a recruiter or headhunter. What I would like to do is to offer folks such as yourself, who already have resumes, my opinion as to the qualifications of each candidate.

I myself got the very highest-paying job of my career, writing Mac OS X I/O Kit Kernel Extensions - what Apple calls device drivers - because I was the first candidate in six months who knew how to do synchronization in the kernel. That's a very basic requirement for writing a device driver, so it's covered in detail, and quite clearly by the tutorials on Apple's developer site.

I expect lots of people figured they could get a cushy, high-paying job, so they just added fake device driver work to their resume. Ironically, the guy who asked me that question was their windows driver engineer.

More or less the way it would work is that you'd send me some candidate resumes, and I would tell you which ones I think were worth your time to interview.

Quite commonly, references are only checked after an interview, as the last step before making an offer.

I wouldn't check their references, so as not to annoy them, but would call or email the HR departments at each of the employers the list, to verify their employment. "Did they work for you from this year to that year?" is a simple yes-or-no question.

Also I would verify that those who claimed to have college degrees, really graduated.

In my entire life, the only time I've been asked to supply my transcripts to anyone, was when I applied to graduate school, and so I could qualify for a discount on my auto insurance. I've never had a potential employer ask for my transcripts.

Would you regard such a service as valuable? If so, have you any suggestions as to how I could get started, or how to market such a service?

A lot of people have told me I'd make a good headhunter. I expect I would, but I don't want to do that, because I want the whole practice of third-party technical recruitment to just go away.


The only concrete things that you've suggested you would do is call colleges and previous employers' HR departments.

That's both pretty trivial, and there are lots of companies that already provide that service. They're usually marketed as background checks to do just before the offer, as you say, but I'm sure they could also do it up front as you're proposing.


HR departments normally have legal advice to say as little as possible. It would be hard to get a tech opinion out of them.


He doesn't want a tech opinion - "Did they work for you from this year to that year?"


I once worked for a company that got sued by my predecessor, and won. However they spent so much in legal fees, that the lawsuit nearly bankrupted them. The code that my predecessor wrote worked very poorly, so they got bad press reviews, lots of product returns and so on. I was hired specifically because I said I was really good at debugging.

After that, the company owner had a specific policy of not providing references. He gave a very neutral answer: "Our policy is not to provide references." However he was completely cool about verifying employment.

His concern of course was that my predecessor would sue him again, were the company owner to give that guy a bad reference.

Ironically, that same company owner is one of my own references. He's always happy to say good things about me.


I've never so much as heard of someone verifying employment and graduation before interviewing a candidate. If it's done at all, it's the last step, after the interview but before the offer.

While it's common for references to be contacted, it's quite uncommon for employment to be verified. Note that that's quite a different thing: "Did Bart Simpson do a good job for you?" is checking a reference. "Did Bart Simpson work for your company in 1999?" is verifying employment.

One's references must be people who one actually knew, usually direct managers but sometimes coworkers.

The person who supplies the employment verification need not have ever met the candidate.

And yes I know this is not rocket science - but consider what I just said, that AMCC interviewed candidates for six months before they found someone who actually had done what the claimed, in my case writing OS X drivers. AMCC did a background check on me, but only AFTER I got the job offer, and with my written permission.

While it might still have required six months to find a qualified candidate, AMCC could have saved a lot of effort and expense by sending some emails or making some phone calls before inviting candidates in to onsite interviews.

Consider that it's quite common to pay for plane fare, car rental and hotel accommodation if the candidate has to travel. The employer still pays even if they don't make an offer.


I would do more than just verify employment, but I don't want to go into a whole lot of detail, not in public anyway.

However I will say that I've been a manager, and even when I wasn't a manager I participated in hiring. I've also been working full-time as a coder since 1987. I wrote my first program in 1976.

I can smell bullshit when I find it on a coder's resume.


I have a tool that does this. I use it to filter all candidates. Saves loads of time


All the headhunters, and many software companies have resume retrieval databases. One can query for keywords such as "windows device driver" then get all the resumes that have that keyword.

But the programs must not be very effective, or perhaps those who use them don't know how to use them correctly.

I myself have written some Mac and embedded device drivers, and I've written some Windows GUI applications, but hardly a day goes by without a solicitation for me to apply to a windows device driver job.

I expect it's interesting work, but I don't have a clue as to how to write windows device drivers, and never claimed to.


"I know lots of engineers who are unable to find work."

I don't. Probably your definition of "engineer" is different from mine.

"Another problem is that us engineers are expected to have real-world, paid experience in whatever technology the hiring company uses"

Generalization and obviously not true. I have a company, I don't care about paid experience, in fact we hired lots of people from open source projects, or directly from University with no experience at all.

"At one time, a college degree and a demonstrable grasp of computing technology was all one needed. Companies were happy to train. No longer."

During the dotcom bubble anyone that could click a button was hired. But it was a bubble.

The better demonstration of grasping computing technology is actually having done something with a computer.

When computers filled a room it was impossible for people to code on their own. Now you could find people with college degree AND experience writing software for others or for their own.

"yet one cannot get a job writing Swift code, unless one already has PAID Swift experience on one's resume."

This is your belief not reality.

"It's not enough to just read a book."

Of course. Programming is not about reading books. The better programmer is not the one who reads the most books.

In fact, I consider books obsolete. Everybody in my company has free Lynda accounts.


could you please expand a bit on considering books obsolete ?


Boy, I really wouldn't want to work for your company


I must cop to the fact that I myself have a hard time finding work because I make it plainly apparent that I have a bad attitude about total jackasses.

However, my thesis in this particular topic is not that I myself am unable to find work, but that a great many of my colleagues cannot, despite being highly qualified.

I do believe that those who employ coders, cannot find enough qualified staff. I've been hearing that very same complaint from so many people for so many years that I really don't buy the argument that they're just trying to drive our pay scales downwards.

I feel that there is a deeper underlying cause.


Actually my definition of "engineer" is much the same as what the United States requires of Civil Engineers. They call themselves "P.E.'s" - Professional Engineers. A PE is required to do Civil Engineering as a result of an incompetently-designed gas pipe rupturing, and killing three hundred people.

In the entire nation of Canada, one cannot publicly denote oneself as an "engineer" of any sort, unless one is the Canadian equivalent of a PE. In my own case, it was flatly illegal that I did so, as I did not have a professional software engineering license, had not served an apprenticeship, and had a physics rather than a software engineering degree, however I was completely prepared to defend myself in court, as I regard myself as a far, far more competent engineer than the vast majority of "engineers" that I have ever personally met.

(Note that a "software engineering" degree is quite a different thing than a "computer science" degree.)

I'm completely cool with just about anyone calling themselves a "Computer Programmer", but I'm not cool with just anyone calling themselves a "Software Engineer".

Consider that I'm damn near clueless about computer science.

What I can do is write code that is completely flawless, runs fast and uses very little memory. I can also take a total rat's nest that someone else wrote, and get all the bugs out of it.

   > During the dotcom bubble anyone that could click a button was hired. But it was a bubble.
I got my first private-industry coding job in 1986.


"I don't care about paid experience ... we hired lots of people from open source projects".

"The better demonstration of grasping computing technology is actually having done something with a computer".

So you do care about experience.


Put another way, he accepts a portfolio of projects (github, pro-bono work, etc.) that demonstrates skill/drive in lieu of previous employment.


Yeah, that's called experience.


Right, but that is different than paid experience, which is what the OP was talking about.


Among my specific gripes is that most employers don't regard open source projects as experience, because I'm not paid to contribute to them.

I'm not saying that there aren't ANY employers who respect unpaid experience, just that they are uncommon.

Quite commonly I offer to provide sample source for programs I've actually written. No one ever wants to look at my source - they only want to know that someone else has paid me.


There is only a shortage of cheap / entry level tech workers. There are plenty of experienced and over-qualified tech workers, but most short-sighted employers don't value older employees.


Correct. I'll steal someone else's comment (https://news.ycombinator.com/item?id=7761424) that illustrates this and corresponds to the OP's experience:

  Junior programmer (22): makes $80-100k, 120k in the Bay Area. Easily gets jobs.

  Senior programmer (28): 5-10 times as valuable as the junior. Makes $120-140k,
  possibly 150k. Serious stock options possible with the right company. Three-
  month job searches.

  Expert programmer (37): 3-5 times as valuable as the senior, so 15-50 times as
  valuable as the junior. Makes $150-200k. Leaves the Bay Area/NYC because he can't
  afford to raise kids there. Has a defined specialty. Job searches take 6-8 months
  because he's overqualified for everything but high-level positions, and those in
  his specialty number in the single-digits nationally.

  Master programmer (45): TO;DH.

  This industry pays well at the entry-level (if you went to a reputable college,
  live in the right city, know where to look and how to play the game) but doesn't
  have a clue when it comes to rewarding excellence. Getting better tends to
  backfire when this industry (being run by dumbass MBA types) continues to
  insist on structuring itself like a pyramid.
The entry level for junior programmers is very low and their pay is incomparably higher than in any other industry -- even in finance. Beyond junior stage, it gets harder and harder. If you want to progress further on the career ladder, you have to aim to be like Chris Lattner, like Brian Goetz, like Guido van Rossum.


(47 year old technical founder here; about to plug my startup so feel free to skip)

Maybe this is true in general but it's not true everywhere.

We're looking for a few great engineers, are happy to pay what they're worth, and understand the value of experience -- where experience means "every year I get better at writing code", not "now I'm an architect and don't have to write code". If you or anyone you know is interested, check us out at scalyr.com. Small team, cool tech (e.g. [1]). We are early stage so equity is a significant portion of compensation, but we can pay a significant cash wage as well, and we have 1.5+ years of runway.

[1] http://blog.scalyr.com/2014/05/searching-20-gbsec-systems-en...


I'd love to work for you, and hope to work for someone like you, but I don't want to relocate as I moved to Vancouver so I could look after my elderly mother and her sister, as well as to be closer to my own sister.

However, if you're willing to tell me where you're located, I'd be happy to link your site from here:

http://www.warplife.com/jobs/computer/united-states/californ...

The "San Francisco Peninsula" could be San Mateo county, or the northern part of Santa Clara county. When I possibly can, I link each employer from a specific city's page.

The above link goes to an Apache index page, as I have not yet provided an index.html for it. Here's my page for Seattle:

http://www.warplife.com/jobs/computer/united-states/washingt...

If you know anyone that has the same outlook on life as you do, that is in our near Portland, Oregon or Vancouver, Washington, I'd really like to hear about it.


It is very common that a post advertising for a "Senior Software Engineer" requires 5 years experience, maybe 7.

I myself have 27 years experience working full-time, several full-time summer jobs, and part-time jobs while I was in school before that. I wrote my first program in 1976.

Only once in my entire life have I seen a post that asked for coders with 15 years experience.

I find it odd that this only happens, to the best of my knowledge, in the software and entertainment industries. I don't think it's the case for electrical engineers, for example.

Would you want to hire a 22 year old surgeon? If you were falsely accused of murder, would you trust a 22 year old attorney to clear your good name?

Help Me Out Here, I'm Begging You.


> At one time, a college degree and a demonstrable grasp of computing technology was all one needed.

Yep, and that turned out to be a fucking disaster. So we learned how to filter for programming skills, and the results were utterly depressing. The vast majority of those "engineers who are unable to find work" couldn't code their way out of a paper bag.

That applies to the majority of applicants unless we start filtering for actual proven experience. Trying to find someone inexperienced who's worth investing in training is a truly depressing exercise most smaller companies really can't afford.

Is it really that much to ask that an unemployed engineer who wants a job coding in language X makes a bit of an effort to learn the language by themselves? Employers really don't expect 'paid' experience in something that's brand new, but what they do expect is self-motivation. If you're only willing to learn X when your boss tells you, you're either going to be a pain to work with or you're covering up for your lack of skill.

You only learn a language really well over years. That's your paid on-the-job-training. All most hiring managers look for is some sign of skill and motivation.

Not to mention the reality that the "cult of new", as we see it on HN and in the start-up scene really fucks over most non-startup employers. Most developers don't stick with any company for more than two or three years because they want green field projects in the latest sexy language and framework, not maintain "boring legacy code" (we're talking code no more than two years old...) in a stack that's just been declared harmful, crap or whatever by the HN hipster engineering in-crowd.

So you train someone, invest time in someone, allow them to learn from costly mistakes on real world projects, and just when they are at the peek of their knowledge and productivity, they fuck off again. Regardless of how well they get paid and treated.

We bitch a lot about employers not investing in training, but the flip side is that we have actively contributed to a culture of zero loyalty.

As far as I can tell, there is a real scarcity of actually talented engineers, but employees and employers are stuck in some destructive loop that just makes the problem a thousand times worse.


Actually I strive constantly to learn new languages, toolsets, platforms, frameworks and protocols completely on my own.

But that doesn't help me get a job. No one has paid me to work with any of those, see.

If I can somehow get a job through some other means, then yes, all of my self-study is a huge help to me, to my coworkers and my clients.

What people actually ASK of me, when they think they're looking for "actual proven experience", is "how many years of experience" I have with a given technology.

No one EVER asks what I actually did with it, whether I shipped a product as a result, whether my code actually worked, whether it got good reviews, or sold well.

If I weren't such a nice guy, I know damn well I could totally fabricate my resume, and I'd have $250k and an office with a door I could shut in a heartbeat.

It would actually work really well, because you know - I do invest in my own training. So I really could do the work, even if my resume were fabricated.

But I'm a nice guy, so I don't fabricate my resume.


Assuming there is no tech shortage and companies are indeed looking for cheaper labor, how do we explain these offers (It's placement season in India and its raining offers). These seem to be well above the average pay for software developers (considering they are under graduates fresh out of college). Of course all have to first participate in the H1B lottery for them to enter US.

http://indiatoday.intoday.in/education/story/job-offer-of-rs...

http://articles.economictimes.indiatimes.com/2014-12-04/news...

http://www.hindustantimes.com/business-news/campus-calling-4...


Job markets, even in tech, are quite tied to geography. From which area and perspective are you writing this? Knowing might help us discuss this subject better.

I live in the Netherlands, where programmer salaries are way lower than in silicon valley, but I don't know of a single half-competent programmer without a job.

All the hiring managers are complaining here just as you describe, but the net effect is that everybody gets hired. Even the mediocre folks (note: I'm not referring to skill as in "decades of Swift experience" but "competent engineer, quick learner").

Maybe the exploded salaries of the bay area take away any financial space an employer might have for on-the-job training? People still have to create more value than they cost.

(note, I hope this is not the case, because I think programmers are grossly underpaid here in the Netherlands)


>Maybe the exploded salaries of the bay area take away any financial space an employer might have for on-the-job training?

It's not like employers are keen on training anywhere else in the US either.

American business executives have become culturally short-sighted and the unwillingness to train is part of that.


> It's not like employers are keen on training anywhere else in the US either.

Although I do not live in the US, I gather that like many countries I have lived in is the view is that training is no longer such a large responsibility of the employer and is rather costly.

However in my travels and work in Asia, there is a concept of bonding in many countries where an employee is offered a job and training and in return agrees to work for a company for X amount of time or pays the employer. This reduces the overhead in regards to the cost of training.


This doesn't sound like the Asia that I live in.


> This doesn't sound like the Asia that I live in.

Well I have seen it in ; Singapore, Malaysia, Philippines, Indonesia. (note: when I refer to Asia, it is the SEA section)


Yup, that's where I live. Maybe you could let my employer know that's what he's supposed to be like.


> Yup, that's where I live. Maybe you could let my employer know that's what he's supposed to be like.

Hey it's your employer so maybe you should speak to them. It is not an unusual practice.


Trust me it is.


I live in Vancouver, Washington (the "Original Vancouver", not Vancouver, British Columbia), but am looking for work in Portland, Oregon.

However I have also lived in Vancouver BC, Truro, Nova Scotia, St. John's, Newfoundland, Santa Cruz, California and Silicon Valley.

The claim that there was a tech worker shortage started to appear during the dot-com boom, but never really went away, even when the economy contracted during the dot-com crash and later, the subprime meltdown.

I have worked for a few companies that were happy to train. That typically happened when engineers who were experienced with the technology were not to be found at all. For example I was taught Python by a shop that was all-Python, quite a long time before it became popular. I was also taught Smalltalk at another shop, but that came after Smalltalk had declined in popularity.

In both cases the expense of the training was really quite minimal: I was given my regular pay to read a book, then write some practice code, for about a week, after which I was able to code productively, then was as productive as the rest of the staff after a month or so.


Seriously, you claim it only cost the company a book and a week to get you up to speed in a new languages, but you can't be arsed to make that small investment in yourself before applying for a new job?

That inertia and lack of motivation is the reason I wouldn't hire you. Because besides languages, your job as an engineer entails constantly learning and trying new things in order to find the best solution for any given challenge. I need to trust you, the engineer to do that, because that is your job. The actual coding is just the formal expression of that job.

If you don't do that by your own volition, I might as well give the work to a much cheaper coder in an off shore sweatshop.


>Because besides languages, your job as an engineer entails constantly learning and trying new things in order to find the best solution for any given challenge.

Disagreed. Studying your way through a breadth-first search tree of available knowledge means you're trying to dip your toes into everything and your neck into nothing, probably just to impress prospective employers. Domain expertise requires focus, which requires going through some portions of the available-knowledge tree depth-first, or having sufficiently well-developed research abilities to select a goal node and search backwards to find the exact breadth and depth necessary to reach that node from your starting point.


While I can understand your confusion, my gripe is that just having read a book won't get me a job, even if reading just one book is all I really require to do the job.

What I am always asked is how many YEARS of PAID experience I have with a given technology. No one ever asks what I actually accomplished during those years - whether the product was well received, whether the code I wrote crashed, whether I got any raises or positive performance reviews, what the reviews in the press had to say about the products I wrote.

Experience for which I was not paid also does not count. Especially galling, not long ago a recruiter was convinced that I had been unemployed for several years. "No, I own my own corporation. I'm self-employed. I develop products for retail sale." "Who pays you to do this?" "No one. I write applications that I sell myself." "So you've been unemployed for three years?"

At that point I just hung up on him.

Actually I invest roughly $1,500.00 per year on technical books, and deduct that money as a business expense, specifically so I can stay competitive. That really is all I require to do the work I'm asked to do.

What gets me down is that I can do all kinds of stuff a lot better than those who have many years of experience. Just because you were paid to write code for several years, does not mean you write code well. I've worked with many colleagues who were really quite clueless.


Every company has it's own "books" they want you to read. At Facebook you work on a social network, at Google on a search engine. If you apply to 10 jobs, you need to read 10 different books.

"But you can't be arsed to make that small investment in yourself before applying for a new job?"

Bills don't pay themselves. Why can't you, the employer, be arsed to make that small investment in your new employee? You're the one with the capital.

"Your job as an engineer entails constantly learning and trying new things in order to find the best solution"

Exactly, job. As in getting paid for it. Not sure why you think it's a duty. A sacrifice that employees must make for you.

"I might as well give the work to a much cheaper coder in an off shore sweatshop."

Enjoy the results. :)


If you're needing to read 10 different books you are doing a very poor job of picking companies to apply to.

If you're a python developer, it wouldn't make sense for you to apply for a ruby job, a nodejs job, a C++ job, and a java job - thus requiring 4 books.

Instead, you should apply to 4 companies looking for python developers, then you need one book at most, unless you've already master the language in which case you don't need any books.

===

Coming from the companies perspective, if I have 10 applicants for a job, the first round of people to get cut will be those who don't have experience with our tech stack. If I have other applicants who already are familiar with it, it wouldn't make sense to hire someone who would need to learn a new language first.

> Why can't you, the employer, be arsed to make that small investment in your new employee?

If there is only one person applying for the job that would be the case. But that never happens. So it's your choice to have that opinion, but understand that not being familiar with the languages the company you are applying to uses will get you ranked last among all the applicants - the most qualified candidates will be interviewed first, and only if no one else panned out would it make sense to hire the candidate needing to learn a new programming language before they can actually start.


"Coming from the companies perspective, if I have 10 applicants for a job, the first round of people to get cut will be those who don't have experience with our tech stack. If I have other applicants who already are familiar with it, it wouldn't make sense to hire someone who would need to learn a new language first."

This approach to hiring sacrifices long-term productivity gains for short-term productivity gains. A really smart and experienced developer who doesn't know your tech stack may be less productive for the first few weeks, but after that time they could become far more productive than your "Python developers" by leveraging their superior thinking skills, debugging skills, CS skills, communication skills, etc. But if you never give them a chance, you'll never know what you're missing.


> A really smart and experienced developer who doesn't know your tech stack

I really question whether that exists or not. The kind of developer you are referring to by and large knows how good they are and has no problem finding a job with a tech stack they are already familiar with. Additionally, this kind of person wouldn't move to a new language without trying it out first and likely comparing its features to a handful of other languages before making a calculated decision to switch. And by this point in time they probably have enough experience with the language to be able to make it through an interview because most interview questions tend to be more algorithmic in nature than language specific.

I completely agree that the kind of person you speak of in the long term could be a much better hire, but in the real world I don't think it's applicable. Let's say this kind of person is 1/100 applications where the applicant doesn't have experience on the desired tech stack. For most companies it is not even remotely feasible to interview 100 people with little to no chance of getting the job to find the diamond in the rough.


"a tech stack they are already familiar with".

Like 16-bit assembly code?

PC-NFS?

How to diagnose a serial cable problem with a breakout box and an oscilloscope?

How to calibrate a CCD image sensor?

So how are today's iOS coders going to feed their hungry children when no one remembers what an iPhone even was anymore?

I quite commonly point out that I can debug anything. I'm also quite good at performance optimization as well as reverse engineering.

The API, programming language, platform or what have you - the tech stack - are all orthogonal to my being one of the very best in the business at debugging.

It's not like no one needs their code debugged, but they don't seem to recognize that until it's way too late.

What they ask for is "How many years of Python experience do you have?" If I say "Less than one" - which is what I actually have - I don't get an offer. Were I able to claim that I had five years experience, I'd have a job.

What I'd like to see, is an interview where someone handed me a buggy Python program, then asked me to fix it.

While that does happen, it is quite rare.


Actually, I am that specific smart and experienced developer. I find that no one believes I have a clue anymore.

For example I was once asked whether I knew how to write Mac OS X Apps. I pointed out that I had been writing Macintosh code since 1986.

I did not get the job because the hiring manager did not believe me, when I claimed I knew how to write Mac OS X programs.

From time to time, while I don't come right out and say so explicitly, I make it plainly apparent that I regard the hiring manager as a damnfool idiot.

That's not to imply that one must understand computer programming to employ computer programmers. I've had lots of really good managers - consulting clients too - who really didn't have the first clue about computers.

However, there is quite a lot more to management, than understanding what your employees actually do.


I'm a consultant, I take the work that the clients offer.

Most commonly I'm asked to write the Macintosh equivalent of some existing Windows program. While I know lots of stuff about Mac and Windows, it's quite common that I don't have a clue about anything else that that program requires, other than the core OS and standard library calls.

The way it commonly works is that I'll apply for a consulting gig. If I'm asked to interview, I'll buy the required book after I have agreed to interview, but before the interview takes place. That means I only have a few days to read the book.

You'd think that would not work but actually it works just fine.

What does not work at all is when someone wants to know how many years of experience I already have with a given technology. "None at all, but I can buy an O'Reilly book for just thirty bucks."


Fully agree.

Recently discussing this issue among friends, not one of them could get hired for specific positions, even though they knew the required technologies.

All got the same excuse, the said technologies were being used in side projects, not on their main job.


What companies are you applying to?

I find what you are saying very hard to believe as my own experience has been the complete opposite. When I was interviewing I got asked about my side projects more than everything else combined.


Just standard European middle size corporations, take your pick.


I had that excuse tossed at me but still got a job. They did however use it to suppress my salary.

I took it anyway because I wanted to work with the tech I used in my spare time.


I'm afraid there's a shortage of good programmers, with proper education in computer science, understanding of how the OS and programs interact, knowing how to use at least one programming language proficiently, fluent in algorithms and data structures - i mean people who know their tools and know what they're doing. Instead we've got lots of excited, half-educated but enthusiastic ctrl-c/ctrl-v specialists, doing whatever they think is right/necessary and not even realizing how broken their products are (or how much better they could be if their authors were a bit more knowledgeable)


There's a wide spectrum between copy+paste no-hopers and people with a PhD from MIT who know Knuth and SICP backwards.

I would rather employ a self-taught developer with some experience and pragmatism born out of real-world experience than I would someone with impeccable academic credentials.

Forgive me if I sound touchy but I'm self-taught, my knowledge of algorithms is extremely patchy - but I think I'm a competent developer in the domains to which I apply myself.


I think you mean only impeccable academic credentials. Self-taught developers do enter MIT graduate school, including after several years of working in industry. For that matter, Chumby hired Andrew "bunnie" Huang as a freshly minted MIT PhD in EE.

Or perhaps you mean that the types of problems you work on, like the vast majority of problems in the world, don't require knowing Knuth and "PCIS", or a PhD education?

I develop algorithms as part of my work. For example, given 20 molecules, find the largest substructure which is in at least 15 of them. I opened up v3 of Knuth's "The Art of Computer Programming" last week because it has several pages about a topic that I don't understand.

It would take a lot longer to train you to the point where you could be effective at the task, than a Knuth-knowing MIT grad. Which is quite reasonable - I'm in a rather obscure corner of the programming world. Though it's one where Knuth plays a much larger role than SICP.

Forgive me if I sound touchy ;) but I'm self-taught, followed by education, followed by experience, and feel exactly the same as you.


Among my gripes is that not only does no one care that I've studied Knuth, it is uncommon for those who might hire me, to have even heard of Knuth.

Consider that Mark Zuckerberg dropped out of Harvard to start facebook. Now he has the idea that he knows more about computer programming than I do, despite the fact that I had been in the industry for six years before he was even born.

I'm working on an iOS version of Conway's Game of Life. The vast majority of hiring managers I demonstrate my app to, not only have never heard of Conway's Life, they don't have a clue about cellular automata - nor do they see the point of my app.

I find that hard to understand, as Conway's Life is a widely studied artificial intelligence research tool.


It's like this for every single subject. Griping about the ignorance of others is awfully hard to distinguish from boasting about your superiority.

For the vast majority of problems, knowing Knuth is about as useful as being able to quote Tacitus, compose a Petrarchan sonnet, describe the Krebs cycle, or recount the details of Australia's 1882 victory at The Oval.

You would have had the same blank look if you demonstrated your microkernel operating system, LALR parser, or Needleman–Wunsch-based sequence alignment tool.

Why should they care? If you can't explain to them why it's important, then perhaps it actually isn't important for the job.

My previous comment objected to the idea that people should be rejected solely because they know esoteric knowledge. Your gripe seems to be that uncommon knowledge makes someone somehow special. You'll get no empathy from me.


I never mentioned academic degree, just expect a person to have the right level of education/knowledge. For example, i'd expect a candidate to be able to explain to me how a hashtable works or what a page fault means. Also, i'm shocked when a person doing 'database stuff' has only a vague idea about what SQL is

One (very recent) example of what i'm talking about: There was a system that crashed once or twice a day, running on EC2 instance. I discovered that the program crashes because it runs out of memory, and also that the system runs without a swap file. Then a guy responsible for that setup explained to me that it's a bad sign when a program uses a swap, therefore they disabled it altogether. Curiously, aftere enabling the swap the problem disappeared.


Damn near the very best computer programmer I have ever met, never even applied to college, let alone attended one.

He used to write storage drivers for HP-UX. Now he's doing embedded systems development for the Keck Telescope on Mauna Kea.

I asked him once how he learned to do all that. He just said that when he was a kid, he liked to tinker with gadgets.


>I'm afraid there's a shortage of good programmers, with proper education in computer science, understanding of how the OS and programs interact, knowing how to use at least one programming language proficiently, fluent in algorithms and data structures

Well, I never geeked out about algorithms and data structures irrespective of application domain, but hey, what are you looking for?


Well, what did you geek about then? Programming is all about algorithms and data structures, irrespective of application domain.


>Well, what did you geek about then?

Parsers, grammars, computability and complexity, source-tree optimizations, intermediate representations, intuitionistic logic, type theory, PL design, microkernels, macrokernels, message-passing, locking and semaphores, scheduling algorithms, the x86 kernel-level instruction set, interactive theorem proving, functional programming, game-type vector graphics and raster graphics. Now working on gaining a better understanding of Bayesian statistics and probability theory, machine learning, probabilistic programming, computational cognitive science, and the foundations of logic.

You know: actual domains in which one can solve real problems, rather than the kind of "algorithms and data structures" that are used for quiz-interviews.


Impressive, but you probably see it as well as everyone else that every problem domain on your list is connected with particular set of well-known algorighms. There are no 'algorithms in the wild' - they always solve some problem.. So, i don't see any clear difference between geeking about a hashtable vs geeking about some compilation step. The key word here is 'geeking' vs 'not being interested at all how that stuff works'.


>There are no 'algorithms in the wild' - they always solve some problem..

Interestingly, this isn't true. I have done worse than I can in interview cycles because I tend to go into them without having studied "Cracking the Coding Interview" or my old algorithms textbook, and thus do strictly worse at the algorithms-and-data-structures hey-let's-talk-about-asymptotic-performance-bounds quiz questions given in interviews.


I got some bad news for you eli:

If you put all that stuff on your resume, you'll never find work as a mobile app developer.

A rather common request of those who hire mobile development consultants is, "I want a game just like Angry Birds, only different".

And that's it.

I mean that's the only specification they can supply. Not the only spec they are willing to supply - the only spec they know HOW to supply.


Strangely enough, I don't want to find work as a mobile app developer. Were you being ironic?


Yeah actually.

I know most of that stuff, but I really do want to be a mobile developer.

All anybody wants to know is whether an applicant already has an app in the app store or google play. 27 years of experience, my degree, the non-mobile products that I've shipped, the stellar press reviews I've received, those don't count for anything.


Wow, that sucks. Good luck breaking into a market full of idiots who can't recognize experience and expertise when they see it.


"Don't tell the user to click the OK button. Tell the user to click the OK button until it turns black." -- David Courtney Johnson.

All too commonly, the work I'm actually paid to do is to make a button turn black when someone clicks on it.

That might actually be interesting, were it not for the fact that the only way to make that button turn black, is to allocate ten megabytes of objects, then run a few hundred thousand lines of code, at which point a hardware GPU writes zeros all over a memory buffer.


My observation is that quite a lot of folks know all about computer science, they might well know how operating systems work, but are clueless as to what happens when they combine the two.

Consider that with certain exceptions, QuickSort is widely regarded as the very best way to sort.

What happens when you sort a memory buffer on a Mac OS X box? Well that depends on a whole lot of things. How big is the buffer? If it's really large, you will cause paging no matter what you do to avoid it.

However there are all kinds of things you can do to keep that paging to a minimum. Not only does that make your code faster, it saves on electrical power and reduces the heat produced by the box.

That kind of thing is the main focus of my work these days - how to make existing code work better on modern computers.

Have a look through the source of, say, glibc, while keeping in mind what code and data memory caches do, paging, context switching with other programs and so on.

I expect that glibc would work really well on a box with no cache at all, and enough memory that it never has to page, and with only one executable running at any one time.

But that no longer applies.

Unfortunately I've never even heard of a school where they teach that kind of stuff.

Many of my colleagues regard me as delusional for asserting that one can save energy by refactoring one's source code, yet they don't seem to clue in to the fact that a computer needs to have a battery or a power cord.


>>> when a new technology is introduced, one is _immediately_ required to know about it before getting a job where that technology will be used.

Well Said. I too am in a similar position you have explained. I have a Computer Science college degree (graduated in November) and I have been applying to junior/graduate level jobs that have inflated expectations of what a regular graduate should know (especially technologies).

All these claims of tech worker shortages recruiters talk about is hard to believe. I think there is a communication breakdown with companies and education centers breakdowns when it comes recruitment.


Try looking at it from an employer perspective. The fact that you have a CS degree tells me absolutely nothing about your engineering talent.

So hiring you on that basis alone would be gamble, and the odds for that gamble are hysterically bad. They have better odds taking a year's junior developer salary straight to the casino.

The number of people claiming to be able to do the job is a multitude of those actually able to do the job.

If you are actually "in a similar position", it should take you less than two months to get out of that position. Teach yourself a stack that is in demand, build a project and put it out there (Github, App store, whatever) and if you show any talent and skill the odds are you'll be hired within a month.

Just waving your CS degree around isn't going to make anything happen.

Fuck it, you've just graduated in November, you have no proven skills and you're already whining about not getting hired?


>>> Teach yourself a stack that is in demand, build a project and put it out there (Github, App store, whatever) and if you show any talent and skill the odds are you'll be hired within a month.

Thanks for the advice. I am currently working on that.


"(Github, App store..."

Quite commonly I am asked for my Github link, but then regarded as unqualified because I don't have one.

That's because you can download my source from my own website.

I have some pretty good reason to believe that many of those who want to know my Github, don't know what Github actually is. That is, not only do they not inspect anyone's Github source, if pressed, they could not explain the difference between a github and a hubcap.

Almost universally, one is required to have at least on App in the App Store or Google Play.

There's no specific requirement as to what the app actually does, whether it works well, whether it's source code makes sense to anyone, whether it gets good reviews - just that one just that that special magic ticket into a mobile development job.

Again, I have good reason to believe that few ever actually so much as look at the app store or google play pages, let alone download, install and run the app.

Have you ever heard someone say "I'd like to work with you so we can find a way that you can drive a brand new car right off the lot. How about I give you a thousand dollar trade-in on your totally thrashed beater?"

I actually had a Toyota saleswoman say just that to me. The reason I was shopping for a new car, is that my thousand dollar trade-in was so unreliable that I was to be fired if I didn't buy a new car Real Soon Now.

Now consider that many recruiters are really good at just that kind of sales.

It's not that they try to sell anything to the candidates. They sell their, uh, "service" to the hiring managers, by somehow convincing them that its worth paying them tens of thousand of dollars in commissions for placing just one coder.


It's a whole lot easier to get started if you apply for jobs where you'd right in-house apps, for tech support or for system or network administration.

I did all three.

Actually the vast majority of computer software is never released to the public. For example I wrote image processing software for an aerial photography firm. Our "product" was hardcopies of our photos, as well as expert interpretations of what our customers should do, based on what our experts found in the photos.

So my own "customers" were those experts.


Thanks for the advice, I'm going to start looking for roles you have stated whilst I develop applications on the side. I guess if you are starting out, I shouldn't be really picky.


I've been in a hiring manager role (tech lead / manager) for almost 14 years and this has always been true: Lots of knowledge out there - but the ability to write a basic function cleanly and correctly is rare.

There are tons of people with credentials and good looking resumes but my experience is that less than 1 in 5 of them can code a Fibonacci function let alone FizzBuzz. I don't care if it's iterative or recursive as long as it's right.

I think the core issue is the CS courses emphasize knowledge WAY TOO MUCH over experience of writing tons of code on a team. In addition, resumes have WAY too much noise compared to signal - that's why people's networks (and tools like GitHub) are so important.

I've also been in organizations where teams hired people I passed on (they did multiple interviews in our org) and those that did not pass the Fibonacci test not only bombed in their organizations but also hired MORE bad programmers and they all got RIFfed. Those that pass the Fibonacci test do pretty darn good on my teams.

Amazing how a simple programming test can be such a solid predictor . . .

I also screen for other things - knowledge, good communication skills and if they have a good sense of their own abilities. It also blows my mind how super confident kids walk in expecting to nail an interview - but again can't code a simple function to save their lives.

But Fibonacci continues to blow my mind - so simple and yet so hard. Just add two variables in a loop . . .

BTW I have found in general women are generally better programmers than men as a percentage of those interviewed.


My father felt very strongly that women were better naval officers than were men.

He also felt very strongly that the soviets were far better than his fellow americans. He regarded most military personnel as total slackers.


Why is it that there either has to be a shortage or abundance or tech workers? I think as of now the stream of Tech workers is adequately filling seats.

Tech is one of those fields that ends up a lot like dating. You know there's people out there that could re-write your whole system overnight--the "rockstars". Because of this I get the feeling that people are turning down tons of job applications just because they feel the applicants aren't "rockstar-y" enough.

I think the experience mentioned here also holds true. Companies want people that can get the ball rolling, but also underestimate how much training can help. At my current company, I'm probably at a training, that is beneficial to myself, at least once a week. I know I'm an outlier, but tying this all together, I think hiring managers are to the point where they're expecting too much from applicants, while undershooting the ability of even the mediocre applicants.


Rockstars blow their paychecks up their nose, cheat on their wives and girlfriends with groupies, trash hotel rooms then die young, or perhaps live to a ripe old age of poverty and destitution.

I have gotten to the point that when someone advertises for a rockstar, I don't even apply.

Do you know what a bozo filter is? Have a look at mine:

http://www.warplife.com/mdc/resume/

At the very top of every single page of my site are links to two essays about my - quite severe - mental illness, as well as the first chapter of a book about how engineers get people killed by screwing up on the job.

In the US, it's flatly illegal to discriminate against the mentally ill for reasons of employment. The specific reason I am a coder and not a physicist is that I write good code even when I am hallucinating.

If they get past that, then have a look at how a whole bunch of people really have been killed by clueless engineers - as when an incompetently designed truss bridge took the lives of one thousand steelworkers back in the day - perhaps they don't want to hire me because I would hold the entire company to the same standards I hold myself to.

I haven't always been that way. I've written a whole lot of code I'd rather that no one ever get to look at. I've written quite a lot of really stupid programs, just because we all knew they would sell really well.

But I'll be fifty-one years old soon.

I'm concerned about whether anyone will remember me after I'm gone.

They sure aren't going to remember that I did a stellar job writing the test tools for Apple's MacTCP.


Not all tech workers are equal.

My company does not care what language you know, or technology you use- we want people who are smart, capable of working with any technology. And we want the very best of those people, without lowering the quality bar for the sake of having people in seats.

We will let people go while we also are hiring for open positions on the same team if we realize the person isn't s good fit after all. I have little job security, but I work with only fantastic people. It's a deal I'm happy with. The pay is nice, and I never feel like the smartest in the room.

There are lots of companies like this. We have to complete with them for those top tier people. And we frequently find those good people outside of America.

The result? They often come work in our non-USA offices. That's one less job that would have existed in America, with the salary of it being taxed in America. It's a loss for the USA.


> There are lots of companies like this.

They all look for the 3% rock-stars, reject the 97% and complain about tech worker shortage. What a silly 'strategy'!


True, there are even Americans working abroad right now (American with a Chinese work visa). Its a global market for talent, not just an American one.


Out of curiosity, what is your company?


One thing that continues to amaze me about the people claiming there is no tech worker shortage, their typical argument - "if only the tech industry paid enough...."

That is a self-contradictory proposition if ever there is one. What is that this supposed talented programmer wannabes do, if they are in a position not to take a 100K+ salary?

More importantly, if indeed there is such talent and you know how to run a company profitably paying this supposed talent the salary you assume...then why aren't you doing it?

You have a perfect arbitrage opportunity, and by your own admission - FB, Google, MS etc. are all "greedy" and only care about their bottom-line. So if you can demonstrate that hiring "American" programmers at 200K+ salaries and deliver high-quality code (better than those crappy Indian outfits), all the luck to you!

Why aren't you all doing it? Be the change you want.


All the headhunters tell me I should be asking for $65.00 per hour.


Shortage is a tricky political term. Reality doesn't work like that. X positions and Y candidates. It depends on the quality of candidates and salary. Better programmers, and companies can hire more. Higher salaries and more people will become programmers.

That said, 2 counter points.

First point is the speed the profession has been expanding. Programming is and has been (barring the dotcom bubble burst) an area of fast growing demand. In many tech fields that aren't so fast growing, "experienced" means 10+ years. There are more working professionals with over 20 years experience than those under 5. The distribution of experience levels you will find among mining engineers is the normal one, not the one you find among software engineers where 36 year olds with 15 years of experience are the grizzled vets. Technical jobs for people with under 2-3 experience is always tricky.

Google, Facebook, etc are new companies. They're full of software developers. 10-25 years ago they didn't exists and neither did those jobs. Its hard to believe that in this environment there wouldn't be a shortage.

Second point is that the problems you mention are a cost of doing business, part of reality. Whether the shortage could theoretically be solved by improved job-candidate matching is not really relevant unless it can be solved practically. Same for on-the-job training. A company that needs to hire really fast, is small, etc. can't train on the job very easily. On the job training is also less compatible with the shorter cycles in today's world. People average shorter stints at companies. The "shortage" makes job hopping more viable and beneficial. Startups have very short horizons for which they are trying to solve problems. Etc.

If you take some of the relatively established and unchanging professions like Law or medicine, they have a long and well established way of apprenticing young professionals. That gets built up over generations when things stay the same. In a fast paced world like software, it's not as easy.

Anyway my point is that saying there is not shortage because it could theoretically be relived by optimisations that there is very little way of doing... it's semantics.


"needs to hire really fast".

When I was but a wee pollywog, it was pointed out to me that most open positions are never advertised in any way. Instead, when a position opens up, the hiring manager looks at the pile of resumes that are already on file.

For that specific reason, I applied to companies based on whether I'd like to work there, rather than whether they had any openings. One such company interviewed me immediately, but waited two years to actually hire me. That job actually worked out really well.

I don't actually know but have reason to believe that that's not commonly the case anymore. That is, my impression is that companies don't solicit resumes unless they have a specific opening.

From time to time I find a "Jobs" website that specifically says "We are not accepting applications at this time" or "We have no open positions".

By contrast, some others will say "We are always looking for great people, please send us your resume".

One might at first think that it's not a big deal for a position to be unfilled for a period of time. But consider that a company typically expects an employee to be worth twice their pay.

That is, if a software engineer is paid $100,000.00 per year, then to be considered truly qualified for their job, they must write $200,000.00 worth of software during that same year.

That's not $100,000.00 of pure profit. Actually that's the breakeven point - that is, writing $200,000.01 worth of code in a year would yield one cent of profit!

There are considerations of office space leasing, all manner of other costs like the equipment and software the employee requires, telephone, internet, electricity.

That "twice your salary" figure isn't specific to coders, my understanding is that that's regarded as the rule of thumb for the value of every employee, in every line of work.


There is no shortage of work. There is a drought of talented engineers though. Most of them are terrible.


You are just repeating this. How do you know there is actually a shortage, rather than a lack of a process for finding them? Or a lack of ways for them to find the good employers? A non functioning market is rather hard to distinguish from inability to find what you want.


I can speak for myself, I co-founded and run a tech company in Cambridge MA.

We are looking for machine-vision programmers and the ones who have experience in thsi space are all either snapped up by amazon, fb and google or doing their own startup.

Our choices were to either hire a freshly minted PhD in AI from MIT (H1b) or from the legion of the resume-padded "locals" with made up skill-sets, who expect a job, just because their highness graced our interview and deigned to come to our office. Not to mention that they wouldn't pass a basic programming test.

Believe me, I would MUCH rather hire an American than jump through the visa hoops, it costs thousands of dollars upfront, with no certainty of outcome, plus the hire is only with us for 3 years! After 3 years, we lose a trained person


I know all about 2-D image processing but not about pattern recognition.

I've done some algorithmically complex stuff, like Live Picture, which was a combination vector/bitmap graphic editor, which enabled one to do prepress graphic work for magazines and product packaging, by compositing 200 MB bitmap graphics on a 32 MB 68040 Macintosh.

Unfortunately, Adobe's marketing people were far better than ours. Our program was far superior to Photoshop, but no one could figure out how to actually sell it.

Given that, could you use me?

I'd rather not relocate, but if I did relocate, Cambridge would be a top choice for me. I've been there a few times, and once lived in mid-coast Maine.


I don't think I made it clear in my OP, my thesis is that there is a lack of process in both directions.

It's not just that I believe that employers can't find qualified staff, but that qualified staff cannot find jobs.

I have numerous theories as to the cause of this.

Among my proposed solutions is to set off huge long flamewars at the Hacker News. :-P


I seem to have struck a chord with this post. A lot more comments than I expected, and sixty points added to my karma.

Thank you for helping me reach an important decision. For some time now I've been puzzling over the idea of offering a consulting service in which I would screen resumes for a fee. After a chat with a friend who is a manager with an eCommerce startup, I've decided to pursue it.

I didn't have a clue as to how to get started. He suggested I do it for free for a little while, to build my reputation. That's what I'm going to do.

I expect it would help to register a domain for this specific service, rather than use the rather eccentric website I presently have. I don't know yet what the domain will be. I need to catch some ZZZs, so I'll deal with it tomorrow.

I mentioned this in one of my comments below. Someone pointed out that background check services already do this. Actually I would be quite different from a background check, in that I would screen resumes _before_ the interviews, so you don't have to interview clearly unqualified candidates.

Also I'd be looking into their technical qualifications, not their criminal record or record histories.

This is just what headhunters are supposed to do. It's not that they couldn't screen resumes - but they don't.

-- Mike


From time to time I'll see a job posted on Craigslist or the like that says "We only want applicants with Computer Science degrees from Berkeley, MIT or Stanford".

I myself have a Physics degree from the University of California Santa Cruz - "Uncle Charlie's Summer Camp".

Despite that, I quite commonly find that I'm a better, or more productive coder than colleagues with CS degrees from those schools.

Just because you have a degree, it doesn't mean that you have a clue.

And just because your degree is from a school that no one has ever heard of, it doesn't mean that you're ignorant.




Applications are open for YC Winter 2022

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

Search: