14

I have many friends that see what I do, find it interesting and ask me the question

Do you think I could be a programmer?

My response is

...   ummm  ...  do you like math?

I'd like to have a helpful response, so I didn't know if anyone knew of a fairly decent aptitude test for someone that would be starting from square one, but has critical thinking and problem solving skills?

5
  • I propose BuzzFizz: Given three different executables, can they run them and identify which one is "FizzBuzz"?
    – Macneil
    Dec 31, 2010 at 3:09
  • 15
    Don't mix math and programming. I work as a programmer for years. I hate math. Another example: Jeff Atwood is an excellent programmer. He hates math (see codinghorror.com/blog/2007/01/…, point 3). Dec 31, 2010 at 3:14
  • 2
    @MainMa I can't emphasize how true this. I am in the exact same boat. Math has never been a passion of mine, or even a strong point, for that matter. That being said, many who know me will attest to my extreme aptitude (read: obsession) for programming. Math can be a major part of programming, but one does not necessarily beget the other. Dec 31, 2010 at 3:21
  • 1
    maybe when I say, "do you like math?", I mean to say "do you respect math?", I actually suck at math by hand, which is why I like making the computer do the math for me, but I respect and understand the finite principles of math which I believe help me in my logical thinking processes. Dec 31, 2010 at 5:38
  • 2
    "apptitude" is a really cool typo in this context :-)
    – Ferruccio
    Jan 1, 2011 at 1:36

10 Answers 10

12

"Liking math" is a bad test. I never liked math (mostly because 90% of math teachers in high school sucked).

When you say "math", most people think you mean "carefully solving an equation according a very strict set of rules". Programming is not like that at all.

Programming is more like drawing, in that what you can achieve is only restricted by what you can imagine.

What matters is the ability to imagine a system and see how it works.

  • Do you think about how things work?
  • Do you think about ways to improve everyday things?
  • Can you visualize how to build something out of simpler building blocks?
7
  • Is it more like geometry?
    – Gulshan
    Dec 31, 2010 at 5:46
  • it's an applied science, so it doesn't really have a pure science "equivilent" per se. Dec 31, 2010 at 6:43
  • 1
    Programming is more like carpentry, you first visualize the solution, select your tools, apply your craft carefully using the best TDD wood. Jesus would have been a programmer if the commodore 64 had been invented a little earlier.
    – Will
    Dec 31, 2010 at 15:27
  • 2
    Actually what you described sounds a lot like math -- as opposed to what passes for math ins schools.
    – uman
    Jan 1, 2011 at 2:03
  • 1
    @Brennan: The only math I found similar to programming was Discrete Math in university. Most other math we studied was about mindlessly applying rules and formulas to solve some sort of an equation. You can argue that's not true math, but it doesn't matter to this discussion.
    – hasen
    Jan 1, 2011 at 7:14
8

I remember from back as a kid doing a Brainbench Aptitude Test; I still have the certificate stored away somewhere...

The test outline:

Abstract Thinking
    Process Flow
    Spatial Manipulation
Analytical Reasoning
    Inductive Reasoning
    Logic Application
    Word Problems
Attention to Detail
    Following Instructions
    Reading Comprehension
    Rule Interpretation
    Writing Analysis
Mathematical Problem-Solving
    Word Problems
Process Mapping
    General Processes
    Letter Manipulation Processes
    Number Manipulation Processes
    Shape Manipulation Processes
4
  • 1
    That's a very complicated test. If someone told me to take the test before delving into programming I would've been scared off. OK, maybe I wouldn't care, but anyone who would take the test seriously would be scared off.
    – hasen
    Dec 31, 2010 at 5:53
  • 2
    So? Programming can be a complicated field (like may others). If you are scared off that easily, maybe it isn't for you. Imagine if you were asked if someone wanted to be a Doctor, what should they be good at? I don't think you would care that it scared some people off... Life's hard & complex, they should get used to it. Dec 31, 2010 at 6:32
  • 2
    Well, it's a complicated field, if you approach it head on you will fail. Everyone who started programming started with easy stuff, and believed that it's really easy. That belief will likely be maintained through out their learning experience. You never realize how complicated it is until you look back, or watch someone struggle with something that you find very basic.
    – hasen
    Dec 31, 2010 at 10:42
  • Sorry, by the list above are essential skills you will use as a programmer. I think you are been scared by their names, rather than the questions that would fall under them. It isn't like it asking you any complex concepts used in programming. In other words, aptitude tests have nothing to do with how much you understand programming concepts which you can learn, it is about aptitude, so the comment about "starting with easy stuff" isn't really relevant here Jan 1, 2011 at 4:29
7

There's a chance that there's a good one already out there.

See for example the discussion on Separating Programming Sheep from Non-Programming Goats:

All teachers of programming find that their results display a 'double hump'. It is as if there are two populations: those who can [program], and those who cannot [program], each with its own independent bell curve. Almost all research into programming teaching and learning have concentrated on teaching: change the language, change the application area, use an IDE and work on motivation. None of it works, and the double hump persists. We have a test which picks out the population that can program, before the course begins. We can pick apart the double hump. You probably don't believe this, but you will after you hear the talk. We don't know exactly how/why it works, but we have some good theories.

What the test identifies is how consistent people are with operationalizing a sequence of instructions. What that means is they can build models (abstractions) in their minds and work with them.

2

I think a more important "test" would be to show them a simple programming language / environment that they can play around with. For example, processing or python. If they can learn and enjoy using such a language - maybe while solving a simple task or two - then that is probably the best "aptitude test" you could ask for.

2

"Do you like math?" is not a bad start. Maths is critical, after that...

It is advisable to see if they can take a problem and start breaking it in to blocks, just in speech, whether they can walk step-by-step through a basic problem is a good initial start.

  • How would you tell a robot how to make a cup of tea? Be as specific as possible.
  • Ordering a meal at McDonalds, what steps are involved in handling the order, from initially being told to giving change/food.
  • How does the telephone system work?

If they can answer them well, in the analytical and deep fashion that a programmer has to day by day, they can probably handle it.

1

Once you're exposed to coding, you either have a compulsion to do it or you don't. Aptitude is just one factor on whether or not you'll be good at it. Exposure to good examples, instruction, time on task, effort are others. Really wanting/needing to do something makes it much easier to take advantage of the other factors.

1

A better question than "Do you like math" is "Do you like to solve logical puzzles"? This is things like Sudoku, etc, or figuring out the answer to conundrums such as "John, Anne, Peter, Mary and Brittany are neighbours. John has a white car, Brittany lives to the left of Anne, blah blah, in which order to they live?"

Because that is what programming is: One huge logical puzzle.

2
  • 1
    I (somewhat) like maths, but puzzles are just needless bashing of one's head against walls. I think the you need motivation to create something useful -as opposed to mental gymnastics for the purposes of showing off how smart you are. Jan 1, 2011 at 3:36
  • Well, OK, you don't need to like it, just be good at it. :-) Jan 1, 2011 at 7:23
1

I think a better question is "Do you like building things with lego blocks?"

1

Just like the Gusteau, a character from the movie Ratatouille said:

Anyone can cook.

In the same way, anyone can program. But, not everyone will be great at it. Most programming jobs require an average level of aptitude and competency.

Just answer yes. Why? Because most people just want to feel appreciated by someone who they think is smart.

1
  • 2
    I strongly disagree that anyone can program. It sucks, but that's life.
    – uman
    Jan 1, 2011 at 2:04
0

I think the liking math is important. Not from the standpoint of do you enjoy rigorously proving stuff, which would be required to be a serious mathematician. But, given a problem that is important to you, can you formulate the issues involved in solving it in a mathematical way. I claim, everything a computer does is math, it takes symbolic data of some sort, and performs some sort of operation on it. That is the essence of math. So you gotta be able to abstract things into some sort af mathematical like structure, and reason about the steps forward. Lacking that, you are just hacking, throwing out some code, and hoping it does what you want. Being able to solve complicated algebra without making typos and getting lost, is probably not so needed. But being able to formulate a plan, is important. I often write ten line programs to verify that my not too complicated math has been doen right. Combining computers with math, for purposes of verification, discovery, and yes to work out the details, when there are a lot of them, is the real key.

Not the answer you're looking for? Browse other questions tagged or ask your own question.