Yes Virginia, there IS software engineering

We've all heard the phrase "software engineering." The question is, does such a thing actually exist? Many programmers say it doesn't. I disagree.

Steve McConnell recently wrote a couple of very interesting blog posts on this very topic. The second was in response to this post. Eric echoes many of the typical "software development isn't engineering, it's a craft/art/form of black magic" arguments. Steve provides what I think is a good rebuttal.

I have a few problems with the typical anti-software engineering arguments. For starters, the "building software isn't like building bridges" line really misses the point. The idea is that building bridges involves repeatable and predictable patterns that allow engineers to accurately estimate project progress, whereas in software, every project is different and hardly anyone ever knows for sure how long things are going to take.

There may be some truth to that, but there's no reason to assume it's due to any inherent difference between civil engineering and software development. Part of it is simply that most programmers don't develop a lot of very similar systems because they don't have to. When you need a new bridge, you have no choice but to build it, but with software, you can just copy and customize.

But really, the reason most software estimates are just wild guesses is not because of the nature of software development, but because most development organizations are miserably primitive and unorganized. To form reasonable estimates, you need historical data. That means you need to track how long each phase of a project takes. Then you can run the numbers for similar projects and come up with a reasonable estimate for a new project. It's not rocket science. It's just that many organizations simply don't bother to do it.

Of course, as Eric mentioned, there is the issue of varying user requirements to consider. The whole reason we have custom software is that users have differing requirements, and so every application is unique in some sense. But if we're going to be honest, that only goes so far. Every custom business application may be different, but there are still a lot of similarities. You have your database layer, your business rules, your user interface, your reporting, and so on. They may never be exactly the same from application to application, but they're usually not fundamentally different. Think steel bridge over a river compared to a concrete bridge over a ravine. They're not exactly the same, but they're still comparable on some level.

Bottom line, software engineering, like "regular" engineering, is about process, not product. Just because you're building something doesn't mean you're doing engineering. A rigorous software development process is the exception in our industry, not the norm. So it's not that software engineering doesn't exist, it's just that the vast majority of the people writing software are not doing it. If you want engineering, head to someplace like Praxis Critical Systems, not your run of the mill .NET contractor.

The goal approacheth: 183.0

My weight-loss goal creeps ever closer, even with the loosened summer diet. This morning I weighed in at 183.0. That means only 3 more pounds to go.

It also means it's time for me to go shopping. My pants size is now a 34 waist, down from a 38. That means that nothing I have fits anymore. And they don't just not fit, they kind of look funny. My dress slacks in particular look like "clown pants" according to my wife. (Which is too bad, because I got some of new dress clothes just last fall.) I actually had to go out and buy new clothes so that I could go to my cousin's wedding a few weeks ago. Unfortunately I didn't think of that until the same morning. But that at least meant I got the early-morning sale at J. C. Penny.

I'm also going to have to have my wedding ring resized. I've lost enough weight that it literally slides off my left ring finger. I was wearing it on my right hand for a while, but now my right ring finger is getting too small too. So now I'm starting to put it on the middle finger of my left hand.

The weird thing is that I"ve lost 50 pounds and I still have a lot more fat on my body than I thought I would. I guess that's not surprising, since I'm still overweight according to the BMI charts, but it still feels strange. I mean, those weights always seemed kind of low. After all, many people who are technically "overweight" don't look like they need to lose any weight. But I guess the BMI charts are just biased toward being very lean. It's all a matter of where you draw the line on what's acceptable.

From the agregator

Some quick links and commentary on news that's shown up in my RSS agregator this week.

Longhorn reloaded was shut down.
Apparently some people tried to take a copy of Windows Longhorn (the code-name for the beta releases of Vista) and publish an improved version of it. Naturally, Microsoft put the kibosh on that. The only news here is that some of them were actually surprised by that.

Dvorak says what I've been thinking.
Yeah, I'm sure the iPhone is great, but seriously, how many people are going to spend $600 on a freakin' cell phone? Unless you're rich, that's gadget-lust taken to an unhealthy extreme. Plus I'm getting really sick of it being the topic of every other link that gets posted to Digg.

Mono team does Silverlight in 21 days.
Well, sort of. From the sound of it, they have a working prototype rather than anything releasable. Quite an accomplishment, but it doesn't do as much to feed the self-congratulatory über-hacker mythology that programmers in general and the open-source community in particular like to cling to. But still, great job Miguel and company!

Westciv is running their free HTML and CSS courses again.
Right now they're on week 2 of CSS. I did these a few years back when I was first getting into web development and they're pretty good. If you want to learn web design, or if you're one of those backward incompetents who is still writing tag soup and freely mixing content with presentation, you should give it a try.

Mark Rasch on the legal implications of letting Google store your documents.
I've always been a little queasy about storing my personal stuff on somebody else's server. Apparently I'm not just paranoid.

Sympathy for the devil

I know there are those in the Linux community who will regard this as equivalent to spitting on the cross while blaspheming the holy spirit, but sometimes I feel sorry for the people at Microsoft. They have a tough job and they are frequently blamed for things that aren't their fault.

What made me think of this was Jeff Atwood's follow-up to his Windows spyware post.

I understand the pressure to be backwards compatible. There's no end of Vista blowback based on minor driver compatibility issues. The "if it doesn't work, it's automatically Microsoft's fault, even if the software or hardware vendor is clearly to blame" mentality is sadly all too common. But given the massive ongoing Windows security epidemic, was defaulting regular users to Administrator accounts-- exactly like Windows XP, Windows 2000, and Windows NT before it-- really the right decision to make?

In many ways, Microsoft is in a perpetual no-win situation. On the security front, for example, they are besieged by the evil forces of malware. However, every time they try to improve the situation, end users scream blood murder. For example, was the weird "quasi-administrator with prompting" a good idea? Probably not, but it's better for the average user than silently allowing the installation of spyware, and yet everyone seems to hate it. But what's the alternative? To make accounts regular users by default? How would the average Windows user would feel about that? I don't know, but I have read a many comments by recent converts to Linux who seem to think that entering a password just to install some software is completely stupid and unreasonable, so I can't imagine it would be universally hailed as a great improvement.

And, of course, there's always the breakage that accompanies any OS upgrade. For example, remember Windows XP Service Pack 2? I seem to recall widespread complaints about things breaking when that was rolled out. And we're seeing the same thing now with Vista. And who do people blame? Is it the ISV who are still coding with Windows 98 in mind? No - they blamed Microsoft.

What really kills me about this situation is when I read Raymond Chen's accounts of the efforts of the Windows App Compatibility team. For example, consider this sample chapter from his book. From the cases he mentions there, it is completely obvious that Microsoft takes backward-compatibility seriously. Very seriously. In fact, you might even say they take it too seriously.

Think of it this way. On Linux you're lucky if you can get source compatibility for an application that's more than 5 years old. Microsoft has binary compatibility with a large range of programs that are 10 or 15 years old. They're working with third-party binaries, diagnosing obscure bugs, and implementing fixes to keep the applications working, even though it's by sheer luck that they ever worked in the first place. As a programmer, it's hard to overstate how impressive this is. And yet all anyone ever focuses on is the problems they didn't fix.

Then there's the political angle. There are lots of people out there who seem to think that Microsoft can do no good. Everything they do is viewed with suspicion. Anyone who works for Microsoft has to contend with accusations that he is either in on the conspiracy or is bowing down to "the man" every time he says something they MS-haters don't like. That's got to be at least a little demoralizing. And while a certain degree of animosity is certainly warranted (as it is with practically any large business), it's not like Microsoft has been running child sweatshops or dumping toxic waste in the local drinking water. It just seems way out of proportion.

So no matter what the people in Redmond do, it seems like there's always somebody pissed off at them. And it's a shame, because they really do do some good work. The .NET world has lots of neat technologies and is a very cool place for developers. Even though OpenOffice may be good enough for many, MS Office is by far the best office suite available. And, last but not least, Windows, despite it's flaws (and they are legion) is a very impressive feat of software engineering. Not to mention that Microsoft employs a number of very bright people.

So, to the Linux community, I say, let's give Microsoft a chance. I'm not asking you to like MS, or to start using any of their products. Let's just be honest and realistic. Most people in the community aren't shy about placing the blame on them, but give credit where credit is due. We rightly object when people blame free software for not being a panacea, what with hardware incompatibilities and the lack of certain software. We should at least hold MS to the same standard and not judge them for failing to satisfy everyone.

Is it a phone or a Beowulf cluster?

I saw something on TV last night that really struck me. In fact, for a second I thought I was dreaming, as I had dozed off for a while. But I think it was actually real: an iPhone commercial that gave the ability to watch YouTube videos as a selling point.

Being the curmudgeon that I am, my initial reaction to this was, "Just what we need, another overly-expensive way to waste time." Now you can spend $500 to watch crappy home movies and/or blatantly pirated TV shows on a 3.5-inch screen, rather than paying $400 to watch them on a 17-inch screen. Personally, the only way I can tolerate watching videos on 19-inch wide-screen is if they're full-screen. The little embedded Flash viewer drives me crazy. Plus I was never able to get too excited about YouTube in general. It's a nice, well-designed site, but I'd usually rather have a podcast in the background while I work than stare at my monitor for half an hour.

But after thinking about it a little longer, what I found really interesting about this commercial is how the cell phone is dying out. In fact, I predict that by 2015, perhaps even 2010, there will no longer be such a thing as a cellular telephone. The mobile phone will be a thing of the past. People will look at them like they look at rotary telephones now, as a quaint reminder of how backwards we used to be.

Instead, the "phone" of the future will be like the iPhone, i.e. very small multimedia computers that just happen to have voice communication features. We're already part way there when you think about it. People are using their cell phones extensively for things like playing games, text messages (a.k.a. the poor-man's IM), taking and trading pictures, and listening to music. They've turned into PIM/multimedia appliances. Actual voice communication has become almost secondary.

The best part about this is the rate at which the technology to price ratio is increasing. When I got my first pre-paid cell phone seven years ago, it was about the size of a regular phone handset, rather expensive, and didn't do anything except make and receive calls. Then, four years ago, I signed up with Verizon and got two stick phones with biggish black and green screens, text messaging, calendars, and other simple tools for less than the one pre-paid. Two years later, for only slightly more than the two stick phones, I upgraded to two Samsung SCH-A670 camera phones with color screens, plenty of bells and whistles, and the ability to run BREW programs. Currently, I'm using an LG VX8300, which features, among other things, a 1.2 megapixel camera, an MP3 player, surprisingly good speakers, and a 1GB MicroSD slot to hold all that media. And once again, I didn't pay any more for this upgrade than for the last one.

In a few years, I'd love to have a phone powerful enough that I could use it to do actual work. Maybe something I could plug a roll-up keyboard into. Or maybe I could get something with a USB or FireWire port and an operating system with some degree of flexibility. Or maybe they can just invent a 4-inch laptop an put a phone on it! After all, that's practically what the high-end smart phones are. Now it's just a matter waiting for the prices to come down.