Learning more about learning
[themediocreprogrammer.git] / chapter06.md
index 65ea2502bf2b5cf422b46378a99478046c7f3bf5..c8a2fcd79a3f5b8b95f7a2debf1bdae2d55d722b 100644 (file)
@@ -14,3 +14,11 @@ Programming requires flexibility. It's difficult to just learn one way of doing
 Instead of learning specific methodologies and technologies we programmers are better served by learning how to learn. That sounds simple: once we've cracked how to learn effectively then we'll be set. Unfortunately there isn't currently a foolproof way to learn that works for all people. Different folks learn better when different things are emphasized. Some learn better in a classroom while others learn best with self-directed study (books, video recordings, etc.). If you have the luxury of trying several different methodologies for learning I would encourage you to take them as much as you can. Figuring out what works for you will be key to helping you progress and grow.
 
 For me I've found that some simple principles work best for me. The first is repetition. I learn better when I continually do something over and over again in small chunks. The second is having a small goal that I can achieve. So for me having some daily practice time on a project where I can see the end goal works best for me. When I was learning Python I enrolled in PyWeek, which is a one week game programming sprint where the theme is announced near the beginning and all programming happens during the week. For that entire week I devoted time to completing a game, and by the end of the week I'd learned more about Pygame (the library that I'd used) and Python than I had in the weeks leading up to PyWeek. Doing a one-week game jam (as they're currently called) is a bit extreme but it gave me a clear goal (a game) and a time-frame to accomplish it (one week). Over the years I've learned more about Python with various projects (both for myself and professionally) that had clear end goals.
+
+You'll need to experiment to see what works best for you. The underlying principle is that your learning process should be something that you can do for any language or concept in programming and that it offers the least amount of resistance to your learning. Your ability to learn and be adaptable will be vital to your experience as a programmer so understanding your learning process and what works for you will help in this process.
+
+At the very least set aside 10 minutes per day as a container (see previous chapter) for reading and learning. There's a lot of information out there and having the habit of small doses of input will help you keep up a bit. But also keep it small. A lot of information can overwhelm you into thinking that you can't possibly learn it all. You're right - you can't learn it all in one sitting. If someone told you to drink one of the Great Lakes in one sitting you'd be hard pressed to complete the task (note: please don't attempt this!). If, however, you took one glass of water and drank it for 10 minutes per day you'd start to make an appreciable dent in the water. (Sure, it might not look like much on the outside, but that's the junction where metaphors and reality break down).
+
+Each day you have an opportunity to learn more about the realm of computers and computer programming. Taking a little bit each day to learn a little bit more will help you on your journey.
+
+## Practical learning