The Artima Developer Community
Sponsored Link

Agile Buzz Forum
Science, or the Humanities?

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
James Robertson

Posts: 29924
Nickname: jarober61
Registered: Jun, 2003

David Buck, Smalltalker at large
Science, or the Humanities? Posted: Mar 19, 2005 4:12 AM
Reply to this message Reply

This post originated from an RSS feed registered with Agile Buzz by James Robertson.
Original Post: Science, or the Humanities?
Feed Title: Cincom Smalltalk Blog - Smalltalk with Rants
Feed URL: http://www.cincomsmalltalk.com/rssBlog/rssBlogView.xml
Feed Description: James Robertson comments on Cincom Smalltalk, the Smalltalk development community, and IT trends and issues in general.
Latest Agile Buzz Posts
Latest Agile Buzz Posts by James Robertson
Latest Posts From Cincom Smalltalk Blog - Smalltalk with Rants

Advertisement

This column by Allen Holub of SDTimes magazine has to be the best thing I've read about development in eons. He points out that software engineering isn't engineering, and that mathematics simply isn't that relevant to most developers. I couldn't agree with him more:

In fact, computer science is neither a science nor an engineering discipline. Science concerns itself with the formulation and proof of hypotheses. Programmers just don’t do that. Similarly, all engineering disciplines except software engineering concern themselves primarily with the mathematical analysis of structures, be they physical structures or electronic circuits. Programmers don’t do that, either.
Indeed, “software engineering” books don’t talk about engineering at all, at least not in the way that mechanical or electrical engineering books cover their subjects. Software engineering is about process, not structural analysis. The closest thing that software engineering has to real engineering is the study of design patterns, but even these are nebulous. There is no single “correct” structure for the realization of a design pattern. Even calling the creation of software “engineering” is a misnomer in my mind.

That's exactly right. Think about Unit tests, for instance. A structural engineer building a bridge doesn't need tests - what he needs is a blueprint and the materials. Armed with those, he can tell you whether the bridge will stay up or not. In software, the basic design tells us nothing of the kind. If it did, we wouldn't need tests. So given that, what is software development? Back to Allen:

So if programming isn’t science or engineering, what is it? It’s a liberal art. Modern programming bears more similarity to creative writing than to engineering or physics. The design process that you go through (or at least should go through) to create a program is almost identical to the process that you use to write a book: research, formulating a thesis (or problem definition), an orderly exposition of the thesis. These steps are central to both expository writing and object-oriented analysis and design.

In other words, it's not really a "hard" science at all - it's one of the soft, squishy ones, where the answers are subjective and we have to puzzle out the best answers from among many possible ones. Consider what we actually have in the popular languages in this light - we have primitive data types in Java (and in the CLR as well) - because someone decided that premature optimization of low level math stuff was important. Yes, I know that some people need that speed. But for the vast majority of developers on the vast majority of projects - you aren't one of those people. The problem for most of us is developer productivity and time to market - not how fast we can add up the numbers that show how many users of IE hit the web page today. Carrying on from that point:

We should really give up on the notion of math being the foundation of computer science, drop hard-core mathematics from the curriculum, and replace it with English composition (which teaches you how to write large, complex, documents like computer programs) and Latin (which teaches you how to analyze complex linguistic systems).
Bear in mind that logic—the one “mathematical” subject that is inarguably part of programming—is traditionally taught by the philosophy, not the math, department. As an added benefit, if programmers were trained as writers, they’d be able to write coherent documentation and put meaningful comments in their code.
The mathematics that is actually relevant—a bit of set theory and the like—is easily covered in a one-semester class on the order of the Math-for-English-Majors classes offered by most universities.

There are a lot of developers who will have a really hard time letting go of the idea that all inbound CS people should take a compiler class. Ask yourself though - how many people are doing that kind of work, and how many are creating what amounts to glorified reporting interfaces?

Read: Science, or the Humanities?

Topic: Screencasting - How I did it Previous Topic   Next Topic Topic: Agile Education in Jeopardy

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use