I make a list of the type of company I want to work with (I want to be paid $X, they should use this technology, I want to solve this problem or work on this project) and then I backtrace it and figure out which companies match those criteria.
Then, I contact those companies. I set up meetings when I can. My goal is to learn:
* What sort of projects they work on
* What challenges they're facing (geez, our biggest client needs _IDEA Z_)
* What skills they look for in new hires / freelancers
* Other companies in the area / tech / market
When appropriate, I tell them about my background and skills and ask who I should be in contact with to learn when new opportunities open up.Then, I do two things
If they mentioned a huuuuge problem / pain point they're facing, I send them a follow-up email talking about the problem they mentioned, what I can contribute to solving it, and suggesting a time for another meeting.
I follow up with any other companies / people they mentioned and set up a quick coffee meeting.
Periodically, I'll check in with my contact. Nothing spammy, just an update about something relevant to their industry / problem.
Rather than fight over the same jobs that everyone else sees on 37Signals / Reddit / GitHub / HN hiring / Craigslist / LinkedIn / Etc, I want to be at the top of mind with the companies I want to work with.
Every job I've had — salary or consulting - has come from someone inside of the company calling me up, telling me about a position they have, and asking me if I want to interview. This bypasses the slog through submitting a resume and fighting against 20+ other candidates for a position. This gets me the positions I want working on the problems I want to solve.