<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Doolwind&#039;s Game Coding Blog &#187; education</title>
	<atom:link href="http://www.doolwind.com/blog/tag/education/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.doolwind.com/blog</link>
	<description>Pragmatic Thoughts On Game Development</description>
	<lastBuildDate>Wed, 28 Jul 2010 22:53:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Virgin Play Testers</title>
		<link>http://www.doolwind.com/blog/virgin-play-testers/</link>
		<comments>http://www.doolwind.com/blog/virgin-play-testers/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 12:21:09 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[Game Designer]]></category>
		<category><![CDATA[Play Testing]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=403</guid>
		<description><![CDATA[How many virgins have played your game?  Do you make sure they&#8217;re virgins before they play?  You need at least one virgin per week to keep you on track and you should be filming them! What are virgin play testers? A virgin is anyone who has never played nor seen someone play your game before.  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.doolwind.com/images/blog/virginplaytester.jpg"><img class="alignright" title="Virgin Play Tester" src="http://www.doolwind.com/images/blog/virginplaytester.jpg" alt="" width="131" height="109" /></a>How many virgins have played your game?  Do you make sure they&#8217;re virgins before they play?  You need at least one virgin per week to keep you on track and you should be filming them!</p>
<p><span id="more-403"></span></p>
<p><strong><span style="text-decoration: underline;">What are virgin play testers?</span></strong></p>
<p>A virgin is anyone who has never played nor seen someone play your game before.  That second part is important.  If Bob is watching Jim play your game then both Bob and Jim are no longer virgins.</p>
<p>They are equivalent to someone downloading the demo of your game and firing it up for the first time.  They should come from your target audience and preferably be scattered throughout this demographic.</p>
<p><strong><span style="text-decoration: underline;">Why do you need virgin play testers?</span></strong></p>
<p>People have a short attention span these days.  You only have minutes to convince someone your game is worth buying.  Watching a virgin play your game lets you watch the experiences every player will go through when they first play it.  This is absolutely vital if you want to make your game playable and get a conversion.</p>
<p>Gladwell in <a href="http://www.amazon.com/gp/product/0316017922?ie=UTF8&amp;tag=doosgamcodblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0316017922">Outliers</a> has the 10,000 hour rule: the time it takes to become proficient in an activity.  I have the 1,000 hour rule.  <span class="pullquote pqLeft">After 1,000 hours working on (and playing) your game you can&#8217;t objectively determine its quality</span>. The only caveat to this rule is that after a year of not having anything to do with the game your virgin status is reset.  This doesn’t really help in the world of game development as you can rarely take a year off.  It’s much easier to just go out and find virgins. The bottom line is that the only way you can experience what your game is like for a virgin is watching them play.</p>
<p><strong><span style="text-decoration: underline;">What’s the best process?</span></strong></p>
<p>Here are some simple rules to help you:</p>
<ul>
<li><strong>Video tape everything</strong> – If possible, try and get the game and their hands in the shot at the same time.  This lets you see what buttons/sticks they are pressing at different stages, particularly if they get stuck<strong></strong></li>
<li><strong>Don’t help</strong> – If you have to help them your game needs some major changes.  Imagine that same person sitting at home without you there; they will most likely give up on the game.<strong></strong></li>
<li><strong>Get them to say what they are thinking</strong> – The best way to find out when they are stuck, bored, excited, surprised or confused is to get them to tell you what they are thinking as they play through the game<strong></strong></li>
<li><strong>Don’t dismiss anything</strong> – No matter how trivial a comment is you need to take it on board.  Even if the person dismisses their comment later you should take notice of it.  On a number of occasions people would say a particular part of the game wasn’t a problem after having it explained and it’s easy to then ignore that issue.<strong></strong></li>
<li><strong>Fix the problems – </strong>This is vital.  There’s no point getting virgins in to play the game if you don’t fix problems they find.  This might seem like a simple idea, but it’s important you keep a record of every issue and resolve them.<strong></strong></li>
</ul>
<p><strong><span style="text-decoration: underline;">Where can you find virgin play testers?</span></strong></p>
<p>There are 4 main places you can find virgins to play test your game:</p>
<ol>
<li><strong>Within your company</strong> – If you work for a large company, start internally.  This reduces NDA and other issues, helps build community within the company and encourages other teams to start virgin play testing if they don’t already</li>
<li><strong>Friends and family</strong> – The next best step is people you know and trust.  You’ll still want them to sign an NDA, but there’s less chance they’ll break it.  This is also a great way to catch up with your partner who you haven’t seen since before crunch started.</li>
<li><strong>Local game development education institutions</strong> – Go to your local game education centre and put up a sign on the notice board reading “Get your name in the credits of a game, right now!”  I guarantee* at least 90% of them will jump at the opportunity.  This also has the secondary benefits of letting you scope out talent and you might even get some good suggestions for your game.</li>
<li><strong>Everyone else</strong> – This is the most important and largest group.  Grab random people off the street or from your local video game shop.  You want to be taking a large cross reference of people here.  It’s also a good idea to find some people outside your target audience.  You may find the game appeals to a larger audience, or that making some small tweaks will broaden your audience substantially.  Free beer and/or pizza is usually payment enough for people to sit and play games for a few hours.<strong></strong></li>
</ol>
<p>*Not a guarantee</p>
<p><strong><span style="text-decoration: underline;">Conclusion</span></strong></p>
<p>I’d like to say a big thanks to <a href="http://www.digitalcream.com.au/blog/">Matt Ford</a> for a lot of the ideas from this post.</p>
<p>I was blown away by how important it was to watch virgins playing our game each and every week.  It does take time and resources, but it’s well worth the effort.  It helps keep you on track and focussing on the initial user experience, the most important part for making the sale.</p>
<p>Go out right now, find someone that hasn’t played your game before, sit them down and watch them play.  I guarantee* you’ll learn something about your game that will make it better.</p>
<p>*This one is a guarantee (unless you’re a lawyer)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/virgin-play-testers/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Top 10 Software Development Books</title>
		<link>http://www.doolwind.com/blog/top-10-software-development-books/</link>
		<comments>http://www.doolwind.com/blog/top-10-software-development-books/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 10:40:30 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[Game Programming]]></category>
		<category><![CDATA[Softare Development]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=277</guid>
		<description><![CDATA[Good software development books are hard to find. I&#8217;m always being asked which books I recommend so I thought I&#8217;d compile a list of my favourites. These are books every software developer should read. All of these books have made me a better programmer. The list covers everything from the basics of coding to agile [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.doolwind.com/images/blog/top10books/Top10SoftwareDevelopmentBooks.jpg"><img class="alignright" title="Top 10 Software Development Books" src="http://www.doolwind.com/images/blog/top10books/Top10SoftwareDevelopmentBooks.jpg" alt="" width="82" height="103" /></a>Good software development books are hard to find.  I&#8217;m always being asked which books I recommend so I thought I&#8217;d compile a list of my favourites.  These are books every software developer should read.  All of these books have made me a better programmer.  The list covers everything from the basics of coding to agile development and architectural software development.</p>
<p><span id="more-277"></span></p>
<p><strong>The Pragmatic Programmer: From Journeyman to Master</strong><br />
<a href="http://www.amazon.com/gp/product/020161622X?ie=UTF8&amp;tag=doosgamcodblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=020161622X"><img src="http://www.doolwind.com/images/blog/top10books/ThePragmaticProgrammer.jpg" border="0" alt="" /></a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=doosgamcodblo-20&amp;l=as2&amp;o=1&amp;a=020161622X" border="0" alt="" width="1" height="1" /><br />
<strong> </strong></p>
<p><strong>Code Complete</strong><br />
<a href="http://www.amazon.com/gp/product/0735619670?ie=UTF8&amp;tag=doosgamcodblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0735619670"><img src="http://www.doolwind.com/images/blog/top10books/CodeComplete.jpg" border="0" alt="" /></a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=doosgamcodblo-20&amp;l=as2&amp;o=1&amp;a=0735619670" border="0" alt="" width="1" height="1" /><br />
<strong> </strong></p>
<p><strong>Rapid Development: Taming Wild Software Schedules</strong><br />
<a href="http://www.amazon.com/gp/product/1556159005?ie=UTF8&amp;tag=doosgamcodblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1556159005"><img src="http://www.doolwind.com/images/blog/top10books/RapidDevelopment.jpg" border="0" alt="" /></a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=doosgamcodblo-20&amp;l=as2&amp;o=1&amp;a=1556159005" border="0" alt="" width="1" height="1" /><br />
<strong> </strong></p>
<p><strong>Agile Software Development, Principles, Patterns, and Practices</strong><br />
<a href="http://www.amazon.com/gp/product/0135974445?ie=UTF8&amp;tag=doosgamcodblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0135974445"><img src="http://www.doolwind.com/images/blog/top10books/AgileSoftwareDevelopment.jpg" border="0" alt="" /></a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=doosgamcodblo-20&amp;l=as2&amp;o=1&amp;a=0135974445" border="0" alt="" width="1" height="1" /><br />
<strong> </strong></p>
<p><strong>Refactoring: Improving the Design of Existing Code</strong><br />
<a href="http://www.amazon.com/gp/product/0201485672?ie=UTF8&amp;tag=doosgamcodblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0201485672"><img src="http://www.doolwind.com/images/blog/top10books/Refactoring.jpg" border="0" alt="" /></a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=doosgamcodblo-20&amp;l=as2&amp;o=1&amp;a=0201485672" border="0" alt="" width="1" height="1" /><br />
<strong> </strong></p>
<p><strong>Peopleware: Productive Projects and Teams</strong><br />
<a href="http://www.amazon.com/gp/product/0932633439?ie=UTF8&amp;tag=doosgamcodblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0932633439"><img src="http://www.doolwind.com/images/blog/top10books/Peopleware.jpg" border="0" alt="" /></a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=doosgamcodblo-20&amp;l=as2&amp;o=1&amp;a=0932633439" border="0" alt="" width="1" height="1" /><br />
<strong> </strong></p>
<p><strong>The Mythical Man-Month: Essays on Software Engineering</strong><br />
<a href="http://www.amazon.com/gp/product/0201835959?ie=UTF8&amp;tag=doosgamcodblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0201835959"><img src="http://www.doolwind.com/images/blog/top10books/TheMythicalManMonth.jpg" border="0" alt="" /></a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=doosgamcodblo-20&amp;l=as2&amp;o=1&amp;a=0201835959" border="0" alt="" width="1" height="1" /><br />
<strong> </strong></p>
<p><strong>Design Patterns: Elements of Reusable Object-Oriented Software</strong><br />
<a href="http://www.amazon.com/gp/product/0201633612?ie=UTF8&amp;tag=doosgamcodblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0201633612"><img src="http://www.doolwind.com/images/blog/top10books/DesignPatterns.jpg" border="0" alt="" /></a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=doosgamcodblo-20&amp;l=as2&amp;o=1&amp;a=0201633612" border="0" alt="" width="1" height="1" /><br />
<strong> </strong></p>
<p><strong>Software Estimation: Demystifying the Black Art</strong><br />
<a href="http://www.amazon.com/gp/product/0735605351?ie=UTF8&amp;tag=doosgamcodblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0735605351"><img src="http://www.doolwind.com/images/blog/top10books/SoftwareEstimation.jpg" border="0" alt="" /></a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=doosgamcodblo-20&amp;l=as2&amp;o=1&amp;a=0735605351" border="0" alt="" width="1" height="1" /><br />
<strong> </strong></p>
<p><strong>Patterns of Enterprise Application Architecture</strong><br />
<a href="http://www.amazon.com/gp/product/0321127420?ie=UTF8&amp;tag=doosgamcodblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321127420"><img src="http://www.doolwind.com/images/blog/top10books/PatternsOfEnterpriseApplicationArchitecture.jpg" border="0" alt="" /></a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=doosgamcodblo-20&amp;l=as2&amp;o=1&amp;a=0321127420" border="0" alt="" width="1" height="1" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/top-10-software-development-books/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>How To Make A Game (For Free In XNA)</title>
		<link>http://www.doolwind.com/blog/how-to-make-a-game-for-free-in-xna/</link>
		<comments>http://www.doolwind.com/blog/how-to-make-a-game-for-free-in-xna/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 20:48:52 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[Game Programming]]></category>
		<category><![CDATA[Xbox 360]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=273</guid>
		<description><![CDATA[Do you want to learn how to make your own computer games?  Not sure where to start?  This step-by-step tutorial shows you how to create your own games for free using XNA.  I’ve been asked by a number of people what the best route to take when learning to develop games.  The following tutorial will [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.doolwind.com/images/blog/xna.jpg"><img class="alignright" title="XNA" src="http://www.doolwind.com/images/blog/xna.jpg" alt="" width="169" height="98" /></a>Do you want to learn how to make your own computer games?  Not sure where to start?  This step-by-step tutorial shows you how to create your own games for free using XNA.  I’ve been asked by a number of people what the best route to take when learning to develop games.  The following tutorial will give you a good start towards creating your first few games for PC and Xbox 360.  I cover the software you’ll need, a list of tutorial both in C# and XNA and other helpful links.</p>
<p><span id="more-273"></span></p>
<p><strong>Software</strong></p>
<p style="padding-left: 30px;"><strong><span style="font-weight: normal; ">1. Download Visual Studio 2008 Express &#8211; <a href="http://bit.ly/VCSExp">http://bit.ly/VCSExp</a></span></strong></p>
<p style="padding-left: 30px;"><strong><span style="font-weight: normal; "><a href="http://bit.ly/VCSExp"></a>2. Download XNA Game Studio 3.1 &#8211; <a href="http://bit.ly/XNAGS31">http://bit.ly/XNAGS31</a></span></strong></p>
<p><strong>Learning C#</strong></p>
<p style="padding-left: 30px;"><strong><span style="font-weight: normal; ">3. Read these C# tutorials</span></strong></p>
<p style="padding-left: 60px;"><strong><span style="font-weight: normal; ">a. C# Station Tutorial &#8211; <a href="http://bit.ly/CSTut1">http://bit.ly/CSTut1</a></span></strong></p>
<p style="padding-left: 60px;"><strong><span style="font-weight: normal; "><a href="http://bit.ly/CSTut1"></a>b. C# WikiBooks &#8211; <a href="http://bit.ly/CSWiki">http://bit.ly/CSWiki</a></span></strong></p>
<p><strong>Learning XNA</strong></p>
<p style="padding-left: 30px;"><strong><span style="font-weight: normal;">4. Read these XNA tutorials</span></strong></p>
<p style="padding-left: 60px;"><strong><span style="font-weight: normal;">a. Introduction &#8211; <a href="http://bit.ly/XNATut1">http://bit.ly/XNATut1</a></span></strong></p>
<p style="padding-left: 60px;"><strong><span style="font-weight: normal;"><a href="http://bit.ly/XNATut1"></a>b. 2D Introduction &#8211; <a href="http://bit.ly/XNATut2D">http://bit.ly/XNATut2D</a></span></strong></p>
<p style="padding-left: 60px;"><strong><span style="font-weight: normal;"><a href="http://bit.ly/XNATut2D"></a>c. 3D Introduction &#8211; <a href="http://bit.ly/XNATut3D">http://bit.ly/XNATut3D</a></span></strong></p>
<p style="padding-left: 30px;">5.<strong> <span style="font-weight: normal;">Look at these starter kits &#8211; <a href="http://bit.ly/XNAKit">http://bit.ly/XNAKit</a></span></strong></p>
<p><strong>Other Links</strong></p>
<p style="padding-left: 30px;"><strong><span style="font-weight: normal;">6. Visit the following for more information on game development</span></strong></p>
<p style="padding-left: 60px;"><strong><span style="font-weight: normal;">a. Gamedev.net &#8211; <a href="http://www.gamedev.net/">http://www.gamedev.net/</a></span></strong></p>
<p style="padding-left: 60px;"><strong><span style="font-weight: normal;"><a href="http://www.gamedev.net/"></a>b. Gamasutra &#8211; <a href="http://gamasutra.com/">http://gamasutra.com/</a></span></strong></p>
<p style="padding-left: 60px;"><strong><span style="font-weight: normal;"><a href="http://gamasutra.com/"></a>c. Indie Gamer Forums &#8211; <a href="http://forums.indiegamer.com/">http://forums.indiegamer.com/</a></span></strong></p>
<p><strong>What should you create?</strong></p>
<p>I&#8217;ve found the best way to learn game development is by creating a full game.  Exactly what game you create depends on what you want to get out of game development.  There are a number of paths I commonly see people taking:</p>
<ul>
<li><strong>Becoming a game programmer</strong> &#8211; The best route here is to take an existing game like Pong, Space Invaders or Mario and recreating it.  The game design done is already complete, allowing you to focus on learning the skills required to code the game</li>
<li><strong>Becoming a game designer</strong> &#8211; Rather than recreating an existing game, come up with a new, simpler design.</li>
<li><strong>Getting a job at a particular game company </strong>- Before you begin your new game, you should find out what technology the company is using.  You are much more likely to be hired by them if you are experienced in their technology suite.  If you&#8217;re unsure of what they use, ask them.  Game companies are always looking for good talent and they&#8217;ll be happy to share the technologies they use with you.</li>
</ul>
<p><strong>Want more?</strong></p>
<p>I’d like this list to become a comprehensive, step-by-step introduction to game development that takes developers from zero experience to creating their own 3D (or 2D) games.  If you get to a point where you’re stuck and don’t know what to do next, please email me and I’ll help you fill in the blanks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/how-to-make-a-game-for-free-in-xna/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java Isn&#039;t The Problem</title>
		<link>http://www.doolwind.com/blog/java-isnt-the-problem/</link>
		<comments>http://www.doolwind.com/blog/java-isnt-the-problem/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 02:05:33 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=94</guid>
		<description><![CDATA[Quite a few people recently have been blaming Java for part of the downfall in current computer science (CS) graduates. While I don&#8217;t particularly like java, I&#8217;d like to go to its defence to say that teaching Java is not the real reason that a lot of CS graduates are no good these days. I [...]]]></description>
			<content:encoded><![CDATA[<p align="left"><img usemap="#Map" src="http://www.doolwind.com/images/blog/comic/comic-06.jpg" border="0" alt="" width="264" height="300" align="right" /><br />
<map id="Map" name="Map">
<area shape="rect" coords="91,260,264,300" href="http://www.squidtank.com"></area>
</map>
<p>Quite a <a href="http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html">few</a> <a href="http://209.85.173.104/search?q=cache:yv_7KunL4u4J:www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html&amp;hl=en&amp;client=firefox-a&amp;gl=au&amp;strip=1">people</a> recently have been blaming Java for part of the downfall in current computer science (CS) graduates.  While I don&#8217;t particularly like java, I&#8217;d like to go to its defence to say that teaching Java is not the real reason that a lot of CS graduates are no good these days.  I know this is a touchy subject for some people so I apologise in advance if I&#8217;ve offended anyone.</p>
<p><span id="more-94"></span></p>
<p><strong>It&#8217;s not about Language</strong></p>
<p>To jump straight into it, the first language that students learn doesn&#8217;t have a lot to do with how good they will end up.  Most of the &#8220;core languages&#8221; (Java, C#, C/C++, VB.NET etc) that you see being taught at universities allow the teaching of the core programming principles:</p>
<ul>
<li>Low Level &#8211; sequence, conditions and loops</li>
</ul>
<ul>
<li>Mid level &#8211; functions, objects and recursion</li>
</ul>
<ul>
<li>Hi Level &#8211; Modular design, design patterns, API creation</li>
</ul>
<ul>
<li>High level optimizations &#8211; orders of complexity and algorithmic optimization</li>
</ul>
<p>These principles cover a large amount of &#8220;learning to program&#8221; and you can teach all of them in any of the languages listed above.  So what things are missing from some of these languages (particularly, Java)?</p>
<ul class="unIndentedList">
<li> Pointers</li>
<li> Low level optimizations</li>
<li> How operations map down to machine code</li>
</ul>
<p>The important point here is that these are a small subset of the skills required to program and they don&#8217;t <strong>require</strong> the first language that is taught to students to be C/C++ (or equivalent).  Teaching these languages early on is definitely required; however they can easily fit outside the scope of the core introduction courses.  The extra bonus from not teaching C/C++ as the first language is that it forces students to learn at least two languages during their first steps into programming and this is a good thing.</p>
<p><strong>So what is the problem with CS graduates?</strong></p>
<p>1.       Lack of Passion</p>
<p>Basically it comes down to the fact that lecturers aren&#8217;t getting students passionate about programming.  One of the key qualities I look for in a great programmer is their love for programming.  I&#8217;ve found that the best way to get passionate about something is for someone to pass their passion on to you.  The best way of doing this is through teaching.  I had this very problem while at university and thankfully during my course I did some Microsoft training where our teacher&#8217;s passion was passed on to me.</p>
<p>It seems that lecturers are confusing fun with enjoyment/passion.  Something doesn&#8217;t need to be fun for people to be passionate about it and trying to make courses &#8220;more fun&#8221; and less boring is not the right approach.  The ability to create something has an almost primal feeling of enjoyment and power.  Lecturers need to tap into this and get students excited and passionate about what they are creating even if it is hard work.</p>
<p>2.       Lack of algorithms and Mathematics</p>
<p>One area that could easily be seen as boring is algorithms and mathematics.  If not taught correctly this can certainly be true.  However these are a core part of learning to program.  The fact that they are language independent proves that Java is not to blame, and that they are more important than mere language choice.  With a solid understanding of algorithms and mathematics, programmers can write good code in almost any language.</p>
<p>If algorithms and mathematics are being dropped because lecturers think they are too boring, they need to find someone that can make them exciting!  To give an example, I was taught matrix math both at high school and at university.  At high school I understood it straight away and had no issues with its use.  At university we spent just as long learning it, however it was so convoluted that it almost confused me into forgetting what I had initially learnt.  The way in which it was taught was both dry and boring, but also counter-intuitive to the average student that doesn&#8217;t have a PHD in mathematics.  Any subject matter can be boring if taught badly, lecturers need to stop blaming the content and start looking at their teaching styles.</p>
<p><strong>Conclusion</strong></p>
<p>So the problem at the moment isn&#8217;t java but instead the courses and those creating them.  I don&#8217;t think it matters what language you teach.  Without creating passion, teaching core algorithms and mathematics students are never going to be good programmers.</p>
<p><script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/java-isnt-the-problem/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Game Development Education: The Dream</title>
		<link>http://www.doolwind.com/blog/game-development-education-the-dream/</link>
		<comments>http://www.doolwind.com/blog/game-development-education-the-dream/#comments</comments>
		<pubDate>Tue, 13 Nov 2007 06:20:24 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[Valve]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=84</guid>
		<description><![CDATA[I have a lot of dreams about what I&#8217;d like to see in the future.  One of the strongest dreams involves game development education.  To put it bluntly, I&#8217;ve been unimpressed by what I&#8217;ve seen so far.  There are a number of courses around but none of them have stood out as being amazingly good.  [...]]]></description>
			<content:encoded><![CDATA[<p align="left"><img src="http://www.doolwind.com/images/blog/valved.jpg" align="right" height="67" width="158" />I have a lot of dreams about what I&#8217;d like to see in the future.  One of the strongest dreams involves game development education.  To put it bluntly, I&#8217;ve been unimpressed by what I&#8217;ve seen so far.  There are a number of courses around but none of them have stood out as being amazingly good.  Quite a few are too young to determine how good they are, but suffice to say, looking through resume&#8217;s of people, there&#8217;s no golden bullet of educational institute that guarantee&#8217;s a certain quality of programmer.  So what does my dream involve, and how is it going to change the way games are made?</p>
<p><span id="more-84"></span></p>
<p><strong>Pie in the Sky</strong></p>
<p>At the most extreme level, the perfect education program would be one attached to a large development studio.  Imagine if Valve had &#8220;Valve Education&#8221; where you could do a 1 year course and learn everything they know about game development.  Developers from live teams could take time off to teach for a while, to mix up their lives and to pass on their knowledge to others.  While it would make quite a bit of money, the key thing here is that the top x% of students could be hired straight into Valve.  Think of it as a 1 year probation period, where the employee PAYS to be there.  If there are things you don&#8217;t like about game programmers in the world at the moment you have the ability to teach them what you want.  Have a subject devoted solely to software practices, and fail any of the kids that aren&#8217;t up to it.</p>
<p><strong>Down to earth</strong></p>
<p>So if you&#8217;re not Gabe, then the above paragraph may be a little out of reach for you.  Don&#8217;t lose hope though, because there&#8217;s room in my dream for a less restrictive model.  The main ingredient for me is to find passionate developer&#8217;s who can also teach other programmers.  Seniors and leads out there should be doing it all the time, and we just have to get them together to start teaching students.  With the average length of service in the games industry being 5 years, there&#8217;s a great opportunity here.  Firstly, it means that it IS worth training up kids as there are a lot of positions that need to be filled by people that don&#8217;t have any real world experience in games.  Secondly, it means that there are a lot of developers burning out and wanting to leave.  Rather than going off and becoming business programmers, why not give them the opportunity to use their precious game dev skills.</p>
<p>What&#8217;s needed here is a bunch of truly experienced developers getting together and teaching kids exactly what they need to know to make games.  In 1-3 years, the kids should be able to pump out a handful of little games, and one big collaborative game at the end.  Heck, you could even sell the large game at the end and give the students a discount on their fees based on how well it sells.</p>
<p><strong>Bureaucracy and Money</strong></p>
<p>The biggest issue I see with current game dev courses is the amount of bureaucracy that&#8217;s involved in setting up the course.  It&#8217;s obviously going to be better to have the course meet requirements for a Bachelor&#8217;s degree or equivalent, but try not to let this ruin the course itself.  From what I&#8217;ve seen in courses there is a lot of irrelevant material taught.  If this HAS to be taught then do it quickly, and get it out of the road.  The key here is teaching kids how to make games, and make them well.  If the course is set up to make money then there&#8217;s a good chance it&#8217;s not going to work.  The main focus here needs to be making good game programmers.  Once you start pumping out awesome programmer&#8217;s I guarantee you their tuition fees will be the smallest part of your income.  You&#8217;ll have people wanting to pay top dollar for your students, people will want to start advertising to your students to use their tech and you could even secure a deal with a certain large video card manufacturer to focus your education on their cards.</p>
<p><strong>Conclusion</strong></p>
<p>There is a massive market for game development education at the moment, a vacuum I see filling very quickly.  I just hope that at least some of the new courses are better than the ones I&#8217;ve already heard about.  So there is my dream.  I&#8217;m a little too poor and busy right now to set this up, so I&#8217;m leaving it for anyone else to try.  Let me know how you do and we can work out the commission I get later. <img src='http://www.doolwind.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/game-development-education-the-dream/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
