How much effort you want to put into your site. If you are lazy then hire SEO firm, if you are on low budget hire freelancer.
I am an SEO expert so do it myself. But if you're not then don't try or you'll endup losing everything and my get your website penalized and. and instead of hiring any freelancer for 100 - 200 USD per month, you better hire an SEO agency, but do check their current SEO project performance. Today if someone is offering SEO services for just 200 - 500 Dollars then they're making fool out of you. SEO is now an expensive process
I used to do it all myself but with health issues(I have MS) I'm now outsourcing more or focusing on easy niches/keywords and using a blog network.
SEO is a time consuming and a much patience need work..You should have patience to play with search engines..It needs much study and pressure is always there to make you depress in many times..so it depends on one's own capacity..
If you require the quicker results for your site then you should hire the SEO professionals who can offer you the quality services. No one can do your job in the much better way in the same way you cant do other work effectively. so hiring the SEO for better results would be the great idea.
I do SEO on my own as well at outsource it. I don't pay for SEO - I test the waters and find out what works and what doesn't, then develop my own unique, sustainable SEO strategies.