For the first couple projects, I tried to match the examples. As I have progressed, I have started to put my own spin on things. The pseudo danger in this approach is that I have found myself struggling with the pizzazz (which has made me spend much more time that I needed to on a project). The only real problem with this is that I find myself getting frustrated with the project, even though, it would have not been (as) frustrating had I just copied the example.
A good example of this is the calculator. I thought it would be cool to replicate one of the first pocket calculators made. However, the calculator had some odd functionality that I couldn't figure out how to replicate (but a spent a bit of time trying). Also, I thought it would be cool to have the readout look like an actual segmented display, so I spent a while working with a couple of different APIs. I spent a load of time trying to figure out how to get the APIs to behave, and became kind of fed up with the project. In the end, I scrapped the use of the APIs and changed the calculator to be more inline with the example than what I had planned to do.
I still plan to put a spin on things, but I am trying to temper that with getting through the projects.
think that after I have finish the Front End part I will revisit some of the projects that I know need updating. I figure that I will be armed with more knowledge and experience to identify and implement ways to make the projects better.
I think that it is good to push your boundaries, but I think that striving for perfection may not be the best idea -- it can cause one to lose sight of the point of the project (however, if you are learning something, then maybe it doesn't much matter).