During the month of September I have been learning. Learning in the most pure, distilled and effective way: By doing.
As an university student your assignments are usually just code samples. A small amount of code that implements a piece of functionality, isolated, completely out of context. That is good in order to learn isolated things.
But creating a product is not an isolated thing. Shipping a product is a coalescence of a myriad of tiny yet vital details.
That is what university doesn’t teach you. That is what working on pet projects teaches you. Enter Mendicant University.
Gregory Brown is the founder of Mendicant University(MU). The idea of MU is similar to a Think Tank. A place where intelligent people go to share thoughts and achieve greater things than if they did so alone.
From that organization a Core Skills course was created. This course is designed to make a small group (10 people) skyrocket their development skills. How do they do that? By doing.
I did a total of four projects.
A cooperative videogame where you and your friends incarnate a coven of vampires. The village that is your hunting territory is being sieged by hordes of zombies and they are assimilating all the peasants. An army of knights has been sent to defend it. But none of those are good news, since both groups will attack you on sight. Oh, and in 400 turns you will all die because of the sun’s light. Your only chance of survival is to summon the Black Sun, performing the Blood Chalice ritual. Good luck dear fiend.
WordCram is a Word-Cloud generator. That is, it creates a stylised image from a given text. The catch is that is programmed in Java. I wrote a wrapper for the original library so that it can be used with JRuby. The objective was to create an api that feels like Ruby, not java. This was one of my favourites learning exercises.
Do you know the game Liquid Wars? This is a clone of it. Two masses of particles fight for dominance in a map. Each player control one mass, using a pointer. The mass go to wherever the pointer is. The strategic part comes from the fact that a particle only hits another particle when they collide and when it dies it is assimilated and converted to the killer’s army. So you better envelop the enemy’s mass before he surrounds yours :)
My assignment was to work on the Mendicant University internal web in order to implement full text search capabilities. This was difficult because I had to work with a mature codebase that I was not familiar with. My approach was make it work on the Rails command line and then use tests to drive the implementation.
Do you see a pattern here? Besides that all those projects are done in Ruby :)
They all emphasises one phase of a product’s life.
- Initial implementation of an original idea.
- Glueing different services together.
- Product distribution and optimisation.
- Working with an old code base.
They are not just isolated irrelevant code examples. They are meaningful projects with a context. They are available, ready to be used. Can you say the same of your regular university stuff?
The feedback I got from my peers and mentors helped me to become a better developer. For that, I will always be thankful.