If you are not hiring developers based solely on their portfolio of previous projects they authored. You are doing it wrong. Every prerequisite requirement for developers is inherently flawed.

1. A degree. While degrees are nice and prove somebody is considerably "intelligent" and not a "complete waste of time", many talented programmers, especially the ones you want to hire; are fully capable of teaching themselves without a lecturer.

There are some developers who have already studied the dragon book and have a sophisticated understanding of how operating systems work because they hack on Linux.

A developer may make a very reasonable and logical decision not to go to college because they dont want to accumulate debt, for an education they already possess, and ultimately waste time not working on their software projects.

A degree doesnt mean they are a good programmer, and a lack of one doesnt mean they are a bad one either.

Im not saying college is a bad investment, rather recruiters should not turn away an applicant just because he passed on that, as they see it, inherently flawed "life experience".

2. Years of experience.
Assuming the project is well documented...
If it takes a developer longer than 2 weeks to figure out how to use a project's api, even if they have no prior understanding of the technology.

They are not a good programmer.

If you are looking for a developer to actually understand the internals of a project well enough to be able to commit, even linux shouldnt take 5 years of studying before a talented developer is able to visualize whats going on.

Real developers spend almost all of their time reading code and studying something they havent learned yet.

if they cant adapt quickly to your projects, while perhaps even teaching themselves the new technology along the way unbeknownst to you. (new programming language, library dependency api's, network protocol, etc)

They are not a good programmer.

3. Previous Work Experience [as {insert stupid job title here}]:
First, there is nothing sillier than job titles for programming positions.
The only valid titles that should ever exist for a programmer's job are
Hacker,
Bit Composer,
Code Poet,
Git Wizard (seriously, this is the only valid specialized hacker position)

Second,
Just because Bob has 30 years of work experience as "Lead Programmer" at "FooBarly inc.", that doesnt mean he is a better engineer than 21 year old, no work experience, Alice.

While Dino Bob may be able to write optimized, neat, software. And although he might able to debug rather complicated bugs, and ultimately lead a team to write a program that does what its supposed to.

Alice may have been an exceptional, innovative, and disruptive programmer who could have not only written the software but innovated the concept into something beyond the scope of the original concept design.

There are some hackers out there who can see data structures and algorithms like a painter can see the scene painted on the canvas before they make the first stroke. Innovation requires an exceptional level of creativity and the ability to abstract an opaque idea into a deep, detailed conceptual model.

People cant be taught to think this way. Much like a professional musician, whom despite practicing each day for hours to perfect their art; will always lack the skill of a virtuoso mind like Mozart. Many people are great engineers, but could still lack in talent against someon who was just born with an exceptionally creative and brilliant analytic mind.

These are the kind of programmers that you cant afford to let your competition snatch up. Yet you just foolishly tossed Alice's resume in the trash because Grandpa Bob has credentials and she doesnt.

Interview Quiz:
When given questions like,
"given two arrays, find all the elements in one array that are also in the second array". in attempt to talent scout.

A good programmer will claim the real right answer is either the obviously simple choice or the theoretically most efficient, and well tested sort algorithm that can be found using google.

If comparing two arrays is seriously a performance bottleneck that requires optimization, you might as well skip the bs and go with the best. We arent solving problems if they no longer exist, and a programmer not solving problems is a programmer wasting time.

4. Portfolio
A portfolio is the only valid option to consider when you want to be absolutely sure you hire the best developers.

If the person hiring cant identify what good code is, then your startup is screwed anyways. You dont need a degree to build a portfolio, and if somebody does choose to college they get to build their portfolio as part of the class projects.

If a developer doesnt have a portfolio or if the software in their portfolio doesnt actually do anything useful then you know they arent a real hacker.

Hiring a programmer should only ever be based on the quality of software they have authored.

Like Linus said, "Talk is cheap, show me the code".