Geeks With Blogs
// ThomasWeller C#/.NET software development, software integrity, life as a freelancer, and all the rest

From time to time (and when there's room for it, of course), I'm doing a so-called Code Kata, a small to mid-size programming exercise that usually originates from some seminar or meeting. (Kata collections can be found here or here, for example.) What I especially like about them is the level of professional self-knowledge that they provide: When working on a Kata, you can experience how you deal with things without the usual business pressure.

Lately, I did the KataPotter (you  can download my solution here), and doing it gave me some valuable insights into my coding process. Of course, they were not totally new to me, but I never did formulate them before in such an explicit clarity. Here they are:

  • Although I'm consequently doing Test-driven development, I usually refuse to write a single line of code before I have an (at least vague) idea of the solution's architecture - TDD without a minimum amount of upfront-design is like starting off without having an idea about the destination - chances are good, that you will end up in the middle of nowhere...
  • I'm not writing much code, instead I try hard to write the right code. Measuring productivity with the Source lines of code (SLOC) metric feels just plain wrong to me - a monkey can produce code lines. For me, developing software is not about writing code in the first place, it's about providing solutions in the form of computer programs - sometimes I even feel like software development is about avoiding code in the first place...
  • I care very much about readability, maintainability and extensibility in general, and about the clarity and expressiveness of my unit tests in particular.
  • I hardly can see a piece of software outside its business context and lifecycle.
  • I have serious difficulties to adhere to the YAGNI principle, although I find it absolutely reasonable in theory. It's just that my brain instinctively tries to anticipate all possible future situations, and actively ignoring them feels quite uncomfortable to me. Consequently, I failed to provide a just-good-enough solution for the Kata, and came up with a general one instead...
  • I'm almost an idiot, when it comes to logical and mathematical algorithms. Instead, I try to do all my coding on the basis of common sense and the realities of the respective business context. - This is mainly a consequence of the fact that I studied humanities (Psychology, Sociology, Literature, and Philosophy) in university, and therefore have no in-depth background in any natural science. However, there rarely was a situation during the last ten years, where this was a problem. To the contrary, it often proofed to be beneficial to have a non-technical background, which allowed me to see further than the end of the (technical) nose.
  • I'm nearly helpless, if I don't have a connection to the internet. Having access to the world's knowledge and insights about coding, as well as to my beloved and frequently used Safari Books Online technical library, is essential for my coding process.

I guess, the above doesn't make me the typical programmer (whatever this might be exactly). That's ok: I never intended to be one of that breed ...

The sample solution

My solution for the KataPotter (VS 2008) can be downloaded here. To compile and run, you must have the Gallio automation platform installed, which you can get from here.

Posted on Sunday, November 8, 2009 7:13 PM General programming/C# | Back to top

Comments on this post: Solving 'KataPotter', or: What kind of developer are you ?

No comments posted yet.
Your comment:
 (will show your gravatar)

Copyright © Thomas Weller | Powered by: