The Coder's Tale
1. I had finished some code and checked it into the source tree, and I was sitting in my place reading newsgroups and arXiv abstracts and crafting heros at the HeroMachine for sport. And there came into my place another developer, a mighty coder and even a Project Leader of the group, and this Project Leader told me of a program that might be written. We talked of this program from one to another.
2. Where, I asked, was the specification of the output format of the program? And he answered me, saying that the specification was not yet written, but that there was on a file server a CGI script that would parse the format.
3. So I turned to my laptop, and accessing the file server I opened the CGI script. And together we found the block that parsed the output, and we saw that it was simple.
4. And again we talked of the program from one to another, and the Project Leader showed me an input dataset that he carried with him written upon a cartridge. How, I asked, would the program determine which of the files in the input directory were intended for it? And he nodded, and considered, and then he went away.
5. And I read weblogs.
6. Then in good time the Project Leader returned, and with him was another developer, also a mighty coder, and one who configures Linux boxes. And this developer said, well, I will write for you a module, and with this module you may determine which of the files in this input directory are for you, and you may use a stub in the meantime.
7. And my heart quickened. Is it, I asked, that I am to write this new program?
8. Now the developer nodded, and said that he had been making that assumption. And the Project Leader nodded also, and said that he had been making that assumption.
9. So with gladness I turned to my tools.
10. Seeing that this new program was like in form to an old program, I made for myself a copy of that old program under another name, and I pared away all that was not needful. And I wrote in the new program a comment, saying "do the real work here", and I coded in that place a stub, and that stub wrote a fixed output string and returned success.
11. And I shaped scaffolding for the new program, that wrote the input directory and its files and ran the program with all warnings turned on and displayed the output. Then I ran the stub program in the scaffolding, and it was good.
12. So now I will write the code that does the real work, and I will run the code in the scaffolding with different inputs, so that all of the paths of the code are exercised. And I will read through the code, from top to bottom and from bottom to top many times, seeing that no unwarranted assumptions have been made, and that the literals have been read from the project's literal pool and not hardcoded, and that the comments are clearly worded and that I have not crafted any truly odious hacks.
13. And when the code that I have written passes its unit test, and when all of the rough places within it have been made smooth, then I will check the new program into the source tree, creating the features and the tracks and marking them for integration, so that the other developers may look upon it.
14. And they shall praise me in email, and then we shall all go to lunch.