
The Beauty of Programming (2001) [pdf] - MaxLeiter
http://www.bowdoin.edu/~ltoma/teaching/beautyOfProgramming.pdf
======
henrik_w
A lot of the same reasons that Fred Brooks listed in The Joys of the Craft in
The Mythical Man-Month:

1\. The sheer joy of making things.

2\. The pleasure of making things that are useful to other people.

3\. The fascination of fashioning complex puzzle-like objects of interlocking
moving parts, and watching them work in subtle cycles, playing out the
consequences of principles built in from the beginning.

4\. The joy of always learning, which springs from the nonrepeating nature of
the task.

5\. The delight of working in such a tractable medium. The programmer, like
the poet, works only slightly removed from pure thought-stuff. He builds his
castles in the air, from air, creating by exertion of imagination.

Not inclued in the list above is the insight "find the right approach and
suddenly the problem just goes away". It ties in with this quote from Linus
that I really like:

"Bad programmers worry about the code. Good programmers worry about data
structures and their relationships."

[https://henrikwarne.com/2012/06/02/why-i-love-
coding/](https://henrikwarne.com/2012/06/02/why-i-love-coding/)

~~~
cloop_floop
I enjoy programming games and other things as a hobby, but the work can fall
short of your points especially in my experience in web development:

2\. After days of work, your entire branch can be discarded when the feature
spec changes 4\. Repetitive tasks abound 5\. Not so much creating from pure
thoughtstuff, but rather intractable legacy codebases on top of bothersome
system configuration

Your last quote sounds nice, but ignores the reality of coding. Even good
coders have to write ugly (hard to maintain regardless of data structures)
code sometimes. The real world just introduces edge cases which make even the
most beautiful system have warts in places. Web development exposes
concurrency, scaling and other things which can lead to tradeoffs against code
cleanliness.

~~~
RUG3Y
I'm maintaining an old, sprawling Django app right now. It's decidedly un-fun.

------
martinmusio7
Besides bad font and no technical insight, it is a beautiful piece of text
full of truth. I can feel how he did not write it for someone else (to impress
or similar), but for himself only.

------
jejones3141
Thanks; I hadn't seen this. It's reminiscent of Tolkien's characterization of
an author as "sub-creator".

------
chauhankiran
> when you tell the computer to do something, it will do it.

I have read this so many times. Telling students that - "when you write a
program, you are ordering computer to do something"

This should fascinating. But initially its not. Because after writing 8-10
lines of code and explaining for more than 30mins make things boring to
students.

~~~
kachhalimbu
Not sure how old your students are but I'm teaching my 8 year old daughter
programming (just been few days). I started exactly by telling "when you tell
the computer to do something, it will do it." But instead of showing her any
piece of code or explaining variables etc programming concepts I showed her
how to command computer by writing simple 1 step commands like clear, date and
echo in a terminal.

After she saw how she was asking computer to clear a screen of terminal,
asking computer to tell current date or simply echoing what she typed, I moved
to scratch programming editor
[https://scratch.mit.edu/](https://scratch.mit.edu/)

With scratch, I showed her how to tell computer to move an image to the right
and left with single "move 10 step" and "moved -10 steps" command (still on
single commands to computer to do what she want)

Then I showed her how to ask computer to do something repeatedly by
introducing "repeat" block (it helped that I asked her to physically imitate a
pony moving on screen by few steps to right and left). And by using "repeat"
block she learned to make onscreen pony dance. By this time she understood how
to piece together multiple commands together and loop concept, X-Y axis as I
also showed her on computer she can move a subject in 4 directions by
manipulating X-Y axis values)

Next she wanted to spin the onscreen pony so I introduced her the concept of
direction and the whole degrees measurement. After that it was pretty simple
for her to grok that by turning 1 unit clockwise and then doing it on "repeat"
made the pony spin.

During the whole process I didn't type a thing. I let her drive the whole
thing by clicking/adding/removing and making mistakes to learn. It has been
great fun and she already has tons of ideas about what she want to try and
make computer do it for her.

~~~
chauhankiran
I like both concepts - Introducing first terminal command then Scratch. And
that's what I basically like.

But unfortunately they ( students ) are first year graduate with no computer
experience and the language that need to teach them is C!

------
kevindqc
> As any mathematician knows, you literally can have a set of mathematical
> equations in which three plus three equals two.

What does that mean?

~~~
greenyoda
In the cyclic-4 group (integer arithmetic modulo 4), 3 + 3 = 2.

------
phorkyas42
Did he deliberately choose a font that resembles Comic sans - just to offend
us?
([http://www.identifont.com/differences?first=Chalkboard&secon...](http://www.identifont.com/differences?first=Chalkboard&second=Comic+Sans))

~~~
YCode
Obligatory:

[https://www.mcsweeneys.net/articles/im-comic-sans-
asshole](https://www.mcsweeneys.net/articles/im-comic-sans-asshole)

------
pchm
Sans-comic-sans version: [http://cs.brynmawr.edu/content/the-beauty-of-
programming](http://cs.brynmawr.edu/content/the-beauty-of-programming)

------
digitalshankar
> If you're good enough, you can be God. On a small scale. And I've probably
> offended roughly half the population on Earth by saying so.

Which side of population Religion's or Atheist's?

~~~
sk0g
Probably the religious side more so. Atheists would just laugh at that, most
likely. If anything, it'd prove their point.

Religious people on the other hand, might be much more interested in defending
the sanctity of that title.

------
kronos29296
Am I the only one bothered by the blank last page and the comic sans like
font? I hope not because then I will be lonely.

~~~
sk0g
I think the font is Comic Relief Regular. I have a hard time taking anything
using a Comic Sans-like font seriously, especially when it's something
technical. And the blank last page, yeah...

