views:

721

answers:

10

Does attempting to develop some sort of game, even just as a hobby during leisure time provide useful (professional) experience or is it a childish waste of time?

I have pursued small personal game projects on and off throughout my programming career. I've found the (often) strict performance requirements and escalating design complexity have taught me some of my most useful programming lessons.

In these projects to name just a few, I very quickly came face to face with: "Everything is fast for small N". I also discovered the hard way about using basic object oriented design principles to manage complexity.

In a field where many technologies and topics can be quite dry/dull, I think hobby game development is important in motivating new (and not so new) developers to brush up on essential skills while having fun at the same time.

This question talks about hobby projects in general, however here I am more interested in game projects specially and how valuable they are to professional programmers.

+3  A: 

I think extra-curricular development is a good thing whether it is games or not. For a start you can try different technologies and development platforms and it is a great way of keeping your skills up to date. I prefer mathematical algorithms to games, but that's just a preference which doesn;t speak to the value of doing it at all.

If you bring any of this back to your employer then they are getting the benefit of your broadening knowledge which you are gaining on your own time. That is good for them too.

I say code away to your heart's content!

Simon
Mathematical algorithms and games go hand in hand from what I've seen, another positive about games. I wonder how most employers would regard it though, that's often where the "childish" view is most common.
Ash
+18  A: 

You can learn a lot from game development. Game development requires a discipline that you can't find in other programming projects.

Here are just a small set of things game development has taught me:

  • Optimization for speed
  • Sacrificing computational depth for speed
  • Developing under small constraints of memory
  • Building a system that works like an operating system but is geared toward speed.
  • Keeping hundreds to thousands of objects in a tree, each with their own unique characteristics
  • Some areas of game development have great academic value (like Artificial Intelligence, Procedural Algorithms, etc)
  • It doesn't matter how much of a hack the code is, as long as the gameplay is there. Translating this to other disciplines, the objective of programming is to make the customers happy, regardless of how clever or ugly your code is.

Because game programmers are forced to use less resources, they become better programmers.

MrValdez
Absolutely. Sadly though it seems using less resources is being seen as less important as hardware gets quicker and we use more frameworks. In my practical experience though all of your points are 100% correct.
Ash
Using less resources is still important. While resources will grow, the problems of latency still exists. Heck, we still have latency in moving data between the GPU, CPU and memory. GPU tries to remove CPU latency by doing calculations but it still needs the CPU to move data to and from memory.
MrValdez
It depends on the game. I've done a couple of strategy games where memory and object tracking were non-issues. The challenge was writing a decent AI that could play a human at something approximating parity.
Loren Pechtel
+1  A: 

Sitting down at a problem and solving it with the tools at hand (whatever the problem is, fixing a database, programming an interface or making chess in ascii) is helping you becoming a better programmer.

Hands down.

Ólafur Waage
+1  A: 

Games have some of the most complicated processing that's "agreeable" to a layman, hobbyist programmer. In high school, all I wrote were games. Want to explore physics? Write a game. 3D graphics? Write a game. High performance computing? Write a game. AI? Economics? Military Strategy? Natural Language Processing? Theorem Proving? Write a game.

You don't have to publish it, you don't have to document it, you don't even have to PLAY it, you just need to fiddle with it, and you'll learn any algorithm you find interesting as you try to apply it -- in a game.

Games are interesting because of the wide domain they can cover. Everything else is just data processing, and you can do that at work!

Will Hartung
+1  A: 

YES

I taught myself C (and Psion's proprietary OO extensions) using the Psion Series 3 TopSpeed C SDK and wrote several games which I released under the GNU license. (Previously I had quite a bit of experience in Turbo Pascal and Pascal on the Amiga and Borland C++ 3.1 on Window 3.1 in a financial analysis internship doing signal processing, but when I got the Psion, I have to go back to C and I used K & R to get a good solid basis for that code.)

Then I parlayed the expertise I learned about the Psion platform into a 3 year gig doing mobile development using their industrial handhelds where I gained experience in databases, too. It was a huge turnaround for them, the product was in disarray and I had a ton more experience in the platform than anyone else - just from that year writing games.

I parlayed that into a Windows development gig where I eventually became IT director and got massive experience with SQL Server, Windows, ASP, data centers, DR, you name it.

Then I moved into data warehouse consultancy.

I owe a lot of it back to that first foot in the door where I really was able to make a massive difference to that first company because of the platform experience in C and that particular C-based library system.

Cade Roux
I taught myself C from a book called something like "Waite Groups Turbo C", wrote my first completed (playable) game with that knowledge. Tried to go back and improve it and quickly realised indenting and comments are good, and then thought "what's a 'class' and is C++ a better C?
Ash
I left out that I had some prior experience with Turbo Pascal/Borland C++, I'll edit my text.
Cade Roux
+1  A: 

I think more importantly, is the hobby game development making you happy?

Many areas of game development can absolutely be applicable on a more professional level, but if that's the only reason why you're developing games as a hobby then you may want to re-evaluate the situation and perhaps put your efforts toward various open source projects that could proudly be displayed on a resume (not that hobby game developing couldn't) or discuss at an interview.

Your hobbies should be something you love doing and if you love game development, then absolutely stick with it and hey, maybe you'll find yourself doing it professionally which ultimately seems like the ideal situation for your scenario.

mwilliams
Good point. Although, often taking a hobby and trying to make a career out of it can simply drain the joy we get from it. I must admit I don't explictly state game development on my resume, maybe I should.
Ash
@Ash You absolutely should, I'm sure it could spark some interesting conversation with an interviewer or potential boss. "So tell me about the work you did on game Y? What techniques do you think you could bring in to our business that you applied while working on game Y?
mwilliams
+1  A: 

I don't see how anything that enables you learn, practise and experiment could be considered 'childish'.

Besides, if you are aiming to produce a decent (even 'professional') game, it will almost certainly require learning and mastering skills that are directly transferable to may 'conventional' roles. Optimisation, testing, cross platform working, UI design and usability... the list goes on.

CJM
+1  A: 

Game development (or any other sort of personal programming) is a good way to:

  • learn new languages
  • learn new concepts (TDD, OO, etc..)
  • Use and evaluate different tools/technologies (CI, automated tests, etc...)

These sorts of projects give you the freedom to explore different aspects of the programming world that you are not able to do at work. If you are stuck doing line of business applications at work, you probably won't deal with a physics engine, or spacial rendering. But you could explore these subjects in your game.

This would also provide you with a good portfolio of code you can bring if/when you interview for new positions. Assuming the code you write is in decent shape...

Benoit
+2  A: 

If you are looking to get a job in game development, you should absolutely be doing some hobby development on the side while you look. Being able to send a more-or-less complete game along with your resume makes it stand out from the crowd. When we list a game programming job we get a ton of resumes, and while I'm thrilled to hire people with no industry experience to fill them, it's kind of hard to pick between all the options.

Joe Ludwig
A: 

Very impressive answers. I feel encouraged to develop such hobby.

http://ethicminds.blogspot.com/

george

george kyaw naing