Friday, March 6, 2009

Working from home - a game-programmer's perspective

What does it take to work from home?
The first thing you need is to know C++. Don't even bother if all you know is VB. Some other languages are becoming popular like PHP, Python, and even C#, but these are more of an exception than the rule.

Obviously you need a PC and unfortunately a Mac won't do. Rarely will Linux work either so you are normally stuck with Windows. Then you need a compiler: often compilers come with your specialized hardware. Then you need the hardware that it takes for test like an XBox360, a Wii, or whatever. These boxes are not the commercial ones, but specialized hardware that usually have their own compiler and libraries. Your employer will have to give you one.

Discipline

Are you disciplined enough to work from home? This is the main problem with working from home that many programmers cannot grasp. It seems as though when you do program something at home, it goes so smoothly. This strikes at the crux of the problem which is the integration and testing aspects of game programming.

Most employers rightfully assume that programmers have a hard enough time getting out of bed and rolling into work by 10, that relying on them to get out of bed and do more than turn on their computers and log onto the network is nigh impossible. This is because most gamers come from university of in some cases high-school and when they arrive at work, they are little more than their parents "little boy."

Why can't I work from home? It's all just twiddling bits, right?
It is true that at some level, all you are doing is twiddling bits. Still, the act of engineering a game is a lot more than that and involves bouncing ideas off other people, white board sessions, some form of XP, and working with other people. Working alone is only possible on small indie titles anymore like Tower Defense and a mod of Breakout.

This is because the current complexity of most games makes game programing best done as a group exercise. People working alone on games is a rarity these days given what people have come to expect from interactive entertainment. You would be special indeed to be able to create the tools, audio, graphics, animation, gui, networking, gameplay, user interaction, and so on required for modern games.

Theft of IP?
Another major consideration is theft. Large companies, in particular, are worried about employees stealing their code. The comedy of this situation is that all code is basically just text and many solutions are commonly available on the internet as freeware or just part of a blog. That doesn't stop the paranoia nor this strawman argument from pervading the internets and employer consciousness.

Manufacturer Hardware Requirements
Often the manufacturer of a particular piece of hardware (PS3 for example) demand a strict control over hardware. This means that a game programmer probably can't work from home in these cases.

So what can you do?
Sign an NDA with your employer to address the theft issue.
Come into work a few days per week.
Conference calls are available.
Talk to your IT staff and get yourself on remote login because you need to respond to email and be able to checkin code.
Collaborate through good communication mechanisms like design docs, Freemind, and other ways of sharing docs and Ideas. Google docs isn't bad for this sort of thing.
Hardware control can be maintained by showing up at work with your XBox or PS3 once per week and provided that your employer can obtain a hardware control exception, you should be able to move back and forth between your job and home. Unfortunately, this hardware is usually heavy and may be a bigger pain than it's worth.

No comments: