Well I've started my Christmas holiday today, the first period in over four years I haven't had to work up until Christmas eve (it's ok no heart rending stories of tenacity to get a project done type thing, I've usually used all my holiday allowance is all!) - 16 days of no work....bliss!
However I don't consider blogging work (perversely!?), even though I might be posting about work related stuff - I do find it theraputic on some level and I find it good to actually publish my thinking as it concentrates and clarifies my ideas (if you can't describe what you mean exactly then you will find you often get flamed to a crisp, trust me I've been burnt!).
So the trigger to this post is the book "The curious incident of the dog in the night-time", a good book so far I feel and one that I've been meaning to read for some time (purely so the owner Pippa can have it back). In it the main character mentions "Occam's Razor" - one of those phrases you dread hearing dropped into a conversation - a sort of anti-"selection of the thickest" phrase that whittles away to the bar or the other corner of the room those not "in the know" of its meaning...me included - so I looked it up and decided that it had relevance to software development.
"one should not increase, beyond what is necessary, the number of entities required to explain anything" - William of Occam
or my version for the software development world,
"one should not code, beyond what is necessary, the number of classes required to implement something".
This is not a new principle - Don't Repeat Yourself (DRY) and Keep it Simple, Stupid (KISS) have been around for a long while but it's a trap that is so easy to fall into - over engineering a solution.
It's quite problematic when working on an Agile project, as you just don't get bonus points for coding a feature that's not on the Sprint backlog. However good software design and clear instructions on why you haven't implemented it or how you could implement it are useful - so Part II of this post will be about what I feel makes a great developer, good commenting and leaness of code certainly being traits that are common - I'll be using examples from people I've worked with and maybe one or two from my own hand. I'll also be talking about how "Software Factories" will influence development practices in the future, I'm fascinated by the concept but would like to map out the reality of what this approach acutally means to software developers.
Have a great Christmas!