It used to be pretty easy to tell when you were done with a piece of embedded software: You wrote the bits to mag tape, the kind on a reel, boxed it up with a big check and mailed it off to chip company in California (if you were already in Cali you just went down the street a few blocks and saved some postage). Then you waited a couple of months, and if the mask ROMs you got back were in runnable condition, you sold it.
These days, with everything connected and usually updatable, there’s no real “We’re done” event. Oh, there’s a ship party, but usually we go back to fixing bugs after that. If your toaster is suddenly making charcoal briquettes because of a bug in its internal clock, you can just hook the thing up to the internet and grab the latest firmware. The team that did the toaster software is on the hook for fixes.
“Urm . . . three bloody o’clock in the — wazzup?”
“We have eighteen hundred bug reports of the iToast 5G sending fountains of flames to the ceiling in the past few hours. Can you come in and fix it?”
“Er, why do I need to drive in? I can log in and fix it from here.”
“Also, explosions. We really want everyone away from those toasters. You should probably avoid the kitchen and just hit your house’s main breaker on your way here.”
I’m not necessarily saying that the quality of things has dropped — it’s freaking awesome being able to add functionality to products in the field, or being able to fix crap that you fat-fingered at 2AM – but somehow, I miss being done.
 Yes, I know that telephones don’t go “Brrrinnngggg” any more.