{ by david linsin }

December 21, 2007

Is Only Part Of A System Well Designed?

Another statement by Eric Evans, from the same talk I blogged about a couple of weeks ago, got me thinking. He claims:
Not all of a large system will be well designed...it's a fact, we only go further if we let go of that notion...
My first response was: "He's gotta be kidding me!". Well, the more I think about it, the more I guess he is right. It just took me a while to realize, that I have experienced this before.

Most of the time you tend to have this feeling, that something is designed in a bad way, when it comes to the code of someone else. Your first impression might be "this is hell"! After studying the code for a while or working with it, you get to understand it and suddenly it starts to make sense. So, I believe that good design is about communication. If your code can clearly communicate it's purpose, then it's well designed. If it takes days or even weeks to grasp the design of a system, there's probably bad designed involved.

Another point, that I'm thinking about, when I hear Eric's statement is: focus. If the key part of your code, the domain layer, is well designed, you have 90% covered. Everything else in your code base is only supposed to support your domain. If you focus your design efforts on the key part and do a great job, your application is more likely easier to understand and thus to maintain. Most of the time developers try to go the extra mile and design everything as good as possible. If we accept the fact, that there is probably no need to get everything worked out 100%, I think we can shift our attention to the real problem - the domain layer.

So, I agree with Eric's statement, not all of a system is going to be well designed, because it probably doesn't make sense to outlay everything perfectly. Nevertheless, I won't stop trying to put some extra effort into my designs to get them as good as possible. I'm just a developer after all.



  • mail(dlinsin@gmail.com)
  • jabber(dlinsin@gmail.com)
  • skype(dlinsin)