Monday, March 30, 2009

Commodity Programming

Some musings from the International Lisp Conference 09 ..

From Jao Ortega, noted Lisper and Haskeller, in his Sussmaniana report from ILC 09 ..

"Next day we were in a kind of tongue-in-check debate provocatively entitled Are macros a menace?. Richard Gabriel was on the wrong side, and arguing along the lines that macros were akin to language design and that he’d rather not suffer the consequences of letting your average software engineer undertake such a complex task. Gerry’s intervention at this point made me again nod like as i was mad: if we cannot trust our software enginneers to proficiently use the really powerful tools of our trade, there must be something wrong in the way we educate them; only those able to judiciously use them should get a diploma, to begin with."

From the blogs of Andy Wingo, reporting on ILC 09 .. on the same discussion "Macros: Are they a menace?" ..

"More seriously, the arguments against macros centered on control: control by bosses on workers, with the idea that macros make custom languages, thus making individual programmers less replaceable."

and by this time all of us know why MIT had switched away from Scheme to Python for their introductory programming course, 6.001. This discussion was also kicked off during the interlude to the macro debate when Pascal Costanza asked the reason to Gerry Sussman. Read Andy's post for more details ..

Sigh! Dumbing down of powerful language features in favor of the strawman argument being discussed in Lisp conferences. Fangs of Enterprise software development ?


Kris Nuttycombe said...

Dumbing down the language to prevent something that could be avoided with mandatory code reviews? Sounds like an "enterprise" sort of decision if I've ever heard of one.

BlackMeph said...

First, a "Full Disclosure" not-so-fun fact: I am currently a Software Engineering student, having already tried - and failed - to get a Bachelor's degree in Electronics Engineering, Computer Science, and Applied Mathematics. Granted, the reason I failed is because I have the cleverness of Hermes and the stability of flan. But I digress...

Anyway, my comment is that it sounds as if the people making these comments are from Computer Scientists who view Software Engineering as a waste of brains. Now I'm sure that my own personal prejudices are showing up, but I still think I may be on to something: that many Computer Scientists think of themselves more as "Computer Mad Scientists", running outlandish programming hacking experiments, which those of lesser intellect would be frightened by, and would only want to destroy.

I personally would like to see a stratification of the software industry similar to electronics, or even like that of electrical (job) fields in general. There is a distinct delineation between activities of the scientist, of the engineer, and of the skilled tradesman/craftsman. While the same person may be doing things in different roles, still those roles, and the responsibility of and for those roles, are recognized and respected. No one sneers at a researcher that cannot wire his own power socket, and those who can and do are looked on as multi-talented, as being competent in two separate fields, not operating in one field that's very broad.

Now, I'm not saying that Computer Scientists shouldn't program, or that Software Engineers should program. I am saying that Computer Science, Software (and Electronic!) Engineering, and Programming are all separate disciplines, and they should all be respected as being separate disciplines, with different needed skills, and different interests.

For an example, no one sneers at a Architect who tells a contractor that the builders are not following the plan. They all get together and discuss why the particulars of the plan are written as they are, and how to get a deliverable building to the customer that both meets the requirements, and does not destroy itself.

The same should apply to software.