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.
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.
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.
It applies to basically everything, yes :) Since my blog is focused on React I talked about how to apply it to React.
I debated calling it "Learn UI Development with Copywork" or something broader like that, but I think people have an easier time identifying/benefitting from a thing when it fits their circumstances more closely.
Yeah I'm not sure the parallel drawn here between art and webdev really holds up.
It's basically "learn by building things" which isn't particularly insightful or novel. I'd argue that building something close to what you are invested in / care about is the key element of any learning process.
No, it's "learn by building things" with a very tight feedback loop.
When copying, you can immediately see where your expert has done something differently from you. And you can either learn to do it their way, or understand how different methods lead to different outcomes, and so consciously build your own style.
Building your own things is absolutely valuable. But for the people who are stuck thinking "I don't know what to build" or are overwhelmed by having to design the app and the features and the UX and simultaneously learn a new framework (React/Angular/anything really), it can be helpful to isolate just the "React" part of that learning experience by copying something that already exists. It reduces cognitive load, and focuses the expended energy on one specific learnable thing.
It's the difference between "build a social network app" and "build Twitter." The former could be anything. There are a ton of decisions rolled up in "a social network app."
I guess an analogy might be, learning woodworking by building a tried-and-true beginner project vs. learning woodworking by building a custom-designed archway. Sure, you'll learn a ton with that archway, but maybe start with the easier thing, to learn the tools and learn how to measure and cut. Then go build the archway.
I started my career in front-end world with similar ideas, and copied couple of websites (mostly markup and css). So, while I can agree that it is a good thing to put into your portfolio in the beginning, when you are closer to some middle level, I can't really recommend it.
What does it show, when you just have copied websites in your portfolio? And what is the problem to _almost_ copy (e.g. create a twitter clone, but allow to use only images, or some other limitation)?
So I believe that one should be inspired by existing solutions, but don't copy it blindly. Don't know nice colour scheme? Just go to bootstrap and copy their colours; or simply get it from a website, which design you like.
Yeah, to be clear, I'm not suggesting that anyone copy other apps and pass them off as their own, or even include them in their portfolio.
This isn't copywork in the sense of "I don't know how to design so I'll copy Twitter's design"... it's more like, "I don't know what kind of apps to build to get better, so I'll copy an existing one for practice."
The goal is not to copy something and pass it off as your own work. It's an exercise to learn how to think in this technology in a way that's not just another todo app or whatever. You use what you learn to actually build something that can go in your portfolio.
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.
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.