views:

263

answers:

7

What is a good test of your smartness vs. stupidity? Is Google Code Jam a good test for that?

Or would you suggest something else? I want to know whether I'm a good programmer or not.

+4  A: 

Have a look at topcoder it has many challenges. The Algorithm competition challenges you a lot

kalkin
Awesome, awesome site. Not only can you see every question that ever appeared in a competition, you can also see the source code solutions everyone who competed in that competition submitted, as well as post-match analyses of each problem by the authors.
j_random_hacker
+3  A: 
webdestroya
not sure why you were downvoted. Project Euler is awesome.
darren
Yea agreed. I don't know why either, I think both of these truly test your ability to write efficient programs.
webdestroya
+2  A: 

There are quite a few "challenge" sites, such as Project Euler, UVa online judge, and Sphere online judge.

There are also some sites oriented more toward testing, such as ExpertRating, and BrainBench. The last time I looked at these, their tests didn't impress me much though (the questions were rather poorly chosen, often none of the answers you could select was really correct, etc.)

Jerry Coffin
+1  A: 

Many languages have different certification tests, and you can get old tests to help prepare for those certification tests. Taking some of those old tests may be good way to judge your skills.

Jay
+2  A: 

Are you measuring "smartness" vs "stupidity", or "smartness" vs "ignorance". Those are two different things.

For example, say that you have a Java singleton, but you want to make sure that some startup code is run before it's used.

Perhaps, you'll put something like "mySingleton.init()" in your applications startup code.

But then, you learn that Java has static initialization code that runs when the class is loaded, and, perhaps, that could have been used instead.

So, knowing this, were you stupid before?

No, you were just ignorant of a language feature. Your solution was "smart" and well applied, it's just not "enforced" by the language (the code could have been mistakenly used without being properly initialized).

So, what are you trying to test?

Will Hartung
Thanks for mentioning the ignorance. It is another important property.
Ivo Danihelka
+2  A: 

Google code jam is a good tests too..

Sridhar Iyer
+2  A: 

Good programmers write good programs.
It's not an absolute rule, but rather a statistical tendency. You can look take this as a good signal: if you write good programs, you are a good programmer.

Logical next question: what is a good program? how do you know if your programs are good?

I see 2 scenarios:

1) Let other people judge your program on its own. Create a project and share the results (in any form - source code, libs, executable) with your friends or just make it downloadable for anybody and allow some form of a feedback.

or

2) Compare your programs against other people programs - enter programming competitions (mentioned in other answers already).

Which way you choose depends on you. My simplified guide:

  • Do you already have an idea of a project you'd like to implement? Go to option 1.
  • Do you like math problems? Go to http://projecteuler.net/
  • Do you like writing code quickly, for simpler problems? Go to http://topcoder.com
  • Do you like complex algorithms, want a real challenge? Go to Al Zimmermann's Programming contests: http://www.azspcs.net
Igor Krivokon