An introduction.
For starters, I'm a software developer working with an agile programming team at the University of Toronto. Although we're a small group of developers, we've been using extreme programming (XP) techniques for several years now with a great deal of success. As technical lead for the project, I helped to introduce pair programming, test-first development, and iteration planning into our process. After the failure of a waterfall-style approach, XP gave us a way of responding to the constant change inherent in this decentralized, highly political academic environment.
Ultimately, the process of implementing this agile methodology challenged me to completely rethink my approach to writing software. So, really, agile development is an essential concept that informs my intent for this blog.
Secondly, I like objects. Object-oriented programming is at the root of refactoring and agile architecture. I work primarily in Java, and for over five years I have been developing Web applications using WebObjects, a little-known set of frameworks originally developed by NeXT and now managed (mismanaged?) by Apple. WebObjects has evolved into a set of very mature, elegant frameworks to help develop simple and well-encapsulated Web applications in Java. It's the design patterns featured in WebObjects that many J2EE developers are just starting to become aware of after fighting with the complexities of EJB for too long. Just read Rod Johnson's J2EE Development without EJB for proof.
Although I may well be leaving the WebObjects community in the future (a topic for a future article), WebObjects has provided me with a keen interest in design patterns and simple, elegant architectures.
Ultimately, it's my background in accessibility--I worked at the Adaptive Technology Resource Centre (ATRC) for years--which has formed the philosophical underpinning for everything I do with computers. Separation of content from structure, content reuse and separability, well-described interfaces; these are fundamentals which can be very widely applied to software development and user interface development. They're key to object-oriented design, and they're also inevitably part of a good architecture for Web applications.
So, why this blog? I've been wanting a place for a while to post articles and ideas on software, architecture, and user interface design. To me, it presents a way of articulating and clarifying my own thoughts as I learn new technologies and work through the richness and complexity of writing enterprise-level software.
Here goes.
<< Home