And will continue to be harder and harder as long as utter morons do the screening and hiring.
I made a local-startup an offer that no sane company could afford to refuse. I was a core developer for their main behemoth of a competitor and my non-competes have just expired. They could easily save millions of dollars in marketing, research and development by JUST running decisions by me and having me nod in approval if it sounds good. (I am not exaggerating; it's one of those businesses that require 10k in daily AdWords sacrifices to grok; lead generation)
Instead, they came back to me with the same two questions: do you know Django and do you know Agile development.
You incompetent idiots.
Fast forward to today; it took me 4 hours this morning to go from cold-call to interview at a research-oriented industrial planning company of <10 people minting millions of dollars per year. Within 20 minutes, the guy and I were talking about the history of Prolog, logics and finite-domain constraint solving.
I am not a moron, and I used to help hire at various startups. We'd always get one or two offers "we couldn't refuse" from engineers of our competitors. Whenever we gave them a second of interest, they'd waste hours and even days of our time. What they were really interested in was not engineering, but escaping their current workplace hell and wedging themselves into our startup as some sort of non-programming decision maker, for a (relatively) huge salary. But, we already had non-programming decision makers. We were trying to hire an engineer. We eventually just dismissed these guys outright, because in every experience they ended up being mildly crazy. Not the good mad-scientist hacker insanity, either... More of a desperate, annoying, stalker-ish insane. So maybe you came off as crazy.
Very interesting take. I think I might have been creepy, not in the sense that I was clingy or nagging (I have no interest in joining another marketing shit-hole anyway) but because I might have come off as a know it all.
The whole time I was looking at their sites I was making mental notes of what is broken, and tallying up all the ways they're doing something wrong. I think some of that contempt must have come out in my correspondence, however brief (just 2 emails from me.)
Perhaps if you had made notes on paper instead of your mind, and sent them a random sample plus an offer for the rest, they would have reacted differently? (Though not all people react well to criticism.)
This reminds me of a conversation (from before my consultant days), when a company burning a multiple of that daily was unable to locate budget for either SEO or A/B testing. The mind boggles sometimes.
Not knowing anything else about the situation, I tend to side with him. It's probably not that the people he talked to are morons; it's more likely that they just don't care about anything not immediately in front of them. In a large corporation this wouldn't surprise me, but in a startup it does.
I'm sitting here in a large (US$4bn sales) corp doing a job I didn't initially interview for. I told my interviewer that the job they wanted me for didn't sound like what I wanted to do and my interests were elsewhere. Instead of just blowing me off like those guys did, he sent me to interview with a different team that was a much better fit. That's giving a shit!
The job of a good HR department is to at least be able to screen the really dumb ones and pass the rest up the technical chain for evaluation.
The good engineers might be burned out but if they know that not spending time interviewing and reviewing resumes will result in having to deal with a dud that gets hired, having to babysit them, teach them the basics of programming and watch them slowly destroy the code base, they would be quite happy to assist with evaluations.
You need at least Perl 5.10 (and 5.12.3 should be out shortly). If your OS vendor has an older version installed, see App::perlbrew to install your own updated version independent of the system Perl 5.
I have had my own software development company since I was basically 22. Every few years I get a full time job and let the guys know I might go feral again. So I usually get the "2 years" clause on anything I touch. A very small price to pay for being my own job reference, really.
Just because your non-compete has expired it doesn't mean that you're free to reveal trade secrets. Your state almost certainly has trade secret laws that prevent you from ever revealing key adwords, CPA rates, etc. to a competitor.
If a company had hired you on such a basis they could also have been prosecuted for corporate espionage.
I'm an older developer. I was eating lunch at a restaurant near my new workplace. Sitting at the table next to mine, a college senior (at Colorado School of Mines - which is a pretty decent engineering school) was talking with her father about her boyfriend interviewing for a job as a software developer. The BF had a 4 hour long programming test as part of the interview.
Something is very wrong with our industry. Most of the time that articles come out like this, industry executives are trying to get more kids to go into programming in order to lower the cost of employees: they want protection from the free market.
The last company I worked for (for 5 years, and it was a Fortune 100 company) was complaining publicly that they were unable to find developers - yet people who quit over the past 2 years were never replaced, nor were we allowed to interview candidates.
This is a problem that has been recurring for a long time in many technical/scientific professions, and there's really no-one "official" telling the truth. When I went to college in the 90s were were told - by even the IMechE, the body meant to represent engineers - that there was a desperate shortage. Truth is if it were desperate, that would be reflected in salaries, and despite the UK's heritage engineering is not a well paid nor prestigious profession, and even our own professional body was in the pocket of employers.
And we've got it easy compared to physicists and chemists.
I think the secret is that part of good programming is an art, and not only something that can be taught, like accounting, with just logical rules and regulations (apologies to skilled accountants who feel there is an art to their work).
That is probably why big business can't fulfill their desire for a large pool of cheap but good developers. You can't just pour people into the college machinery and churn out developers. At least I hope not.
> That is probably why big business can't fulfill their desire for a large pool of cheap but good developers.
It is interesting, this has been going on for a while. Initially many companies went and got a lot of cheap and mediocre developers (mostly through outsourcing) and replaced a couple good ones with dozens of average ones for the same price. They saw it as a deal. Eventually they are realizing that programming is not like picking potatoes -- "Just hire more for the same price, they all sit and type all day anyway, so just get more for cheaper and we'll get ahead faster". Well it doesn't work like that.
Once mediocrity starts to dominate, even the few good ones who are still hanging around, will leave as their work turns to teaching others and babysitting them full time.
In general it is not possible to replace a highly skilled programmer with an X number of less skilled ones. Many hit that realization and we start seeing lots of these types of articles even as unemployment is above 10%
I think you might be confusing accounting with bookkeeping. Bookkeepers are the people who determine what column to put data in and crunch numbers. Accountants make financial decisions. Accountants probably feel the same way about developers: we deal with just logical rules and mathematical theorems.
The thing is that you don't just put anyone into college and expect a productive member of society to come out. It takes so much more than that.
I'm not sure what point you're trying to make with the 4-hour test anecdote. But I think most people here would agree a warm body has more potential for harm than a cold seat when it comes to software developers. However you want to ensure you don't get a problem employee, whether it's with 4-hour tests or whatever, it is definitely a good practice regardless of how badly you need to hire someone.
Also, I completely believe that it's too hard to find good developers. I'm not sure if I've just been unfortunate due to industry or geography, but I know very few people I can recommend with confidence. And I have seen all kinds of mediocrity trying to pass as software developers. The places I have seen are the stuff TheDailyWTF is made of.
The point he was making with a 4 hr programming test is that it is a complete waste of time. It doesn't take a 4 hr test to separate the wheat from the chaff unless the interviewer knows nothing at all.
A multiple choice test isn't the best way. But asking someone to write a real piece of software over a 4 hour period (a 'test' if you will) would be an extremely good interviewing method. Especially if you did it in something like EtherPad and can review the person's thought process afterward.
Regardless, I completely disagree that you can completely vet someone over a cup of coffee. Especially for highly competitive positions. That might be a good screening interview, but that is not enough to make a final hiring decision unless the person is already recommended.
"JumpForward interviews three to five engineers a week as it tries to fill four to six technology jobs, but most candidates don't have current skills or they lack the passion to stay on the cutting edge"
In other words, there's no shortage of software engineers, there's a shortage of perfect candidates. If these companies were actually willing to train people, they'd have a lot fewer problems.
The trend seems to be that software development, like a lot of other industries, is becoming increasingly winner-take-all, with huge demand for the very best of the best, and a lot less for anyone else.
This is the point the article seems to make. The difference between a good candidate and an excellent one is huge. Like it was mentioned before, a good programmer can do in a day what a team of mediocre programmers can do in a week.
You say that companies should train mediocre programmers to be excellent programmers. This is not as straight-forward as it sounds, (a) the mediocre programmers might have already reached the limit of their capability (i.e no matter how much time they'll spend learning, the improvements will only be marginal), (b) it could take long time and as we all know, time is money.
I like to think of it as a simple exponential graph. Programming Skill on X-axis vs Time Spent Learning on Y-axis. In the beginning the progress will be fast for everybody, but at some point the progress will slow down indefinitely (i.e you've reached your maximum capacity). The point at which this will happen varies from person to person and there is unfortunately no way you can determine where that is. The only hint of the maximum capacity you can get is to compare how long the guy has been programming for and how skilled he is at given time.
As a result, it is more cost-effective to search for very good candidates for longer than to take handful on mediocre ones, take the risks, and train them.
It should be noted that a programming is without exceptions self-thought. Therefore there is no need for training per se, you will just need to take your time and do it yourself, as programming can not be taught, it can only be learned.
Unfortunately, it's also very easy for an engineer to jump ship after their training - meaning a very expensive loss of time and effort. Personally, I think the "shortage" has something to do with increases in job-hopping. If there were some guarantee that an engineer were going to stick around for a few years after training, perhaps training new recruits wouldn't seem so unreasonable.
Another reason for job-hobbing, especially among hackers, is that they don't want to be pigeon-holed into a single job for too long. You can become too complacent, too specialized, and too tied down to a specific system. After 5 years of maintaining a legacy ERP application how do you get a job working at the hot new social networking company ?
This works both ways - the concept of one job for a whole life (or at maximum two jobs) was really common for the parents (or grand-parents, depending on their age) of many. Then the companies started with hire-and-fire. And now they wonder why their employees have no loyalty in face of a good offer from another company.
Someone has to train them. I mean, I understand where you're coming from, but the whole idea of employers wanting trained employees but only if someone else pays for the training ultimately benefits no one.
In almost no other field of work is it expected that you have a passion for your work greater than that for your family. Hackers repeating this passion mantra make life harder for all of us, because it raises employers expectations, instead of making them provide training or simply time to study. Good for you if you have that passion - I do - but why not enjoy it in private?
Yeah, if you think programmers have a tough time with work/life balance, you don't know many people in the financial field. I-bankers are expected to work 14 hour days, 7 days a week, and basically have no life outside of work. This is where the "hookers and blow" reputation comes from: they have plenty of money, but no time for fulfilling relationships or hobbies.
Things are better for hedge fund managers (many of the ones I know work pretty standard 50ish hour weeks), but most of the good ones find it hard to shut off their financial brains. The foreword to Peter Lynch's books explain that he left investing because he was basically missing his kids' childhood, and at some point, some things are more important than making your next million.
Fine, but investment bankers are still a small minority in finance. I lack the proper English terms for the different banking job descriptions, but bankers dealing with customers personally (loan approval etc., which for commercial clients can be pretty big), internal auditing, etc. have standard hours and, if they are doing a good job, a good career.
Those people that you're thinking of are local bank branch managers. They can have a decent middle-class career, but they are hardly the people you think of when you think "high-paying banker". PayScale.com lists their salary as being in the $42K-64K range:
But that raises the false positive rate of unqualified applicants that are only in it for the money. Given that such a programmer may have net negative productivity, underpaying qualified developers migth even be beneficial for the employers, as they can be sure that the remaining pool of applicants will only contain persons with a qualification level commensurate with the offered wages (which can easily be filtered out) and people passionate about programming. They may loose some of the best that way, but they loose all of the duds, too. </cynic>
I know a bunch of people at Google who started programming in college. I also knew a few people in college who started there and are now getting CS Ph.Ds.
Curiously, it seems to be mostly women who are good devs and yet didn't start until college. I'm not really sure what to make of that. Could be selection bias - since boys are encouraged to play with computers, most of the ones who will be any good at it started in grade school, while since girls have no such encouragement, even ones that are good at it may never have discovered that until college. Or it could be that all boys who are good at computers let it take over their life, and girls have many competing interests. Or it could that only girls have the discipline to become good at something without it becoming their life.
I'm jealous of anyone who can just "come home from work" and turn off their brain about coding and do it as a regular job.
I'm constantly thinking of better ways to do something and find myself rewriting code from years ago. I have at least one "regular job" experience that taught me such behavior/attitude doesn't work well in a 9-5 business environment.
Dunno about the OP, but I'm worried about burnout. The road to being "world class" anything is longer than you can imagine, and it'd suck to get 10 years in and suddenly reach the point where I can't do this any more, no matter how much I used to like it, right when I would otherwise be a big success.
It is apparently possible to care about your work and yet still leave it at work - I know a few people that have managed it. I haven't had a whole lot of success myself.
When I was in college (this was in Australia) I honestly felt like I was one of the few who genuinely had a passion for programming. I met one or two other guys during those years who had a similar passion, but by in large it was the exception rather than the norm.
I've met lots and lots of programmers who have no personal interest in programming or computers. To them it's just a skill they've learnt well enough to get paid for. It's not a hobby or interest and certainly not a passion. It's just a job like any other.
I understand the spirit of your question, and I do agree: good developers are almost always drawn to programming beyond the minimum requirements of their university program or work.
That said, I think people knock 9-5 a little too much.
Plenty of good developers like to do something else with their day as well, and find that they write better code and retain their passion if they maintain this balance. If you have a good work environment and can focus (admittedly a challenge between 9 and 5), you can get a tremendous amount done in eight hours.
If your pay is not high enough, or your standards are not low enough, you will find yourself lacking "software engineers". There is no shortage, however, just an unwillingness to pay the right price (either in money or lack of skill).
What I can see is that most companies and especially these where software developement is viewed as a necessary evil rather than a business model are very bad at telling bad candidates from the good ones and don't really hire based on merit. They might believe they do, but the outcome of the hiring process is usually erratic as far as it comes to the actual abilities.
However once a developer is hired even a company with a flaky interviewing process tends to recognise the actual worth of a given programmer fairly quickly. Then an intresting thing happens - even though the developers might be explicitly treated as a commodity resource the very same managers would go far beyond the declared rules to retain the best: regularly up the package, give a lot of slack, turn a blind eye on minor "breaches of established rules".
As a result most good programmers I know after about five years in the industry end up enjoying a package far in excess of what is being declared on the job sites.
It's not uncommon for a hiring manager to moan about the lack of good candidates whilst paying the best developers on their team 50% more than they advertise when publishing the same job. What the management don't seem to realise is that just about every other company does that: actually paying more to the existing programmers than the declared range they would be prepared to pay for the new hires.
As a result after a while there is little or no incentive for good developers to put their CV's on a market. They're well above the market rates.
As a workaround sometimes companies hire good programmers as independent contractors and carry on extending the contracts forever - paying double or triple the rate they would pay their permanent staff. It's a funny game when becoming "an independent" consultant with a single customer is one of the few options for an experienced developer to help company management justify paying them the true market worth.
There is no lack of good programmers, they just cost much more than most companies are prepared to admit.
The many trading companies in Chicago also offer software developers interesting problems to solve and attractive compensation.
There's certainly a lot of web work being done in Chicago too, but the trading companies offer developers the chance to focus on enterprise software systems and proprietary high-performance trading applications.
I am gradually coming to the opinion that many 10X developers really do end up being compensated fairly, but it rarely happens while they are still in the "developer" box.
It doesn't necessarily just happen from taking on extra risk, either, though starting your own company is one way to do it. Personal anecdote (I'm not a 10X developer but I know a few things about a few things): I previously built CRUD apps and made $X, and I turned down a few offers this year to build CRUD apps for [6 * $X, 10 * $X]. The big thing that changed? Improvement in marketing myself and better selection of CRUD app genre. (A/B testing isn't any harder technically than building university registration systems... it is just worth orders of magnitude more revenue.)
That was one of the things that really surprised me about the real world: that big advancement only comes from big lateral jumps. Different companies, different projects, different markets, or different customers.
There's this model of the world we're taught as schoolkids - at least where I grew up - where you work hard at something, do as your told, and slowly but surely you rise up. And maybe at one level it's true, but it's very slow, and you'll never become the sort of success you read about in the paper that way.
Instead, I've found that what usually happens is that you join an organization because you meet some minimum skill baseline that they're looking for. And then as you practice and learn from the people around you, you end up picking up a bunch of other skills and getting better at your job. But the people around you generally won't notice. First impressions usually pigeonhole you into a general category, and then people are blind to gradual changes.
So to reap the rewards of everything you've learned, you have to expose yourself to new people. Jump ship, and suddenly you seem really valuable to them, because all those skills you've picked up which your current organization takes for granted are new and useful.
There's a leverage effect as well: people try to work with others of roughly the same level. If you're diligent about practicing, you'll go from being (hopefully) near the bottom of your team to the top of it. If you then repeat the process, your new teammates better be higher skilled still, and so your team as a whole can tackle more ambitious problems.
Unfortunately, it also works the other way: somebody works in a company until they recognize how useless that person is, and before he or she gets fired they jump ship to a new company where they are greeted with open arms as the new guy/gal that will fix everything. Lather, rinse, repeat. If they are smart they use the same argument you made to actually rise in the corporate hierarchy with each step. This allows them to beat the Peter principle and rise above their level of incompetence, leading us to totally incompetent people at the top of the hierarchy.
So if you see somebody who changed jobs every couple years, be careful.
I'm not seeing anything like this, or maybe I'm just being forced out of the industry.
I get screened out by HR because I don't have the words "computer science" on my resume, even though I've been programming for the past 25 years, 15 professionally.
If I get this far I get a phone screen where I'm completely fluent in anything they are talking about, but I don't have years of scrum experience, or I didn't come from an "agile" shop, or I prefer the alternatives to Rspec and cucumber, or whatever the new hotness is.
Then I get screened out by the developer interview because I'm not in my 20's and probably can't relate to their hip young "culture" and they don't know what to make of me, especially in the Ruby world - but Perl is not as bad and I'll probably just give up on Ruby and go back to Perl.
Then I get flooded with calls from head hunters, all for the same one or two jobs and its always a complete waste of time.
Its frustrating to read articles like this. Are they true or just compete fabricated bullshit as a prelude to increasing H1B quotas?
"The growing use of Ruby on Rails, a Web application framework, in recent years has created developer shortages everywhere, said Rails creator David Heinemeier Hansson...Many developers who were trained in Java or PHP simply need to be retrained, he said."
=== "Hmm, PHP and Java are out, so what does someone with vested interests in Rails think I should learn? Hang on, Rails isn't mentioned as out of date by its creator so I'll retrain in that!"
I can't remember the exact articles from HN but there were two recently: one was about a sysadmin that went for an interview at Facebook or Google and was surprised that they wanted knowledge on low-level, performance critical features rather than advanced bash programming; another was an example of why it's often more cost effective to get twice the performance out of one server (by investing more development time i.e. C/C++ over PHP) rather than buying another server.
YMMV but I switched from PHP to C++ for my personal web projects and haven't noticed it taking me exponentially more time to develop.
So the article says the shortage is of "highly trained" workers only.
And a big problem is you can't lure them away since their current employer might give them a counter offer, and there's apparently no way to deal with that, it's the end of the world.
And the solution to all this is "a six-month retraining program for displaced workers. Participants, who must be unemployed, will come away with skills in one of eight tech-training areas" which trains people with no programming skills how to become "highly skilled" in only six months. So highly skilled that they will kick the butts of the guy with the 15 years useless C, C++, Perl and PHP experience because what we really need is Ruby on Rails.
I'm a little suspicious when I read a line like this:
""I feel we're at 100 percent employment" for highly qualified software engineers in Chicago, said Zach Kaplan, chief executive at Chicago-based Inventables, an online marketplace for materials and technology. The company gets flooded with applications when it posts nontechnical jobs, but it struggles to find software engineers."
Mr. Kaplan hasn't quite defined a highly qualified software engineer as one who has a job, but he's awfully close to saying that "100% of the software engineers who have jobs, have jobs."
If "highly qualified" software engineers have no trouble finding jobs, I suspect I could make an equally ambiguous argument that "highly desirable" software companies have no trouble finding software engineers. This "shortage" goes both ways.
All over the map (sorry, bad pun). It depends on where you live, who you work for, what technologies you work in, and (more than any of the above) your skill in marketing yourself to the right clients.
I have personal knowledge of folks who do software development at a range of price points between $25 and $200.
Exactly. I get a lot of job offers which insist on me moving to London. Since I have (for a number of personal and practical reasons) no intention of ever moving to London, I won't work for them, period.
On the other hand, I would be readily available as a remote worker - in the same country. So what's exactly stopping these companies ?
Cool. Can you suggest where the right places are? My past searches for decent software developers have been long, arduous and time-consuming, and I'd love to know where all the good developers are hiding.
Out of interest, how many developers have you employed? I'm sure it's not entirely relevant, but I'd be interested to know how you found them.
There are plenty of software development jobs where remote working simply isn't possible. Just as a single, simple example, there are very few neighborhoods that would tolerate an 18 foot high-speed radar antenna on a roof, and even fewer that would then have suitable objects to watch.
I am pretty sure they once said the same thing about people not working in suits. If your company can't make it work, you shouldn't be surprised if you have to look for a new job because your competitors can get people you aren't able to hire.
I've come back to this comment several times in the past few hours, trying to write something to help you understand, yet at the same time, not sounding condescending, and I've decided I can't do it. You simply can't connect remotely to the kit we use - you have to be in the office for at least a few days a week.
Other work we do involves data that we are contractually obliged not to allow out of the building, and still other work involves teams of people working together on algorithm design and implementation. We've tried, but the existing on-line tools are simply not up to it. We've even worked at trying to create better on-line tools, and come to the conclusion that it's currently not worth it.
But you're a CS student, so no doubt you'll be working on solving the problems we have, and by the time you're in the work place you'll have the solution ready. We look forward with eager anticipation to being able to have people work remotely. Getting more and better work for the same pay would be a great business opportunity, which is why we still invest around 10% of our annual budget trying to make it happen.
There is a very big difference between what clothes someone is wearing and what their physical location is.
In half a generation, perhaps, when all the kids have grown up with zero distinction between online and offline life and VC equipment is so good that it's just like you're there, large-scale remote working might work. But right now, there is so much high-bandwidth communication that you're missing out on.