It's because "every startup" is lazy and afraid to take risks. In the programming world, for example, everyone wants to hire someone who has 150 years of experience with each of C, C++, Java, C#, Perl, Python, Ruby, OCaml, Haskell, and node.js. Problem is, that is not possible. So the position goes unfilled.
If programming shops were willing to hire people fresh out of college with English degrees and teach them programming, they would probably do really, really well. But nobody is willing to do that, so college grads go without jobs and startups go without employees.
(Also, startups expect you to really drink that Kool-Aid. They want you to work 12 hour days, skip weekends, not take vacation, and "be loyal" to the company. Why would anyone do that when they can work 9-5 for 4x as much money at an investment bank?
Ironically, even the investment banks can't hire anyone, but that is for other reasons.)
That's another really good point. There's not much in the way of apprenticeship in software.
Companies will often pay for relo expenses for someone, providing they stay for X years (else they repay the relo money back). Companies could do something similar with education, whether it's local college classes, inhouse training, etc. If you leave within the first year, you pay the company back those expenses. Or... have retention bonuses for people for staying past 1 year, and invest in education for people at lower wages. Many companies would find some real gems out there, waiting to be discovered, and would engender far more loyalty than most currently get.
I'm not sure I am following this. If you want to attract actual talent, you have to pay full relocation. The good ones have stable jobs they enjoy. And they are going to pay their own relocation for a new job that may not work out? I don't think so. The only people that pay their own relocation are the desperate and the completely untalented.
As far as having to pay back if you are laid off or the company is otherwise dissatisfied due to their own lack of having a decent vetting process, ha ha ha. Indentured servitude. That's a new one. I'm sure that will get the best of the best. Not.
Relo packages are a perk that's given out to those with a certain amount of experience. I got one last time I changed jobs, but I barely squeaked in (official policy was that it's only for candidates with 5+ years of experience, I had 4 years, they said "We'll work something out"). And I would've had to pay it back if I worked at the company for less than a year.
The vast majority of my friends did not get relo packages, because this is their first job out of school. Companies don't typically offer relo for fresh college grads.
I thought this discussion was about junior engineers?
If you can't find employees, you have to get out of the mindset of "perks" that employees are lucky to get and start offering what it takes to get what you want.
Or keep whining there's no employees.
One of these paths is more productive than the other.
The university I attend, Taylor, just began a track in their Computer Science major a few years ago designed for this exactly. It lets students work in a team atmosphere, and get a few major projects under their belt before they graduate, with critiques and advice from professors. I have a few friends who chose that track and are learning how programming really works, getting a little bit of class credit, and getting an on-campus work study job out of it as well.
There are small startups that will hire entry-level people. However, I agree, the relationships with the entry level people are not necessarily of the mentor-apprentice variety.
The first startup I worked at did this. They hired kids straight out of (or in) high school, like me. They hired recent Indian immigrants who couldn't work anywhere else because of visa issues. They opened an office in Shanghai where they could get programmers for $20k/year.
It worked, well, terribly. The startup folded in a year and a half mostly because of code-quality issues. I remember talking to the founders near the end of my gap year, where they said that of the 10-ish or so high schoolers they hired, only two of us really produced more than we cost (even on our piddly $20-30k/year salaries), and even then we needed a fair bit of management support.
These were also not random people - one of the founders had been a teacher at my high school (he'd been an entrepreneur with a successful exit before then), and he basically skimmed the top of the class off and got them to work for him. Many of us later had successful careers at Google, Bain, or hedge funds.
But there's only so much that you can do to compensate for inexperience. There's a lot that you learn in your first job or two, even if you already know how to program. And until you learn it, there's a good chance that you'll be negatively productive.
Perhaps the problem was a poor balance between experienced and novice developers. I wouldn't expect a company with hardly any experienced people to succeed.
It was, but that's ultimately the problem with hiring novices. We had a couple senior engineers. Most of their time was spent mentoring novices. Startups are cognitively demanding enough to take a highly-skilled engineers full attention. If the bulk of their time is spent managing, who's writing the code? You end up with a bunch of novices who gain a lot of experience, and a bunch of code that's crap.
If you have to hire the senior engineers anyway, why not hire only the senior engineers, at least in the early stages of the company? They'll be able to get actual work done, you'll have a decent codebase, and you might actually be able to ship a product that can get you additional funding and revenue. Then, once you've taken care of the money problem and the startup is no longer fighting for its life, you can hire some junior devs to flesh out the product and exploit market opportunities that you didn't have the resources to explore in the startup phase.
Well, because you can't, as all these posts whining about how hard it is to find people allude to. Since there aren't enough senior engineers to go around the next best thing is to hire some talented novices and turn them into senior engineers.
Then you're still in the same boat. Over the timescales that startups typically operate under (weeks to months), one senior engineer is more productive than one senior engineer and five junior engineers. The former can get a lot of code done and produce something that works. The latter spends all their time mentoring the junior engineers, who might or might not produce something that works, but it will undoubtedly be ugly and require much refactoring if it does.
Over longer timescales (years), this relationship doesn't hold true. This is why Google, Microsoft, and many of the other big players in the industry can afford to hire junior engineers. That one senior engineer and five junior engineers will turn into six senior engineers, all of whom have worked closely together, and then you have a gelled team that can accomplish great things.
But you have to get there first. When a startup's fighting for its existence daily, it's not cost effective or prudent to make an investment that will take a couple years to pay off, when there's a good chance that your company will be out of business in six months.
I don't think were talking about startups on the weeks to months scale. That's the time period where it's a couple people in an apartment. Yeah, you probably don't have time to train people at that stage.
You jump from that stage to Google as if there's nothing in between, but almost every other company is in between. Plenty of startups have been around for years, and plenty of them have enough funding to ensure that they'll still be around for years. At that point it becomes possible to make the short-term sacrifices necessary to ensure long-term success, like training.
Right now I'm a one man operation but hopefully I'll have the need to hire after launch. But for a startup I'd never consider taking on an English degree college major and teaching them to program. Marketing, sales, etc..sure, but not to program. If you never got the coding bug by the end of college, I'm sure not going to be spending my time to teach from the ground up.
In a startup every person has to pull their weight and there really isn't time for a formal training. I'd venture to guess that in almost all cases, this new hire will decrease the value of your company as a programmer.
That said, this approach could work at a large firm with stable revenues, a formal training program, and relatively straightforward IT requirements.
Laziness is an important positive quality in a business that already has too much to do. Teaching kids without the disposition or inclination to learn programming for themselves on the off chance a diamond in the rough might be found is not a good business proposition. There's a reason why no one does it. You are far better off just doing less.
That would be an interesting kind of conservation-minded business: just small enough. Why have a 20 person company doing a variety of things mediocre than a 5 person company doing one or a few things very well? There are larger scale versions of this in the AAA game developer world as the studio model has taken hold.
>If programming shops were willing to hire people fresh out of college with English degrees and teach them programming, they would probably do really, really well. But nobody is willing to do that, so college grads go without jobs and startups go without employees.
Do you have experience hiring someone with no technical experience and turning them into a productive employee? How did you train them? How long did it take?
I don't know about going that far, but I think your basic point is right on. Too many startups expect to have their ideal candidate delivered to their doorstep on a silver platter. Of course, when they can't find that candidate, they blame the education system. Yet I hear very little talk about what startups could be doing to create a better-skilled workforce. It sounds an awful lot to me like they want a skilled workforce as long as someone else pays for it.
Startups have two options: they can choose to be lazy and risk-averse or they can complain about not being able to find workers. They can't do both.
I'll add my dissent. I've consulted with 4 different startups in the past few months. And they're not afraid to hire entry level.
However, they seem to run into problems when they want to find senor people to mentor the entry level hires. Entry level developers are rarely able to lead a team much less handle the various technology decisions of the contemporary tech startup.
I was with you there for a second until you threw out the idea of teaching non programmers to program on the job.
What startups should be more open to is CS types that don't have years of experience in certain languages but have the ability to learn quickly. Too much focus on minor technologies that could be picked up in a few days.
I just want to hire someone who can demonstrate a level a little beyond competence in database programming, server programming, client-side (js, jquery, css) programming, and understands how the internet works. Most of those people already are gainfully employed. Oh yeah, and they have to be willing to come into our office to work and demonstrate to me they are willing to commit to learning our non-trivial application.
I have a degree in Comparative Literature (which is not an English degree, btw). I would consider someone with a serious music degree, maybe philosophy (e.g. PG). Most liberal arts majors are not cut out to be engineers.
Employees should meet companies halfway and learn a bit of programming on their own. Of course learning early on is better, but attempting a pass through something like http://learnpythonthehardway.org should be mandatory for any unemployed person. Shows initiative. A company's apprenticeship program could take the company the rest of the way. A bonus: there are government programs that can help with the cost of this training.
I agree with you and generally this is a great way for a startup to save money as well because new grads are cheap.
The problem that you'll then have though, is that when you encounter a tough technical challenge, you won't have the benefit of having someone on your team who has seen it before.
So there must be some golden ratio. A solid emphasis on college recruiting to serve immediate needs, with a focus on building out a technical knowledge base accompanied by many years of experience.
"I agree with you and generally this is a great way for a startup to save money as well because new grads are cheap."
I'd argue the opposite case — if it's true that a good programmer is at least 5-10x more productive than an average programmer[1], you'd actually save money by paying the experienced programmer significantly more when compared to hiring a team of beginning or average programmers.
There's also costs that scale with headcount but not experience. For instance, you've got to get computers and chairs and desks for everyone whether they're a rookie or an expert. Ditto things like healthcare. Sure, the rookies may have cubicles and slightly worse plans, but those costs aren't going to be 1/5 or 1/10 as expensive. And while the good programmers probably need less oversight than average, support personnel costs (internal IT, HR, recruitment, whatever) still scale with headcount.
If programming shops were willing to hire people fresh out of college with English degrees and teach them programming, they would probably do really, really well.
English degrees? The number of English grads I've bumped into in the software industry has been small (in comparison to just how many English grads there are). Math grads would be better since most would have had to do some programming already (even if just in Mathematica). Even physics grads..
I guess what I really wanted to say here, BTW, was that I'd rather work with a smart person that doesn't know the particulars for $foo language than I would with a dumb person that has 20 years of experience with $bar framework.
However, I've never met anyone below the MD at an investment bank who's working anywhere close to 9a-5p (unless you meant 9a to 5a which is more often the case with analysts).
9-5 at an investment bank - Sure it's 4x the money (or was)- but it's 100+ hours of weekly work that in my personal opinion is nowhere near as exciting as creating new technologies.
Um... I disagree. I worked for a large company that does just that: hire liberal arts majors with high gpas and teach them to program. It works, well, horribly. Ask any former employee about the code quality at epic systems.
I work for a large company that hires programmers with many years of experience at prestigious firms and it works, well, horribly. It turns out that not very many people are cut out for programming.
So honestly, I don't think your approach is too bad.
The corp participates in some open source program (that they don't own). Then hire the best people that contribute to the project. I have seen this work several times over and it has always resulted in high quality developers.
Yes. My employer employs something like 70,000 programmers.
Your way gets you 10 programmers that do a really good job. Now find the other 69,990 programmers. (I like to think I get a lot of work done, but I can't get 7,000 people's work done.)
(If it was my company, would I have a bunch of unrelated development departments with no common standards on 5 continents? No. But it's not my company, so I don't get to decide, I can only observe.)
If you want to hire 70,000 below average developers in no time flat you can. Realistically you are not hiring that many at once but over a long period of growth.
All I am saying is that using open source as a way to find talented individuals who love what they do and are really good is one solid way I have found to find new talent. If that can only get me X number of devs a year than that is X number I don't have to hunt through resumes for.
From what I can see Epic has a landfill of problems that probably aren't related to just hiring liberal arts majors. Moving from that particular example, I think that most startups are not willing to take the risk of hiring someone right of of college who doesn't have an incredible personal portfolio showcased on their amazing website, with years of internships/personal startups.
I agree with the blogpost that colleges aren't doing a good job of transitioning students to the challenges of startup/modern tech workforce. But, it seems to me that the solution would be a number of big employers like Google and others who are more able to take the risks should hire up the most qualified and teach them those skills. Simply, if the undergraduate education isn't good enough, someone's gotta teach em.
Why doesn't Google (or someone) create a tech university without the bullshit, one that actually teaches tech. Sounds like there would be demand... I'd go.
Sounds nice at first but if Google can afford to hire the most experienced, why would they do something that goes against their bottom line?
From what I've seen, you've got a lot of developers commanding 60-80k salaries. From a startup perspective, I don't really understand why this is the only acceptable path.
It just seems smarter to locate near some technical colleges in cities that have a lower cost of living, and pay entry level developers a salary between 35-45k to start. As they improve their skills, you up their salary... assuming that improvement comes with an increase in revenues/profits.
Google actually hires a large number of junior-to-midrange engineers and trains them up. Average age at Google is something like 28; a large number of Google engineers have never worked anywhere but Google.
At that level, they hire for aptitude, not experience. The $60-80K that Google pays for beginning hires is on the anticipation that after training, they'll be worth at least that much, and Google can retain them long enough for them to make it back. It's fairly common knowledge that a new Google engineer won't be productive for 6-8 months at least.
The risk that a startup runs by paying $35-45K is that they'll get people with lower aptitude who'll never turn into experienced engineers. That's a pretty big financial risk to take, particularly for a startup with much less runway than Google.
So your choice is pay 80-90k salary to somebody who will contribute $M to your bottom line (Google earnings/employee are incredible) or pay $35-45K for sombody who will just tie up your other programmers fixing their bugs
It sounds like you're suggesting internships. Perhaps employers need to be more open to interns who are already out of college, but other than that, I don't understand what change would meet your desires other than just lowering standards.
It depends on the measure doesn't it? Does it work "horribly" if the company grew from one person to having $600 million in revenue in 2008? I mean it isn't like Facebook success, but it doesn't seem horrible (at least if measured that way.)
If programming shops were willing to hire people fresh out of college with English degrees and teach them programming, they would probably do really, really well. But nobody is willing to do that, so college grads go without jobs and startups go without employees.
(Also, startups expect you to really drink that Kool-Aid. They want you to work 12 hour days, skip weekends, not take vacation, and "be loyal" to the company. Why would anyone do that when they can work 9-5 for 4x as much money at an investment bank?
Ironically, even the investment banks can't hire anyone, but that is for other reasons.)