If your goal is only to learn, then write clean code. But if your goal is to build a successful business, then stop trying to impress your heroes. Learn as you go. Be messy. Don’t use new technologies. Don’t use new languages for their own sake. Don’t waste time trying to think of the most elegant way to break an egg. Just smash it on the counter and leave a FIXME: comment and move on. The only question that matters: is this app fun or what?
This is the correct order in most cases: Useful or fun first, elegantly written next.