Unfiltered (wah!)

Apparently, FYYFF is accessible to folks from behind the Great Firewall. What are they thinking? (Okay, getting banned is a sign of success. Given that three people and a cat read this site, I don’t deserve to be banned).

The tool that reported this was slashdotted, but it’s still interesting.

Customer Disservice

From American Airlines’ “customer commitment” page:

“American Airlines and American Eagle are in business to provide safe, dependable, and friendly air transportation to our customers, along with numerous related services. We are dedicated to making every flight you take with us something special. Your safety, comfort, and convenience are our most important concerns.”

Man, I just love lies like this. Is there a term for it? Uttering-plattitudes-while-twisting-the-knife-into-your-back. The germans probably have one; Fafungknifenbackenkustomeren, or something like that. [sorry, rudi 🙂 ]

Soon, if you miss a flight on AA, you’ll lose your nonrefundable ticket and have to buy a full price one. Given how easy it is to miss a flight these days (due to long security lines and other silliness), I don’t think I’ll even consider flying AA.

Music

Nik Kershaw has a new album out (well, new to me) titled to be Frank, and it’s as least as good as his 15 minutes album. Unfortunately, he’s apparently decided to stop making music for a while, due to lack of publicity and distribution problems.

This sucks.

We have Celine Dion and Backstreet Boys and tons of other crap running out of our ears, FM radio stinks, and damned good artists are leaving the field because they don’t get the recognition they deserve.

Slow burn. I don’t know what else to say.

“Beat on it a bit”

I drew this not-very-good doodle during a meeting in which we’d finished coding and were about to ship … something. Our director said, “Beat on it [the latest build] a bit, then we’ll send it out.”

Tom DeMarco, the author of PeopleWare and some other fine books, once gave a talk at Apple concerning The Hidden Quality Agenda. I have a cassette tape of the talk, which I should really MP3 someday before the tape turns into dust.

Anyway, the gist of his talk was:

  • Management often applies pressure – sometimes subtle, sometimes not – to developers and testers to bring in the schedule.
  • At the same time, “Quality is Job One”
  • What really happens, of course, is that quality suffers.

His proposal for fixing this is to have “professional estimators” that objectively figure out how long it’s going to take you to do a project, based on your prior performance. DeMarco admits it would take a few years to get a track record you could base estimates on. And if you’re a start-up trying to wrap up your first project … feh.

“Add two weeks to the developer’s estimate” or “Double and round to the next unit of measure” or “Ask the magic chicken in my Auntie’s back yard” all seem to be equally valid estimating techniques if you’ve never done something before. If you didn’t know you had to be compatible with garble frotz beemthings because HugeSoft just announced them, and your customers want them, who’s fault is that?

Actually, most of the schedule slips I’ve been involved with in the past few years have been due to ill-defined (sometimes un-defined) requirements, or additional work that’s been piled on without much understanding of the cost. It takes time to stick in a basement once you’ve got the framing up, that kind of thing. No change is for free [and I used to think that some were. I guess that youthful innocence has died 🙂 ].

I’ve gotta go to work now…

Details, details

We like to think that software is infinitely malleable. I’ve been reflecting over the past couple of weeks on why what we software engineers do is particularly hard. After all, what does a software geek do every day? If you’re lucky, you come into work and read and type all day, maybe go to a few meetings, and talk with people. It’s not like heavy lifting or making big rocks into smaller ones, it’s not back-breaking labor. But it’s not necessarily easy.

This week has been all about the nitty, gritty details. I’ve been doing work at the machine instruction level, and it’s been exhausting and exhilarating, and I’ve done some neat stuff. This is, I think, what neophytes are missing when they learn Java as their very first programming language. Consing up objects is never free, it’s never going to be free, and there will always be a need for folks who understand what’s going on in the depths, even if they never write a language runtime. Details like this can make or break products, they matter.

Details like, how many instructions does it take to allocate an 8 byte hunk of memory? How many common code sequences are there in an application? Will a particular structure layout perform better if the cache organization changes? Can I add a particular feature without breaking Joe’s work? Is Joe going to clobber my work and make forward progress impossible until we get the wreck untangled and back on the tracks?

I don’t see these necessary details disappearing from the industry any time soon. Maybe in fifty years.

It’s amazing anything works. I don’t mean this perjoratively; it’s simply amazing that so much stuff can come together and fly in tight formation well enough to be, say, a working cell phone or even a lowly television remote. Taken in isolation, with only a few exceptions what we do is not all that hard. Taken as a whole, it’s a wonder that things don’t crash and burn more often than they do.

More hard-won knowledge

More stuff I learned the hard way:

  • You can fit 240K of code in 192K of ROM if you swear at it long enough.
  • Programmer productivity isn’t the problem. Programmer motivation is the problem. The right impetus will have someone writing a compiler “over the weekend.” Get it wrong, and they won’t be able to code a for loop without five bugs.
  • 90% of C++ programming is memory management. The other 10% is memory management.
  • A stupid policy with a fast algorithm is still a stupid policy.
  • A fast disk is worth a couple hundred megahertz of CPU.
  • When they defer your salary, even for a week, it’s time to go.
  • Most of the code you find in books is wrong. [Don’t get me started on Petzold]. [Or Structure and Interpretation of Computer Programs … for different reasons than Petzold].

“Kids, before all these newfangled accessories, it was like this: You didn’t get curious without permission, you didn’t look cross-eyed at someone else’s screen, and you sure as hell didn’t tell anyone about your MP3 collection.

“You’ve got an unlocked computer? Go to jail. A copy of Scribe that’s more than three versions out of date? ‘Hey, what else you got on that system? We’ll have to take it downtown and make sure you’ve got licenses for everything.’ Forget about search warrants, you gave up your rights in the EULA.

“Pity about all the free software hackers. But then, you just can’t let unstable, potentially psycho types have keyboards. All them video games proved that.

“You kids with the smart glasses and earplugs are pretty safe, but us oldsters are at constant risk of seeing something we’re not licensed for, or hearing something we shoulda’ paid for. I know this thing around my neck is a pain, and sometimes the bill at the end of the month is a surprise, but at least it gives me some legal protection in case I’m hauled in front of the Sony judge for illicit viewing.

“Before your teacher makes me sit down, I’ll just say this one last thing. Always remember that they can’t [________] [____] [______] [____]. Thanks, kids.”