A statement by Alexander Stepanov has stayed with me after reading his book, From Mathematics to Generic Programming. As the inventor of the C++ STL and 45+ years of experience, his guidance comes across as highly credible. I paraphrase his advice as the following:
Write a correct program first, improve it later.
That could have several meanings but I put it like this. A computer program that does the job well despite a less graceful technical interior is preferable to one that evolves too slow to be useful but that has an immaculate technical design. Code can always be improved.
Multiple cycles of refinement is a reality. Even the largest software companies have to put patches out every couple of weeks. Regardless, of that situation, their solutions are in wide use despite inherent flaws.
People starting out fresh or pursuing a technological direction of a far less familiar kind can encounter challenges. Never give up despite how daunting a task may seem. If you can imagine the outcome, you can follow through with persistence to achieve it. Better code arises through time, patience, persistence, and a willingness to improve. What you put out reflects what is nurtured within. A better version can always be made.