EppsNet Archive: Software Engineering

Teaching Computer Science: Priorities

When schoolchildren start paying union dues, that’s when I’ll start representing the interests of schoolchildren. — Albert Shanker, President of the United Federation of Teachers (1964-1984) and President of the American Federation of Teachers (1974-1997) It’s a problem in my profession that the number of schools that want to teach computer science far exceeds the number of computer science majors who want to teach computer science. The opportunity cost is too high. Computer science majors can earn a lot more working as software engineers than working as teachers. I volunteer a couple mornings a week to help with computer science instruction at a local high school. This school has a teacher, originally hired as a math teacher, who must be well into her fourth decade of teaching.  She now teaches computer science classes — poorly, but she teaches them. Because of her professional longevity, she makes a six-figure income with… Read more →

To Young Women Considering a Career in Technology

You’ve probably read a lot of articles about how sexist and awful the culture is for women in technology. I think if anything deters young women from technology careers, it’s this glut of articles saying how sexist and awful the culture is. I’ve worked in software development for 30 years. In my experience — and feel free to discount this because I’m not a woman — the culture is not tough for women. If anything, men give women the benefit of the doubt because they’d like to have more women around. As Holden Caulfield used to say, “I like to be somewhere at least where you can see a few girls around once in a while, even if they’re only scratching their arms or blowing their noses or even just giggling or something.” Yes, I have seen bad things happen to women in tech, but I’ve seen bad things happen… Read more →

Growing a System

Some years ago, Harlan Mills proposed that any software system should be grown by incremental development. That is, the system first be made to run, even though it does nothing useful except call the proper set of dummy subprograms. Then, bit by bit, it is fleshed out, with the subprograms in turn being developed into actions or calls to empty stubs in the level below. . . . Nothing in the past decade has so radically changed my own practice, and its effectiveness. . . . One always has, at every stage, in the process, a working system. I find that teams can grow much more complex entities in four months than they can build. — Fred Brooks, “No Silver Bullet: Essence and Accidents of Software Engineering” Read more →

The Waterfall Approach Persists as an Urban Myth

Much of present-day software acquisition procedure rests upon the assumption that one can specify a satisfactory system in advance, get bids for its construction, have it built, and install it. I think this assumption is fundamentally wrong, and that many software acquisition problems spring from that fallacy. — Fred Brooks, “No Silver Bullet: Essence and Accidents of Software Engineering” We were doing incremental development as early as 1957, in Los Angeles, under the direction of Bernie Dimsdale [at IBM’s Service Bureau Corporation]. He was a colleague of John von Neumann, so perhaps he learned it there, or assumed it as totally natural . . . All of us, as far as I can remember, thought waterfalling of a huge project was rather stupid, or at least ignorant of the realities. I think what the waterfall description did for us was make us realize that we were doing something else, something… Read more →