FoP, Maintainability, TDD, Patterns, and the Process of Creating

by mheydt 9. July 2008 18:20 >

In FoP, Karl states that your goal is to create highly maintainable code.  His thesis has many presecriptions for this, but I wanted to make a few comments about what I consider the process of creating.

I program computers because I like to create.  I like to "design" new things, and make them reality.  Basically, I like to take things that already exist, and apply the things that I have learned to make them do new things.  To be technical, as "Herbert Simon" would say in "The Sciences of the Artificial", what I do in designing things is apply knowledge to transform something into something else; I create through the process of design, which is an artifical process because it uses cognition instead of being naturally occurring.

Now, this creating can be done done several ways.  One is to modify something that already exists to do something differently.  Another is to take two or more things that already exist, and combine them together with some new stuff to make them work together to do something new.  Or you can just create something altogether new.

Regardless of which of these scenarios, the end result is something that I want to be proud of.  And I like Karl's statement that your goal as a programmer should be to make highly maintainable code, and I think this is spot on.  That is how a programmer has his achievment most accurately measured.

Why?

Because showing that I created something new, and did it well, is what gives me the most satisfaction.  Highly maintanable code means that the code can be understood, that it follows patterns of practice that have been gained through my experiences, and probably most importantly that because of both of these the people using it can learn to do the same if not better.

But what is meant by "highly maintainable code"?

I think this breaks down to several things:

  1. The code is built using patterns of practice that are easily understandable so that it can be "maintained" - that is understood completely by others,
  2. The code is tested and proven to do what it is intended to do, otherwhise it is surely not "maintainable".

I used to be skeptical of TDD.  I now embrace it wholly.  I used to wonder why I made this change.  And I quess that is why I was so perturbed in a previous post when I mentioned that I was actively prevented from building a test.  After all, without being able to create the test and prove what you did, how can you tell if you created something effectively?  And what better a way of defining the measurement of your quality at the start so that you can guide your way to your goal?

 

Tags:

Architecture | Creating | Patterns | TDD

blog comments powered by Disqus

about the author

I'm a .NET, XAML, and iOS polyglot that loves playing with new things and making cool and innovative stuff.  I am also a Mac junkie.

I am Principal Technologist for SunGard Global Services in NYC, in their Advanced Technologies practice, and I work extensively with SunGard's energy and financial customers.

Note the the posting on this blog are my own and do not represent the position, strategies or opinions of SGS.

twitter

I can't stop thinking big!
Sunday 1:08AM via WindowsLive
Just watched Moneyball. That's my pick for best movie this year.
Saturday 3:51PM via WindowsLive
@vincebelpiede: Report: Skype For Windows Phone Beta Imminent http://t.co/KYNjgg1L#mhtnd
Wednesday 8:39AM via Twitter for Mac
@mashable: Kinect Fusion Will Turn Gaming (and More) Into a 3D Fun House - http://t.co/Ihrq2fY2#mhtnd
Wednesday 8:39AM via Twitter for Mac
New Kinect SDK: http://t.co/57MvA5L5 #mhtnd
Wednesday 8:39AM via Twitter for Mac
Follow me on Twitter

recent comments

None

month list