This week’s highlights
Just a few interesting links this week since I was “busy” becoming a father :) Pay particular attention to Jim Weirich presentation at AAC because it’s full of interesting things about software design. Good learning.
Jim Weirich The Grand Unified Theory aac 2009… Maybe Jim is just revisiting old books that nobody cares about, but the result is entertaining and the Connascence model explains quite a bit of what we consider today as “quality” software. Absolutely worth listening. With the Connascence model things like an “extract method refactoring” can be explained in terms of tension to the less dangerous Connascence of Names. Also different kind of bad smells in code can be explained the same way and Jim give us example from Rails and Fixtures. I’m definitely surprised of the power of the Connascence model though I’m not sure we can talk about the grand unified theory. Connascence seems to me an explanation of coupling on steroids , something to add to the group of principles (like SOLID, Demeter etc.). Thoughtful talk.
Dave Thomas RubyConf 2008: Fork Ruby… I’m not sure I understand the need of forking Ruby “the language”. Dave says that all of the enhancements proposed are in SmallTalk for example. Since there are other languages carrying those ideas, do we really need to fork Ruby to know if those enhancements are really worth in Ruby? Anyway, the talk is a concentrate of smart ideas. For example, there are obscure apis and methods that can be removed to make a lighter Ruby. Dave then describes a parallel implementation of the multiple assignment as a way to introduce transparent parallelism in Ruby. Lambdas can be downsized to a single construct instead of the many we have now up to the extreme of removing class and global variable. Overall an enjoyable and entertaining presentation worth looking.
Qi4j and State Modeling… I’ve been following Rickard since the XDoclet days and always found his work inspirational. It is also the case for Qi4j although my understanding is not yet enough to judge the framework consistently. I just want to express my impression so far. The kind of work I see is very similar to an architecture where there is an interface for each method of a class. It’s like extreme decomposition. If you have an interface for each method (or just a few of them which would usually make up a single interface or class) you can compose objects by mixing many interfaces (for example Nameable instead of having a class with a getFirstName getLastName kind of methods). The mechanism seems powerful but at the same time I fail to see how this can increase the expressive power to describe domain models. It looks less readable and more confusing for me now, but as I said, I need to study composition oriented programming first.
a better team… This is cool. I didn’t know about the quiz in the book, because I don’t have it. But I had a look at the questions and they are very well posed and targeted manly at values other than practices. I agree with the site motto: is the discussion that matters not really the results of the quiz. I would probably add this list of questions to those related to craftsmanship(http://reborg.tumblr.com/post/65104831/are-you-a-software-craftsman): team agility maturity model and individual craftsmanship maturity model. If we add also the Rails maturity model we probably have enough to assess maturity of a company.
3 years ago