I learned React Native by copying the PGA Tour's live scoring app for my group of golf friends -- we'd run weekly tournaments (there are about 20 of us), but we only would ever find out who won when we got back to the clubhouse. Whelp, now we track our scores on the course and have a live leaderboard just like the pros.<p>One tremendous benefit was that it made it so easy to focus on just the "learning part". With a clear example I was trying to copy, it was surprising how much easier it made it to know what exact "target" I was trying to achieve, and to slowly pick apart all the things that I didn't yet know. "Hmmm, when you click the player's name a sub-view scrolls down to reveal hole-by-hole details.... ummm.... so how do I animate things?" And on and on. Often when learning some of this stuff, you have to kind fight your way through the weeds, and it is oh so tempting in these side projects to then just change the spec all of a sudden. Trying to copy the app kinda held my feet to the fire many times, and gave me the persistence to fight through it.<p>The other benefit was that since I was learning by copying a polished and well-thought out UX/UI, every step of the way felt like real progress, and not just like I had spent all of this time grokking this thing only for it to look/feel like shit.