When I explain my plans for the month of November to my friends, family and (soon-to-be-former) colleagues they inevitably comment on how I'll (not) find the time to do all the tasks I have set myself to a standard that I will be happy with.
However, in my favour:
- I always set myself unrealistic work-loads and high targets.
- I understand that I do so because I know how to be lazy.
These are positive character traits for the following reasons:
By setting unrealistic work-loads I am forced to brutally prioritise and deal with my work in the most efficient way possible. I know that I won't get everything done in the time I have allotted; but what I will get done will have been done in the most efficient way possible to give me a maximum "return" on my time and effort. Think of it as a kind of anti-Parkinson's law used in order to overcome Hofstadter's Law.
This promotes a certain sort of laziness: I'm not going to waste my time doing things I don't need or have to do. If possible, I'll either automate what I want to avoid (with a computer program) or I'll find ways to re-use either my own or others' work to my own advantage (by using freely available software libraries and tools such as the Textpattern content management system that runs this site).
With these points in mind, my software-development philosophy is encapsulated in the following quote:
"As simple as possible, but no simpler." (Albert Einstein).
My intention is always to implement only the minimum of required features in the simplest, easiest and most helpful way possible.
- The lack of complexity means the code performs better (i.e. there is less for it to do).
- The lack of complexity means that I and any other developer working on the code understand it quicker, making it easier to maintain and modify.
- The lack of complexity makes it less prone to hidden bugs.
- The analytical approach required to implement something as simply as possible demands a thorough understanding of the problem being considered.
Aiming at a seemingly unrealistic high target is also a means of discovering what one is capable of. This is best illustrated with advice received from a music teacher I once knew:
I had only recently started playing the Tuba. I was going to audition for a very good local youth orchestra and I wasn't sure if I was good enough to join. His advice was that I wouldn't know unless I auditioned and that, more importantly, if I didn't attend the audition I'd always regret excluding myself from this opportunity.
Since then I have always had an "if I don't try I'll never find out" attitude and this has worked to my advantage on so many occasions. (I was successful in the audition, too!)
Finally, seriously considering the possibility of such work, targets, aims and objectives demonstrates a positive outlook, energy, imagination and creativity tempered with a healthy dose of realism and cunning.