JetBrains: Productivity Guide for IntelliJ IDEs

Egor Permyakov
7 min readJan 27, 2021

The context

An IDE, or Integrated Development Environment, enables programmers to consolidate the different aspects of writing a computer program.

IDEs increase programmer productivity by combining common activities of writing software into a single application: editing source code, building executables, and debugging.

My assignment

To redesign an experience that will help users to explore and learn features in IntelliJ IDEs.

The task was given as a part of the recruiting process for the position of a senior product designer at JetBrains.

Step 1. Problem formulation

For millions of programmers today, the IDE is an essential daily working tool with a huge number of functions and features. The demand for such products has created a highly competitive market where every player is looking for ways to attract and retain new users. In this commercial war, IDEs are becoming more sophisticated: new features, modules, and plugins are released every day. Fortunately, these updates only encourage developers to be more efficient and productive. Users can set, customize and adapt the IDE to their needs and requirements.

Obviously, such tough competition requires constant announcing about new features and updates released in all possible ways. Communication with users increases engagement and keeps them consuming the product for a long time. This time is converted into the value for users. From this article, I could emphasize the basic principles and ways of communicating with users that helped me dive into the topic.

“Tell the right users about features when and where it matters, in an engaging way”

— Jack Jenkins, Product Education Manager at Intercom

Currently, all IntelliJ IDEs have a large number of communication channels: offline events, blogs, news feeds, training modes, tips, and dialogs in the interface. According to my task, I only needed to focus on the Productivity Guide. Currently, it is a list of some application features with usage statistics. The interaction scenario looks like this: the user sees what features he has never used before, reads about them, and masters them to become more productive. Due to my task, the problem is that very few people find out the dialog, and even fewer claim it helps them.

Current view of the Productivity Guide

Step 2. Research

To get inside the problem of the Productivity Guide I interviewed 5 fellow programmers about their experience, and it was enough to identify recurring things.

Interview script:

  1. What is your favorite IDE? Have you ever used IntelliJ IDEs?
  2. How do you usually find out new features and updates for your IDE?
  3. How do you estimate your knowledge, immersion, or experience of using IDE?
  4. How do you rate your performance or productivity?
  5. Do you know anything about the Productivity Guide in IntelliJ IDEs? How does the statistics help you?

Interview results:

Luckily, all my respondents had experience in IntelliJ IDEs. Developers listed some news channels about updates and features: websites, blogs, podcasts, and social network groups. Here, they mentioned that these channels were not the best way to learn new features because it was likely to be easily forgotten if not immediately adjusted to use in your work process.

Surprisingly, everyone considered themselves to be advanced users. But all engineers said that they had never tried to rate their productivity of working with IDE since it depended on the specific task. At the same time, 4 out of 5 respondents admitted that they would not mind learning new features directly in the IDE interface and get more efficient. In fact, only one developer had seen the Productivity Guide previously. After introducing this dialog to the others I got a common opinion that it was not useful statistics for them.

Competitive analysis:

I checked Eclipse and Visual Studio Code but did not discover something interesting or similar to the Productivity Guide.

Visual Studio Code

Hypotheses and targets

After all, I could formulate several hypotheses that would help me to find the best solution:

  1. The statistics of IDE features utilization does improve the efficiency of working with it;
  2. The best way to introduce new features is by practicing them in the interface performing your work;
  3. Programmers want to continue improving their level of knowledge and productivity of using the IDE but don’t want to spend much time and effort.

Therefore, my task would have several targets:

  • Design a new experience of communication about features and updates;
  • Motivate users to learn new features and be more productive;
  • Don’t break habitual UX patterns or be annoying.

Step 3. Solution

Brainstorming

During my brainstorming session, I paid attention to the services I used every day. It turned out that most of them used the same UX technique — gamification. I counted 6 absolutely different products with this mechanism: Duolingo, Steam, Yandex.Market, Oral-B app, Fitness and Health app from Apple.

“Gamification — the process of game-thinking and game mechanics to engage users and solve problems.”

— Gamification by Design Implementing Game Mechanics in Web and Mobile Apps, 2011

Only Duolingo used several gamification techniques to motivate people to improve their linguistic skills. As well as badges and levels, they also used achievements, such as streaks for a number of days using the application, points accrued and a number of words learned. All of these were positive reinforcements to maintain engagement and motivation. While I might just be looking to refresh my English skills, their record streak was 2 000 days, over 5 ½ years of continuous learning!

Duolingo

According to motivational psychology, most people need to set specific and achievable goals rather than more generic ones. The more goals we achieve, the more dopamine it releases, and the easier it is to stay motivated. Gamification tries to tap into this by offering us rewards for the completion of small goals.

New user flow

Now Tip of the day, IDE Features Trainer and Productivity guide do not interact with each other, although they aim at increasing the productivity of IDE users. I tried to fix it and constructed a new user flow. It presents the order in which all instruments can go and how they can be related to each other.

New user flow

Prototyping

Personal achievements are powerful, they pull on a user’s intrinsic motivation to do better and keep performing. Personalizing targets and allowing users to revise them periodically, will help push them on even more. It seems that this gamification method would work for my solution.

By applying all my knowledge and ideas, I designed a more intelligent communication with users. The current Productivity Guide is not context-sensitive. In my decision, IDE would show a tip based on specific user actions. Such tips would bring real help and would not interfere or distract programmers from their work. For example, after or during manual refactoring, IDE shows a pop-up on how to do it faster and convenient way. Experienced programmers might be involved to try all possible features in the Productivity guide. Simultaneously, beginners could try IDE Features Trainer.

Tip suggests trying a new way of refactoring

Willing to try all features, users get into the New Productivity Guide. Here, users see a list of charming cards with achievements. To get the reward, users need to complete all the features of one group. It does not matter where and in what order the user performs the features. If the feature is part of the IDE Feature Training or Tip of the Day, it would also be considered as completed.

New Productivity Guide

If the user has tried all features of one group, the IDE congratulates him and invites him to see his reward. Thus, this tip would once again push the user to open the New Productivity Guide.

Tip with an achievement.

Everyone likes to share their success and to be thought of as an expert. Cards can motivate as status symbols or trophies which are a pretty convenient way to advertise user's achievements and accomplishments.

Achievement for all Database features

Step 4. Testing

For testing, I presented mockups for my friends. All respondents noted that it would be very convenient to get a tip with some feature directly in the context of a specific task. They confirmed that this would help them use the IDE more efficiently and not disrupt their workflow. Also, I wondered what they thought about achievements and sharing cards with others. All developers admitted that it would be an easy and fun way to learn new features. They were very interested in the sharing function. Furthermore, I asked people to describe the purpose of all the controls on pop-ups and dialog windows. All 5 respondents gave me correct definitions. Users did not have any difficulties with the new controls.

Conclusion

I performed the task by redesigning the Productive guide I fully achieved my goals. I came up with a non-irritating way of notification about features in the context of work. I managed to motivate developers to learn new features using the gamification tactics. I am sure that this approach can add emotions and feelings to the interface making it more friendly and personal. Unequivocally, my solution will tie users to the product for a long time.

Achievement collection

--

--