Sunday, March 4, 2012

Subordinate Role Project – Implementation Phase

Hello! As promised, I’m back here to talk about the Implementation Phase of the 2nd Project.

First of all, I forgot to mention in my previous post that I volunteered myself to be Team Leader for this project. Since I have never done this before why not give it a try, at the end of the day we are here in school to try and learn from our mistakes (and experiences). So, my remarks from this experience were: I think I did a pretty good job being “the boss”; I was on top of things, keeping track of everybody’s work, sending communications constantly, requesting opinions when there were group decisions to make and programming my auto-assigned tasks.

On the personal side, there were a couple of things I need to work on (and I guess years in the field will help me with them). First, I need to learn to balance loads better, because especially when we were in the Design Phase I ended up doing more work than the others, but it was my fault, I happened to split the tasks that way. And second, I need to learn to rely or trust more on other people's work, because most of the time I ended up reviewing my teammate’s work just to check if things were right. This is not a big issue for a small project like this one, but when going large scale one cannot handle everything.

Now, regarding the Implementation Phase, my team was handled the Bucket Design. The Bucket Specification given by Keenan requested a Data Structure that could manage “Buckets of Items”: each Bucket should keep track of the Items contained in it, and each Item should know all the Buckets where it is contained.


It does not seem too complicated, right? Oh boy, I was in for a treat! I am talking about how different I could have designed a solution for this problem if I had been the one in charge of it (taking into account I come from the gaming programming side, not the software engineering one). To this day I still ask myself the following question: How do you go from the specification pictured above to the design diagramed bellow?


In  my  particular  case,  the  most  difficult  part  was  digesting  such  a  complicated  design  for  the  simple problem we were trying to solve. I do not know if it is because I always try to go the simplistic route first (complex stuff gets obfuscated in my head most of the time), but I think my mind had (and it is still having) issues trying to comprehend the reasoning behind such a complicated design.

I think this conflicting situation might be because I have a game-oriented programming mindset, therefore  I  usually focus on performance and straightforwardness rather than applying Software Engineering 101 Best Development Practices, and not by accident the given design was elaborated by a Software Engineering Student. Looking on the bright side, at least I got a chance to review and implement Hash Maps, which I had not used in while.

That’s how things worked out for this project. Stay tuned for details on Project Mayhem (3rd). Adios!

No comments:

Post a Comment