Yes, I share your concern: how to program well -though a teachable topic- is hardly taught. The situation is similar to that in mathematics, where the explicit curriculum is confined to mathematical results; how to do mathematics is something the student must absorb by osmosis, so to speak. One reason for preferring symbol-manipulating, calculating arguments is that their design is much better teachable than the design of verbal/pictorial arguments. Large-scale introduction of courses on such calculational methodology, however, would encounter unsurmoutable political problems.
share quotesconcern quotesprogram quotesteachable quotestopic quotestaught quotessituation quotessimilar quotesmathematics quotesexplicit quotescurriculum quotesconfined quotesmathematical quotesresults quotesmathematics quotesstudent quotesabsorb quotesosmosis quotesspeak quotesreason quotespreferring quotessymbolmanipulating quotescalculating quotesarguments quotesdesign quotesverbalpictorial quotesarguments quoteslargescale quotesintroduction quotescourses quotescalculational quotesmethodology quotesencounter quotesunsurmoutable quotespolitical quotesproblems quotes
So-called "natural language" is wonderful for the purposes it was created for, such as to be rude in, to tell jokes in, to cheat or to make love in (and Theorists of Literary Criticism can even be content-free in it), but it is hopelessly inadequate when we have to deal unambiguously with situations of great intricacy, situations which unavoidably arise in such activities as legislation, arbitration, mathematics or programming.
socalled quotesnatural quoteslanguage quoteswonderful quotespurposes quotescreated quotesrude quotesjokes quotescheat quotesmake quoteslove quotestheorists quotesliterary quotescriticism quotescontentfree quoteshopelessly quotesinadequate quotesdeal quotesunambiguously quotessituations quotesgreat quotesintricacy quotesunavoidably quotesarise quotesactivities quoteslegislation quotesarbitration quotesmathematics quotesprogramming quotes
A most important, but also most elusive, aspect of any tool is its influence on the habits of those who train themselves in its use. If the tool is a programming language this influence is, whether we like it or not, an influence on our thinking habits.... A programming language is a tool that has profound influence on our thinking habits.
I now have had my foggy crystal ball for quite a long time. Its predictions are invariably gloomy and usually correct, but I am quite used to that and they won't keep me from giving you a few suggestions, even if it is merely an exercise in futility whose only effect is to make you feel guilty.
... what society overwhelmingly asks for is snake oil. Of course, the snake oil has the most impressive names "" otherwise you would be selling nothing "" like "Structured Analysis and Design", "Software Engineering", "Maturity Models", "Management Information Systems", "Integrated Project Support Environments" "Object Orientation" and "Business Process Re-engineering".
society quotesoverwhelmingly quotesasks quotessnake quotesoil quotesoil quotesimpressive quotesnames quotesselling quotesstructured quotesanalysis quotesdesign quotessoftware quotesengineering quotesmaturity quotesmodels quotesmanagement quotesinformation quotessystems quotesintegrated quotesproject quotessupport quotesenvironments quotesobject quotesorientation quotesbusiness quotesprocess quotesreengineering quotes
...our intellectual powers are rather geared to master static relations and that our powers to visualize processes evolving in time are relatively poorly developed. For that reason we should do (as wise programmers aware of our limitations) our utmost to shorten the conceptual gap between the static program and the dynamic process, to make the correspondence between the program (spread out in text space) and the process (spread out in time) as trivial as possible.
intellectual quotespowers quotesgeared quotesmaster quotesstatic quotesrelations quotesvisualize quotesprocesses quotesevolving quotestime quotespoorly quotesdeveloped quotesreason quoteswise quotesprogrammers quotesaware quoteslimitations quotesutmost quotesshorten quotesconceptual quotesgap quotesprogram quotesdynamic quotesprocess quotesmake quotescorrespondence quotesspread quotestext quotesspace quotesprocess quotestime quotestrivial quotes
In this respect a program is like a poem: you cannot write a poem without writing it. Yet people talk about programming as if it were a production process and measure "programmer productivity" in terms of "number of lines of code produced". In so doing they book that number on the wrong side of the ledger: we should always refer to "the number of lines of code spent".
respect quotesprogram quotespoem quoteswrite quotespoem quoteswriting quotespeople quotestalk quotesprogramming quotesproduction quotesprocess quotesmeasure quotesprogrammer quotesproductivity quotesterms quotesnumber quoteslines quotescode quotesproduced quotesbook quotesnumber quoteswrong quotesside quotesledger quotesrefer quotesspent quotes
In the wake of the Cultural Revolution and now of the recession I observe a mounting pressure to co-operate and to promote "teamwork". For its anti-individualistic streak, such a drive is of course highly suspect; some people may not be so sensitive to it, but having seen the Hitlerjugend in action suffices for the rest of your life to be very wary of "team spirit". Very.
wake quotescultural quotesrevolution quotesrecession quotesobserve quotesmounting quotespressure quotescooperate quotespromote quotesteamwork quotesantiindividualistic quotesstreak quotesdrive quoteshighly quotessuspect quotespeople quotessensitive quoteshitlerjugend quotesaction quotessuffices quotesrest quoteslife quoteswary quotesteam quotesspirit quotes
When I came back from Munich, it was September, and I was Professor of Mathematics at the Eindhoven University of Technology. Later I learned that I had been the Department's third choice, after two numerical analysts had turned the invitation down; the decision to invite me had not been an easy one, on the one hand because I had not really studied mathematics, and on the other hand because of my sandals, my beard and my "arrogance" (whatever that may be).
back quotesmunich quotesseptember quotesprofessor quotesmathematics quoteseindhoven quotesuniversity quotestechnology quoteslearned quotesdepartments quoteschoice quotesnumerical quotesanalysts quotesturned quotesinvitation quotesdecision quotesinvite quoteseasy quoteshand quotesstudied quotesmathematics quotessandals quotesbeard quotesarrogance quotes
If in physics there's something you don't understand, you can always hide behind the uncharted depths of nature. You can always blame God. You didn't make it so complex yourself. But if your program doesn't work, there is no one to hide behind. You cannot hide behind an obstinate nature. If it doesn't work, you've messed up.
...Simplifications have had a much greater long-range scientific impact than individual feats of ingenuity. The opportunity for simplification is very encouraging, because in all examples that come to mind the simple and elegant systems tend to be easier and faster to design and get right, more efficient in execution, and much more reliable than the more contrived contraptions that have to be debugged into some degree of acceptability....Simplicity and elegance are unpopular because they require hard work and discipline to achieve and education to be appreciated.
simplifications quotesgreater quoteslongrange quotesscientific quotesimpact quotesindividual quotesfeats quotesingenuity quotesopportunity quotessimplification quotesencouraging quotesexamples quotesmind quotessimple quoteselegant quotessystems quotestend quoteseasier quotesfaster quotesdesign quotesefficient quotesexecution quotesreliable quotescontrived quotescontraptions quotesdebugged quotesdegree quotesacceptabilitysimplicity quoteselegance quotesunpopular quotesrequire quoteshard quoteswork quotesdiscipline quotesachieve quoteseducation quotesappreciated quotes
The required techniques of effective reasoning are pretty formal, but as long as programming is done by people that don't master them, the software crisis will remain with us and will be considered an incurable disease. And you know what incurable diseases do: they invite the quacks and charlatans in, who in this case take the form of Software Engineering gurus.
required quotestechniques quoteseffective quotesreasoning quotespretty quotesformal quoteslong quotesprogramming quotespeople quotesmaster quotessoftware quotescrisis quotesremain quotesconsidered quotesincurable quotesdisease quotesdiseases quotesinvite quotesquacks quotescharlatans quotescase quotesform quotessoftware quotesengineering quotesgurus quotes
Don't blame me for the fact that competent programming, as I view it as an intellectual possibility, will be too difficult for the average programmer, you must not fall into the trap of rejecting a surgical technique because it is beyond the capabilities of the barber in his shop around the corner.