« iOS 4 Home button double-click: Rare case of retiring a behavior preference | Main | Form validation feedback: Be slow to complain, and quick to forgive »

September 07, 2010


Justin Bailey

Excellent metaphor!

John Stracke

My mother-in-law actually did have her basement replaced about 15-20 years ago. The photos are impressive. :-)


The scary basement isn't just limited to the UI. I think this metaphor can be extended to all application development -- whether you're developing a desktop application or a web services platform, there's always going to be a scary basement somewhere unless you tread carefully :)


I know these basements. In my case they result from "I'll hack this together so that it somehow works and later I'll tidy it up and make it bullet proof" - guess what: There's no later.

guy at HockeyBias dot com

Well put!


I think John Stracke's comment was a euphemism.

White Wizzard

AT my work, we call it before time code or BTC.


"The infinite scrolling feature was itself delicate, and doing anything to it was complicated..." It sounds like you have a scary basement already. You can't implement apparently-simple changes without delving into how they interact with it.

Jeff Grigg

When I find the scary basement, I clean it. In software, that means that I refactor it. I don't care how scary it is; it is more scary *NOT* to clean it. When it's too scary to change, I change it until it's not scary to change any more.

And by the way, I'm also a spelunker. I rappel into deep dark caves. And I've been known to clean them too.

And you should see the basement in my house: It's clean and tidy too.


Why does it take large teams of people to code these applications?

Wouldn't it be better if only a few people handled it, so they could keep track of what the basement is like at all times?

Lars Holm Jensen

The cross-browser issue has been resolved; Silverlight!

Billy Korando

Good metaphor. I have had the unfortunate experience of having had worked on applications that are more akin to haunted houses, than simply having a scary basement. It emphasizes the importance of making code modular and using interfaces between layers. Every app will still have the scary basement, or the haunted room, but by making a commitment to modularity you give your team the opportunity to rework the problem area without affecting the entire app.


Its just a shame I have to work with a 12 year old, constantly evolving codebase, with so many scary basements they have to be connected via a complex arrangement of dank underground tunnels.

The comments to this entry are closed.