Hire nice, competent, hard-working people with the requisite experience/knowledge and pay them what they deserve. If the project needs junior developers, hire junior developers. If it needs senior developers, then hire senior developers. Don't expect junior developers without any guidance to automatically turn into proficient veterans just because they've been doing it for five years. They could be doing the sub-optimal thing for a decade and not know it.
Stop making lists of who/what/why not to hire and just give the promising candidates a chance to prove themselves before/during/after the interviewing process. Also realize that if you make it a company policy to not hire anyone who is "senior", you could be violating federal laws against age-discrimination, depending on how senior is defined. It's no different than saying "must be a former Boy Scout", which immediately disqualifies all females and thus is discriminatory.
Apples vs Oranges...
But I agree with the rest :)
These numbers strike me as wildly below current market rates in the Valley, based on my discussions with people in it trying to hire. I'm willing to be wrong on that.
If you can get a job at a rate that seems "too high", then that's the market rate.
Because you can hire a junior engineer close to that end of the spectrum. It's just harder to know whether they are really that good without seeing a track record.
From the article:
>The rationale you'll typically hear is along the lines of "a great developer is 10x as productive as a mediocre one." That might be true, but it is an impractical startup hiring strategy.
So...they grant that "it might be true," but recommend that, instead of hiring someone on the 10x end of the productivity spectrum, you should instead hire ten "cheaper" developers? At the bargain of $70k/year each instead of an expensive $107k per year for one of them?
Oh, and don't forget to throw in the cost of a more experienced lead to manage those 10 junior programmers, because they won't manage themselves.
Someone isn't really thinking about the math here. Or they like to spend their Series-A funding like it's going out of style.
Don't get me wrong; there's a place for junior programmers in a start-up, after you've gotten enough 10x programmers. There are lots of programming tasks that don't need the 10x programmer and frankly are a waste of his or her time.
But there are also a lot of tasks (depending on the start-up) that require a 10x programmer (or better). Past a certain level of complexity, 1x programmers will never be able to solve a problem well. Even if you had ten of them. [1]
What people don't realize is that the 10x programmer isn't a rock star/ninja -- as Joel said a while agao, you're not actually hiring the top 1%. [2] The best developers all just have jobs and aren't looking most of the time.
Sounds like another good reason to focus on hiring recent grads, career changers, etc., to me. You just have to figure out a way to predict - better than chance - which ones will become great developers. Whether or not that's doable is, I suppose, an open question.
A good place for juniors to start would be in normal web shops, not high-pressure startups.
Do you think Tesla Motors grabbed a few engineering grads and shop floor assistants, chucked them in a room and hoped they'd "grow into" knowing how to make an electric car? Of course not - for a startup like that, timely and accurate execution is absolutely critical and they would have hired the best, most experienced people they could get. I don't see why software startups are any different.
In fact, I don't know that productivity goes up a lot after that point. Experience does, which certainly improves your OVERALL productivity, but I know that I was much faster at cranking out code as a new college graduate than I am now, so it might balance out.
Or maybe I'm just too old to be in the trenches, but too stubborn to leave them. ;)
At that rate, you can give a junior developer a 10% raise every year for 3 years at the end of which you'd have an experienced senior employee
This won't work, because of the "short-termism" that permeates through startup culture. A great many companies have no intention of still being a startup in three years time- they want to be acquired or be absolutely huge (at which point that individual programmer means less). There is a huge (and perhaps damaging) focus on early results, and in that environment waiting for a junior to get to grips with stuff will be seen as a weakness.
Then again, we have all sorts of radical "against the grain" ideas. Like, the idea that you don't need to recruit at Stanford and MIT and Harvard to get great people. We believe you can recruit at, say, NCCU[1], UNC-P[2], ECSU[3], etc., - or even WTCC[4] - and find talented people who will not demand the same salaries as the Ivy Leaguers, but will also be hungrier and have a something to prove.
Time will tell...
[1]: http://www.nccu.edu/
[2]: http://www.uncp.edu/
[3]: http://www.ecsu.edu/
(disclaimer: by saying "younger" I don't mean to say that actual age will be a factor... it's just that less-experienced folks tend to be younger by nature. But we would hire a 65 year old who had just undergone some sort of career retraining program, for example, if he/she was qualified. Discriminating by age, color, religion, ethnicity, etc., isn't just illegal, it's bad business. Why narrow down the pool of quality people you're working with?)
It is, definitely, in their best interest to have their graduates being hired by popular startups.
The content of the article seems to argue with that goal in mind. Whether the content is true or not, it is yet to be proven: I have not seen a modern statistical data of every single argument in both the article and the discussion here in HN.
Especially when it comes to "10x more productive engineer" since in our field, we haven't done a good job measuring anything at all except some data of failed software projects and how bad workers negatively influence the company (just like any other sector...).
I also personally agree with having one strong senior engineering being more advantageous to an early stage startup than a handful of junior ones (but not just from the programming side of things). A good senior engineer is easily worth double the salary of a junior one if they can provide both overall technical direction as well as general team direction and mentorship. Otherwise, a team composed and lead by only junior level people can quickly feel like the inmates are running the asylum for any one you're trying to bring in (junior or senior). The examples given in the article are all of places that have a strong, established tech team. If you're early stage and don't have a strong foundation to build your tech team on top of, getting three junior engineers for the price of one good senior one might not be the deal you think it is.
If you don't have battle-hardened, experienced, senior programmers around, who's going to train them? Who's going to answer questions about design? Who's going to come over to their desk and teach them how to test X?
Actually, I somehow think I know who the author wants to train all these juniors:
> Avi is the Dean of The Flatiron School, an intensive program to learn Ruby on Rails in New York
Seriously guys, ninjas were criminals! They were outlaws that killed mainly via indirect confrontation, OCD-like planning, and typically poison. They deserve no praise or idolization for that. Just like I wouldn't hire a diplomat-rockstar programmer either...
What certainly hit home was the reference to high turnover. In my experience, attracting and retaining (perceived) top 1% developers is no small feat. It's damaging to a project when a "rockstar" developer builds out a product set in her chosen (often bleeding edge) framework / language, and then departs at the sign of another "fun" opportunity elsewhere. No one needs to sign an oath of loyalty in blood or commit to a project for life, but fickle engineers - no matter how talented - can be a net loss to a team.
Insofar as the salary requirements are concerned, the numbers are a little off. Top developers in this area (DC) command north of $120k, with junior developers starting at anywhere from $50-60. Regardless, however, I tend to regard salary (within reason) as an appropriate investment.
Lastly, as he mentioned - not all teams are equipped to handle & mentor junior engineers. This requires a formalized and real commitment, which unless executed properly - will result in un-productive junior hires. Like the author, I believe that mentoring and training junior staff (and interns) is a fully achievable goal, but one that requires planning and forethought.
Since I'm in the DC area too, with clearance, the number you're throwing around are a bit of a stretch. We've got junior developers in the high $30K range and senior in the mid $60K range.
I do know that some agencies tried to give peanut wages to certain fresh-out-of-college students, but everyone I knew scoffed at it and found positions that paid twice as much elsewhere.
That seems incredibly low, especially for a major metropolitan area. You must give great benefits.
I think you may be painting a simplistic picture, and are making an implicit statement about my experience.
I have never worked for a software company that didn't value it's developers or their contributions. Quite the contrary, in fact. Benefits, high salaries, flexible hours, work from home all on top of routine praise and a very supportive work environment. None of these will guarantee that a top employee won't be attracted to possibilities and challenges elsewhere.
We've got junior developers in the high $30K range and senior in the mid $60K range.
It is frankly unimaginable that a highly qualified developer would be paid $60k in the DC metro. The cost of living is easily on par with many parts of the SF Bay Area. It's quite possible that our standards for "senior developers" are different, but I'm quite confident my numbers are correct.
As far as $30k for junior engineers - frankly I know data entry technicians in Virginia who are paid that much or more.
The only tech company I know which has a substantial number of cleared people, a presence in DC, and is a startup, is Palantir, and there's no appreciable pay difference between Palo Alto and DC. New grads are effectively capped around $127k, but most take around $80k and more equity. It's also an excellent place to work.
The senior engineer described resembles more of the diva who is actually rarely that good, because he cares too much about his ego to question himself and progress.
And that's if the "average" employee can do the work at all.
I've pulled so many "average" developers' nether regions out of the fire when they've gotten stuck that I've lost count. I don't care what term is used, but it's nice when the term actually describes the discrepancy between my performance and most developers.
Ninja-rockstar will do nicely, thank you. ;p
Seriously, though, MANY high-end developers in the start-up space are probably on the 10x-20x end of the spectrum. At least at the successful start-ups.
I'm sure there are exceptions for when the start-up is more about pushing data around in a mundane but novel way, and where the primary business value is NOT technically challenging. But even in those cases when the company scales it often has a problem, because the developers haven't done things optimally, and once you're already having scaling issues it's really hard to rearchitect everything to work better without messing up the existing site. YMMV.
Stars can really boost a team morale if they have the right amount of ego.
It's funny that EVERY company says it will be crippled unless it hires only people who are far above average. Because if developer quality is even close to normally distributed, about half of the actually employed population is below average (let alone top 1%).
Big companies, of course, need people with years of deep specialization. So if you aren't deemed to be "crushing it" in the top 1% and you don't have 10 years of experience in some extreme specialization - regardless of what you can actually do - you are COMPLETELY useless to the industry and will save your time if you just start mowing lawns and waiting tables.
I've worked at many large F500 companies, and trust me they can and do employ a much larger group of average and below average people, including developers. There are tons of people at F500s that if I brought them into a small startup, would KILL the startup because they simply can't produce.
Not sure what you actual work experience is but there are absolutely a range of skills/productivity/involvement. If you don't call them A/B/C or Ninjas or whatever, you have to call them something. Having worked with a wide range of folks, I have my preferences:)
That said, I think that the key is "what skills do you have?" If you are (or have) someone good already, hiring on a apprentice can be a great thing. But you need someone at the company that is good at what you are doing. That could be you, and that could be an employee. But, for instance, I am not going to train up a new accountant. (or for that matter, a new webapp developer.)
"rock star" status to me is somewhat based on age and experience. But in fact some rock stars are young and some mediocre devs are older. I think it has to do more with personality and motivation on the part of each individual.
He runs a ruby on rails cram school and some kind of non-infrastructure e-commerce site. From the first, he has an obvious incentive to talk up the market for his graduating junior developers, both to increase demand for the classes and to get them jobs when they graduate.
Designer Pages doesn't look like it has any particularly unique or difficult technical challenges -- it's not Facebook scale (highly interconnected large userbase), it's not super high availability, it's not computationally intensive, etc. That's the kind of thing where a couple of senior developer+ founders plus some junior developers might be useful.
Do remember that Google has hired away pretty much all the top engineers already. You won't be able to get good people for cheap prices anymore.