Two months have passed since I joined Markus in Undergraduate Capstone Open Source Project (UCOSP). I thought it was just another course, but it’s a completely different than every other one I’ve ever taken.
The most noticeable difference is that no instructor is around! In a regular course, I am told how to do stuffs. I sit in a comfortable chair in the classroom, follow the instructions given by teachers and do best I to meet their expectation. This is all good, but most students end up acquiring a subset of the knowledge the teachers have in such courses.
It’s interesting that in UCOSP there is no such a instructor who knows “everything”. We use Ruby on Rails (RoR) to develop Markus, but I never had used any programming language similar to Ruby. I had to use it while still learning. It took me some time before I figure out this difference and notice how important it is.
When I started, I got a RoR book and stick to it as if it was an instructor. I read it page by page carefully, which I usually do in a regular course. But soon I found myself fall behind than other members. The book was too much to learn. With the speed I read it, I wouldn’t finish it before this semester ends. And even if I go through the whole book, I wouldn’t have enough knowledge to go with Markus, because RoR is developing so fast that Markus uses many third-party RoR plugins that the book doesn’t even cover. This forces me to take the other approach – set my learning objectives and learn only what is needed. I learned the syntaxes of Ruby languages and get the idea of Model View Controller (MVC) from the RoR book, where concepts are well organized. Then I studied the source code of Markus myself, and ask my google and my other team members whenever I have difficulties. As I look into more parts of the project, my knowledge of RoR has grown significantly. Since everyone is dealing with different aspects, we all have different sets of knowledge. When one has a problem, it is very likely another knows the solution. We are actually learning from each other. It is a good lesson for me – after all, self-learning and learning from peers will be a major way of acquiring knowledge in one’s life.
Honestly, I haven’t been doing as good as I expected. I was not wise enough to break a big task into small pieces. When I needed to fix a small bug, I could do it efficiently, even if there were lots of technical difficulties. But when a bigger task was assigned, I couldn’t do it as efficiently, because I tried to solve the task as a whole instead of dividing it and tackle it piece by piece.
Markus project once again tells me the importance of communication. Working on a project in a team is not like writing an algorithm alone.
By now, I’ve fixed several high priority detects of the Markus project, and I’m currently working on an enhanced feature.
I enjoy working on Markus. I feel honored when users make some positive comments and when I solve some defects they report. Within the remaining two months, I believe I can fit myself better in this position and generate more output to the project.