As with all types of business, search engine marketing is undergoing a big change.
The problem here (unlike some other kinds of businesses) is that the marketers don't have control over the changes - the search engines do.
The truth is that search engine marketing is changing in lots of ways, but they most noticeable change that can be seen at the moment is that Google (who are the most popular search engine and should therefore be respected) appear to favour bigger, older sites (with more content) than newer, smaller sites.
While this might seem obvious, what I really mean is that smaller sites that have been specifically built to rank for a keyword are now being overtaken in the rankings by larger, slightly more general sites.
It used to be the case that if you wanted to rank for a keyword in a particular niche (let's say 'pink wooly jumpers') you could build a site around the domain 'pinkwoolyjumpers.
com' and you'd be almost guaranteed to rank for that keyword.
Nowadays you're far better off creating a site about wooly jumpers (sticking with the example) and trying to target all sorts of related keywords.
It seems that one of the main reasons for this is that (providing your site is a WordPress site) you'll have lots of relevant internal links between your pages.
These links will create a tremendous amount of authority that simply can't be matched by smaller sites.
Another reason is that Google is trying to remove a lot of the more 'spammy' websites from its listings, and bigger sites are rarely of this nature.