Programmers in my industry often can be placed into one of two buckets:
1) Programmers who understand how humans use software.
2) Programmers who don't.
People in bucket #1 often end up working on the "front" end of software that the users see, while bucket #2 people focus on the "back"end where the databases and ones and zeroes live. Me? I'm not good with people, so I'm a back-end guy.
That being said, I work at a small start-up and we all do whatever needs to be done, so I just started working on our new iPhone app. So, I'm frantically sticking buttons and doodads and whatnot on our iPhone app in the hopes that humans will click on them.
Actually, that's a terrible characterization of what I'm doing. Writing an iPhone app involves using a programming language that I'm unfamiliar with, so it's pretty slow going. The word "frantic" is ok, but it doesn't so much describe my productivity as my frequency of googling phrases like "make iphone scroll not suck." Learning a new language isn't that difficult, but being proficient at it always takes a while. In the beginning my programs are always filled with mistakes, both conceptual and simple.
Part of the problem is that computers are so unforgiving. For example, some languages make you put a semicolon at the end of each statement. So you might have a chunk of code that looks like this:
print "Blog ";
print "posts ";
print "about ";
print "computer ";
print "stuff ";
print "are ";
print "the "
The idea being that this piece of code would print out "Blog posts about computer stuff are the best!"
However, odds are that the computer would load up that program and would be completely stymied. Why? I left out the semicolon at the end of one line. Instead of running the program, it would print out a cryptic message like "Unexpected word: print"
Then, a surprisingly long debugging session would ensue. The whole interaction could be summarized by this conversation:
Me: Ok, program, run!
Computer: I have no idea what this is.
Me: Seriously? It's a super simple program. It just prints a sentence.
Computer: I'm being serious. I can't make heads or tails of this. Why does it say "print" there at the end?
Me: What? Do you know what the first "print" does?
Me: And the second one?
Me: So, what's wrong with the last one?
Computer: Beats me. Total nonsense.
Me: You understand every "print" except the last one?
Computer: To be honest, the last two lines are totally baffling. Is it maybe in Portuguese?
Me: What?! No! Why would I code in Portuguese?
Then I'd remove lines, stare at crap and then an hour later eventually figure out that I forgot one of the semicolons.
Me: Really? You had no clue what to do because I left out just one of the semicolons?
Computer: Seemed like gibberish at the time.
Me: It was like 95% correct. That gets a grade of an A nearly everywhere in the world.
So far I'm getting an F in iPhone apps.