Welcome to MSDN Blogs Sign in | Join | Help

From The Depths

Matt Thalman's Blog
My Philosophy on Software Design

I like to think of software design as cracking a code.  You keep working on the design over and over until you've finally cracked the code and an elegant design emerges.  I believe the solution exists out "there" and I just have to find it.  Albeit there is more than one solution but some are more elegant than others.  The act of searching for it is software design. 

I've been working on a design the past few days both at work and sometimes at home while in bed (my brain just doesn't like to take a break sometimes).  Last Saturday morning, I think I finally cracked the code.

Posted: Monday, November 01, 2004 7:56 AM by mthalman

Comments

Voytek said:

:-)))

It's sound like searching for physics' "The Theory of Everything"
# November 1, 2004 9:24 AM

James said:

Are you speaking of designing small, isolated sections or a larger system design? What are you thoughts on big design up front vs. little design all the time?
# November 1, 2004 10:30 AM

Stephane Rodriguez said:


I disagree. Crack is something that you do once. Design is, depending on the type of application and conditions, is something you have to question every day, and go back based on misc customer feedback.

So there is no parallel to me between software design about program cracking.

Quite the opposite, the design of the software is validated when it's out in the wild, and that's when, 99% of the time, the feedback is like "well, it's good but what if...", sometimes questioning the most fundamental elements of your design.

Of course, there is more parallel between software design and program cracking when it comes to software that doesn't revolve around user feedback. I am not sure you want to make us think that Microsoft produces that kind of thing.

# November 1, 2004 11:21 AM

Andrei said:

Define "cracking a code". If you define this as coding different approaches until you find the most elegant/performance/understandable then it's wrong. If you define it as thinking about the algorithms+data structures, writing sample test cases (and do an API usability study if you design an API), and do this process iteratively until you meet criteria list above, then this IMO is correct approach.
# November 1, 2004 11:42 AM
Anonymous comments are disabled
Page view tracker