Flow, coding, and math

Rory wrote a post entitled “Whole Brain Coding” a couple of days ago, in which he asserts that coding requires both the left and right halves of the brain, the left brain working on the sequential and analytical parts of the task, and the right brain working on the intuitive and holistic parts (reverse these if you live in the southern hemisphere…)

When things are going well and you’re in the “flow“, my guess is that you’re seeing involvement of both sides of the brain, but I’m not sure that that’s all there is to it (I’m not asserting that Rory said that). I did a few searches to try to see what research had been done into the “flow”, but didn’t come up with much. There is:

In the Zone: A Bio-Behavioristic Analysis of Csikszentmihalyi’s Flow Experience

but I have a hard time parsing sentences like:

Primarily, the decision making process behind such behaviors as disparate as creative thinking, problem solving, or walking to the store are all dependent upon and influenced by somatic or neural activation variables that are mediated by abstract environmental contingencies.

I think that’s saying, “The way we make decisions is dependent on what’s going on around us”, which makes me happy that I’m not a psychologist who has to read and write papers like that.

There’s also

Understanding the Psychology of Programming

which is a light intro to the topic.

On the whole math vs. coding thing, though I have a math minor and enjoyed my math classes up through linear algebra and multivariable classes, I ended up in software for two reasons:

  1. There’s more opportunity in it
  2. Coding is way easier than math for me


Comments (8)

  1. Here’s my $0.02:

    I think part of the reason so many programmers like coding better than math is because of the order in which math is taught.

    Calculus and linear algebra are always taught first, because that’s what most engineers need in order to do engineering. Things like abstract algebra are generally taught after calculus, because before computers were invented the only people who needed to know those types of things were pure mathematicians interested in developing theory for the sake of developing theory (that is, there was no practical value).

    Most engineers don’t gain anything from knowing the definition of a partial order, or a semi group. No ever needs to write an inductive proof to figure out if a building will stand up or a car will accelerate quickly.

    On the other hand, most computer scientists don’t use much calculus on a daily basis. However, every time they sort something, or use modular arithmetic, they are utilizing abstract algebra. Any time they use an optimizing compiler, or neat static analysis tools, they are reaping the benefits of lattices and fixed points.

    If they just flipped things around for computer scientists (taught abstract algebra first, then calculus), I think most people wouldn’t see "coding as being way easier than math". In fact, I think they would think of them as being different ways of looking at the same thing.

  2. I agree with Scott in that I don’t like the way the math is taught. Linear Algebra should be expanded into a year long course instead of the 6 month or "summer crash" course. Also I feel that the people who teach the Linear Algebra classes bring their own perspective into the class, which is natural. I had a professor who worked in New Mexico on the bomb and his style of teaching was very "mathamatical". My ex roommate on the otherhand was lucky enough to get into a class with a majority of CS students so the prof, who had some CS background, drove the class in the problem domain for CS.

    Also for the calculus classes (1,2,3) there is just not enough time to absorb the data being thrown at you before you have to go onto the next level up. I think math is very important to the CS field and I don’t think the fact that "we don’t use calculus on a daily basis" should justify the crude methods of teaching.

    Another class that should be "emphasized" is Discreet Math. Its amazing how many "bad" instructors taught Discreet Math and as a result, students suffer. I had a prof whose accent was so horrendous, instead of saying "algorithm" he used to say "algotha". For a few days, it was quite funny. Then when you had to actually do something, you were screwed because you were too busy trying to parse his english.

    All this rambling aside, my point is, if math classes were taught with a "CS" flavor, there would probably be more Masters and Phd researchers and there would be better programmers too.

  3. Kim 'hoping to be doctor' G. says:

    I agree with Sushant’s comment about Linear Algebra (not a requirement for my BS degree) which in my humble opinion is a powerful tool that has proven more useful than multivariable calculus (a requirement I had for my BS degree). Having said that, I find that my single variable, ‘basic’ calculus has this annoying habit of turning up when I least expect it.

    As for right brain vs left brain, medical imaging has caused that particular idea to become more clouded e.g. the two hemispheres are not as separated as once believed.

    I am in a position where I get to do both programming and math. More accurately, I figure out the math I need and then ask this little box to do the calculations for me freeing me up for more important things like figuring out the next level of math I need. So depending on the day of the week, and in some cases, the hour of that day, my relevant liking of math and programming are in a constant state of flux.

  4. If you want to stress your ability to balance right and left brain activities, try writing an Interactive Fiction game. You need to be able to write well and code well. There are OO languages specifically suited to do this too, namely Inform, TADS 3, and Hugo.

  5. Omar Shahine recently posted an inspiring ode to laziness: An email every few minutes and desktop alert + sound to go with it makes it to easy to lose focus on my task at hand and look at my…

  6. tina says: