Just wanted to add an additional perspective, lending some weight to a few others here.

I assume I'd be considered a mid-level developer, over 6 years out of school, with a master's, though I've been called a "senior software engineer" at times, mostly for billing purposes. I've held 6 positions since school, ranging from 6 months to just over 2 years. I've been in my most recent for about a year and a half, and am considering making another move.

In nearly every interview, I get asked about why I've changed jobs so frequently. The 6-month stints have mostly been about culture, other job changes have mostly been boredom or frustration. Many interviewers have been sympathetic to my issues, and maybe some even see it as a good thing - learning quickly, contributing fast, etc, all look good, especially when you're young.

As I've gotten older/deeper into my career, the questions have changed somewhat. Instead of "why did you leave," it's becoming more of "why do you leave so often? Did you try to work it out with your manager? What assurances do I have that you'll stay?" It's critical to have solid answers to those questions, assuming you even get in the door. Unfortunately too, I have gotten passed over several times even for an interview because of it - many employers in my region are either larger (so more traditional views on employee tenures), or very small, so looking for low-churn employees that are willing to make longer-term investments in being more of a "family." Those smaller companies also tend not to be high-growth or high-margin companies, hence why they tend towards longer-term views.

To more directly answer some of your questions, in my experience, the longer your career, the more stability you need to show. Of course this is industry and locale-specific, but at this point, my average of 1-1.1 years/position is becoming detrimental to me, and I think employers are probably looking for 2-3 years. I have, as has been suggested, dropped a couple of the shorter and less-relevant positions from my resume, both to keep it to one page, but also because as mentioned, a 6 month gap can often hurt you less than a 6 month job. It's also critical to demonstrate a track record of delivering for the client, and doing great things. You want your resume to say "if you hire me, this is exactly the type of thing I can do for you." If you're "efficient and seeking challenges" as your question indicated, make sure that you can back up that claim on your resume and interview.

Keep in mind as well the type of company you're applying at. Hiring managers at startups and big companies are going to have similar rubrics, as many of the responders below have indicated, but you're going to have a different rubric for your satisfaction at these places. Find a company, big or small, where you will enjoy the type of work you're doing, can find projects that you can sink your teeth into and really own, and also can have a good time (all the soft stuff like coworkers, office environment, etc). Make sure to find one that acknowledges your skills and type of worker you are, and can provide opportunities for rapid growth, tons of learning experiences, and a chance to deliver. Try to avoid a company where saying "I'm bored" is going to turn you into a black sheep or flight risk. Find a company where your manager is interested in your growth as a human and as a developer. And this is not to say that this only exists in startups or big companies or whatever; some startups will not have that sort of culture, and some big companies will. I wish I had the magic bullet for figuring those out - if I did, I probably would have had better luck finding places I could thrive in.

And now that I've carried on much longer than I thought I would, best of luck in your potential job search and career!