Sometimes it's good to reflect. Matthew Wilson considers what he's learnt so far.
Sadly, despite Ric Parkin's last-minute exhortation to contribute just 'a single nugget of wisdom, and [an apology that] the next part is delayed', work pressures, chronic procrastination, and falling foul of my own game of deadline-skirting-as-inspiration, I find myself coming up short for a contribution for what will be, righteously, a grand celebration of 100 instalments of Overload. Had I been able to do so, I might have imagined a Quality Matters Yearly Round-up in the form of one of those awkwardly self-regarding missives that circulate during the festive season. Something like:
Well, another year has gone by in a flash. The family is just doing so well. Daddy has been juggling work, exercise, being a pompous ass, and writing his columns and books: He says he's happy, so we just let him get on with it. The older children - FastFormat, Pantheios, recls, and STLSoft - are all doing well, in their own way, and, despite their various 'challenges', plod along with reasonable success. FF has settled into his life as a niche player: he does his bit well, though we do worry that he's not making enough friends. recls and STLSoft still can't get their homework complete, and have yet to properly put on their school uniforms, even after all these years! What good is having good ideas if you can't even do up your tie, I ask you? We had hoped that, with all his quiet successes, our Pantheios would finally get all his course elements complete and go on to University; but no, another year in class B(eta)! He keeps making friends with C++ programmers from all around the world, he excels at sprinting, gymnastics, and composition. But we can't get him to pay attention in writing his essays or in presenting his work clearly. Perhaps with our youngest, CLASP, set to go to school this year - as part of an exchange program with her uncle Garth (Lancaster) - she can show her elder siblings how to do it all right from start to finish in 2011. We live in hope.
Thankfully, I didn't have time to write any such drivel. Instead, I'll say that it continues to be a real treat to write 'Quality Matters', and also a major effort; though in a good way. I am definitely living up to James Coplien's philosophy that 'an author should learn at least as much as his or her constituency does through the process of writing and publication'. When I started, I knew that there were some sacred cows that I would be slaughtering, but I never imagined how many. That I've worked out that hello, world is wrong is still quite amazing to me. ('Uncle' Garth and I are about to embark on writing a C++ introductory programming book with a difference, and so I'll be putting myself in the position of all those authors whose first code examples to their readerships were wrong. Eeep!) That I've demonstrated - to myself at least; to QM readers in two instalments'time - that exceptions are antithetical to correctness, yet essential for robustness, and that there's merit in Java's checked exceptions, is another entirely unanticipated outcome of this enterprise.
Next year (and probably the one after, given my proven difficulties in hitting all the QM deadlines) will see me facing down more difficult areas, several of which I'm (as yet) imperfectly prepared for. The first two will be the promised third and fourth in the exceptions series, about which I have a reasonably clear idea of what's coming. Next I'm going to have to tackle the issue of contract programming and irrecoverability: adherents of the eggregious practice of defensive programming better get their defenses ready, as I plan to take no prisoners on that subject. Then we're probably going to get into diagnostics. All of those subjects I'm reasonably clear on. After that, it'll be unchartered territory: defining 'debugging' and examining its uses; seeing how far TDD can be taken; looking at coding with interface layers for increased reliability (and thread-safety). I'm also going to bite the bullet - and embrace my own (open-)sources of shame - and look at areas in which I've traditionally done very poorly: packaging and documentation. In this regard, I may use my own efforts to have Pantheios move out of its four years of beta and be a properly packaged and documented library, as the gritty exemplar.
Doubtless all of these subjects will see me learning more than I teach, and I will continue to be grateful that the Overload editor tolerates my reliability, and humbled that the Overload readers tolerate my presents (sic.), such that I have this forum in which to learn.
So, seasons greetings to all, and I look forward to blathering at you some more next year. :-)