Tasktop CEO Mik Kersten has been awarded JavaOne Rock Star status, which recognizes speakers for outstanding session content and speaking ability. In an interview with Janice J. Heiss, Mik discusses his most recent JavaOne talk, Eclipse Mylyn, cloud computing, advice for Java beginners and more. The interview is reproduced below.
Mik’s 2009 JavaOne session is “Mylyn: Redefining the ‘I’ of the IDE”, which was also delivered previously at QCon. Watch the video and slide show of the QCon talk (Note that the fonts and formatting aren’t properly reproduced).
JavaOne 2009 Interview with Janice J. Heiss
Bio: Mik Kersten is Chief Executive Officer and Co-Founder of Tasktop Technologies. His session focuses on how Mylyn, a task-focused interface tool from Tasktop, can be used by Java developers in their everyday work. Kersten invented the user interface technology underlying Mylyn while working on his Ph.D. at the University of British Columbia in Vancouver, Canada. While completing his Ph.D., supervised by Gail C. Murphy, Kersten and Murphy co-founded Tasktop, which provides productivity software built on the Mylyn technology.
Q: Tell us about your 2009 JavaOne Conference session.
A: The goal is to show developers how they can start on the path to doubling their productivity. We’ve all experienced moments in which we feel like we’re coding at the speed of thought. For some, it only happens when they are distraction free during late-coding sessions, or at release crunch times. With our task-focused interface, we’ve discovered that it’s possible to bring that level of productivity to day-to-day work. Hundreds of thousands of developers have already started working this way with Eclipse Mylyn. But many are still discovering the technology and tools, so during the presentation newcomers will get a high-level overview of how to streamline their Java tool suite in order to make coding faster and easier. Seasoned users will get a preview of the new productivity features in Eclipse Galileo and Mylyn 3.2, to be released on June 24.
Q: Tell us why the notion of a tool that hides more of the program than it shows is not a crazy idea.
A: Consider the size of a typical Java application. Tens of thousands of lines of code are common. Add to that the size of the JDK and other SDKs that you’re building on, and we’re talking about millions of lines of code. When I’m working on Mylyn and Tasktop, I have around eight million lines of code at my fingertips. Now consider the size of the monitor sitting on your desk. If you’re lucky it’s 1280 pixels tall. In a tree view — one of the key facilities we have for navigating program structure — you can see only a few dozen elements on the screen at a time. In other words, you can’t possibly see the whole structure of the system. After just a few navigations of the code, these tree views can end up showing thousands of elements that are not relevant to the task at hand. There’s something wrong with this picture. So a traditional user interface often demands more browsing and searching than coding. But, for any task, any bug you fix or feature you add, you only care about a subset of the system that’s relevant to that task. Instead of showing you the compiler’s view of the entire system structure, the task-focused interface shows you only what’s relevant to the task at hand. All the structural information is still at your fingertips, but in the views and editor you see only what you’re working on.
Q: You say that “tasks are more important than files; focus is more important than features; and an explicit context is the biggest productivity boost since code completion.” Elaborate.
A: Whether you’re fixing user-reported defects, working against a SCRUM backlog, or submitting patches to your favorite open-source project, tasks define what you’re working on. Files and classes are the artifacts that you modify in order to complete the task. Thus, tasks should drive your interaction with files, not vice versa. Ever since the original GUI that Xerox PARC produced, we’ve been obsessed on streamlining interaction with files. As a result, the latest indexing and search technologies are quite adequate. It’s now time to evolve the user interface beyond files in order to handle the vast amount of information that we work with today. Automating the capture of task context has enabled a productivity transformation that we have been able to measure with statistical significance.
Q: What is the biggest down side to a task-focused interface?
A: That we’re not finished with it yet. Don’t get me wrong. If you do a Twitter or blog search for Mylyn you’ll see a stream of people stating how much it’s helping their work and programming activities. But, to date, we’ve taken a very incremental approach to extending the IDE user experience. You can use Mylyn without its focusing facilities for task management alone. You can use each of the focusing facilities selectively. We’ve constrained ourselves to layer the new facilities over the existing UI metaphors in order to enable an incremental adoption. It has been important in order to enable the rapid adoption of Mylyn over the past couple of years. But I’m getting an itch to make more fundamental changes to the user experience, basing more of our interaction with the computer around tasks. A few of these changes are already starting to show up in the Tasktop, the commercial version of Mylyn, which is bringing the task-focused interaction metaphor to the desktop and web applications.
Individual Developers and Mylyn
Q: Are there individual strengths and weaknesses that make developers better or worse at working with Mylyn?
A: There’s one interesting trend that I’ve noticed. In some cases, very experienced and senior developers don’t feel as much need for the focusing facilities of the tool. They’re familiar enough with the code that they work on that they can rely on their mental map of the system in order to navigate, rather than rely on tool support. Thankfully, for the rest of us there’s the tool support. And context sharing makes it easier for developers of all experience levels to collaborate around the code.
Q: What do you hope to accomplish with Tasktop Technologies?
A: We want to bring the benefits of the task-focused workflow to everyone’s workday. Based on our research results and adoption of Mylyn and Tasktop, we are convinced that this way of working can double productivity and bring more control to people’s work life. It’s an audacious goal, given that we’re a growing startup, but we’re doing it alone. We’ve created an innovation network with our partners to bring this shift about, including SpringSource, Atlassian, CollabNet, Rally, and IBM. We’ve made such a big portion of the technology open source that we’ve also had the benefit of hundreds of community patches to help us harden the Mylyn framework and APIs in order to extend them to more and more tools and integrations — three dozen at last count.
Q: What do you see ahead for cloud computing? A: I’m interested in how the split between the client and server is getting redefined. Browser/JS/AJAX clients are here to stay. But for some applications having a rich client that’s connected to the cloud will provide a fundamental advantage. Consider Mylyn, where our goal is to open up your task, typically hosted in a web application, in under 200 milliseconds. We also need to ensure that your work is not interrupted if you go offline or if the network goes down. To achieve that, we have a sophisticated offline store for all the cloud-based data that you access, all while seamlessly integrating browser-based access when you are connected. These hybrid rich client approaches will help bring the desktop user experience to cloud-based applications.
Q: Can you describe the process of writing code?
A: Activate task, focus, repeat.
Q: What do you see as the most important API in Java three years from now?
A: That depends largely on your application domain, but considering the trends in processors and virtualization, I believe that the Concurrency API will be more and more important. As programming models continue to become more asynchronous, the current Concurrency API helps take the pain out of debugging concurrent applications.
Q: Can you give us an example of code that you are most proud of creating and explain why?
A: The InteractionEvent class and related parts of the Mylyn Monitor framework. This is the underpinning of Mylyn’s task-focused interface and isolates the various models that we have created from the user’s interaction with the system, such as the degree-of-interest model that defines the task context. The API and its externalization has not changed since the first Mylyn 0.1 prototype, since it stores interaction data in its most basic form, as a stream of interaction events. As a result, I can load a task context from Mylyn 0.1 into Mylyn 3.2 without requiring any data migration. No other API I’ve written has managed to be that stable, although notably all releases since Mylyn 3.0 have been binary compatible.
Q: The Java class that you couldn’t live without is…?
A: A year ago, I would have probably answered ConcurrentHashMap or CopyOnWriteArrayList. Except that I’ve now used them in the Mylyn codebase so much that we’ve had to reduce their use due to the fact that they can end up allocating a lot of memory when not used diligently.
Q: Favorite Java book?
A: Effective Java by Josh Bloch, by far.
Q: What do you do when you feel stumped?
A: Switch to a lower energy task.
Q: What recent changes to the platform have made your life easier?
A: Generics. And OSGi. I do realize that OSGi may not yet be part of the Java platform, but it has been such a key enabler of all our programming that I can’t imagine using Java without it.
Advice to Beginners
Q: What advice would you give to a programmer new to the Java language?
A: That you’ve made a good choice and that the language will be worth the up-front investment that you need to make to become proficient at it. Statically typed object-oriented languages will continue to play a very important role in how we build large systems. At Tasktop Technologies we use a pretty broad range of programming languages to get the job done. But building our core products and frameworks on Java, leveraging Java-based APIs in the JDK and Eclipse, and having access to the first-rate tooling available for Java, has made it possible for us to work very effectively with a humongous code base.