Via Fallows, a software designer explains how a simple feature isn't:
This isn’t off the shelf, but that’s OK — we’ll just build it, it’s not rocket science. And it’s a feature that’s nice, not one that’s essential. Lot’s of people won’t use these tabs.
So, what do we need to think about when adding a bar of tabs like this?
- The whole point is to have a view state that summarizes what you’re looking at and how it’s presented. You want to switch between view states. So we need a new object that encapsulates the View State, methods for updating the view state when the view changes or you switch tabs, methods for allocating memory for the view state and cleaning up afterward.
- You need a bar in which the tabs live. That bar needs to have something drawn on it, which means choosing a suitable gradient or texture.
- The tab needs a suitable shape. That shape is tricky enough to draw that we define an auxiliary object to frame and draw it.
- Whoops! It gets drawn upside down! Slap head, fix that.
...and on for another 16 steps. He concludes, among other things:
This is a hell of a lot of design and implementation for $0.99. But that’s increasingly what people expect to pay for software. OK: maybe $19.95 for something really terrific. But can you sell an extra 100 copies of the program because it’s got draggable tabs? If you can’t, don’t you have better things to do with your time?
He's developing for a commercial application that he sells, so he may not be figuring the costs of development the same way I do. Since clients pay us for software development, it's a reflex for me to figure development costs over time. I don't know how much the tab feature cost him to develop, but I do know that to date, migrating Weather Now to Azure (discussed often enough on this blog) would have cost a commercial client about $9,000 so far, with another $3,000 or so to go. And the Inner Drive Extensible Architecture? That's close to $150,000 of development time—if someone else were paying for it.
And all you wanted was a little tab on your word processor...