Wednesday, February 27, 2013

Using projects as learning tools (the right way)

projectstart


Putting to practice what you've learned from a book or online lesson is a great way to reinforce and add application to the knowledge you've gained. But do a project is incredibly unhelpful advice. In fact, it only creates more questions.

What project? What kind of project? How big of a project? What should it do? What should it try to accomplish? What do I want it to teach me? Should it be something worth putting in my portfolio? How much time should it take me? With all these questions, the project has now become another obstacle to your learning success instead of an aid.



I have some rules for projects that you undertake during your most intense learning cycles. (I'll talk more about learning cycles in another post.) These rules are meant to keep things simple and help you maintain momentum in the learning process.

Have a specific goal or purpose.


Starting a project without a goal while you're in an intense learning cycle will kill your momentum and increase the confusion that's simmering just below the surface of your confidence. Your goal should be one thing: reinforce what you just learned.

Immediately after you've learned something new, build something that challenges that new knowledge. If you just learned how to do basic styling with CSS, attempting to build a static blog engine in Ruby is a very bad idea.

Keep them small and fast.


These projects are meant to reinforce new knowledge and nothing more. You're not building a world-class portfolio at this point. Your building experience so when a hiring manager asks you, "Do you have experience with ___________?" you can say, "Why yes, I do."

Get into the rhythm of switching immediately to project-mode once you've learned something new. Choose a simple and quick project. Build it. Save it to a "Projects" folder and move on.

Start from the beginning.


Never lose a chance to drive home the skills you've learned along the way. In the world of web development, every piece of knowledge is built on some prior knowledge. No two things are ever completely independent. Treat each project like an opportunity to review things you know well. This kind of repetitive activity will make you more and more efficient as you go along without forcing more cognitive strain to the learning process.

Don't get distracted from your goal.


The fact that you're teaching yourself web development or programming means that you are a curious person. Curiosity is almost always a great ally, except when you need to stay focused on only reinforcing what you've already learned. A reinforcing project can easily grow into a large undertaking as you discover new things to build or add.

Remember, you'll have plenty time for those things in the future, but now is the time for focus. If necessary, take a note of the things you'd like to hack on and save it for later.

Do lots of them.


The best way to learn is by doing, lots of doing. Make things often. They don't have to be big or snazzy or even worth showing to anyone. Set a schedule for doing projects during your intense learning cycles and try to stick with your schedule. Whether it's a project a day or one project a week, doing as many projects as your time and attention allows will pay off.

Celebrate.


When you finish a project, be proud of it. Show someone even if it's not meant to be a public project. If you have a buddy that's been cheering you on, send them an email when you finish a project to brag a little. Show your spouse. Put it on Gist or Codepen.io and share it on Twitter. Get up and dance a jig. Take a break and have a soda. You earned it.

No comments:

Post a Comment