If you have the budget, hire and outsource. If your money is more valuable than your time, then learn and DIY.
There’s no guarantee if the outcome would be exactly same as what you want because communication is a key in that and that can be mishandled from both of the sides (client and dev), if you want your developer to build the product as close as what you want, make sure that you’re explaining it to them in the easiest and most understandable way possible.
Try making flow charts, feature lists, rough UIs, user flow journeys, data which needs to be stored etc. Have sessions with your developer regarding these things as well and not just have them started with coding on the first day.
You can hire people to do the above as well but again that comes to what you value the most at the moment, your time or your money.
This is what I tell all my clients before onboarding on a contract with them, and I try to understand what they want first after I am onboarded.
I am already a professional web developer so I knew the skill, it all started with my friend asking me to build a web app for his uncle.
Currently it’s word of mouth and referrals, so I’m still figuring out how to build a good pipeline to acquire more clients consistently and scale from there.