The Programmer Gene

26 Oct 2011 In: Life, Programming, Musings

My wife and I recently did a personal genetic test using 23andMe.com. There was a wealth of information about disease probabilities, family history, and some "trait" information that has been determined by studies that compare certain types of people to other people. Way at the bottom of the traits list was this interesting one: "Avoidance of Errors". From 23andMe.com:

"Learning involves a range of behaviors and skills. These include developing a tendency to prefer rewarded (positively reinforced) choices while avoiding those that are either punished or negatively reinforced. Past studies have shown that the neurotransmitter dopamine is involved in such trial-and-error learning; that means variations in genes related to dopamine signaling may also affect a person's ability to learn."

The German study that found this was able to show that some people's brains reward them when they take paths that avoid errors, while others do not. And, as I know from basic college psychology, when your brain gives you dopamine for certain things, it is actually changing your brain pathways and in turn changing your behavior.

Programmers encounter errors every day, sometimes hundreds of them. In any given day I write some code, complie, look at the error list, fix, compile, fix, and on and on. It doesn't bother me in the slightest that 99 times I see error and one time I see no errors. Contrast that to my wife, who has the error avoidance gene. She works with people, and she manages a clinical research study. Errors with people, and errors with measurement are bad. She should avoid them. Of course errors in code are bad as well, and I strive to release code that is error free and loathe every time a bug ends up in production, it gives me a sick-to-my-stomach feeling actually.

After thinking it through I'm reminded of an experience in college. I went to an undergrad welcome event for computer science majors and met a lot of young would-be computer people. One stood out, we'll call him Eric, who was so certain of how his college career would pan out and how he'd move along to an internship with one of 3 companies he had already pre-selected. I couldn't decide if I admired this guy, or if I thought he was just full of it. He did have some programming under his belt from high school, and my high school didn't offer any real programming classes so all I had was what hacking I had done myself.

I ended up seeing Eric again in the first programming class everyone had to take, the "weeder" class that thins out the impacted major. Fast forward to the first major programming assignment, due 9.a.m Saturday morning. EVERYONE, the entire class, is tired and frantically figuring out how to pass all the test cases in the basement of a large concrete building at 3.am. I was sitting next to Eric, trying to figure out test case #15 and having no luck. I had what I thought would work, but was getting maybe a dozen compile errors or warnings as I made my way towards the final working progress. I leaned over to him, 

Me: "Hey, how's it going?"

Eric: "Good good, almost done I think."

Me: "Really? Wow, that's awesome. " (I couldn't believe it. I'd be there until the sun came up turning it in just before the 9.am deadline like most).

Me: "Can I ask you a question about #15? I think I'm doing it as it says, but I keep getting this compile error: 'Blah blah'. Are you getting that too?"

Him: "Oh, I'm writing it all out first, then I'm going to turn on the errors."

Me: "Oh, ok, nevermind then."

I think I just guessed he was that good, that he could write the whole thing out free form and with all the pieces in place it'd work. He didn't want to see the errors, they were really bothering him and hindering him from proceeding along.  A couple hours later (4 or 5 am) I was down to probably half the errors and warnings from before, curious how he was doing. 

Me: "Making some progress?"

Eric: "Yup, almost done. I'm about to compile with the errors and warnings turned on."

He went to the command line, compiled -- 187 errors & warnings. Eric's mouth dropped. You could tell, it was game over and he knew it. Having avoided seeing the errors all week, he now had too many to resolve. He hadn't assembled the program layer by layer against the compiler errors the way I had. He looked over and said "I'm going to work on this from my room and fix these before 9". He packed up and left. Needless to say, he dropped the class. I then saw him a year later, he had changed his major and was happy doing something else.

I thought of this when I saw the genetic trait analysis. If your brain is fighting you every time you see an error, you're not going to like programming (maybe you'd be a good QA person though?). When I was a kid I used to take toys apart, and see how they worked, sometimes they'd go back together, sometimes not. It didn't bother me too much. Making circuits on a breadboard, if I crossed some wires and fried an LED or motor, no biggie. I picked up programming as early as elementary school using Logo, without the internet to look up solutions, so you can imagine how many errors I'd see there. If your brain is wired to treat you to avoid seeing those errors, you're not going to like programming. If an error is just another feedback, like a hint, or like a bowling alley rubber bumper, then you're the programmer type.

What do you think? Can someone be error-avoiding and be a programmer?

Huh, so I guess it did take me 4 months to post something new. 4 months? That’s a long long time. Well, sorry anyone who checks back, I’ve probably lost most of you. Anyways I guess a brief summary of what I’ve been up to is in order.

Jesica and I ended our trip abroad nicely with her family, celebrating her birthday and saying goodbye to everyone we had met and seeing all the last minute sights we had to see in Buenos Aires. When I got back it was seriously time to find a job as UCSD would only employ me for another month as the webmaster for The University Centers. I had been in communication with Taylor and after I got back continued to persist and was hoping for a chance there. After back and forth I got an interview, and 2 weeks later, on my very last day of employment at UCEN, I was called with the offer.

In other news, Toto, my beloved pal died. He was wither 19 or 20 years old, which is just crazy old in dog years. Is it 140? I'm not sure..

Anyways, photos of Toto... may he rest in peace.
 





As you can imagine, I can't sum up 5 months, but expect more posts soon... very soon.

Graduation / Moving

29 Jun 2006 In: Life

Mid June Recap:
So much excitement in one weekend. Finals week was HARD with my white whale class-- Math 20B. Studying was less than fun, on top of that I was moving! Jes and I now LIVE TOGETHER and I couldn't be happier. Well, I could be if she actually was here and not in Argentina. Good news is that I will be seeing her soon. Graduation was good and all, it was nice to see the fam.

Summer Schedule:

  • June 23-30: Work
  • July 1 - 8: Kauai w/ Fam
  • July 9 - 16:San Diego and Work
  • July 16 - August 16: Argentina, Brazil w/ Jes
  • Augsut 17 - Until I make my MILLIONS: Work