You can do the SEO by self. But the on page SEO seems to be taken care of by many CMS and their plugins. You just have to spend few hours tweaking things around. However off page SEO that involves brand building, link building and the reputation management may require external agency. And for that it's better to outsource because if you try to that manually, you'd end up spending a lot of time. And you may not even able to measure the results as you have no strict turn around goals for each task. And even if you have it, it'd be harder to measure the progress as it is.
Based on what I am following these days.
1. Pay attention to your keywords.
2. Get backlinks through guest posting and forum posting.
3. Make sure to write quality content 700 words helps usually.
4. Make sure you build social media persona and promote your content. That also helps with link building efforts. Like if someone likes your article they may refer to the link on your site from their blog post etc.
5. Meta description for the website and article using the SEO options in your CMS definitely helps.