I’ve recently become slowly more aware that its starting to take me longer and longer to respond to people who contact me, look into resolving issues that people bring to my attention, complete tasks within deadlines that I’ve committed to, and otherwise meet my obligations to others.
As I started to think about why this might be, I began to consider the sheer number of things that I’m attempting to concurrently make progress on and I thought it might help me to try to just use this blog post as a means to try to organize a comprehensive list of my current in-progress tasks.
Speaking Engagements, User Groups, et. al.
One category of things that I’m committed to are several upcoming speaking engagements, user group meetings, and related ‘community engagement’ efforts. Anyone who has ever tried to prepare to give presentation to any group knows that its a humbling responsibility.
A group of people will come together and offer you their (hopefully!) undivided attention for some arbitrary period of time. In exchange for that oh-so-valuable thing as their free time, you have an obligation as a presenter to ensure that you do everything in your power to make the attendees’ experience a valuable one. This means some serious dedication to planning, research, preparation, refinement, practice, and rehearsal.
I’ve been to talks (fortunately not all that many) given by speakers who didn’t take this obligation terribly seriously and it shows. They either aren’t well-rehearsed, aren’t well-planned, or sometimes clearly don’t know much more about the topic than many of the attendees. If they manage to stay ‘on-script’ they can sort of fumble along, but if anyone asks an unexpected question not in the script they stumble and choke.
This kind of presentation is an affront to the unwritten contract between presenter and attendee: you give me your attention and I will give you something valuable for it in return. And I expect my speakers to know more about the subject than the audience; this doesn’t seem all that outrageous an expectation to me.
So for my several upcoming events this Autumn, I’ve got some serious time-commitments in re: getting ready to deliver the quality I hope those in attendance will expect of me. So far, this is how my schedule is shaping up…
- September 22, 2009: ALT.NET NYC User Group meeting: Background Introduction, ASP.NET MVC Patterns & Anti-Patterns
- October 17, 2009: Philadelphia .NET CodeCamp: Presentation, Refactoring to a S.O.L.I.D. Foundation
- November 2-6, 2009: Oredev 2009, Malmo, Sweden: 1/2-day workshop, NHibernate: Principle to Practice and presentation, Exploring the NHibernate Extensions Ecosystem
- Sometime (TBD) in September or October, 2009: Philadelphia ALT.NET User Group: presentation: NHibernate: from Principle to Practice redux (the talk content minus the exercises from the upcoming Oredev workshop)
In addition to the above, there’s some talk amongst those of us that organized the Agile Firestarter event back in June of holding another such event sometime this Fall, perhaps in October. Add to that the need to help plan the October, November, and December ALT.NET NYC meetings, and that’s a pretty full schedule.
Not nearly as full as for some of those that speak at such things for a living, but I’m not (nor do I ever want to become!) a professional speaker — I’m much happier (and, I believe, more valuable) being a professional who happens to speak rather than being a professional speaker.
Open-Source Projects Underway
Another category of things that occupies my time are various open-source efforts to which I either contribute or lead the development effort. Some of these are as follows…
- Complete the development of the Oracle database connector for NDbUnit; this was recently both complicated and simplified by Microsoft’s abandonment of its own ADO.NET provider for Oracle (complicated because it means I now need to reset my partially-completed efforts on the NDbUnit adapter for Oracle to not use this deprecated driver and simplified because now I don’t have to try to support both the Microsoft ADO.NET driver for Oracle and the Oracle DataProvider for .NET – ODP.NET – from Oracle)
- Complete the development of the WinForms GUI ‘NDbUnitDataEditor’ application that supports editing of NDbUnit XSD schemas and XML testdata from within a simple user interface; this will obviate the need to rely upon the clunky Visual Studio dataset designer to interact with dataset definitions (XSD) and update related test data (XML) for use with NDbUnit
- Implement the re-engineering efforts for the v2 redesign detailed in these past posts here, here, and here; this in turn will free up the application to be extended to address some of the other outstanding requests for enhancements, features, etc. that are presently on-hold due to their being just entirely too ‘messy’ to implement within the existing v1 architecture
- actually implement some of the enhanced features that others have suggested for the tool
Open-Source Projects on the Drawingboard
Still another category of projects are those that haven’t yet graduated from the conceptual level (in my head) to the coding level but are under serious consideration for near-term action on my part…
- currently just an idea at the concept level, this plugin for CodeRush + Refactor! Pro would mimic the TDD-related refactorings that are detailed in this fine set of extensions for ReSharper as designed by Eric Hexter
- Also presently just a gleam in my mind’s-eye right now, this would be a Visual Studio tool window (also built atop the DXCore infrastructure, really for no other reason than that it makes integration with Visual Studio so damned trivial) that would permit developers easy and quick access to tasks assigned them in the JIRA bug tracking application. JIRA offers a webservices API that would seemingly make this a relatively straight-forward task to wire up a simple window that would make it easy to manage tasks, close assignments, etc. in JIRA from within Visual Studio, eliminating the developer’s need to launch YABW (yet-another-browser-window) to get their work done.
- This one is an outgrowth of my ideas about how to solve a common problem that I often experience when wading into an unfamiliar codebase: that of trying to identify dead methods, classes, etc. as I evaluate the existing code. Currently CodeRush can already identify unused variables and parameters in methods, but this would extend that idea to take into account the entire codebase rather than just one class or method at a time.
- I’m imagining this as a CodeRush plugin that integrates with the existing CodeRush ‘code issues provider’ infrastructure (that can presently report things like ‘unused variable detected’, ‘undisposed local detected’, etc.) that has some kind of extensibility points exposed into which this thing could hook to report its analysis results.
This last category is for things to which I am presently committed but which don’t fit neatly into software (and no, I’m not talking about mowing the lawn or taking out the garbage 🙂 ). As some of you are aware, my wife is presently between jobs (like many in the US and around the world) so she has taken advantage of this downtime to dig into her musical career and has managed to cut a CD album of classic jazz tunes for which I have been producing the graphic design of the album case, the disc face, etc.
I need to wrap this up within the next two weeks so that I can move on to work on her website design which will have info about her project, links to purchase the CD, upcoming performances, etc. and so I need to get that kicking pretty soon too so the website is ready to go when the album is done being pressed (I guess ‘burned’ is the right word nowadays?).
A Great Case-Study in Serial vs. Parallel Tasking
This is all, in the end, a great example of how parallel tasking is really all crap. Trying to do all of these things at once is clearly not a possibility. And of course nowhere in all this list of commitments are any of the obvious still on-going commitments of ‘go to work’, ‘do the laundry’, ‘walk the dog’, etc. The overhead of trying to context-switch between all of these tasks in parallel is an overwhelming burden that takes up so much effort that no progress could possibly be made on any of the real work if trying to juggle this many balls at once.
So my tack will have to be to try that ever-so-hard thing: choose to set some priorities and stick with them in the order assigned until each in turn is completed 🙂
Let’s see how that goes…