{"id":72,"date":"2007-01-26T14:28:45","date_gmt":"2007-01-26T04:28:45","guid":{"rendered":"http:\/\/www.doolwind.com\/blog\/?p=72"},"modified":"2007-01-26T14:28:45","modified_gmt":"2007-01-26T04:28:45","slug":"are-game-programmers-good-enough","status":"publish","type":"post","link":"https:\/\/www.doolwind.com\/blog\/are-game-programmers-good-enough\/","title":{"rendered":"Are Game Programmers Good Enough?"},"content":{"rendered":"<div style=\"text-align: left;\"><a href=\"http:\/\/www.doolwind.com\/images\/blog\/programmersgoodenough.jpg\"><img decoding=\"async\" src=\"http:\/\/www.doolwind.com\/images\/blog\/programmersgoodenough_sm.jpg\" alt=\"\" align=\"right\" \/><\/a>Computer Gaming Weekly released their first 100 magazines for free download on the net a while back.\u00a0 I was reading through the first issue (November 1981) and I stumbled across an article containing a section entitled \u201cProgrammers: Are They Good Enough\u201d.\u00a0 While this is a nostalgic and interesting read, it begs the question: 25 years later, are programmers good enough?<\/div>\n<p><a href=\"http:\/\/www.doolwind.com\/images\/blog\/programmersgoodenough.jpg\">Read the article here first.<\/a><\/p>\n<p><strong>A bit of background<\/strong><br \/>\nGame programming is one of the hardest forms of software development I\u2019ve worked on.\u00a0 From my experience, most poor saps can\u2019t even program, let alone create complex games.\u00a0 I used to work as a business applications programmer and I\u2019ve found that games have one particular ingredient that makes them far harder to develop than most other apps.\u00a0 That ingredient is \u2018fun\u2019.\u00a0 You can\u2019t easily measure it, set up a list of requirements nor do test cases to make sure it\u2019s there.<\/p>\n<p>Another area to discuss is languages.\u00a0 The article talks about Basic and Assembly, and thankfully we\u2019ve moved on from these horrid things.\u00a0 While it\u2019s great fun to hack away in close to machine language, the fact we have much higher level languages means we can spend more time making the game, and less making the computer do what we want.\u00a0 Many people believe that C++ is old and useless; however it\u2019s still the best choice for making games.\u00a0 While it\u2019s better than assembly, it\u2019s still quite low level, allowing us to directly access memory and have lots of fun with raw pointers.\u00a0 Many people still can\u2019t get their head around such things (they\u2019re called Information Systems majors).\u00a0 While java and .net may be good for beginners, all the work they abstract or hide means the programmer doesn\u2019t fully know or control what\u2019s going on.\u00a0 Don\u2019t get me wrong, I\u2019d love to start using a language like C# to make games, however at this point it isn\u2019t really an option, but that\u2019s for another blog.\u00a0 Enough background, lets get on with the real story.<\/p>\n<p><strong>The Good News<\/strong><br \/>\nA lot of the game programmers I\u2019ve worked with have been up to the challenge.\u00a0 Game programming is still in its infancy and we have much to learn from general software engineering practices.\u00a0 A lot of the proven techniques to help with the complex task of developing software aren\u2019t that difficult to learn, we just need to devote some time to learning them.\u00a0 One of the hopes of this blog is to share some of the general software engineering principles I\u2019ve learnt and share them with the game programming community.<\/p>\n<p>The other good news is that not every position requires a John Carmack.\u00a0 Even with little 3D and complex math skills there are plenty of areas of games development that programmers can work on to make successful games.\u00a0 For every one hardcore engine coder on a project there are many gameplay, UI, script, etc programmers who must rely on creativity more than just pure programming skills.\u00a0 With engines such as <a href=\"http:\/\/www.unrealtechnology.com\/html\/technology\/ue30.shtml\">Unreal 3<\/a>, a lot of the complex work is done for programmers, leaving them with the task of making a fun game, rather than writing the fastest rendering system they can.<\/p>\n<p><strong>The Bad News<\/strong><br \/>\nWhile I\u2019ve met many good programmers they are, unfortunately, few and far between.\u00a0 There are plenty of programmers out there that can\u2019t even put simple desktop applications together.\u00a0 While making games sounds like fun, it\u2019s also extremely complex, and a lot of these useless programmers just can\u2019t hack it (if you\u2019ll excuse the pun).\u00a0 If you haven\u2019t been coding since you were knee height to a grass hopper then you\u2019re in for a long ride.\u00a0 Programming is one of those things that people either get, or they never will.\u00a0 Even if they \u2018get\u2019 it, games are so complex there\u2019s a high chance they won\u2019t be good enough to understand all the complexities.\u00a0 It\u2019s one thing to write code that performs a desired task, a lot of programmers can do that, but to write it efficiently enough that the game can still run &gt;30 frames a second is a hard task.\u00a0 It takes only one piece of poor code within the inner game loop to be slow and the entire game will bog down.\u00a0 This is only getting worse as games become larger and more complex.\u00a0 Add to this the fact each different console comes with its own complexities, pitfalls and challenges means that programmers must be completely comfortable with their language and general programming skills.<\/p>\n<p>As game programming requires only the elite of the programming world there is an unfortunate side effect, the ego.\u00a0 Game programming is one of those jobs that nearly any kid would love to have, and with so many people not being good enough, some game programmers take that as an opportunity to think they are the most amazing people in the world.\u00a0 They often forget that their colleagues are in a similar situation and instead think they are better than everyone around them.\u00a0 This is often called the \u201c<a href=\"http:\/\/www.gignews.com\/fdloriginalten.htm\">Prima Donna Syndrome<\/a>\u201d and I\u2019ve seen it all too often from game programmers.\u00a0 Awesome game programmers are like good looking people, it doesn\u2019t matter how good they are, if they think they are the best, and act that way then it basically negates all of their \u2018goodness\u2019.\u00a0 The problem here is that game development is a team exercise.\u00a0 Programming is only part of the puzzle and people need to communicate well if the team is to succeed.\u00a0 Within the small group of good enough programmers, there\u2019s an even smaller group that can communicate well and don\u2019t think they are God\u2019s gift to the game development world.<\/p>\n<p><strong>The Pay Problem<\/strong><br \/>\nBack in the beginning of game development, programmers were paid less than their regular counterparts.\u00a0 The article paints a pretty picture of how it will be in the future (now) though.\u00a0 Aren\u2019t we lucky then that games are pulling in billions of dollars around the world?\u00a0 Surely things would have changed since 1981 and this complex profession of ours would be receiving the remuneration we deserve, unfortunately not.<\/p>\n<p>The majority of game programmers I know would take a massive pay rise if they left the games industry and used their genius elsewhere.\u00a0 Combine this with much overtime, poor working conditions and generally badly run companies and there&#8217;s little incentive to stay in the industry these days.\u00a0 Why else would the average years in the industry be as low as 5 these days?\u00a0 Without having the pay to back it up, the industry is only ever going to get diehard gamers who wouldn&#8217;t dream of doing anything else.\u00a0 Thankfully I&#8217;m one of them, and the current shortage in good programmers works out well for my peers and I, however for the industry in general it&#8217;s a problem. This pay problem is only making it harder to find programmers that are good enough.\u00a0 A large chunk of the programmer market is simply not interested in the low pay and bad working conditions a lot of studios make them put up with.<\/p>\n<p><strong>Conclusion<\/strong><br \/>\nSo the simple answer is, yes, programmers these days are good enough.\u00a0 The long answer is &#8216;kinda, it depends who you ask&#8217;.\u00a0 There are plenty of Carmack style genius&#8217;s around at the moment.\u00a0 There&#8217;s also plenty of people looking to the future of games from <a href=\"http:\/\/en.wikipedia.org\/wiki\/Tim_Sweeney_(game_developer)\">Tim Sweeney<\/a> to David Jewsbury (<a href=\"http:\/\/www.doolwind.com\/Audio\/ChallengingTheGiven_Jewsbury.mp3\">who gave an excellent speech at game connect<\/a>).\u00a0 We have some excellent tools at our disposal, many different languages to choose from and an ever increasing budget to work with.\u00a0 While I&#8217;ve met countless bad programmers, I&#8217;ve also met enough awesome ones to know that the games for at least the next five years are in good hands.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Computer Gaming Weekly released their first 100 magazines for free download on the net a while back.\u00a0 I was reading through the first issue (November 1981) and I stumbled across an article containing a section entitled \u201cProgrammers: Are They Good Enough\u201d.\u00a0 While this is a nostalgic and interesting read, it begs the question: 25 years <a class=\"more-link\" href=\"https:\/\/www.doolwind.com\/blog\/are-game-programmers-good-enough\/\">Read More<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2}},"categories":[33,5,6],"tags":[112,35,37],"class_list":["post-72","post","type-post","status-publish","format-standard","hentry","category-game-development","category-games","category-general","tag-game-development","tag-game-engine","tag-game-programming"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pgEc5-1a","_links":{"self":[{"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/posts\/72","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/comments?post=72"}],"version-history":[{"count":0,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/posts\/72\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/media?parent=72"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/categories?post=72"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/tags?post=72"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}