Live data from Hacker News

The Tao Of Programming

canonical.org

11–12 of 12 posts

Re: The Tao Of Programming

#11

> A novice programmer was once assigned to code a simple financial package. > The novice worked furiously for many days, but when his master reviewed his program, he discovered that it contained a screen editor, a set of generalized graphics routines, an artificial intelligence interface, but not the slightest mention of anything financial. > When the master asked about this, the novice became indignant. ``Don't be s…

I'm not sure I understand this one yet. Could you explain what you mean about code vs. Program? To me, it seems the novice is correct here (supposing that those components produced are required for a good result). Is the lesson similar to that of building DSLs?

I will try to explain.

Firstly it is a focus on "results" rather than output. The novice has produced a lot of output but no results. How would you evaluate if the components serve their purpose? Are they doing too much? Are they not doing enough? It is only by virtue of the program's results that you can check. As programmers we tend to evaluate the code (which is an internal focus) more than the running program (which is an external focus). This is a great way to learn but a bad way to deliver anything of value to an end customer.

As a programmer, the novice would understand and be interested in the ins-and-outs of his screen editor, gui routines, and AI module. However, he would probably not have the same level of understanding of finance. For a good product, the novice should concentrate on raising his understanding of finance to the level where he can deliver solutions to his users. By ignoring his users (delegating them to an afterthought), he is making a fundamental mistake.

Finally, it is a question of value. This is key - the most fundamental aspect of this scenario. The programmer, for all his effort, has delivered nothing of value to his users. Worse, he does not even have the attitude and direction required to deliver value. When someone says "I'll put in that stuff later" (or it's equivalent), you can be sure they will deliver something of poor quality to the users.

In the end, if you cannot say the work you have done today will make someone's life better - what is the point of working so hard?

Re: The Tao Of Programming

#12

Earlier quoted context omitted.

I'm not sure I understand this one yet. Could you explain what you mean about code vs. Program? To me, it seems the novice is correct here (supposing that those components produced are required for a good result). Is the lesson similar to that of building DSLs?

I will try to explain. Firstly it is a focus on "results" rather than output. The novice has produced a lot of output but no results. How would you evaluate if the components serve their purpose? Are they doing too much? Are they not doing enough? It is only by virtue of the program's results that you can check. As programmers we tend to evaluate the code (which is an internal focus) more than the running program (wh…

Ah! I did not understand the emphasis. It didn't occur to me that the novice would be working on things that were not relevant. Thank you for explaining. Also, I may still not understand the depth of this lesson, yet.
Post reply on HN