

Programming is Easy, Software Development is Hard - Garbage
http://www.thoughtclusters.com/2011/01/programming-is-easy-software-development-is-hard/

======
agentultra
Programming isn't _that_ easy. I've been trying to teach some friends who've
expressed interest for years. It seems rote and simple to me, but even working
with them one on one doesn't seem to work. I've tried analogies, metaphors,
and diagrams; I've tried to start from the high-level over-view and from the
nitty-gritty. Some of them make a little head-way, but most have given up.

I think it has something to do with the cognitive load of assimilating
language. A lot of what makes math hard is the language of math. Those that
understand math find the language to be the easiest part and by far the most
mechanical and simple to understand. Yet not everyone can pick up new
languages. Most people as I understand it only have room in their heads for
one or two. I would wager those that learn math or programming might have room
for a little more. To learn a language is rote excercise, but not everyone can
retain it for some reason afaik.

I think most people can learn what a "variable" is and might understand
assigning a number or a "string" of letters. Yet even understanding arrays,
hashes, and such low-level primitives is difficult. Going beyond that into
functions, operators, generators, classes, objects, closures, data structures,
memory allocation, pointers, references, etc... forget it. It takes a certain
kind of person to be able to assimilate all of that and use it effectively.

Why else do we continue to invent languages "for people who cannot program?"

It's hard for a master to think like a student.

~~~
evilduck
My wife is a smart person. She's a seismic geologist, she can do calculus, she
has no problem thinking in her domain's language and concepts, and
memorization of information has never been a problem. She's asked me to
explain basic programming concepts a few times.

She can't or won't make the mental leap from basic algebra skills to variables
and functions. Mentally unrolling loops or recursion, forget it. I don't even
bother trying to explain data structures like stacks and heaps. How a
programming language [that's mostly human readable] gets turned into machine
interpretable information is black magic. She even took an intro to
programming class as part of her degree, so I'm not the only teacher who's
failed at the topic. It can really be frustrating at times because I have a
respectable knowledge of geology and its industries and can conversationally
hold my own with her and her peers, but she can't reciprocate at all with my
peers.

For my sanity, I've always assumed some people just can't readily grasp the
abstract symbolism and recursiveness programmatic thinking requires.

~~~
aristus
I think CS is so new that we don't quite have a grasp on what is truly hard
and what is merely being explained badly. That's nothing against your teaching
skills; I mean that our mental model of functions and recursion may be
unnecessarily complex, or mixed in with other things, or perhaps depends too
much on visual or symbolic thinking.

~~~
arctangent
As the grandparent said, "It's hard for a master to think like a student."

This is perhaps the biggest obstacle for people who are trying to teach others
to program - and so I agree with you here.

However, it does seem like there are some people who will just never be able
to pick it up - even though they are demonstrably smart in other areas.

~~~
aristus
I don't buy that. That's like saying some people are smart enough to read, but
just can't figure out writing.

There will always be those with exceptional aptitude. But if you _must_ be
exceptional to simply _understand_ a subject as broad as computer science,
that's a problem with how we conceive the science.

The Romans thought multiplication was really hard, too. Exponents were
literally unthinkable. We know better not because we're that much smarter, but
because we have a simpler and more powerful way to think about it.

------
kenjackson
I think David Brooks article, like the article on the Rhodes scholars, are
very partisan ideological articles, although both disguised quite nicely.

The conservative right has started a grassroots movement to make traditional
measures of intellect and achievement worthy of less distinction. A PhD? Who
cares? Nobel Prize in Chemistry? Chemistry isn't that big of a deal, anyone
can do it. Plain talkin' people who struggle with things like math and science
-- those are the real intellects. Because being an intellect is being someone
who can just relate to the every day man. Everything else is just a "hobby"
that is no more worthy of distinction than being good at Call of Duty.

Over 2011 expect a full court press on this. Academia, scholarship, science,
math, etc... will all be attacked as not particularly interesting. Plain
spoken populism will be the new metric for brilliance and the best this
country has to offer.

~~~
tkahn6
I think you're reading too much into Brooks' ideology from that singular
article and that singular excerpt. Based on my experience with other works
from him and from listening to him speak on PBS news, it's disingenuous to
lump him in with the "conservative right". He is anything but anti-
intellectual.

That said, his position is not that "plain talkin' people who struggle with
math and science" should be lauded but that social skills are not skills that
can be learned through formal education. His point is that group dynamics,
being able to read people and lead people, is a very subtle art that is
learned throughout childhood and adolescence and Chua denied her children the
opportunities to learn these skills by refusing them sleepovers and plays and
such.

~~~
kenjackson
He's certainly part of the conservative right. He's no Michelle Malkin, but
he's considered the NYTimes right-wing opinion columnist.

His point is actually slightly different than what you are saying, and this
subtlety is important. Because while Brooks is on the right, is one of their
more astute thinkers. Brooks is actually saying that formal education is easy.
Not intellectually challenging, and largely a playground. Lets take some
quotes:

"I believe she’s coddling her children. She’s protecting them from the most
intellectually demanding activities because she doesn’t understand what’s
cognitively difficult and what isn’t."

"these and other social tests impose cognitive demands that blow away any
intense tutoring session or a class at Yale. "

"Chua would do better to see the classroom as a cognitive break from the truly
arduous tests of childhood"

He's not simply saying that there exist other skills that aren't taught in the
classroom and that these ar _also_ important and difficult. He's saying
something much stronger. He's saying the things that people like Chua value
(math, science, arts, literacy, etc...) are the easy things -- the things not
to be valued. They're the things you do when your child needs a break or to be
coddled. These are the things of intellectual lightweights.

The hard cognitive work is the stuff you see at the corner store in Smalltown
USA. These people don't have college degrees, PhDs, Fields Medals, but they
can do the actual intellectual demanding activities, not the stuff "you coddle
your children" with.

~~~
tkahn6
> He's saying the things that people like Chua value (math, science, arts,
> literacy, etc...) are the easy things -- the things not to be valued.

Again, he is not saying this and you are also leaving out the quote at the end
which is:

"I wish she recognized that in _some_ important ways the school cafeteria is
more intellectually demanding than the library." Emphasis mine.

Please read this article from him and then come back here.

[http://www.nytimes.com/2010/09/10/opinion/10brooks.html?ref=...](http://www.nytimes.com/2010/09/10/opinion/10brooks.html?ref=davidbrooks)

~~~
kenjackson
First, read the article yourself. You appeared to have missed the 700 words
that preceeded that sentence.

And even that sentence you quote is completely ambiguous. Is he arguing that
they're equally demanding? Or that the important ways that _matter_ the school
cafeteria is more demanding than the library or vice-versa? You can't tell
from that one sentence. But if you read the whole article you can tell what he
actually believes. Read the quotes I have from above that are NOT ambiguous.
He clearly states that the library is LESS intellectually demanding. No
ambiguity, no qualifier.

Read the article in full then come back here.

~~~
tkahn6
If you would read the link I posted above, your misconceptions about his
agenda would be cleared up.

~~~
kenjackson
His agenda is already clear. That article you sent certainly makes it no less
clear.

Although, I do find the below deliciously ironic:

 _Finally, there’s the lower class. The problem here is social breakdown.
Something like a quarter to a third of American children are living with one
or no parents, in chaotic neighborhoods with failing schools._

Many of these children have navigated the most treacherous of social
environments. Abuse at home, gangs in the neighborhood, and no teaching at
school. You'd think they'd be the intellectual highlights of our country.
They're not, because everyone really knows that this is not sufficient, nor
effective.

This article by Brooks is really saying two things, and is largely unrelated
to his later article:

1) The free market doesn't work. People should forego higher paying jobs and
do jobs that better help the country. Almost like a large-scale self-imposed
socialism.

2) Businesses can't be bothered to train people that don't have college
degrees. There are millions of people in the inner city that have the social
skills, but not the book smarts or degrees.

Brooks's should put his money where his mouth is and implore businesses to
swoop into Watts and hire the available talent. He won't though, because he
doesn't actually believe that this is where the intellectual horsepower is. He
thinks its at Harvard and MIT, but he'd like you to believe its in Smalltown
USA.

~~~
yummyfajitas
From a couple of posts up: _He's certainly part of the conservative right._

You believe this because he makes claims like this: _The free market doesn't
work. People should forego higher paying jobs and do jobs that better help the
country. Almost like a large-scale self-imposed socialism._

So basically, Brooks is part of the conservative right because he is more or
less pushing one of Obama's policy proposals [1]?

[1] They might disagree on whether it should be self imposed or government
imposed.
[http://www.barackobama.com/pdf/NationalServicePlanFactSheet....](http://www.barackobama.com/pdf/NationalServicePlanFactSheet.pdf)

~~~
kenjackson
Those two points I give are meant to show the inconsistency in his arguments.
One showing how he side steps free markets to argue against even a whiff of
intellectualism.

Yet at the same time isn't willing to ask businesses to step up to the plate.

In other words, he's all about the subtext. He doesn't really believe that
traditional measures of achievement are coginitively less demanding than 14
year old sleepovers, but he'll say that so that you value it less.

He doesn't actually believe in self-selected socialism (he loves free
markets), but he'll attack Harvard grads so you value them less.

------
mynameishere
There's _always_ that one guy at every job who talks about "high-level"
"software engineering" topics but can't code for crap. It's so common I
suspect causation. The idea that identifying problems is more difficult than
solving them is as facile as suggesting play dates between children is more
difficult than Beethoven.

~~~
zb
You're looking at it as one or the other, when it should be one or both.

Identifying problems that are soluble and then solving them without creating
too many new problems is a lot more difficult than just solving problems. And
also a lot more difficult than just wandering around pointing out problems.

------
nadam
Everything is hard on a world-class level. Even programming and Math is hard
on a world-class level. Writing 3D engines like John Carmack does is hard.
Solving million dollar math problems, or coming up with unexpected theories is
very-very hard. Creating a natural language translation system, a speech
recognition system is hard. Winning the Netflix prize is hard. Programming the
same kind of relatively simple webapp over and over again is probably easy;
and I agree that compared to that understanding what the customer wants is
usually much harder.

------
erikstarck
Yes. Writing one line of code that works is easy. Anyone can do it.

Writing two lines of code that works is also easy. Anyone can do it.

Writing ten thousands lines of codes, however, is complex and hard. A good
software developer can manage, or tame, this complexity.

Programming is deceivingly simple. That's what makes it so hard.

~~~
presidentender
By induction, your first line says that writing ten thousand lines of code
that work individually is easy. I accept that getting them to work together is
the hard part.

~~~
Locke1689
No. If the inductive step is that n lines of code is n! difficulty his base
cases are still valid.

There is no induction with no inductive hypothesis.

~~~
presidentender
You write one line of code, say "printf("Hello, World!");" ten thousand times.
It's easy. Making it work together introduces the complexity.

------
mduerksen
Your customer tells you: "Yeah, the game is really fun, but a bit slow. It
should run smoothly for the player, even though the internet connection is
unreliable."

A well-defined problem. But which one was hard: Stating or solving it?

The attempt of artificially separating the "crafting skill" programming from
the rest of software development (which is blurry enough) is an ongoing effort
since decades, and still annoying.

~~~
kscaldef
I would not say that that's a well-defined problem. What does "run smoothly"
mean? Do you mean frame rate? Do you mean lack of discontinuous motion of
objects in the game? What does "unreliable connection" mean? How unreliable do
you want to allow the connection to be and still have acceptable behavior? Are
we talking about surviving continuous packet loss or about short-ish, bounded
periods of no connection?

------
bad_user

          I have always been puzzled by people who say that 
          math is hard. In my opinion, your understanding of most 
          math that you need is directly proportional to the effort 
          you put in, and less to do with your intelligence
    

Some people have a natural gift for math and can simply learn it on-the-fly.

Other people simply hate math, and as an analogy ... if something tastes like
shit to you, you'll never be able to eat as much as someone who loves eating
"math" AND you'll probably regurgitate whatever you force yourself to eat.

This also dismisses the research done on the ways our brain works: some people
think more with the left-side of their brain, which translates in better
logical / rational / analytical / objective thinking, all traits that help at
doing math. And other people are downright unable to think with their left
brains, further than basic functioning.

Also, consider how theorem-proving or problem-solving works: you've got
knowledge of a set of theories you've learned thus far (that set can get
pretty big btw) and the possibilities of combining those theories are
increasing exponentially. This actually requires raw brain power (well, unless
we're talking of applying really basic algorithms, like solving an ecuation of
a known type, but that's not math).

When speaking of math / computer-science / programming / whatever, I actually
saw people sucking at it no matter how hard they tried.

------
DjDarkman
Programing IS hard.

You define the problem, but how do you solve it? Especially if you already
have some code you have to work with.

------
ljordan
How about, "in comparison to software development, 'programming' is easy"?

