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.
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.
Have a look at topcoder it has many challenges. The Algorithm competition challenges you a lot
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.)
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.
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?
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: