The last year has seen me grow considerably as a developer, with changes in my working environment and my attitude to work being major contributing factors. Working in a team and joining a company with established methodologies and technology preferences has changed my working practice more than I had expected.
As the year draws to a close I thought I might share a few of the things that have had an impact on me and helped me to grow over the last twelve months...
1.) Firefox & Firebug
I've been doing web development for long enough to remember when the differences between IE4 and NN4 were enough to make you want to throw in the towel. This year has seen things finally begin to change for the better, with IE7 now supporting a more standardised DOM. It's perhaps ironic then that this is the year I chose to change to Firefox as my primary browser. It's actually the progress made in IE7 that has allowed me to finally switch. Now that IE and Firefox render pages more consistently I can do the majority of my development using Firefox and just do a little tweaking for IE.
The add-on capability of Firefox is one of its greatest strengths, and although there are several add-ons that I swear by the one that has revolutionised the way I work is Firebug. Although I've been using it for over six months I'm sure I've barely scratched the surface of what it can do. The ability to see (and track) live CSS and JavaScript output directly in the browser has made my life easier beyond belief. My only frustration is that my co-workers refuse to be converted!
As an aside, the maturity of Firefox also encouraged me to spend a couple of months using Ubuntu Linux as my home OS. Although I've since switched back to Vista, Firefox made for a much smoother transition between the two (and I've not ruled out Ubuntu as an option for the future).
2.) Fusebox/Frameworks
The majority of the applications that I maintain were built using Fusebox 4.1. The common structure allows team members to understand and maintain a complex application, and even junior developers can pick it up pretty easily. The Fusebox skills I've acquired also complement my PHP experience, so is doubly valuable.
As part of my efforts to learn OOP I've also started to take a look at Model-Glue, although workload and personal commitments (I got married this year) have prevented me from fully getting to grips with it yet.
3.) Source Control
Although we use VSS (Visual SourceSafe), which is generally considered to be the worst of the source control systems available, it has greatly helped in my day-to-day development and maintenance efforts. Due to the nature of our business we often have to make temporary changes to accommodate time specific offers. Using the history functionality of VSS I can roll back a file to a previous state, and it allows me to see not only when source files were changed, but also who by and what changes were made. In an environment where we don't write as much documentation as we should (who does?) this can be invaluable.
4.) Maintaining other peoples code
Until the past year I was fortunate in my freedom to design and code applications from scratch. The reality of working on a large scale application coded by somebody else turned out to be somewhat different from my expectations. I was hoping for robust and modular code maintained to an in-house style, but instead found an application that had grown as needs arose, with many hacks and quick fixes implemented by developers of all skill levels, many of who are no longer with the company.
Looking back I realise that I was incredibly naive in my expectations and I've since learned that while best practices are always desirable it's not always possible to refactor to a more elegant solution when working to tight deadlines.
I'd like to think that I've learned from both the good and the bad code that I've worked on, as well as learning to be less judgemental about other peoples code in the process (yes - I know that somewhat contradicts what I said above).
5.) Books, blogs and podcasts
I've always enjoyed reading, but for the past few years I've done very little non-recreational reading. That changed for 2007 with me tackling non-fiction titles covering a variety of programming related topics. I've already got my Amazon wishlist on the go for next year, headed by The Pragmatic Programmer!
2007 was the year that I fully embraced blogs. I'd never subscribed to or consistently read a blog before earlier this year, but while first learning ColdFusion I found the blogs of people like Ray Camden and Sean Corfield to be invaluable. I'm actually putting together a separate post about the blogs I've been reading this year, so check back for that tomorrow.
This is also the first year that I've fully appreciated podcasts. Recorded presentations from industry conferences and more regular podcasts like Out Loud and ColdFusion Weekly have all helped to broaden my mind and get me thinking about issues that I might not have otherwise.
Naturally, as with all things it's important to find a balance. There's a danger that you can become too tied up in the academics and don't get down and dirty with some practical experience. I think that I've been somewhat guilty of this during the past year, but one of my New Years resolutions is to put into practice all that I've learned in 2007!