Stelligent Home Page
CONSULTING  •  COACHING  •  COLLABORATING

Quick Links
 

An Interview with Brian Sletten of Bosatsu Consulting

Article Topics
Introduction · AOP · Ruby
« AOP



Ruby


Stelligent: Ruby is certainly gaining popularity! Last month's interviewee, Tom Copeland, was also a big Ruby fan! Come to think of it, scripting languages are rarely analyzed for metrics- why do you think this is the case?

Brian: On one level, the answer is because it is harder to determine static dependencies in more dynamic languages. On another level it is because these tools have not yet been developed although I imagine more will emerge soon enough. I bet the reason folks haven't taken the time to work on these tools is due to the intent of the languages themselves. Developers choose these languages when they are focused on getting things done quickly.

They are satisfying business functionality (or scratching their own itches), not necessarily worrying about the long-term state of the code. They refactor as needed, not simply for inner beauty. The approach reminds me of the great Jean Kerr line, "I'm tired of all this nonsense about beauty being only skin-deep. That's deep enough. What do you want, an adorable pancreas?" Scripting language developers don't usually care about adorable pancreases, they want software running and running well.

I don't think we are stuck unable to use metrics with scripting languages though. McCabe and Halstead focus on logical and syntactic complexity. We could easily calculate those for languages like Ruby and Python. Those metrics can help identify refactoring candidates or get a sense of the sufficiency of test code coverage, both of which fall within the goal space of most Ruby and Python developers I'd say.

The notion of tracking dependencies and managing coupling is harder without static typing, but, hey, you can still measure typing volume with SLOC!

Stelligent: You've worked on the IKVM.NET project- what do you think the future holds for .NET/Java integration? Where are we on the continuum of integration right now?

Brian: Yeah, that's a great project. Jeroen has done an amazing amount of work. Most programmers think that the only way to integrate the two architectures is through web services. Being able to run Java code on the .NET runtime without modification is tremendously exciting. Being able to reuse Java libraries in .NET applications is promising too. There is so much great software that needs to be written, generating .NET versions of well-used, well-tested Java code seems like a big waste of time. As long as the nits and performance issues continue to be ironed out, this is a tremendous opportunity for moving forward.

In most ways, Java is just another language to the .NET runtime. People choose languages for their features, based on what they know, etc. It will be phenomenal to mix and match languages as needed. I know a lot of folks think that sounds like chaos, but some problems are more elegantly expressed in certain languages. The success Jim Hugunin has had with IronPython is encouraging. I'd like to see similar successes for Ruby.
Groovy, Scheme, Jython, JRuby, etc. can run on the JVM, but there would need to be some incompatible changes to the VM to support dynamic languages really well. Perhaps it is time for Sun to break with the past so we can all move forward. Backward compatibility is a fine goal, but not one worth maintaining if it is going to stifle innovation unnecessarily. In either case, if that is the way things are going to GO;, it would be nice if both the JVM and .NET runtimes supported that model.

Stelligent: What are some good resources for folks looking to learn more about software metrics?

Brian: I haven't been really happy with most books on code metrics; I think the place to begin is with good design skills. Once you understand how to manage dependencies and modularize your design, the role of excessive coupling, complexity, etc. will make more sense than if you try to apply these metrics in a vacuum. I think Meilir Page-Jones' "Fundamentals of Object-Oriented Design in UML", Arthur Riel's "Object-Oriented Design Heuristics" and Robert Martin's "Agile Software Development, Principles, Patterns and Practices" are all excellent reads.

Brian Sletten is a liberal arts-educated software engineer with a focus on forward-leaning technologies. He grew up around the world in the Philippines, Germany and Japan. He has a background as a system architect, a developer, a mentor and a trainer. His experience has spanned defense, finance and commercial domains with communication software, secure software consulting, 3D simulation/visualization systems, Grid Computing and a Semantic Web-based document processing pipeline. Brian speaks regularly with the NoFluffJustStuff conference on aspect-oriented programming, design patterns, software metrics, .NET/Java integration and ZeroConf-based networking protocols. He has also spoken at JavaOne twice and at user groups around the country. He lives in Fairfax, VA, where he runs his software consulting business, Bosatsu Consulting, Inc. He is a happy Apple PowerBook user who thinks "Once you GO; Mac, you never GO; back."