
Form Over Function: Teaching Beginners How to Construct Programs (2012) [pdf] - tosh
http://www.deinprogramm.de/sperber/papers/form-over-function.pdf
======
rwmj
I remember many years ago my father, who is very technical but not a
programmer, writing a Lunar Lander-type game. He started off writing every
message that the program should print. It was along these lines:

    
    
        10 LET m1$ = "The space craft has landed"
        20 LET m2$ = "Descent rate is too high!"
    

(It was in some BASIC, probably ZX BASIC or GW-BASIC).

After writing a lot of these lines, he got stuck on how to make the computer
print the messages at the right time. He had no idea how to continue. He'd
mocked the game out on paper so knew what it should look like, but had no idea
there is an internal world of state in a real program.

Thinking back to it now, it's rather like how people who aren't programmers
mistake the user interface for the whole program. If you show them the mocked-
up GUI, they'll think the program must be finished.

The follow up to this story is that with a bit of my help and many, many weeks
of work he actually finished the game, although it retained this odd "message
database" at the beginning of the code.

~~~
pasbesoin
And if the UI doesn't (yet) look good, they think your development is crap. A
problem I've run into.

I wanted to get the guts working right. Then, I could make it look "pretty".
Non-programmers are just looking for the pretty.

Same problem that results in a lot of divorces, I guess... ;-)

------
tchaffee
Does anyone have a collection of best practice articles like this? And is
there any ongoing measurement of the effectiveness of various approaches?

------
RonanTheGrey
They're using Scheme. Wow that takes me back. But I have to say, it certainly
forces you to focus on two things:

1\. Form and flow 2\. Functional paradigms

I retain these lessons even today, no matter what language or paradigm I use.
Reading this paper, I realized that when I mentor, I do the same thing they
did. Teaching function is giving a man a fish; teaching form is teaching him
to fish. If the student or mentee can think around the problem, they can find
any solution, vs the one they were instructed to find.

