Game Devigner

Archive for April, 2009

Versus Outsourcing – Part II

by Paolo on Apr.28, 2009, under Meanderings, News

“It was late 2003, and a contractor, Science Applications International Corp. (SAIC), had spent months writing 730,000 lines of computer code for the Virtual Case File (VCF), a networked system for tracking criminal cases that was designed to replace the bureau’s antiquated paper files and, finally, shove J. Edgar Hoover’s FBI into the 21st century.

“It appeared to work beautifully. Until [Zalmai] Azmi, now the FBI’s technology chief, asked about the error rate.

“Within a few days, Azmi said, he warned FBI Director Robert S. Mueller III that the $170 million system was in serious trouble. A year later, it was dead. The nation’s premier law enforcement and counterterrorism agency, burdened with one of the government’s most archaic computer systems, would have to start from scratch.” – Washington Post (Dan Eggen and Griff White, 2006).

You hear it a lot in the news when massively expensive software systems fail: The Mars Orbiter Crash, The Denver Airport automated baggage claim system.  In 1994, the software project failure rate was measured at over 30%.  And only a reduction in the size and scope (read: complexity) of projects has reduced the failure rate to 15% by 2004, that is still a stunningly high number.  In other words, one out of every six software projects are doomed to fail.  And this does not count the number of software projects that are “challenged.”  That is, a software project that is late, over-budget, and missing critical features or requirements.  That number is over 50%.

Ready to fail!

Ready to fail!

How can this be?  The answer is simple: Software Engineering is not easy.

You can never assume that the client can explain what it is they are looking for, even writing out hundreds of lines of requirements describing what it is they want. It’s completely different describing something and seeing it in the flesh.

Now, assuming that the software engineers are meeting you – the client – every week, face-to-face and speak the same language, how much more difficult would it be if the engineers were working at the time you are normally asleep, you can’t even see unless you make an overseas trip that is over 12 hours long, and whose first language isn’t the same as yours?  How many more problems, misunderstandings and delays can you cause?

Language is also an interesting factor in terms of outsourcing.  English is a low-context, highly descriptive language compared to other world languages.  In a particular study of Thailand and their software development practices in 2005, it was found that software practices that relied heavily on documentation were impossible to implement in a culture that has a high-context, low-descriptive language.  It was virtually impossible to implement any real documentation and communication of requirements because the language of the culture itself relied heavily upon a person communicating the context of it to you and not just the content.  Imagine trying to outsource to company in a culture that cannot capture requirements in a document because it lacks context.

The break-neck speed and intensity of game programming doesn’t lend itself to much room for error.  In some ways, it is like modifying a rally car in the mid-motion while it is racing around the track.  And if you have to stop and explain the difference between “taking a break” and “taking a brake” to a fellow engineer, that may be the crucial difference in what splatters you all over the race track or wins the race.

Leave a Comment :, more...

Versus Outsourcing – Part I

by Paolo on Apr.26, 2009, under Meanderings, News

Ganesha's Arms help him code faster than you.

Ganesha's Arms help him code faster than you.

Ryan Henson Creighton of Untold Entertainment posted an article on freelancers versus outsourcing to India.  He had this awesome picture and caption of Ganesha that I had to duplicate it on my blog.  The gist of his article was lamenting how a team of outsourced programmers can create tons of “top-notch” websites for pennies on the dollar compared to their western (read: expensive) counterparts.

My hope is to dissect this fear one piece at a time in a series of articles and reasons why not every computer job or freelancing gig will suddenly find itself in India.

Firstly: Computer Programming is NOT based on the factory model.

A lot of software engineering practices and models of operation seem to base themselves on the theory that computer programming is like a factory model that can be scaled with more labor.  This is a horrible analogy, but this meme is unfortunately repeated by many management teams across the software engineering landscape.

Probably one of the best and most accurate analogies of software programming comes from “The Mythical Man-Month.”  Programming is more like a “surgery” table than it is a factory.  Most complex systems act like a body with all its moving parts working as a whole.  And because a program works as a whole with all its moving parts, there is only a limited number of things people can be working on at a time – much like having too many surgeons working on the same person on the operating table.

This is the first place that you find that you cannot simply purchase more people and solve a complex problem quickly.  In fact, having too many people may slow down the process rather than speed things up.

Secondly: You can’t outsource talent.

Now taking the surgery analogy further…  Would you outsource your heart surgery to someplace cheaper?  Does a cheaper doctor mean you will have a better surgery?  People will not buy things simply because they are cheap.  Depending on how much they value of the end product, people will still pay top-dollar for a good result.  “You get what you pay for,” is very true in this field, and I have heard a few stories from freelancers who have had to clean up or redo messes made by outsourcing.  The fact of the matter is that people will pay for talent.

Dr. Evil

Dr. Evil

The reverse is also true in that talented people will not price themselves cheaply.  Why would a highly-skilled and talented person in India not charge equal to or just under their more expensive counterparts in the West and live like a king with a lower cost-of-living?  A person of a certain skill level will not undervalue themselves in the market.  To quote Dr. Evil, “Why settle for millions when you can make billions?”

So unless you are developing a computer program that easily fits under the mold of “easily replicatable” like some sort of template that you can replicate a million times over, I don’t see outsourcing as necessarily the best choice.

And if anything… GAME PROGRAMMING does not fit this category.

3 Comments :, more...

10,000 Hours

by Paolo on Apr.23, 2009, under Meanderings, Reviews

My day starts kind of late.  I wake up at about 8:30 on the couch.  My youngest son is usually wrapped around my arm sleeping cozily and I gently let myself out of his grasp to take a shower.  I get ready for work, kiss my wife and eldest son good-bye for the day and head to work.  I usually work from 9:30-6:30, but typically in a week, I go till 7-7:30 at least once and even take home some work at night like tonight.  I am also on 24/7 support call rotation because our installations are critical systems.

As soon as I get home and have a bit for dinner and some conversation with my wife, I spend some time with my sons, usually wrestling, sword-fighting or playing some video games together while my wife catches a break and does some cleaning up.  I bathe my sons and put them to bed.  My eldest usually goes to bed around 9:30-10:30.  My youngest usually sleeps at about 10:30-11 because he’s had multiple naps during the day.  If I’m lucky, I get a chance to spend some time with my wife before she heads to bed around 11:30, unless she is tired and sleeps early.  My wife has the toughest job – taking care of us, the house and they yard all by herself, so I’m more than happy to take care of the kids at night.  Especially because I’m a night owl and I have learned how to sleep in less than a blink of an eye.

My Saturdays are spent with my boys.  I take them to the park, to museums, or exploring in the backyard while my wife has some time alone to catch up on chores that are difficult to do with small children underfoot.  My Sundays start with going to Church and my sons and I play some more, but on a more relaxed pace than a typical Saturday outing.

As it is, my days and weeks are typically very busy.  Making time to be social with friends is already an ordeal because my wife works pretty hard to take care of me, the boys and the house and I understand that leaving to see friends is imposing more time on her on top of unfinished chores.  Even more difficult is making time to go on a date because we have to find and pay a babysitter to take care of our two small rambunctious boys and we fall even further behind on chores.

Any reasonable person would say that what I have is enough.  It already is a full-load and there isn’t any reason I should want more.  I have a beautiful wife, two healthy growing sons, a good job and we live in a great neighborhood.  Why should I pursue more?

Because I cannot not pursue my dreams.

Ever since I realized that I could punch lines of BASIC on an Apple II+ when I was 7 years old, I’ve wanted to make games.  And I’ve grown tired of making excuses why I can’t make them:

  • That I’m not smart enough.
  • That I don’t have the right education.
  • That I don’t have the right game programming book.
  • That there is some secret technique that I don’t know.
  • That I lack talent.
  • That I lack skill.
  • And most of all, that I lack time.

Now, with a typical week like I described above, when did I make time to work on my own projects?

From about 11PM to 3AM every night, I work on my own projects.

Sometimes it is take-home stuff from my day job.  Sometimes its my own game projects or freelancing job I picked up for extra cash to pay off some debts.  Sometimes it is my own art work.  But more often than not, I am working on something in the middle of the night.  Around 2-3 in the morning, my youngest son stirs from his sleep and calls for me to comfort him.  So I hold him for a bit to let him settle down.  And more often than not, I don’t make it to bed.  I fall asleep on the couch with him and wake five hours later to my beautiful wife gently shaking me, and to the aroma of coffee close behind.

I am told that to truly be successful, you have to put in at least 10,000 hours of blood, sweat, and tears into it.  That is the difference between the merely pedestrian and those that the world would call a “genius.”  If that’s the case, then I will have to manage to put in that time now.  Otherwise, I will never realize my dreams.

I am often asked if I should be catching up on sleep.  What I love to say in response is, “I could either be asleep and be dreaming or I can be awake and be building them.”

Above all, it is most important to remember that no dream is worth building without being able to share it with someone.  I must accomplish this without compromising that which is truly important – my wife and children.  This is why I wait till everyone is asleep before I do my damnedest.

If you think 10,000 hours is just too much then you don’t want it badly enough.  And don’t begin to tell me that you can’t find the time.

9 Comments : more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Blogroll