Our business thrives if we make entertaining virtual worlds for young people, but our game designers and creatives think that writing AS3 and Java is hard - and they're right. Your job is to build the tools that other developers will use to create entertaining virtual worlds.
At the centre of this tool kit is our GAML (Game Application Markup Language); the language we've created for the purpose of simplifying the creation of virtual worlds, quests, and games. An example GAML snippet is attached below.
We call this bottom up programming - we're changing the language to suit the problem. As we're writing a program we may think "I wish GAML had such-and-such an operator." So you go and write it. Afterward you realize that using the new operator would simplify the design of another part of the program, and so on. Language and program evolve together. And when language and program fit one another well, you end up with code which is clear, small, and efficient.
Creating the tools other developers will use to build entertaining virtual worlds
Working in a small team building a scalable Platform for multiplayer gaming
Creating and maintaining a single code base that underpins all our Virtual Worlds; no forking or branching. Forking code for each project is a fast track to maintenance hell.
Creating modular components with defined extension points and, where possible, backwards compatible APIs.
Ideally extensive ActionScript 3.0 & strong Flex experience, however great development and design skills are more important.
Solid knowledge of a server side programming language, we use Ruby on Rails but others are acceptable
Knowledge of Java beneficial
Would love to see candidates with Erlang, Scala, Scheme, and Python experience!
Have experience writing unit tests and testable code
Ideally have contributed to open source efforts
Very strong programming qualities, especially in ActionScript 3.0
Demonstrable knowledge of programming principles, preferably by a degree in computer science
You aim at delivering clean, high-quality, efficient & elegant code
A believer and promoter of continuous integration
Understand how to work in a group source control repository and the appropriate branching and tagging strategies