Study Finds Brain Activity of Coders Isn't Like Language or Math (boingboing.net) 88
"When you do computer programming, what sort of mental work are you doing?" asks science/tech journalist Clive Thompson:
For a long time, folks have speculated on this. Since coding involves pondering hierarchies of symbols, maybe the mental work is kinda like writing or reading? Others have speculated it's more similar to the way our brains process math and puzzles. A group of MIT neuroscientists recently did fMRI brain-scans of young adults while they were solving a small coding challenge using a textual programming language (Python) and a visual one (Scratch Jr.). The results?
The brain activity wasn't similar to when we process language. Instead, coding seems to activate the "multiple demand network," which — as the scientists note in a public-relations writeup of their work — "is also recruited for complex cognitive tasks such as solving math problems or crossword puzzles."
So, coding is more like doing math than processing language?
Sorrrrrrt of ... but not exactly so. The scientists saw activity patterns that differ from those you'd see during math, too.
The upshot: Coding — in this (very preliminary!) work, anyway — looks to be a little different from either language or math. As the note, in a media release...
"Understanding computer code seems to be its own thing...."
Just anecdotally — having interviewed hundreds of coders and computer scientists for my book CODERS — I've met amazing programmers and computer scientists with all manner of intellectual makeups. There were math-heads, and there were people who practically counted on their fingers. There were programmers obsessed with — and eloquent in — language, and ones gently baffled by written and spoken communication. Lots of musicians, lots of folks who slid in via a love of art and visual design, then whose brains just seized excitedly on the mouthfeel of algorithms.
The brain activity wasn't similar to when we process language. Instead, coding seems to activate the "multiple demand network," which — as the scientists note in a public-relations writeup of their work — "is also recruited for complex cognitive tasks such as solving math problems or crossword puzzles."
So, coding is more like doing math than processing language?
Sorrrrrrt of ... but not exactly so. The scientists saw activity patterns that differ from those you'd see during math, too.
The upshot: Coding — in this (very preliminary!) work, anyway — looks to be a little different from either language or math. As the note, in a media release...
"Understanding computer code seems to be its own thing...."
Just anecdotally — having interviewed hundreds of coders and computer scientists for my book CODERS — I've met amazing programmers and computer scientists with all manner of intellectual makeups. There were math-heads, and there were people who practically counted on their fingers. There were programmers obsessed with — and eloquent in — language, and ones gently baffled by written and spoken communication. Lots of musicians, lots of folks who slid in via a love of art and visual design, then whose brains just seized excitedly on the mouthfeel of algorithms.
It's problem solving. (Score:5, Insightful)
Math and linguistics (generally) have distinct patterns for which to arrive at a conclusion. It's more likely that what is being seeing is simply abstract problem solving. I can't say for sure but I think you may find similar activity patterns in the brains of an engineer given a generic problem set to solve with no clear restraints. Instead of solving a specific instance of a problem, they would be working to solve generic instances of the problem.
Re:It's problem solving. (Score:4)
I wish they had understood this back when I was taking computer science classes in the 1980s. Any degree plan with "science" in it required the student to pass calculus, and I just could not (and still can't) wrap my brain around it for whatever reason. It's completely alien to me. Calculus was the first class I ever failed, and I managed to fail it three times before I had to give up and change majors. Fortunately that particular school also offered a computer degree in the business department (or, as we say in Texas, "bidness") and all I had to do was replace calculus with accounting/marketing/management.
My wife had the same problem getting her nursing degree, even though after some 30+ years as a nurse she never once needed calculus to do her job or learn new skills. Fortunately for her she didn't have the mental block against calculus that I do.
Re: (Score:2)
You just had a terrible calculus teacher.
Re: (Score:2)
Yup it makes all the difference. Senior in HS, I only passed calculus because the teacher was afraid if 75% the class failed, he'd be out of a job, so he applied just enough curve to keep that from happening.
Freshman in college, my final grade in calculus was 99 out of 100.
Re: (Score:2)
That makes a big difference, but it isn't the total story. I did pass several years of calculus, but it sure isn't the same kind of thinking as I use in programming. And I think I spend 3 months trying to understand the theorem of limits before I finally "got" it. (But I still don't believe in continuity.)
Re: (Score:2)
You just had a terrible calculus teacher.
More realistically, he didn't have a good grasp of algebra going into the class.
Re: (Score:2)
Re: (Score:2, Funny)
Calculus was the first class I ever failed, and I managed to fail it three times before I had to give up and change majors. Fortunately that particular school also offered a computer degree in the business department (or, as we say in Texas, "bidness") and all I had to do was replace calculus with accounting/marketing/management.
The only college course I was ever in danger of failing was accounting -- because it was the MOST GODAWFUL BORING THING I HAD EVER ENCOUNTERED. I dropped it before I failed it, and changed my major.
Now I develop applications for accountants. Please kill me.
Re: (Score:2)
Calculus was the first class I ever failed, and I managed to fail it three times before I had to give up and change majors. Fortunately that particular school also offered a computer degree in the business department (or, as we say in Texas, "bidness") and all I had to do was replace calculus with accounting/marketing/management.
The only college course I was ever in danger of failing was accounting -- because it was the MOST GODAWFUL BORING THING I HAD EVER ENCOUNTERED. I dropped it before I failed it, and changed my major.
Now I develop applications for accountants. Please kill me.
I ended up with a couple bachelors, with about 3 or 4 minors, but the bidness classes I took were kind of a nice break from math and programming.
Re: (Score:1)
Re: (Score:2)
Going into my accounting 101 class, I thought that, too, but I actually found it interesting and kind of enjoyed it.
I would never want to do accounting for a living, though.
Re: (Score:1)
I wish they had understood this back when I was taking computer science classes in the 1980s. Any degree plan with "science" in it required the student to pass calculus, and I just could not (and still can't) wrap my brain around it for whatever reason. It's completely alien to me. Calculus was the first class I ever failed, and I managed to fail it three times before I had to give up and change majors. Fortunately that particular school also offered a computer degree in the business department (or, as we say in Texas, "bidness") and all I had to do was replace calculus with accounting/marketing/management.
My wife had the same problem getting her nursing degree, even though after some 30+ years as a nurse she never once needed calculus to do her job or learn new skills. Fortunately for her she didn't have the mental block against calculus that I do.
It's not the Calculus that people struggle with, it's the algebra and trigonometry. I think a nurse could get by without understanding how to get a line of best fit using derivatives, or how u-substitution accounts for the empirical rule, but without a good grasp of algebra it's impossible to understand probability and statistics.
Re: It's problem solving. (Score:1)
It is, however, possible to *use* probability by plugging numbers into handbook formulas in a way very much like high school algebra.
Re: (Score:2)
Statistics and probabilities have wonderful flavours, you either enjoy the play of patterns or you do not.
Coding, is not logical, is remembering and applying the rule set of the coders who created the coding language, completely arbitrary and just their what evers at the time and often quite illogical.
Change the shape and feel of coding to more closely be a logical derivative of the English language and grammar and mathematical formula and it will align in the brain as such. Make it more of a memory and pu
Re: (Score:2)
Any degree plan with "science" in it required the student to pass calculus, and I just could not (and still can't) wrap my brain around it for whatever reason. It's completely alien to me.
I've spent most of the past month working heavily with Maxwell's Equations, designing some motor magnetics, and IMO Calculus is a crock of shit. The part that is hardest to come to grips with is that it is not a clear, deterministic set of steps to get an answer, but a loose system that requires the user to figure out what actual steps to take on a case-by-case basis, often involving trial and error.
Whereas what is actually needed to solve specific problems is the algebra that gets the desired output from t
Re: (Score:2)
If you hate calculus then you must really hate number theory.
Re: (Score:2)
False. I don't hate number theory, because I don't have to even care about it.
If you need a theory to know you're calculating something, you're just a moron that I look down on.
The only number theories I need are the ones that are determined by digital logic, and the noise of an op amp. E.g., the parts that can make it into a machine. The rest is either academics or low-quality masturbation.
No, no, I'm not really entirely serious; I do have deep respect for Democritus and his explanation of the Atom. To thi
Re: (Score:2)
False. I don't hate number theory, because I don't have to even care about it.
What is the point of trying to engage with someone who will not admit even the simplest fact about themselves, simply because those words came out of somebody else's mouth? See ya, stopped at the first line of your post. The technical term for what you wrote is a "shut up" so I will happily comply.
Re: (Score:2)
Re: (Score:1)
I'm not sure if you're serious.
First, Maxewell's Equations are differential equations. As in, algebraic equations with Calculus thrown in. And if you want to study differential equations, you'll probably want to extract eigenvalues or eigenvectors from the Jacobian computed at a fixed point, which is a generalization of the derivative. And I really don't want to tell you what a phase space is. No really, what do you think those arrows are? And any actual use of a manifold (aside a 101 introduction for layme
Re: (Score:2)
I'm not sure if you're serious.
Then you're not ready to attempt to draw conclusions, or to `splain anything, are you?
No, you'd only be ready to ask questions. I'll scan your words for questions.
No really, what do you think those arrows are?
LOL right, you're never going to be able to figure out if I'm serious, you didn't comprehend the words. That's a prerequisite.
Coding vs programming / software development (Score:4)
When I'm engineering an information system, designing a program, for me it's very much like designing a workbench made of 2x4s, a particular type of spacial reasoning almost. I see parts fitting together in my head.
Later, having designed it, writing it down is writing it down - whether in English, Python, Perl, C, or any other language that I know well. That's all language to me.
Coding a language I DON'T know well, exercising my memory, is a totally different kind of thinking. Just like writing in Spanish or Latin (and therefore thinking about Spanish or Latin) is very different from writing in English, because I don't have to think *about* English, I think *in* English, about my ideas.
I think in English when I think about lunch, or politics or economics. I think in SQL and relational calculus when I think about relations (database tables).
If they gave the subjects *coding* challenges that were somewhat difficult for the subjects to *code*, that's an entirely different kind of thinking than a skilled programmer using a given language write down their thoughts.
Having said that ... (Score:5, Insightful)
I mentioned that when I'm designing (or studying) a system, I see the parts fitting together, much like physical parts fitting together to make a physical object. HOWEVER ...
I'm pretty good at systems design and analysis, but absolutely horrible at Lego or building things from simple geometric shapes. I'm so bad, it's like a color-blind person sorting green apples from red, or a deaf person composing music. It makes me think part of my brain might be broken. Yet, I see, in my mind's eye, software components fitting together as if they were physical puzzle pieces and I'm good at that. So apparently something is different about those things.
I think maybe the difference is that Lego, or rectangles and triangles, are so generic they could fit anywhere. In an information system, in software, if data is to be stored it pretty much needs to use a database piece or a flat file piece. Communication between components must use a socket, file, or shared memory - I know which pieces can fit there. With physical building blocks like Lego I have no idea where to start - any piece could potentially go anywhere.
Re: (Score:2)
I think these posts sound very accurate to the way my mind approaches coding. Everything for me is like thinking of a mental flowchart and fitting the available coding components together so the multiple possible inputs produce the proper multiple possible outputs. ...it's all pipes with data flowing through them.
Re: Having said that ... (Score:1)
His suggestion, "what does the calendar look like for you?" was followed with, "a good candidate will not need elaboration," struck a nerve when I first read it.
Software is the only real thing we deal with as humans that lives in more than three dimensions plus time. Everything else in everyday experience fits into four or fewer. It's not surprising th
Re: (Score:2)
As I became better at coding, I became worse at Legos and other physical projects.
When I code up an idea, I just dive in. When I realize it isn't going to work, I can just cut-and-paste and do global regex-replacements to quickly change direction.
But with physical objects, there is no cut-and-paste. There is no regex to replace every 2x4 blue Lego brick with a 2x6 red Lego brick. Backtracking means major disassembling.
Coding conditioned me to ignore the PPPP PPPP.
PPPP PPPP = Proper Prior Planning Prevent
Re: (Score:3)
> When I code up an idea, I just dive in. When I realize it isn't going to work, I can just cut-and-paste and do global regex-replacements to quickly change direction.
I found that after 25 years, 90% of any project is stuff I've done before, probably done many times. The user interface, often involving CRUD operations, for example. Input and output like converting to or from XML. About 5% or less of any project is an idea that potentially won't work. So I do that 1%-5% first. "Build an input form" is
Re: (Score:2)
So you're comparing yourself to Beethoven?
Re: (Score:2)
I knew Beethoven. Beethoven was a friend of mine. And jbengt, I'm not Beethoven. :)
Re: Coding vs programming / software development (Score:3)
Re: (Score:2)
Yes, it is much like this for me, too! Except inductors, those I have think about less organically. "oh, magnetics... lets see here... uhhm..." it all depends on what is driving the switch, in that case. And that is probably only diagrammed as a port! On the design side, I try to picture the magnetic components using water analogs, but it is all about the switches what I end up seeing. Sometimes I can see it like a moving clock face, then it is easier, but that's only with an AC output.
Re: Coding vs programming / software development (Score:2)
Re: (Score:2)
I didn't have any sort of early engineering education. I started writing software in BASIC at age 10. I wrote a lot of code during middle school, then took a break. Then I got really into software in my 20s. I didn't start with electronics until nearly my 30s, I've been doing that for 15 years now. At first it was hard, and I was mostly using algorithmic thinking, but then I listened to the Feynman Lectures a bunch of times and that helped a lot. Now, when I don't understand something, I watch the relevant
Re: (Score:2)
"Coding a language I DON'T know well, exercising my memory, is a totally different kind of thinking. Just like writing in Spanish or Latin (and therefore thinking about Spanish or Latin) "
When I took French, I was good enough that my inner monologue was in French, and I didn't have speech problems that I have in English. C or C++ are just as automatic, C# sometimes I have to figuratively look up a word in the dictionary.
Not clear on the point you were making, but this study is not exactly something we can d
Re: (Score:2)
> Not clear on the point you were making, but this study is not exactly something we can draw conclusions from so your anecdote is just as valid as these results.
The implied question in the first half of your sentence is answered in the second half. :)
The particular type of thinking that is used to solve a "coding puzzle" by college students is not necessarily "how programmers think". If you give college students (who are not professional programmers) a coding puzzle, what you learn is how college studen
Re: It's problem solving. (Score:2)
As a non coder who does some very light coding, thats how I do it. I approach it as problem solving. I have the benefit of only doing coding for data aggregation and analysis(primarily with SAS), so for me it's like building something out of Legos without using a kit. I'm basically putting pieces together to get the end result i want, even though it might not be the prettiest or most elegant. I know the result I want, I know my skills are limited, so how can I get there using what I know and what I can reas
Re: (Score:2)
One thing I've noticed is almost all the really good coders I know have all been musicians.
I wonder if that broad ability to pattern match (which ultimately is at the core of music, big patterns, symmetries, cycles, etc) translates well into programming.
Or is it just a coincidence.
Re: (Score:2)
Coincidence.
Though all the good coders I've known had some sort of creative hobby. But I think which type of creative hobby it is has more to do with their sociocultural tribe.
Re: (Score:2)
I remember seeing a study that showed teaching a kid an instrument correlated with better skills in math, geometry and representation in space and time as well as a better memory. This sounds a lot like the skills mentioned in the article.
It makes a lot of sense, in order to memorize a song, you need to work your memory. You need to be able to visualize the song in its entirety to be able to apply emotions, improvisation, correct for mistakes.
If you think of it, a song is like a computer program or a recipe
Re: (Score:1)
As a general rule, getting into higher math, and into coding, requires being able to use symbology OTHER THAN that used in human-language reading and reading comprehension. Reading music also requires that. Ergo, someone who is
Dark grey boxes (Score:1)
The most common mental task is wondering why the fucking API/framework doesn't behave like common sense would dictate.
Re: (Score:2)
That's like arguing with a religious text.
The correct questions are things like, "why does this API benefit from doing things differently than I expected?" and "WTF formal algorithm is this supposed to be, if any?"
The answer to the former is usually, "they're following foo, bar, and baz software principles." Which is a different set that your Favorite Flavor.
To summarize (Score:2)
Doing a unique mental/physical task such as coding will have a unique pattern of activation in certain brain regions, sometimes coextenstive with activity seen in distinct tasks that share overlapping but also distinct cognitive demands.
I mean, that is really obvious. You don't need a neuroimaging study for that. As someone who studied neuroscience in school (and then went on to study Psychology in graduate school), I find neuroimaging studies like this to be very crude descriptive tools that generally just
Re: (Score:2)
You don't need a neuroimaging study for that.... I find neuroimaging studies like this to be very crude descriptive tools that generally just confirm what should otherwise be obvious facts based on logic and even just a basic understanding of the brain.
Science is all about figuring out ways that it OUGHT to work and then checking whether that's the way they DO work. The great discoveries happen when it turns out they don't work as expected.
As Howard Taylor (_Schlock Mercenary_ webcomic) once said or quoted
Re: (Score:2)
Dug out a link to (one of) the actual quote(s) [schlockmercenary.com] in the strip.
"Big discoveries don't go 'Eureka!' They go 'Huh. That's funny.'"
The original was credited to Isaac Asimov.
Re: (Score:2)
I am not as pessimistic about the use of neuro-imaging.
Sure, you don't necessarily need neuro-imaging to get the basic idea. There is still a huge benefit to actually in finding out exactly which regions are activated as we map the brain. From the article, an interesting finding is that it is not exactly the same parts that are involved in math. How is this helpful, imho it can actually help improve computer skills education, develop more accurate skills testing and get a better map of the brain
Even if when
Who knew? (Score:2)
So top software developers tend to think in nonlinear ways that are hard to characterize and different from the herd. Who knew?
Re: (Score:2)
That's not at all what the PDF says.
From the abstract:
Here, we used fMRI to investigate two candidate brain systems: the multiple demand (MD) system, typically recruited during math, logic, problem solving, and executive tasks, and the language system, typically recruited during linguistic processing. We examined MD and language system responses to code...
We found that the MD system exhibited strong bilateral responses to code in both experiments, whereas the language system responded strongly to sentence problems, but weakly or not at all to code problems.Thus, the MD system supports the use of novel cognitive tools even when the input is structurally similar to natural language.
It uses the same MD system as math, logic, problem solving, and executive tasks. Even idiots do executive tasks. For example, when your brain mapped your desire for approval to making a content-free post where you implied you're in the virtuous group, that was an executive function that used the same systems that you use for programming. So your programming is probably of similar quality.
Re: (Score:2)
It uses the same MD system as math, logic, problem solving, and executive tasks
Lovely job with the selective quoting. "Understanding computer code seems to be its own thing. It's not the same as language, and it's not the same as math and logic."
Sheesh. Some dickheads get off on the smell of their own shit on the internet don't you know.
Re: (Score:2)
Aighearach was directly quoting the abstract in the .pdf, so if there was any selectiveness, it was by the authors of the paper.
Re: (Score:2)
Directly and selectively quoting the abstract.
Re: (Score:2)
Directly and selectively quoting the abstract.
Indeed, I chose the relevant words, and omitted the others.
Golly, what a shock.
LOL
Re: (Score:2)
Chose the relevant words. According to you. What a shock. I must have met you before, aren't you that guy who wins every argument, according to you?
Re: (Score:2)
Chose the relevant words. According to you. What a shock.
That's how communication works. The other person chose the words THEY found relevant.
And they were not wrong.
Re: (Score:2)
You realize you're just added a whiff of smelly gas to an already smelly internet, right? How hard is it to understand the concept of selective quoting. Oh, I forgot: very very hard for a person whose modus operandi is to always declare themselves right.
Re: (Score:2)
Commenting on slashdot has become such a fucking waste of time. Used to be, it was worth wading through piles of bullshit to get to the nuggets and clueful people. It used to be, people actually cared about their intellectual honesty, some of them. Enough to make it worth while. Now just an ancient fading memory.
Not all coding is the same (Score:3)
I find that different sorts of problems I understand/solve/... in different ways. Eg: maths ones such as factorial, least common denominator are very different from organisational ones such as writing a text editor and different again from presentational such as HTML to create a web site which is different again from the CSS to make it look pretty.
The way that I attack these is very different, eg maths: there is a maths procedure/rules to follow; organisational I often use spacial awareness to understand what to do, etc. Different people might solve tasks in some domains in different ways that I do.
So what I wanted to say is that using a brain scanner to look at what happens when programmers work would be much more interesting if they correlated this to the sort of programming tasks that were being done.
Re: (Score:2)
Also different in that the majority of the time you are likely jumping into the math problem with already 3 pages of math and an answer highlighted. How you figure out where your new code goes, or which piece of the architecture needs to change to accommodate the new thing isn't a straight forward thing. A lot of people that know the language backwards and forwards can't growk the abstractions or suck horribly mentally putting several "pins" in spots where the cuts need to go. Add to that the common failure
Re: (Score:2)
Re: (Score:2)
Indeed, you may find the brain scans show different correlations such as:
Programming C++ in the Linux kernel correlating to solving math equations and engineering buildings to withstand windload.
Programming HTML+CSS to correlating to painting a landscape picture with some classical music on in the background.
Programming NodeJS with some fancy millennial designed framework correlating to just waking up after an anesthesia while drooling and being unable to speak in a coherent sentence.
Re: (Score:2)
To the contrary, I really like natural languages (learned five of them besides my own) and found that leading naturally into computer languages. Like the calculus hater above, I found solving logic problems subtly different, and a lot more interesting to me, than scientific math.
Programmers (Score:1)
It might be interesting to try this on programmers rather than coders. In the olden days a "coder" was a keypunch machine operator. Most of them still are, except now the keypunch machine has gone mostly the way of the Dodo.
Re: (Score:2)
I too prefer "programmer". IMHO, it's the perfect fit between "engineer" which is too lofty, and "coder" which is just what you say. It's the name that best fits the description of the job. There's a computer. You program it. You're a programmer. Alas, I see this as having gone the way of "cracker vs. hacker", so I've accepted it.
Re: (Score:2)
Now, a "coder" is often the person tasked with for denying medical insurance claims.
Maybe it's because I'm a mechanic by trade, but... (Score:2)
...I've always looked upon coding as constructing machines out of verbs and numbers.
Extension (Score:1)
Re: (Score:1)
This makes no sense. Perhaps for coders the language makes a difference, but for programming, the language makes almost no difference.
Most computer languages fall into only a couple of buckets -- the biggest one being "procedural" languages. Once you know one, you know them all. Examples are "machine code", ASM, C, C++, COBOL, PL/1, BASIC, FORTRAN, Python, and the new fangled ones like the flat and sharp and oxide languages and the disgusting languages for the coffee clubbers -- they are all the same jus
Re: Extension (Score:2)
essay writing vs speaking (Score:2)
My guess would be if coding is like "language" it's not like having a random conversation, more like constructing the pieces of an essay. In my experience at least, coding seems to be less down in the weeds with a single algorithm, and more jumping back and forth through layers of abstraction and control flow while you work within the current one you're building/fixing. I've ran into a lot of good "programmers" that if you give them a function with clear inputs and outputs they are fine, but they need to be
Re: (Score:1)
"I've ran into a lot of good "programmers" that if you give them a function with clear inputs and outputs they are fine, but they need to be spoon fed."
This classification are not "programmers". In the common vernacular they are "coders".
Idealized, not realistic enough (Score:2)
No mention of the test subjects sitting in meetings endlessly listening to managers drone on about OKRs and KPIs, and when the meetings are finally over being confronted by a slew of JIRA tickets, followed by a slack message from the scrum master wanting to know if he needs to schedule a meeting to discuss the build up of unacknowledged JIRA tasks in on your kanban board.
Re: (Score:1)
I used to deal with those sorts of meetings by always being 10 minutes late. If the meeting was already in progress clearly my attendance was not required and I would just leave. If my attendance was actually required then the other participants would have waited for my arrival. This worked to prevent much time wasted in useless meetings.
If some management type started on about OKRs, KPIs, JIRA tickets and tasks, and kanban; I would respond that the fucker needed to learn to speak English and to fuck off
Re: (Score:1)
On another note, I was labelled as an "unmanageable employee" when I was 12 years old. This was a considerable source of pride and I considered it to be a badge of honour which served me very well indeed. If you don't like it you can fuck off -- you need me more than I need you.
Re: (Score:2)
It also worked to isolate another asshole who probably didn't realize his classification.
Re: (Score:2)
So you're idea of not wasting time is making other people wait for you? Hope you're the boss.
Meetings with a lot of people are inherently inefficient, but that doesn't m
Visual spatial. (Score:2)
I've always consider programming solutions as visual spatial. I can see the shape of my solution in my minds eye. I can draw these solution on whiteboard/paper with ease, when it comes to describing them in words it become very hard, unless it is by reference to established visual spatial patterns.
I've worked with developers that struggle with my visual spatial solutions, but can describe solutions in words with ease.
We can both look at the same solution, describe it in our way and the other person is lost,
If Coding was like Human Language Learning.. (Score:3)
I would be good at learning human languages. But I'm not.
Counting on fingers (Score:2)
Coding is an art (Score:3)
Coding is more art than science, which is why there are more than 1 paths to a given problem and seldom is there an optimal path to solve it. It also explains the 10x gap in programmer skill, art has a very similar pattern, you have great artists and you have people claiming to be artists and a huge gap in-between. A true artist can always spot another true artist; just like a 10x developer can spot another one during an interview (which is why not everyone is qualified to hire developers, but this is another tangent). Lots of great developers also seem to have great interest in music and other arts, it's just fits the thought pattern and creativity.
Yeah, it's more an art than science.
Engineering (Score:1)
Nontrivial computer programming is a form of engineering, applying known principles to solve problems in a structured way.
Trivial computer programming, like designing web site styles, is like cooking: combining ingredients in a rote way to get a cake.
Computer science is a field of mathematics, and is neither of the above. The only relations to computer programming are:
(a) need to know some principles of computer science to write efficient programs, and
(b) programming is similar to solving theorems, but o
Decomposition (Score:2)