The Definition of Good Software

In my mind, the definition of well-made software is this:  The absolute minimum required to get the job done.

There’s a little agile in there, relating to software design minimalism.  That’s not what I’m getting at.  Whether you are developing something new, or fixing something broken, deliver the very least you must for the desired outcome.

I did not say to do the least amount of work required, I said deliver the very least required; go quickly and completely in the direction you must move.  Destroy that bug, hack that web page, do something terrible and glorious.  After getting it working, though, take that next step, and wash all the mud off what you just did.  That is, minimize the actual changes you’re about to apply.  Make sure every change makes sense and is required.  Don’t lump another change or some code reformatting in just for “because it needs to be done eventually”.  Focus on only what you are doing.

It is a massive accomplishment to delete code from a working system and still have a working system.  It is thrilling, and you’ve saved yourself and “the next guy” a lot of trouble in the future.  This applies whether you are fixing a bug or making something completely new.

Comments (1)

Podcast Rotation

I just wanted to capture the current set of podcasts I listen to. I commute two hours a day, and this set keeps me lightly stocked — Sometimes I run out for a day or two, and I rarely fall behind.

Read the rest of this entry »

Comments (2)

Coolish: Mozilla Bespin

I know I’m late to the game, but I was looking over Mozilla Bespin — a web-based IDE with a surprising amount of features, including source control and syntax highlighting.  Right now, it’s all about web techs, with a strong focus on HTML, Javascript, and CSS, but it is extensible and seems like it is headed in the right direction.

Read the rest of this entry »

Comments off