It's the time of year when we lack any more time in the year and the habit of many is to look forward with various resolutions for personal improvement. Whom am I to buck such an estimable tradition? In this case, this post is for myself. I am throwing the gauntlet down and challenging myself to focus on the areas of improvement I know exist; an easy surveying job it seems. So the balance of this post will sort of define why I am suddenly called to stop procrastinating and what my goals are in addressing my ambitions.
Actually, a post of this sort has been forming in my head during the ever so infrequent moments of respite that I have managed to secure for myself lately. It is the consequence of realizing that something is broken. Well, worse than that. I've known that something was broken for awhile, but it is only of late that the precipitous event has occurred that forced change.
Specifically, in the maintenance of a legacy project, one which I inherited (but have had long enough to fully share in guilt), a change request has been made that can't be done. "Can't" might be too strong as a beloved movie quote of mine goes something like "the less apt a man is to make definitive statements, the less likely he is to seem foolish in retrospect". ("All of life's questions are answered in the movies" actually, a great quote from the movie "Grand Canyon") Anyway, a modification needs to be made and every attempt at a solution yields uncertainty and unacceptable risk.
Mind you, the change requirements aren't that bad, it's just that the architecture of the site, in combination with the development workflow, does not allow for changes with predictable consequences to be made. Worse than that, like any mechanic that has to remove several dozen painfully attached components and systems, if one is going to go through so much effort to make a change, it would be insane not to make other needed, though less immediately important, changes. And so the situation becomes like quicksand. Throw in a management group that lacks the perspective to appreciate the constraints, but does have a deadline that doesn't seem completely arbitrary to them and the it gets bad. Of course, the upside of being backed into a corner is that you aren't distracted with so many choices of where to go next.
So drastic changes have to be made, and they will be. And in the process I expect to become a much better developer as I endeavor to improve the following areas in my professional life:
TechnologiesI've become an Actionscript fanboy. With recent announcements from Adobe, it seems that one could spend a lifetime and have no assurances of mastering just the Flash Platform. In 2008, I was reintroduced to Flex. I knew Flex 1.0 and 1.5 were cool when I played with them, but it was hard to get too terribly excited due to pricing models, and limited tool support. After flirting with OpenLaszlo for awhile, I was pulled back into Flex 2.0. What a world of difference half a version makes. With Flex 3 released and Gumbo seeming pretty stable for everything I have tried with it, it is hard to imagine mastering it anytime soon. With possibilities offered by AIR, Catalyst, Switchboard, Patchpanel, and more, it makes one dizzy. There is also an announced Actionscript 3.0 server side product, but Coldfusion will remain my goto tool for middleware for the forseeable future. 2009 will be a year of Actionscript for me.
(Python, Ruby, Groovy and several technologies look interesting, but with my attention on the client-side, my limited exposure with them does not give me the imagination to see how they are superior to Coldfusion in the tasks that I am expected to perform. Especially when I have yet to leverage the event-driven frameworks available to me - more on that in a bit).
ToolsetsAlready using CFEclipse (though it'll be interesting to see how Bolt distinguishes itself), SVN and other tools, however my toolbelt is feeling way too light and there is plenty to add.
Coldbox, Coldspring, Transform ORM, unit testing of some sort in CF and Flex (haven't decided which way to swing on that one), Selenium ( now for Flex too), Cruise and Ant will be added to the toolbox in the coming year. ModelGlue looks really powerful as well, but there are a lot of items competing for attention and Luis has bundled together quite a toolkit. Of course, ModelGlue does support both CF and Flex ... hmmm, decisions, decisions.
WorkflowAnd this is the bitchy one. Tools are great, but using them efficiently is the trick, particularly in concert with others. It looks like I am leaning towards use Cruise over CruiseControl in combination with a TDD system. Without going TDD, continuous integration could still offer benefits, but wouldn't seem worth the effort. Beyond that I am still uncertain. I'm also trying to figure out if virtualization ought to be thrown into the mix as part of the local development and/or deployment strategy.
CraftAnd picking up new, shiny tools and automated systems is not particularly meaningful without the ability to really work smarter; to know which tool to use and why. Without enumerating a large lists of blogs where I lurk (I'm really trying to get into the habit of commenting more often) or books that I've read or need to read (or even re-read), there is one habit I have to force myself into: reading source code. There is so much available, particularly the Flex framework itself. And the many projects available at RIAForge.com are treasure trove of resources.
AmusementThis stuff is fun. At least, it ought to be - and mostly is. However, long term projects can wear at you for awhile for a long list of reasons. And contractual work is nice and all, but this year I have it in my head to specifically pursue projects that will be interesting and captivating. In a couple of cases, the domain names have been secured and the musings are itching to be put to paper. Heck, I even have the beginnings of a team of talented individuals that are proving receptive to my cajoling. Tremendous.
Oh, and apparently I have non-programming interests too to which I must also attend - frick.
MonetizationOh, and I want to be rewarded for the investment. My wife insists on it actually. So this'll be a year of figuring out how to spend my time learning new things, working on things that bring a smile to my face, continuing to share as much as I can through this blog (and some potential other projects) and figure out how to stuff my coffers at the same time.
So, if you read through this article of mostly glossed over platitudes, then, well, good for you! Like I said at the beginning, these are my goals as I enter the new year. And now I have a record of them to review next December to figure out how I did. Of course, they are subject to change, not valid where prohibited by law and potentially ill-conceived.