Hasso-Plattner-Institut
Prof. Dr. h.c. mult. Hasso Plattner
 

Project Flowr

Taking development workflow to the next level

Programming workflow can be disturbed by unnecessary long phases of debugging and web searches for the needed information. To reduce the duration of such phases, Flowr aims at bringing the right information directly to the developer at the right time. This helps increase developer efficiency and also reduces developer stress caused by many cognitive context switches between developing and searching for problem solutions. Flowr analyzes design- and runtime exceptions and searches for solutions and strategies in different data sources. When an exception is thrown, it is isolated from surrounding output and split into parts like type, file, and line. Irrelevant or user-specific information, such as local paths and common words are excluded. The exception text is then scanned for more interesting tokens, such as library versions or technical details. After pre-processing, the exception is fed into several data sources via their respective APIs. Flowr then ranks the results of these queries internally, taking user feedback into account. It then comprises a distraction-free result page, sorted by relevance. This ranked list is shown to the developer who then decides which solution matches the problem best and rates results based on their usefulness. The client can also be used with mobile devices, enabling developers e.g. to work on their laptops and view solutions on their tablets.

Starting Question

Project History

With the question "What Information does a Developer need, if visualization space is not an issue?" and a running multi-monitor setup of up to 5 screens we started user research. We used an open interview style in order not to push the answers into certain directions. After conducting 10 interviews with developers having a wide range of experience, it became apparent that more than 3 "active" screens are too distracting for most interviewees. To determine whether this is just a matter of familiarization with the setup or the setup really leads to stimulus satiation was out of scope of the project. Therefore, we focussed on a setup with up to three monitors and decided to focus on reducing the amount of information a developer has evaluate unneccessarily. After this synthesis, we also narrowed the ideas for potential prototypes. Instead of thinking about how to arrange applications and how to direct the focus of the user, we wanted to focus on keeping the actual coding process uninterrupted.

Integration with learnings from user research

 

During the interviews we learned that a lot of people use two screens for development. One for their code editor and another one for browsing documentation. That is why the window on which the documentation is displayed is preferably opened on the second display. Of course, if there is only one display available the browser has to be on the same screen as the editor. A future task might be to integrate the browser into an Eclipse View that enables both display of the browser on a second screen as well as a clean integration into the Eclipse UI should it be necessary.

Solution

One of the main reasons for breaking programming flow is the occurrence of unknown errors. Developers are forced to query additional sources for information, most often programming references, documentation, knowledge bases and general search engines. We determined that the steps taken to do that are always similar: copy the error message to the desired search engine, remove project specific parts of the error message like absolute paths or variable names, run the search and lastly scanning the result for trusted information and solution sources. Automating these repetitve tasks will minimize the effort to find suitable solutions and thereby hopefully keep the developer in his flow. Flowr takes care of all these steps. It retrieves the error messages from the IDE, prunes and classifies the contained information, queries several online sources, ranks the results and shows the most promising ones in a uniform interface.

Implementation

General

Flowr is written in server-side Javascript and contains plug-ins for Sublime Text 3 and Eclipse. It is based on a modular concept, which allows interchangeability in support of both programming languages and data sources. Currently supported are Python, Java, and Ruby. The server component itself provides a well-documented API and the possibility to add or edit modules to support languages, programming paradigms or specific dialects.

Second Screen

As learned from the interviews, most developers use two screens and differentiate between a main screen for coding and an assistive screen for documentation. Therefore we decided to place the results on the assistive screen or even an additional device like a tablet.

Server API

The backend of flower can be queried via GET parameters and returns the result via JSON. This allows for easy integration of Flowr into other applications. 

Database

Flowr incorporates several data sources, such as StackOverflow, gitHub Issues and results from the graphdatabase of analyzeD. Flowr allows users to upvote the entries they found useful to improve future rankings. Connecting and integrating these pieces of information is likely to yield an additional advantage concering the ranking and further solution details in the future.