Friday, September 21, 2012

Assignment #2: Perforce Branching

As this is my first experience with SCM and version control, I was really eager to see how the end result would be at the end of the assignment, specially after I had branched the project and merged it later. To be honest I was very skeptical about this branching and merging processes. It used to seem to me very complicated, and very subject to error and mistakes. But to my surprise, Perforce handled it quite well. I really liked the Merge Tool. It's as if it has a brain of its own, knowing which lines of code to take from which source -- absolutely amazing!! However, it's very important to always revise what it's doing to make sure there's trouble later.

I really enjoyed this assignment, even though that its programming tasks were made up just for the sake of practicing, but it still served as a good exercise for those who want to review their C# knowledge.

I'm excited and looking forward to put this C# and Perforce knowledge into practice, both in later more difficult assignments, and also hopefully real-world experience.

Wednesday, September 12, 2012

Assignment #1: Reflections

The first assignment for this class (the Fibonacci program) was very easy and fun to write. I know it's just a warm-up assignment to make sure that our development environment is properly setup for the next bigger tasks. For that I had to do a lot of things.

The major issue was that I'm always using Linux as my main operating system. Through out the past two years, it was very rare that I had to boot into my Windows. This term however, I will have to use a lot of Windows technologies for my classes, such as XNA, and Visual Studio, and hence I had to start reusing my installed Windows that I haven't touched for a while. Everything was out of date. A lot of Windows and other software updates had to be downloaded and installed. It took a while, but I got it done. Still I have to say I miss my Linux.

My background is not computer science. I used to work as a telecom engineer in a big mobile-phone network operator. I have seen many problems related to outsourcing throughout my time there. The company partnered with very famous Chinese, and Swedish vendors and a lot of local contractors. The customer-vendor relationship was almost always bad, specially in my culture, the customer always speaks from a higher level, and becomes very demanding. Justifying this by saying "We're paying you money to get what we need done, done. Just DO it!" This caused a lot of problems and political issues between the upper managements of the involved companies, and sometimes, the employees had to pay the price of that poor communication and management between those companies.

The telecom field involves not only office work, but also a lot of field work, which requires a lot of resources and man power. Specifying the desired requirements and achievements in the telecom industry is very hard, and achieving them is a lot harder, since there are a lot of factors involved (government issues, health & safety issues, external interference, competition regulation laws, ... etc.)

In the software industry however, I always thought that it's a lot easier to handle such issues, since any software can be said to have either met its requirements and specs, or not. But after attending the first class, the same problems seem to exist everywhere. Maybe at a lower magnitude in the software industry, I'm still not sure. I will have to find out!

Learning about those problems and how to avoid them, while I'm at the beginning of this big career switch of mine is really something very interesting and hopefully very rewarding later on.