JetBrains: Productivity Guide for IntelliJ IDEs
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.
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:
- What is your favorite IDE? Have you ever used IntelliJ IDEs?
- How do you usually find out new features and updates for your IDE?
- How do you estimate your knowledge, immersion, or experience of using IDE?
- How do you rate your performance or productivity?
- 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.
Hypotheses and targets
After all, I could formulate several hypotheses that would help me to find the best solution:
- The statistics of IDE features utilization does improve the efficiency of working with it;
- The best way to introduce new features is by practicing them in the interface performing your work;
- 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!
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.
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.
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.
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.
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.
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.