What he should be saying is don't hire pompous pretend-to-know-it-alls. That is something all of us can agree with. But if you've spent the better part of the last two decades learning how to be a good developer and have applied your skills across various technologies, projects, and industries, you deserve the six-figure salary. Why? Because ten mediocre singers cannot sing as well as Aretha Franklin.
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.
Have you seen the job postings here on HN? They all use that exact language - rock star or ninja or some other silly adjective. It sounds like they're specifically looking for pompous know-it-alls. I think what he says is exactly what he should be saying (and for the most part, exactly the same thing you're saying).
The average starting salary for a senior Ruby developer has climbed to $94,000 ($107,000 in Silicon Valley). Compare that with the average salary for a junior Ruby developer, $70,000, ($80,000 in Silicone Valley).
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.
Would you mind being a little more specific? It's hard to get any solid numbers out of anyone, and the article provides some. If those are off, what do you think the current market rates are?
North of $100k for someone so recently out of undergrad that touching their degree would smudge the ink -- more for a good school or a candidate who looks particularly qualified. (i.e. Has done anything in life other than gotten good grades.) $120k+ for 3 years of professional experience with Ruby. I don't know what you'd define expert as but no plausible definition makes $107k sound reasonable.
Technically the market rate is what you can get, not what you'd like to get/give. If a company has a budget of $80k and goes out to the market and tries to get a developer, and fails, then the market has decided that $80k is too low. Otherwise you'd be able to buy the labour at that rate. If companies cannot hire at a rate, then that is by definition below the market rate.
If you can get a job at a rate that seems "too high", then that's the market rate.
We really should be talking about total compensation, not just cash salary. $180-250k isn't unreasonable cash+%+bonus for a sales engineer or consultant who puts in huge hours, or for a senior developer with bonus/stock/etc. I think a lot of people at Google end up hitting $180-200k based on total compensation once they're at the 5-10 year of experience tiers.
Right, 180K for any developer is high (hence the double-to-triple estimate). Not inconceivable for an architect or manager though in certain companies, which is a possible career path for any developer.
I think part of the disconnect here is due to the fact that the development community in the DC area is really quite broad.
On the one hand you have startups & companies with Bay Area caliber talent, including more high profile ventures such as OPower and Living Social. On the other end of the spectrum are budget web-dev PHP shops that maintain web pages for government agencies.
Nonetheless, I've never heard of salaries as low as those you're quoting - and they're most certainly not the norm.
Good point, but remember that between hot-shot startups (e.g., livingsocial as the poster-child) and budget PHP gov't website shops are the contractors that design a lot of aerospace guidance and control software for NASA, the Navy, etc... Also NSA is a huge employer, and a lot of contractors for the NSA and NASA (among many other agencies) have extremely technical and high-level software and hardware engineering positions.
Fully agreed. I in no way wanted meant to paint Living Social & startups as being the end-all of DC talent. In fact, the challenges several of the local contracting shops work with are in many ways more interesting than those of the area's startups.
While I've never worked for a contractor, in my experience their salaries are quite competitive - although they may be strict about degree requirements both for better and worse.
Are they really talking about Ninja-Rockstar engineers, or "only" developers at the 10x end of the Mythical Man Month spectrum?
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.
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.
I guess the question is whether startups, who are usually in intense competition and working against the clock, have the time and energy spare to lead people through that process. I wouldn't have thought so.
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.
>"I don't see why software startups are any different."
You don't see how a photo-sharing app is different than starting an electric car company?
That's a problem. I also think that's the point of the article: 99% of startups don't need rockstar developers. They aren't doing earth shattering engineering. Most startups need competence and nothing more. If they actually hired on that basis, it would help the eco-system.
We're talking about software. If what you're doing is easy, you're doing it wrong; automate it and shatter the earth under the competition that's still doing it by hand. There are always opportunities for earth-shattering engineering in software.
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?
No, but that's a bit of a red-herring, as A. none of us (presumably) know anything about the actual composition of the team at Tesla in the early days, and B. nobody is suggesting to take a handful of grads, chuck them into a room, and let them sink or swim. What I'm suggesting is to utilize a mix of experienced people and fresh grad / inexperienced types, and do what most companies fail to do these days... actually provide the training, education, mentorship and support that help inexperienced people become top-flight people.
Well, if you're talking about employee #1, then yeah, I think you need experience. But my point is to get into the mold of hiring people that can grow into roles, as early in the process as you can. I also tend to think that a good team should have a mix of people with different levels of skill and experience.
I took it as implicit that they were advocating having at least some senior level people, as one of their bullet points was to "provide mentoring." If there aren't at least some senior people, who would be doing the mentoring?
It's a fair point, though, that TFA doesn't really go into detail about the exact composition of a team that they are suggesting.
I agree -- as I said above, you can get close to the 10x end of the spectrum from a recent grad.
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. ;)
You don't actually know that the developers you want are all people employed somewhere else, that is just a heuristic you use to make recruitment easier.
I don't disagree with a lot that's being said here, but:
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.
Personally, I think "short-term'ism" is a disease that plagues business (if not society as a whole) in America these days. I also think taking more a of a long-term view can be an advantage on many levels, and I have often said that - when we get to a point where we can hire employees - one thing we will do at Fogbeam Labs is focus on hiring younger, less experienced folks and provide training, education, and mentorship... and build a "promote from within" culture where we aim for long-term relationships. Some sort of profit-sharing plan would seem to be a good idea as well.
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.
(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 won't work. you won't do the promote from within step, or you will promote one guy, or you won't pay enough money with the promotions. It will take your employees 2-3 review cycles to learn what's up. At that point your (now experienced) people will leave for places that pay more for experience.
I worked for a company that gave me raises to bring me up to what I was worth for a few years. Then they stopped, and 2-3 review cycles is exactly how long it took me to catch on. By the time I left, my new job paid me 40% more than the old one.
And even before I got my first standard programming job, I knew that proper raises only come from changes jobs in this industry, and I was prepared for it.
I would have loved to pick a company and stay put, but companies just don't keep up their end of things.
In the end, it works out, though. I get an exciting new job every few years, and the fact that everyone is doing this makes sure there are plenty of job openings all the time.
I've yet to figure out what the companies get out of it, other than a temporary cost cut. (They end up spending the money to train the new guy.)
Of course you're never going to be able to keep everybody. That's not the point. But I believe you can build a culture that promotes longer-term relationships and a tighter bond. Maybe we'll never get back to the days of life-long employment followed by a gold-watch and a pension, but I think we can do better than the current system that most firms seem to be using.
Another thing I want us to do, is define a career path that allows technical people to continue to advance in pay and prestige, without forcing them into becoming managers. But that issue will be a long way off for us (heck, we're a pre-funding, bootstrapped startup right now... most hiring/retention issues are quite a ways off for us!)
What's with the cynicism here? I've worked at at least two companies with a great train & promote from within culture, and heard of several more from my friends.
It's not cynicism, it's just logic and my observation of how several tech companies operate. It may seem great that a company would want to promote its novices, but the fact that it operates with novices doing the work precludes this. It's not economical to promote and pay more just for the sake of promotion. All they need are novices so why pay senior wages? Turnover does have some cost, so companies will either bait there employees into staying a bit longer by promoting one or two people and letting everyone know that person's new salary, or they will just not promote anyone. Either way, most people are going to look elsewhere after 2-3 years of flat salaries.
OK, I don't know what other companies do (or will do, or claim to do), but what I'm talking about, vis-a-vis the company I'm working on, is not a situation where we have "novices doing the work." We're definitely working on hard problems that require smart, experienced people. All I'm talking about, is having a mix of both very junior and very senior people, and then focus on adding senior people by helping the n00bs advance to that level over time.
This may have veered away from what original article was proposing, so I may be muddling the conversation here a bit.. but I definitely believe we can build a company that has a strong "promote from within" culture, that provides a very supporting environment that helps people grow, and provides a career path for technical people that doesn't require them to move into management in order to advance their careers.
It's not economical to promote and pay more just for the sake of promotion.
But you don't do it just for the sake of promotion... you do it to keep a person's compensation in line with the value they create and to stay competitive with the market. As people gain new knowledge and skills, and gain experience, they become more valuable.
Eh, but there is a reason for this "short-termism" - people want to exit before the current favorable business cycle ends. Business cycles are famously quick and famously dramatic here in silicon valley.
Before the discussion goes too far, do keep in mind that the author of the article runs a school/e-Learning company that teaches Web Development to its students.
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...).
As a side note to the article, it's interesting to contrast the author's RoR school ( http://flatironschool.com/ ) where the goal is to get people from zero to junior level with that of Hacker School ( https://www.hackerschool.com/ ) that wants to take people from average to "ninja-rockstar" level (or at least a better engineer). I don't think that the goal of having more junior level engineers out there is a bad one, but in terms of what the market is currently looking for, I see the advantages of a program like Hacker School in the social proof of being one of the "ninja-rockstars."
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.
> By hiring junior engineers, and giving them the training and development they need to flourish
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
I'm no ninja-rockstar! I'm a cybernetic Viking berzerker, battling each and every bug and feature to the death. I might have scars from my many encounters, but I won... eventually. My software is a well honed and polished, though sometimes nicked, piece of work.
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...
There are certainly some important take-aways in this article.
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.
Personnel retention is easy - just demonstrate on any level that the contributions of the workforce is appreciated.
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.
Since I'm in the DC area too, without clearance, the numbers you're throwing around are not realistic. Junior developers will start in the 50's-60's (with BS), usually 70-80 with MS, and seniors will generally be 110+... In the contractor sphere with clearances, it will be correspondingly higher.
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.
10+ years of working in the DC area supporting the Columbia customer, McLean customer and the Quantico customer for a variety of companies and still no one paying close to the rates you're claiming. It obvious you can't distinguish between the billing rate and a salary rate.
Yes. We have some on sight, for a government agency, as part of a government contract, for which we are the prime.
Additionally, we've taken people from help desk, put them on the server team, then placed them doing host based security and paid them upper 40's (before taxes).
Personnel retention is easy - just demonstrate on any level that the contributions of the workforce is appreciated.
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.
Benefits: Trying being assigned a practitioner closest to the work location so you'll miss as little work as possible; or benefits that are project dependent (some projects support a 401k, some don't)
High salary: 30K starting with sr devs going for around 60K to 70K
Flexible hours: 730 to 430 M-F, with Wednesday onsite support needed from 6pm to 10pm (you are allowed up show up no later than 9AM on Thursday)
It's not that surprising to me. My friends and I compared offers out of college and then didn't talk at all about salary for over a decade. A couple years ago, I started asking around when I was considering a job offer. I found out that we were making anywhere from 60k to 115k! We all had the same years of experience (~12 years). We all had different specialties, but that didn't really seem to matter. The guys who stuck with one job at a small-to-medium company seemed to do the worst--five percent raises don't exactly cause your salary to skyrocket. Those of us who worked at big companies did better, probably because the big companies make an effort to do salary surveys and pay competitive wages. Those of us who worked for consulting firms or changed jobs a few times did the best.
I'm still surprised. Every single year, magazines & websites rank the top college majors by starting salary, and computer scientists/engineers always are always near the top of the list with numbers in the $55,000 - $70,000 range.
Of course there are below average programmers, and perhaps they deserve a below average salary, but $30,000 less than average? I'm surprised.
Either you are in a particularly underpaid/oversupplied field, or DC is the solution to startup hiring. If there are a substantial number of available "senior developers" in anything useful to Silicon Valley in DC for <$75k/yr, it would be worthwhile to set up a Northern Virginia tech center.
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.
True ninja-rockstar engineers are professionals that don't exhibit the traits described.
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.
Doesn't someone who can do 10x-20x the work of an average employee deserve a bit of an ego boost from time to time?
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.
Are we really STILL talking about those terms? I don't mind those terms myself, because what I think everyone ACTUALLY means is they want a A++ player, someone who's deeply involved in the specific tech, a cut above your average senior dev cube dweller. These are the best sort of people for startups where your small size and large goals mean you can't afford any dead weight. Who cares what term you're using?
'A player' is another one of those obnoxious, means-nothing words like 'ninja' and 'rockstar'. In practice it means 'my kind of guy' - and someone acculturated to the same self-promotion ideology - more than it means anything about qualifications.
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:)
hm. From what I've seen? senior salaries are rather higher than the article mentions, and Jr. salaries are rather lower. (in Silicon Valley) - Junior types are still having a hard time finding work at all, as far as I can tell.
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.)
I think a good team has a balance of rock stars and junior devs. I don't find it usually the case that a rock star will do 10x the work of a junior dev. In fact they will often do less work - however the work they do is easily 10x or 100x smarter and better for the company long-term. Junior devs tend to work very hard but also can cause a lot of havoc if a someone is not helping to guide them. Many times in fact the work that junior devs do winds up being a mess that the senior has to fix or re-do entirely. Junior devs can also suck up a lot of time from the senior devs, so in fact they may at times be reducing productivity. On the positive side the junior guys tend to bring a lot of enthusiasm and fresh ideas. They keep the senior guys on their toes. And they will grow into senior devs, hopefully giving you a few years of solid work when they reach that point.
"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.
This article seems like an excellent example of "understand the biases of the author to understand why he wrote what he did."
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.
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.