Before considering doing SEO yourself, you need to plan to devote at least 1 - 2 hours daily to continuous, link-building strategies. If you don't have this kind of time, you might want to consider outsourcing it.
Even if you outsource you should know the nuts and bolts. Links aren't everything anymore.
It's an area that's full of spammy black-hat guys looking for short-term results. You can pay a lot for a quick boost and wind up with long-term mega-problems (spam, banning, bad neighborhood associations, etc).
Not that there aren't good SEOs. There are. But you need to know enough about it to know the difference, and at that point you might as well try it yourself and see how far you get.
Stay in house in my opinion. I have experience paying top dollar to one of the best seo firms out there.
They merely do legwork that you can do on your own. You will find the time if you calculate out the seo rate vs hours per day needed. If you have time to ask on this board, you can't afford it. You think they have a magic bullet for the prices they charge, but it's all an illusion.
What they tend to do is outsource the link building at a cheaper rate, so what you pay a premium for is really just the consult with your account manager, who is usually overburdened and will throw a few crumbs your way every now and again to keep you on board, like to add alt text or title tags, or menus, which who have to have your own web development staff build. [end of rant]
I agree. The hours needed for your SEO are so high and if you can do it in house you are in control of the project. What I've done very successfully in the past is hire an SEO to consult and train us in house on how best to produce the web content, it kept the price low and was excellent training.
In my opinion, you should learn to do it yourself. I hired a consultant who gave my site a temporary boost, and then earned it a penalty. He gave me all kinds of impressive reports and graphs while he was collecting my money. It took several months to figure out what he did. To top it all off, while making all of those on-site optimizations, he didn't even fix simple problems like internally linking to the homepage in more than one way.
It took a lot of reading and hard work. During that time I found out that those reports are available on many SEO sites for free. WebmasterWorld can be your best resource. When the penalty expired, my listings were better than ever. In hindsight, hiring him was probably the best thing I did to promote my website. Now, I am my own best SEO.
It really all depends on your needs and budget. In-house is usually best, but out-sourcing is a viable option if you don't have the time/budget to hire in-house or do it yourself. I would find a local (very experienced) SEO that does it on the side before I hired an agency.
I've been doing SEO professionally for 8 years. In that time I've worked in-house and agency. I can tell you that the in-house guys usually give you better results. With a lot of agencies all you get are canned SEO 101 tactics and out-sourced link building (as someone else noted).
As was also noted, links are not everything. You do need some, but I would mainly focus on on-site items first (site architecture, titles/tags, content, content, content, internal linking, and oh, did I say content). Once you've beat that horse to death and tracked the results, follow-up with some link building for high converting/high traffic keywords where you need the additional boost. Link building, if done right, is very time consuming and can be quite costly. It's usually the last thing that I work on.
SEO is not difficult, mostly it is factory work ..
Once you have your site optimised the rest is legwork and repetition, then analysis, adjustment and repeat..
I think you get a better return for your money if you have someone in house dedicated to SEO and/or business development.. That way you can set targets, get weekly reports, break down on your results etc ..
Outsourced firms will have experience but effectively can not put the boring time in that is involved, social marketing ( for instance ) you have to be patient and constant, building relationships, an outsourced firm would not put in that kind of dedication..
Inhouse - but I have never tried outsourcing, so I can't comment on that. It seems to me that most SEO techniques are well known and discussed to death on this forum and others. What is really needed is the continuous grunt work to make sure that you have checked all the boxes, and done all the needed things. It takes time and focus. When I can hire someone to do it for me, it is more enjoyable than grinding it out myself. If you have an ecommerce site with a few thousand items it is a never ending job.
You can easily put together a checklist of the basic things that are needed on every site (title tags, alt image, every page linked to, proper keywords and synonyms, etc etc etc.) and then have someone in the office grind through it.
Then you can go to PubCon and learn something new for them to do :)
It is always good to have an in-house SEO who can fix and guide/consult in all the on-page stuff. However, I think for off-page like link building; outsourcing is more effective as it is really hard for 1-2 guys to keep building links over a period of time. Instead, that in-house resource can mange the agency for off-page in a better way if you yourself do not understand SEO (or do not have time). Moreover, keep rotating agency for off-page for better results.