Real World Application of Patterns: Working on the Wiki [ARCHIVE]

by Isaac Sanders

Since the beginning of June I have been working with EdgeCase. I have read books like Apprenticeship Patterns by Dave Hoover and Adewale Oshineye and Pragmatic Thinking and Learning by Andy Hunt. I have been working on JRubyConf, by reaching out to user groups and working on the website. I have done some programming along the way, but I now have a new and exciting project ahead of me.

I am working on a wiki, the challenge: it will not use gems. I will use this to record the things I have learned and the thing I will learn, keeping track of books, ideas or other things that I hear about. I will open source the knowledge base for others on GitHub. I think that this tool will become invaluable moving forward in my apprenticeship. This project will allow me to practice a few key patterns, such as Breakable Toys, Record What You Learn, Read Constantly, and Expand Your Bandwidth.

One of the best ways to learn is by failing and learning from it. If an apprentice is in a postion where they can not fail, or if failure is not part of their timeline, the may need to take on a pet project to play with. This will allow them to develop their skills, and give them an outlet to fail, with no skin in the game. This can be anything the apprentice can think of. A game, an app, or a plugin for their favorite app are all acceptable, the only requirement being that one has fun with it.

My Breakable Toy is the wiki. It will not be easy to build it, but I know that I am having fun working on it. I am building it without gems or test/unit, and it is test-driven, so I have learned about rake tasks, and written one to run my tests. I know that I can do this, but I have no illusions that it will take me plenty of time. This is my Toy, and I can make it, or Break it.

As the most overused quote in History classes goes, those who fail to learn from history are doomed to repeat it. That is exactly what you can avoid when you Record What You Learn. An apprentice would use this pattern when they begin to feel like they are returning to the same lessons. When the same issue returns again and again, and they solve it, from scratch, multiple times, then this pattern becomes the solution. The apprentice must find a way to record the things that they learn, the answers to problems that they regularly encounter.

Part of using this wiki will include solutions to issues that I commonly encounter. When there is an idiom in a language that I always need to look up again, it should go into the wiki. Whenever I have an issue, I will be able to access this wiki and add the issue and solution, so I can use it the next time such an issue arises.

As an apprentice, I have learned a lot from reading. The knowledge that I have had passed onto me is important to my future. I started Russ Olsen’s book Eloquent Ruby this past weekend, and it has already changed the way that I work with code. Listing books that I want to read and keeping notes on the ones I have read is a way that I will never be at a lack of reading material. This will aid me as I Expand My Bandwidth.

An apprentice needs to be able to increase the amount that they learn at least once in their season as an apprentice. By turning the learning rate up to 11 (on a scale from 1 to 10, 10 being fastest), they are opened up to a whole new world. The wiki will be an integral part of this.

I am extremely excited for this project. It will take me past my current level of knowledge, and I will make it. As always, I would love any feedback at isaacbfsanders AT gmail DOT com.

blog comments powered by Disqus