• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
Lith

Can't solve problems without googling?

18 posts in this topic

I guess what I'm asking is how do I get really fucking good at problem solving? By spending massive ammounts of time thinking through problems for myself or by looking at as many past solutions as possible?

 

@frob's right, you do both. That said, just spending time on the problem won't help if you don't have the basic tools: solid foundations and method.

 

Study math. At the very least, precalculus, basic calculus, and introductory logic.

Study programming. Get some good books and actually work through them. I can't stress this enough - solve *all* exercises. Read good code written by others. Don't be afraid to ask questions, but do your homework first.

Devise a method. Pólya's four principles are a good starting point.

 

To wrap up: clever solutions to hard problems usually take a lot of work, research, insight, and sometimes luck. Even when you can solve a problem quickly and easily, you owe it to your accumulated knowledge and experience. So, get to work.

2

Share this post


Link to post
Share on other sites

Problem solving is a skill that you will develop through experience and practice. I believe that a very important skill is the ability to break a complex problem into problems that CAN be googled. Where the developer skill comes in is recognizing where certain patterns and ideas can be applied and combined together to solve the overall problem as a whole.

 

On a day to day basis I use google, debugging techniques, software design techniques, books, man pages, and other online reference documentation in the course of doing my work.

 

Keep in mind it also takes a certain level of knowledge to understand if a given solution you find online is a good solution or not (Is it robust, is it maintainable, does it rely on undocumented features, what is the license for the solution, ect). So as others have mentioned try to understand the solutions, try to figure out how they work and improve on them.

Edited by shadowisadog
0

Share this post


Link to post
Share on other sites


You will do a lot of things wrong over your career.  You will try something and it will fail. You will start down one path and realize you could have done something much better...

 

You'll probably also solve a problem one day and say to yourself, "Damn. Now THIS is some awesome code."  Then a few years later you'll look back at that work and laugh at past-Lith for being such an ignorant newbie. 

 

Like others have said before, you'll get better through practice. Since you're 17 and started programming a couple of years ago, I wouldn't worry too much about it. You're motivated to learn and are programming in your free time. Good job.

 

And one reason the solutions look easy online is because you're looking at the solution. You're not watching a video of some mathematician staring at a whiteboard for hours at a time, trying and failing a hundred different times. You get to see his nice proof on a clean sheet of paper without any scribbles or teardrop stains. :)

 

- Eck

2

Share this post


Link to post
Share on other sites

There is nothing wrong with googling for a solution.  In the workplace its better to quickly find a solution to a problem that is already solved than spend a week trying to figure out something that you could have discovered in seconds.

 

You think profesional software developers "just know" the answer to everything.  Nope.

For a prime example look at John Carmack and all the stuff that has been attributed to him:

 

Did he invent the fast square root?  Nope
Did he invent BSP trees? Nope
Was he the first to use PVS? Nope

Did he invent the Doom3 shadow algorithm? Nope

Did he invent Mega Texture? Nope

 

All these things were already invented several years before he decided to use them.  How did he discover them?   Through research.

 

OK ok but somebody must have invented them in the first place well yes they did but for the most part it wasn't something they just thought of.  A lot of computing solutions come from academia where people spend years working on a very small subset of problems as part of their phD.  These then get published and forgotten about until somebody researches them and finds a use for them.
 

 

Obviously he did the research unti he fully understands the solution but, still it isn't like he just dreamed the answers up in his sleep.

Edited by Buster2000
2

Share this post


Link to post
Share on other sites

Pasteur said that chance favors the prepared mind.

 

One of the most important aspects of preparing your mind for great things is to understand that, early in your education, not only are you gaining basic knowledge, you are learning to learn. You can't acquire new knowledge without the ability to learn. A part of learning to learn is learning how to researchThat's the time-honored emphasis of post-graduate degrees.

 

So googling isn't a cheat, it's a powerful tool to prepare your mind.

 

Newton said that, if he saw further than others, it was only because he stood on the shoulders of giants.

 

If you want to achieve great things, you must prepare yourself to see what others have seen, and stand on their shoulders.

0

Share this post


Link to post
Share on other sites

everyone googles nowadays... its just as much a basic skill now as problem solving.

 

Get good at it just as you train you programming skills or other skills. Some of the best solutions come from taking something someone else did and improving it.

 

Its what engineering was for hundreds of years! Even geniouses did it.

0

Share this post


Link to post
Share on other sites

A tourist had just arrived in Manhattan with tickets to a concert and didn't know his way around.  The curtain time for the show was fast approaching and the tourist was becoming increasing desperate to find the venue.

 

Finally, he approached a man walking swiftly and carrying a violin case, a sign he might have knowledge of the local entertainment industry.

 

"Excuse me," said the tourist, and the hurrying man looked up.

 

"Can you tell me how to get to Carnegie Hall?" queried the lost and desperate man.

 

The man with the violin case paused briefly and stared intensely at the tourist.  After a beat, he spat "Practice!!!" and hurried on his way.

 

To get good at something, you practise.  It's that simple.  Learning and repeating what others have done is one of the more effective ways of practising.

1

Share this post


Link to post
Share on other sites

As you program and problem solve more and more, you still wont feel you are getting any better. However the problems will seem to be getting easier.

 

As for professional programming, often time is of the essence and thus if you can "google" a solution, then professional due diligence should dictate that you do not want to be reinventing the wheel. However, what separates the good programmers from other programmers is to be able to work out quickly whether a solution from google is good and otherwise quickly discard it rather than polluting the codebase with crud (typically seen with amateur web / javascript development).

 

Writing code is pretty much data entry, it is the scalable design and elegant integration of code that comes with practice. As for the algorithms themselves, yeah, maths is often key (especially no escaping that in graphics programming). Between learning that and knowledge of low level languages like C and even assembly, you will get pretty damn good.

Edited by Karsten_
0

Share this post


Link to post
Share on other sites


You will give up, but it will haunt you.  Then one night, while falling asleep, the solution to the problem you've already cast aside will snap into your mind.
 
There really isn't a better feeling.

 

It's basically this.. Or at least for me it is.

 

I'm in a similar situation, I self-taught myself programming and never went to college or university. I've barely read a programming book and have watched a few basic programming tutorials. Whenever I try to write a program I nearly always find myself googling for solutions to problems or looking at other peoples code. And that's basically how I learned to program.

 

It's taken me many years to finally build up the confidence to apply for a job as a full time programmer but I finally got there earlier this year. My day job now consist of writing web based gambling games using a bespoke Java API (Reminds me of an XNA style framework but for gambling games). But because it's bespoke though there is nowhere to turn when a problem comes up which I can't solve.

 

Instead I sit there for hours, sometimes days... Hell, sometimes even weeks staring at a notepad document where I've written down all of the information I currently have available and what information I need, trying to work out a way to turn A into B. Eventually it will click into place and you'll solve the problem, although it feels like it at the time, nothing is impossible. There have been plenty of times in the last 6 months where I've been sat at my desk, head in hands, thinking up a way to tell the project manager the game is impossible and cannot be completed.

 

Eventually when you hit that solution though, it builds your confidence and blows away any self-doubt you may have about your skill as a programmer.

1

Share this post


Link to post
Share on other sites

Lots of good answers here. I especially like Glass_Knife and phantom's.

 

Another thing you can do is read just the overview of the solution, and try to work out the details yourself, but with a chicken exit if you need it.

 

Also, don't be afraid to solve the same problem more than once :) Sometimes when you have a large and complex challenge, you just have to dive head first into it and make a big mess of code. Then refactor and it looks a little better. But with your deeper understanding of the problem, you might be able to approach it from a different angle and come up with a more elegant system overall.

 

A good example for me is side scroller collision detection with slopes. It seems so simple, and often it is, depending on how many cases you want to handle. But it can get really complicated if you want to support slopes steeper than 45 degrees, sloped ceilings, not having off-by-one problems between left and right slopes, colliding the center of your rectangle with the slope but corner when standing at the edge of a solid tile, etc. I finally managed a system that does everything I want, but it's not quite the level of elegance I want to reach before writing an article series on it (because all the articles I've read don't solve it completely). So one more iteration, one of these days :)

1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0