Categories
Game Development

Interviewing: Smart, gets things done, enthusiastic, and communicative

I’m getting better at interviewing people now. What I’ve found is that Joel really hit the nail on the head with The Guerrilla Guide To Interviewing. Only two things really matter in an interview: smart, and gets things done.

Resumes only tell part of the story. Some people who come to me with excellent resumes and a lot of experience are terrible. Some people who come to me with no experience at all turn out to be great. This is because of two additional factors: communication and enthusiasm.

People with bad communication don’t get things done because they do the wrong things. By communication I don’t mean reading and writing skills, but the willingness to have one’s ideas discussed and reviewed by others. Enthusiasm means a desire to do a good job. That seems obvious, but many people in the game industry only do what they are assigned, and no more, especially those with many years of experience, although this is more the fault of the management than of the programmer. A good portion of my day-to-day management is spent trying to build enthusiasm and facilitate communication.

The reason for smart is not just that it is a good quality in itself, but that it leads to better working independence (needing less communication) because of the ability to make good decisions and see past a specification. The problem with specifications, especially over the internet, is any specification less detailed than the code itself is open to interpretation. The more open, the more ways to do it wrong. The less open, the more possible it is to get fixated on the details, and less on the result. This is part of the reason why government contracts always turn out mediocre – the specifications are exact and rigid, meaning the great programmers never have a chance to improve on it.

A day to day decision I face is how much detail to put in a specification. For example, a loose specification is “Write a class to display text on the screen.” The implementer could do anything from writing a class that only writes a single line of text at a specific location to writing a class that supports multi-language true type fonts, with scrolling, fading, and animation. They may spend a day or a week on the task, working the whole time or slacking the whole time, and I no real way to know until I see the results. On the other hand, if I give a strict specification, such as “you must use true type fonts” the implementer will likely not even think about other, better, ways to do the job, such as using fixed-width fonts that look worse in some contexts we can avoid but double the framerate.

You can’t blame someone who consistently does something according to specification because if something is missing it’s your own fault for not specifying it. At the same that person isn’t going to be very productive in the sense of making a good game.

Enthusiasm is related to independence and is important in any job, but especially over the internet. At my very first job my boss was extremely hands-off. I don’t think he checked up on me more than once a month and never did code reviews. At the time he only had 2 programmers – myself and another guy. I just got out of school, it was my first game job, and I was smart, it was a game type I liked in a field I liked, and so I had a lot of enthusiasm. So I worked 12 hour days and was happy to do it. didn’t need specifications. I just thought of what was good, and I did it. The other programmer had neither positive quality. He did nothing the entire project up until the last month it was due, and then only did the bare minimum, and a bad job at that. He also never communicated, except in anger, when I would touch his code. That is the problem with a lack of enthusiasm.

So what do resumes tell you? One thing is if a person does a lot of side projects, they are probably enthusiastic, and they probably get things done. At least when they are working for themselves. But that is better than the alternative, which is a person with no side projects at all. A new graduate who has worked on freebie games is probably the most enthusiastic. This is why EA hires new graduates – they are the most likely to take crap and the most likely to work insane hours on the worst kinds of tasks.

As Joel said, there is a great difference in the productivity of the best and worst programmers. It’s better to hire someone twice as expensive if they can do twice the work. The trick of interviewing is finding out who these people are. Interviewing is probably the most difficult and important task that faces a company.

Categories
Uncategorized

Hypernia Update

I sent a complaint to Hypernia. At first they argued with me that they didn’t do anything wrong. So I sent this email:

[NameRemoved],

Suppose you decide to strike out on your own and start your own MMOG hosting company. Blizzard hired you as a trial to run one of their World of Warcraft servers. You hire an admin, who sees the server has a problem, so he puts a new computer in its place, but doesn’t copy over or install the old harddrive or install anything except a couple of games. Obviously your customers cannot play and you are flooded with support requests, cancellations, refunds, etc. Of course you cannot give them refunds, since you don’t even know who your customers are without your customer list. You get complaints with the BBB, chargebacks, etc.

So you send an email marked “Critical” to your system admin to put the old harddrive back in, but he takes two days to do it, during which time your business is going down the tubes. At last, when you get your system back up, it doesn’t work, as it is misconfigured such that you cannot install any of your old applications on it.

Would Blizzard hire you again? Would you hire this admin again?

This is what happened to me, except for Blizzard it’s my own company and my own MMOG.

So please in the future, ask support to not take any action on the server without prior notification and authorization. The proper way to handle the situation would have been to call me and say “Hey your server is locked up, what would you like to do?”

Right now since this is just a development server I only really lost one day of work, my bug database, about $500, and 3 days of access, rather than my whole business. But to trust my MMOG with Hypernia, as I was planning to do, I really hope this does not happen again.

And the response to this

Hi,

I didn’t think of it that way… you have a very good point.

Just do me a favor and always have backups because machines are machines and they either run well or break.

I’ve credited your account.

So at least this has been resolved. Still no working server though.

Categories
Uncategorized

Getting screwed by Hypernia.net

I am very displeased with my MMOG host Hypernia.net right now. One day out of the blue I get an email saying my server was locking up, so they replaced it. The server with all my development tools and code, which took me a day to install, to say nothing of the valuable information that was on it. Nobody asked me what was on the server, or gave me a chance to copy off my data, what the correct solution was.

After two days of frantic support requests they finally put the old harddrive back, on a different mount. Because it’s an emergency request, and they claim it’s a software problem, they charge me an undisclosed fee on top of that. To say that pisses me off is an understatement. Two days time is hardly an emergency response time. How do they know it was a software problem? Nobody did any investigation that I am aware of. And I’m paying $150 a month for this thing. Why should I pay more, when I never asked that my server be replaced. Unless it was frozen for good, just reboot the damn thing, tell me that it’s locked up, and let me copy off my data or fix the problem.

Not only have I now lost two days of development access, I’ve already lost half a day of work trying to unsuccessfully reinstall everything. My apps won’t install on the new server for some reason. I think they restricted my access rights so I can’t install new applications. Without asking me, they installed two games under the Hypernia admin account, which run in the background. They waste memory, slow down the server, waste harddrive space, and are a security hole. I can’t uninstall them either.

I’m going to call and bitch about this. I expect to be credited for two days of hosting, plus no charge for putting the harddrive back, or else I’m changing providers.

Categories
Uncategorized

One month into my own game company

It’s now been about a month since I’ve hired people for my own game company and have been working on it truly full-time.

A few things I’ve discovered:

1. My initial time estimates were way off – not for myself so much as for others. I look back now at tasks I scheduled for 1 hour, and took a contractor 3 days. My time estimates were based on my own ability and knowledge, rather than that of those of the people I hired. This is not their fault though – there is always a loss of productivity with more junior programmers, as well as them not being able to read my mind as to what I want, and the master plan of the whole architecture.

2. I can’t really assign tasks according to their usefulness because of interdependencies. So some of what I assign, while not being busywork, is far less of a priority than other things that need to be done but can’t be done independently.

3. I didn’t account for dead-time, which is time lost because I spent a day setting up the server, or figuring out how to edit .mel scripts, or trying to figure out which physics engine to use and what tools I need to do so.

4. People tend to work better after they get used to your company and management style. It’s usually necessary to reinforce several times certain things, such as work hours, or no Hungarian notation, etc. After the initial period there’s no more problems.

5. You never really know how good someone is until you work with them because ‘good’ isn’t just a matter of being experienced. It’s also a matter of attitude, work ethic, attention to detail, and willingness to learn. Given the choice, I’d rather hire someone inexperienced but who will go out of their way to try to do a good job than someone experienced but who only does the bare minimum.

6. You really need to work with someone throughout the day to get the top quality results. Simply assigning a task and coming back 3 days later when it is checked in is a guaranteed way to just waste 3 days of paying someone and getting yourself annoyed. On the other end, talking to someone as they do something will not only give you both good ideas but builds up loyalty and ensures no time is wasted and problems are resolved quickly.

7. As a technical director, you really have to know pretty much how to do everything, even if you hire a specialist to do it for you. Otherwise there is no way to tell if something is done correctly or not.

8. Every day spent is more money spent. That causes a lot of stress.

9. It’s nice to think that if I do a great job on the game it will make a lot of money. I have no way to know if that is actually true, and if I’m just wasting a lot of time and money.

10. It’s very important to preemptively avoid distractions. Don’t buy / download games, keep your webbrowser closed, etc, or you won’t get any work done working from home.

Categories
Uncategorized

My first ship

I know how to use Maya now, on a very rudimentary level

My First Ship

Categories
Uncategorized

2005 to 2003 project oonverter

I can’t find a VS 2005 to 2003 project converter. This is very annoying. I’m going to have to reinstall 2003 and redo all my project changes now.

Categories
Game Development

Giving hourly pay a shot

One problem with my current business plan is that if I want things done faster, I have to hire more programmers, which costs more per month. In theory, (aside from diminishing returns), this would pay for itself anyway. Twice as expensive for half as long still costs the same amount. In practice, I have a feeling this isn’t going to be the case. One problem is that, before hiring someone, it’s hard to get a feel for how fast they are. If I have 6 months of work for myself, and hire 1 programmer, is it going to now take 3 months? Probably not. Maybe it will only take 5 months instead. Or 4. Or 7 because they take so much of my own time that overall productivity is lowered.

This is hard to budget and hard to schedule.

What is much easier to budget is if I attach a fixed maximum and minimum cost to each item on the schedule. I now know the absolute minimum and maximum the game will cost, as well as the longest it could take to get done. It also lets me hire more people with safety, because it just spreads out the same amount of money between more people, rather than costing more with no guarantee the job will get done faster anyway.

I know from personal experience I actually like this better, from both sides. When I was an hourly contractor, I didn’t feel compelled to work when I don’t want to. As a manager, I don’t feel I need to check up on the schedule anymore. Either the work gets done in time or not. As a matter of fact, I liked putting down my hours, because I was fast and I could show it. And I worked hard, and I liked the extra money I made.

To try to help this along I’m also attaching minimum hours to each assigment. If a worker can get something done faster than I could myself, and still be up to spec, they still get paid for those hours. It’s a bonus for being especially smart. The maximum is to prevent cost overruns, and wasted time on dead-ends.

This might cause a rush of half-way finished code to try to beat the requirement. Hopefully not, but if it does, no big deal. It just costs me a bit more time to day to review code.

I’ll see how it works over the next couple of weeks.

Categories
Uncategorized

Got a dedicated server

While it’s a bit early, I went ahead with Hypernia.net and got a dedicated server for development. Mainly right now it will be for source control. The price is somewhat high, at $150 a month, but this means I no longer have the security and speed problems of using my own home computer. It also means certain kinds of work can be done more easily, such as writing the webpage and database stuff, since it can all be done on the server directly.

I briefly considered using Orcsweb for source control but god what a ripoff. They charge you full-price for a Vault license, when in practice the price goes down the more licenses you buy. Then they charge a per-developer montly ($40) and setup fee, ($20) when in fact there is no per-developer incremental cost to the host, aside from a trival amount of bandwidth. At 4 developers it’s already the same price as my dedicated server and all I’ve saved is the trouble of installing SQL Express and Vault. I’m not sure why anyone would use them.

Now I’m faced with trying to figure out how to setup all the web services, such as email, FTP, security, and web hosting. IIS isn’t that easy to figure out when combined with user security rights and database security rights. Hopefully I run across someone who already knows all this stuff.

Categories
Uncategorized

Got a name for my game

Cosmic Strife.

No domain campers on the URL
Nothing else using it that I can see.
Matches my game
Easy on the ears.

Only potential problem is Sony has Cosmic Rift, which is a similar genre of game. But by the same token, Star Wars and Star Trek also differ only by one word, are both Sci-Fi movies, and there seems to be no problem there. Strife and Rift are totally different words as well so one couldn’t take that argument either.

Categories
Uncategorized

Handheld development sucking bigtime

I won’t specify which one, but I have a contract to work on a certain handheld and I have to say that working on it sucks bigtime.

1. Adding files requires editing a makefile.
2. Testing any changes requires running the makefile, then loading up an entirely different IDE, then waiting for the hardware to reset, and lastly running it (in total a 30 second process, as opposed to maybe 2 seconds to do the same thing in Visual Studio)
3. This different IDE is just aweful. First among the problems is that setting breakponits doesn’t work consistently. Sometimes it put the breakpoint on the wrong line, wrong file, and sometimes it doesn’t hit the breakpoint anyway.
4. Watches similarly don’t work right.

So I’m reduced to adding what amounts to printf lines and recompiling to try to guess why things don’t work.

Worse, the library has no documentation other than a few code comments in the headers. The comments themselves aren’t very helpful, with comments like
// Calls the Start routine for TRL
void StartTRL(void);

(Actual 3 letters changed but same scenario). What the hell is TRL? No idea. No where ever does it say what that abbreviation stands for. These kind of short abbreviations are all over the place too. In one case they abbreviated a 6 letter word to the first 3 letters, totally obscuring the meaning until had to ask someone else.

Furthermore, things just don’t work. For example, there is a connection routine which has to go through like 9 internal stages. It goes through 8 of them and then just sits there. Why? Who knows. Their sample works and I copy/pasted the relevant parts. My guess at this point is threading, because in another case if I add a delay it works, and with no delay it doesn’t get past an earlier stage.

I’m sorely tempted to just dump this contract immediately, because it’s wasting my time and taking time away from working on my own game.