This poor neglected blog desperately needs content, so I thought I'd describe the last 5 weeks of my life, spent working at Atlassian. 4 of those weeks were spent doing JIRA 2.1 documentation using Forrest, and the last has been coding.
I really hope Atlassian is a model of post-dotcom software companies, because it's very cool working here. Small, focused, clueful people, quality code, best practices. This is the first time I've seen pair programming and test-driven development in real use. As a newcomer to the code, I found pair programming awesome. Rather than the usual process of spending a week floundering in strange code, trying to get my bearings, I always had someone on hand to ask stupid questions. At the end of each day I could feel my brain creaking under the strain of rapidly acquired information. Perhaps when I'm a JIRA code guru I'll find it frustrating working in pairs. If so, I hope I'll remember what it's like being on the other side.
As for test-driven development, I have one thing to say: mock objects. Wonderful things. Pretty much every action in JIRA has an associated test, and mocks make it simple to test only the bit you're interested in. Makes me wonder how Cocoon's flow layer can be unit-tested. Unit tests would make an interesting addition to the Petstore sample.
Probably the most mentally stimulating discussion last week was about Webwork 2 and especially XWork. You have to see this thing in action; it is just beautiful :) 3 years ago I got involved in Avalon because I felt there was something cool about IoC and SoC, even if I couldn't quite see it. Looking at XWork, I get the same sense all over again, about 100x stronger; this is the Inversion of Control pattern Done Right.
I made one awful discovery though; 4 years of exclusive vim usage has almost crippled me on regular editors. While using IDEA, I had this terrible urge to hit escape repeatedly, type :wq, navigate using hjkl keys, and use all the other obscure key combinations that are hardwired in my brain. It's like a right-handed person suddenly being asked to write something left-handed. After a week of embarassing fumbling, I have learned (or unlearned) the basics and am just beginning to appreciate IDEA.
Having tinkered a lot with JIRA, I can say it's a very fine piece of work, but its best bits are sadly underused. For instance, with services, you can comment on a bug just by replying to the notification email JIRA sends out. Quoted text is automatically stripped out. Bugs can also be closed (with a comment) by an appropriately formatted CVS commit log. I need to ask Steven if I can upgrade cocoondev's JIRA to play with all this stuff in Forrest.
Finally, if everyone in your project uses HTML-capable mailers, then I can highly recommend this CVS commit log formatter. Instead of straight 'diff' output, it colourizes things, adds a summary, and optionally makes hyperlinks our of certain phrases (like bug refs). A small thing, but it makes reviewing code changes much easier.Posted by jefft at June 09, 2003 07:43 PM