Most companies prefer to hire experienced software developers — people who require little training in order to do their jobs. Particularly in startups, even hiring someone at a lower salary doesn't make sense if that person can't pull their weight.
Right now, there's a heavy demand for developers that's driving up the cost of hiring anyone with significant software development experience. Fully loaded costs (benefits, salary, training, setup) can often run $15-20k per month for each hire. Additionally, finding good people is hard. If you're a talented senior developer, you basically have your pick of high-paying positions. Startups and small companies have to woo the talent they want in a highly competitive market.
All of which makes junior developers an attractive option.
Avi Flombaum wrote a great post about hiring junior vs senior people. One point he made is that most companies just don't need the top engineers:
If you're trying to build a better search engine, or solve the world's most complex data problems, you probably do need to recruit from the top 1%. Most companies, though, just need great leaders who can help their teams think through the difficult questions, and team members who are wiling to work together to implement creative solutions. The bottom line is that for most products, seeking out rockstar senior engineers is like hiring Picasso to paint your apartment.
Instead, if you're bootstrapping a product and having trouble recruiting, hiring a junior developer might make more sense - if you can train them, that is.
Every company has its own way of doing things, including standards that are crucial to follow. Getting an experienced developer to change her ways — say, adopting new code review practices — can be difficult. But when you get to train the developers who make up the core of your company's software development team, you have the opportunity to indoctrinate them with the methods you use.
You'll need to plan how to make effective use of any junior developers you hire from day one, as well as how to help them improve their skills. There are any number of ways to do so, depending on your team's workflow. Contently, for instance, focuses on pair programming: every junior developer teams with a more senior developer. Pair programming is a key part of the company's workflow beyond training junior developers. It increases their productivity and reduces the number of bugs they find. Finding a way to work with your junior developers should take into consideration how your workflow can logically adapt and benefit from new ideas and fresh eyes.
There is, of course, a huge variation in who you might consider a junior developer: WebKite, for instance, hires people with no development experience at all for junior positions and trains them on the job. Of course, the team includes far more experienced programmers and has only a few of these very junior developers at a time. But Eric Silver, the founder of WebKitel, taught himself to program in order to launch his startup and has confidence in his ability to hire smart people, and their ability to learn.
The key is looking for a problem-solving mindset, the type that can be turned to programming effectively. WebKite hired on a political science major who created macros for a project she needed to run in Excel — and then realized that Excel was slowing down the process! She then rewrote her macros to skip Excel altogether. That sort of approach to an issue is a good indicator that a junior developer will be able to improve fairly quickly.
When you hire a junior developer, you're going to have to invest resources in her training. Hiring someone with minimal experience and sticking them in a tech support role or in some other capacity where they can't learn is contrary to the whole concept of hiring a junior developer. Some of the best companies out there are investing in their people by sending them to developer bootcamps, conferences, and giving them personal time to work on hacking together personal projects.
If you and your company aren't in a position to bring a new developer up to speed, let alone teach the skills necessary to get a junior developer up to a hire level, then don't invest your resources. Paying for a more experienced programmer makes sense. But if you are, you have the opportunity to train exactly the programmers you want to work with for a lower cost than you might think. Which is a massive win for your company.
If you do hire a junior developer, you'll want to track any errors they might generate while learning on the job. Capture your exceptions with a free Airbrake trial!