Wednesday, July 13, 2011

Game development vs. Web development

As a reader of Hacker News, I have to say that the substantial majority of the content seems to be aimed towards web developers. I don't think this is on purpose; I think it just reflects the current state of technology.

For the last few years, even the last decade, we have been in a boom as far as web technology goes. The advancement of the state-of-the-art in software development, combined with the browser wars and subsequent arms race, has created an amazing array of technologies so advanced and comprehensive that Microsoft has chosen to base the GUI toolkit for Windows 8 on it. We have a range of programming languages and servers to choose from, combined with a huge amount of functionality on the client end thanks to innovations like HTML5, WebGL, and CSS3. This means we can now create real solutions to real problems using both client and server side processing in the browser. Where once there would have been dedicated terminals and a centralized mainframe, companies now use a web server and web-capable devices.

Games continue to push client hardware to the very edge, but games have also become a significant part of the web. Online game companies such as Popcap and Zynga command huge networks of players in online browser-based or flash-based games. Despite this, client-side games are still very popular, and when it comes to squeezing the very best out of hardware, native games still beat out browser-based games.

Game development as a profession is traditionally very desirable to young programmers. I may be over-generalizing, but the dream of most young programmers is to make it big creating games for studios like Epic, Bungie, and Blizzard. The reality is somewhat different. The industry has been rocked by reports of substandard work conditions and huge studio break-ups.  Because game development is such a desirable job, it is widely seen as an easy market to recruit new programmers in. This leads to problems like high burnout rates, high stress levels, and high staff turnover in some companies. I myself am at this stage as far as game development goes; the reality of long days and low wages has left me feeling burnt out and tired of game programming.

Web development is also a bit of a rock-star profession at the moment, because of the success of consumer-focused online websites, especially those in the social web space. Companies like Facebook, Google, and Microsoft are ready to pay top dollar to top-end web developers so they can compete head-to-head. At the same time, small scrappy startups are trying to offer developers a share of the pie and the chance to make it big, in exchange for long hours and low wages. At this point in my blog post, the two types of programming are really starting to sound very similar.

I guess in the end they are both similar professions in terms of the pressures applied to individual programmers. In reality to be doing anything at the extreme (and interesting) end of the technology spectrum, you have to be willing to compete with others by taking on risks like pay cuts and high-stress positions. In the end both high-end game developers and high-end web developers working with the latest technology both pay the price for their passion.

I sort of started this post aiming to let off some steam about how game development sucks because of the pressure and conditions (not that i'm really in "game" development), but i guess in reality, anything that pushes the boundary is going to come with high pressure. Competition is created by the mass of programmers who want to be challenged, who want to push themselves further. I suppose in reality, there are highs and lows in all sorts of development and programming, and in end end no matter what sub-field you choose, you will still get the full range of experiences, both the highs and the lows.

In then end, it's all just part of being a developer.