Clean Space - Introduction
All my life I’ve dreamt of writing a game. Not just any game; one game in particular. The subject of countless hours of daydreaming, theorycrafting, brainstorming, and outright planning. For a long time I put off this endeavour, all too aware that one should never undertake a project of the magnitude I intend for my game, as their first game. I’ve glimpsed at the possibility of game development from afar whilst growing my skill and experience as a Senior Software Developer. At long last, it’s time to act.
I’ve spent far more of my freetime than I care to admit playing games of all forms, from shooters, to 4x strategies, to RPGs. Over the last 25 years or so of playing games, I’ve marvelled at the technological advances and admired the creativity of game developers, but more recently witnessed a severe decline in game quality.
Since discovering clean code, I’ve been a strong advocate of best practices, principles, and patterns. I spend large portions of both my free time and work hours teaching people how to improve their code, ever refining my own skillset. A common observation is that not only game development, but software development in general is easier than ever before. Or so you would believe given the ever growing influx of junior developers.
Whilst anyone can code, that’s not to say anyone should code.
This is something I’ve often said, though actually isn’t something I mean. The provocative nature of this phrase is a useful entry to a discussion regarding the quality of software. As Uncle Bob describes in the letter, the exponential rate of growth regarding the number of software developers, places an evergrowing deficit on the education of developers. Sure, newcomers learn sufficient syntax to do harm, but almost never learn what’s truly important.
As described in the afore-linked article, I have absolutely no doubt that, one day soon, software developers will be responsible for a massacre. Mistakes already make the news regularly, and clean code by no means makes you immune to bugs. But, if you combine clean code, with good devops and good development processes, with motivated, collaborative teams, you afford yourself the best possible protection. Certainly, the fuller explanation is a little long winded compared to that opening phrase.
Therefore, my intent is twofold. To write the game I’ve always dreamt of, whilst examining and tackling the issues that face game development. I want to lead by example, following an Agile development process, utilising devops, and writing my code correctly.
With my excuse for a mission statement out of the way, it’s time to dig into the detail. Check back for updates; the next article will describe, at a high level, the game itself.