Code Has Two Customers

Jeff Atwood asserts that it is important to get the public interfaces right before worrying about how the code looks. Somehow I got a feeling that quality of the code and its working were being posed against each other. They need not be. Or, that is what I believe is the benefit of following good programming and project management practices.

If code is the product, it has two different kinds of customers. One, of course, is the user of the application, where the code is invisible. It is the application which tells whether the code works or not. But in the long term, it also talks about how the code was written. As the application gets used more and more, problems change, there are requests and suggestions, and the code evolves. These changes are expensive, but good code can help in making these changes easier. It can help the application evolve better.

And that is where we meet second kind of the customer for your code. The maintainer or the developer who sticks with the code and makes changes to it. Software development is never a one-time activity, it is continuous and we need infrastructure to maintain that continuity smoothly.

I do not think the code can afford to ignore any of them. One pays for the software, and the other enables that. In certain phases of software development one might weigh more than the other, but they are not mutually exclusive. Working code is an apparent necessity, but good quality of the code might be realized over a long period of time. Any software development activity should invest in both.

Discussion [Participate or Link]

  1. Greg M said:

    Unless you type your whole program out from beginning to end without amendments, you are already the first customer as you write it. By the time you start debugging, you’d better hope your design is clean enough to be able to isolate your errors.

  2. Abhijit Nadgouda said:

    Good point Greg.

  3. Victor said:

    There is third type of code customer.
    It is the programmer who doesn’t need to edit internal part of code. This man should only use interface of the class or library. This programmers success will depend on the quality of class public functions set. The key question for them will be: does this class makes possible to do everything we need or not?

    BTW, it is very interesting theme for investigation. Sometimes people are saying that ‘programmers and designers are living on different planets’. Here we can see that programmers as well as designers should take care about making their products (code, classes, libraries, …) both useful and beautiful.

Say your thought!

If you want to use HTML you can use these tags: <a>, <em>, <strong>, <abbr>, <code>, <blockquote>. Closing the tags will be appreciated as this site uses valid XHTML.



Abhijit Nadgouda
iface Consulting
+91 9819820312
My bookmarks


This is the weblog of Abhijit Nadgouda where he writes down his thoughts on software development and related topics. You are invited to subscribe to the feed to stay updated or check out more subscription options. Or you can choose to browse by one of the topics.