“Do not waste time being jealous: sometimes you’re ahead, sometimes behind. Race is long and in the end you see that you are only competing with yourself”.

__

The reason I switched from Mechanical Engineering to Computer Science after my first undergrad year, to be short: it was extremely boring. I did not want to wait for the 3rd year to come in order  for the stuff to get more interesting. From the first two “project” courses in my undergrad I learnt zilch.

In CS program things were slightly better: some of the faculty members understood the importance of having a balance between theory, and, well, “cool stuff”. In our projects we imitated real software products, developed simple but very cool games (I still play my “warehouse wars” JavaScript game when I get bored of XBOX), learn how theory can be sometimes cool useful too.

However, one aspect was missing from my experience in all of my project / group CS courses: we were never taught to make real decisions about our own project_._ Surely, we were awarded better marks for cleaner code. But as an example, in my second year we weren’t allowed to:

  1. Write your own socket writeln/readln methods in C. Rational: too complicated, you can’t get it, it’ll be hard for us [TA] to test it. Nobody cared that the provided methods were buggy 🙂
  2. Design your own plugin system for your game: too complicated, you won’t get it, it’ll be hard for us to mark it. Well, assignment’s implementation wasn’t good at all.
  3. Come up with your own GUI: whaaat? are you insane? you have screenshots in your assignments 😛

Looks like a list of trivial tasks, but how much thinking, discussion, interaction can each single one of those promote? I’d never thought I’d have a chance to do those things at this university, but I am glad to know that I was wrong.

Not only UCOSP gave me a chance to meet my future colleagues in the field, but it also gave me a taste of what the real world responsibility is like. In short 2.5 days of the sprint I felt a lot of support both from the “old survivors” of the project and the new members like myself. I felt a healthy mix of responsibility and support.

I think UofT should consider making this course mandatory for students in CS specialist/major programs. I am sure UofT can do that. If the don’t want to, here is my why: I can confidently say that this year I learnt and will learn more about human interaction, project management, responsibility, code practices than in my 4 years of undergrad at UofT. I think that’s worth something . It’d be definitely a better investment than a second reading week in December. I don’t read on vacations.

Kudos to all organizers, mentors, TAs, and students for making UCOSP possible!

If you read until here, you are a hero 🙂

Short summary of the work done during UCOSP & plans:

  1. I concentrated on the Tickets page of Basie and on the random-data tool over these three days. I worked on & closed: 95, 90, 82, 73
  2. Started converting Alex into Linux faith.
  3. I am planning to continue working on random-data, but I will give priority to the tickets assigned to me for 0.6 Final (96, 126, 74)