Debugger Today, Production Tomorrow

Want to predict the future of software development? Look for features that are currently used only by developers during development/debugging, and project them into a production world.

Consider AspectJ, for example. For years, developers have been pointcutting their own code in the debugger. In fact, gdb's scripting and breakpointing could definitely be used to implement a primitve Aspect environment

Or, take a more forward-looking example. Today developers are writing unit tests. Jim Weirich has blogged about the new RSpec project, which looks almost like unit tests, but recast as executable specifications:

  class EmptyMovieList < Spec::Context
    def setup
      @list =
    def should_have_size_of_0
      @list.size.should_equal 0

Of course it won't end there. RSpec (or something like it) will morph into a DSL for specifications. Once in this form, it will be reasonable to, for example, turn precondition checking on or off for specific portions of your code in production. What we now thing of as "development time" unit tests will be fully integrated into production software.

Is this just semantics? Yes, and I agree with Jim. Leave out the "just".