[JAVA] The secret to the success of IntelliJ IDEA

This blog post introduces the ** Java ** integrated development environment of ** IntelliJ IDEA ** and discusses the secrets to its success.

This article was originally posted on Alibaba's intranet by Alibaba's senior technical expert Wu Xiang. Currently, it is released with the permission of Alibaba Middleware.

I recently upgraded the Java IDE from Eclipse to IDEA. During the upgrade process, I researched IntelliJ IDEA and did some research on it. Now that I know why IntelliJ IDEA (commercial) is rated higher than Eclipse (free), I would like to share my personal impressions.

After reading this article, you'll know how important Creative Flow and ergonomics are because they can strengthen you. This article focuses on the following:

--IntelliJ IDEA market share and performance --The secret to the success of IntelliJ IDEA --Two factors that distinguish IntelliJ IDEA from other IDE designers --Use the inspiration of IntelliJ IDEA for your work --Make full use of IntelliJ IDEA to strengthen yourself

IntelliJ IDEA market share and track record

Since 2012, IntelliJ IDEA has grown rapidly. In 2016, it gained a 46% share of the developer market. According to a 2018 survey, IntelliJ IDEA's market share has risen to 55.4%, winning the Java IDE world title. Well-known author, software consultant and speaker Martin Fowler praises IntelliJ IDEA on his blog. In addition, IntelliJ IDEA has achieved 98% customer satisfaction, which is a very high number.

image.png

The secret to the success of IntelliJ IDEA

According to global researchers, its success is due to two factors: the characteristics of a successful product and its marketing strategy.

Successful product features

--Intelligent code completion: IDEA is integrated with a proprietary interpreter language for deep static analysis. This is a killer feature that makes coding more intelligent and efficient. --No save button: IDEA provides comprehensive shortcut keys for each feature you want to use. --Outstanding performance: Extremely smooth user experience. --IDEA not only maintains the core plugins, but also provides a great toolkit to consistently provide a great user experience.

Successful marketing strategy

--IDEA beats many competitors by focusing on the product and adhering to "better" design philosophies and principles. ――IDEA has a dedicated marketing team, but its simple and powerful slogan perfectly implements its core marketing logic. Give it a try and if you feel better, try it.

Most of you are already familiar with the features of IDEA. So I'm not going to elaborate on them here. Now let's find out the real reason why IDEA was so successful.

How does IntelliJ IDEA make a difference in the world of IDE design?

In my understanding, the fundamental reason IntelliJ IDEA has become so popular and emerging is that it follows two important design philosophies.

1. Do not release the developer from the flow

All aspects of IntelliJ IDEA are ergonomically designed. IntelliJ IDEA is built on the idea that every minute a developer spends in a flow is a good time, and what drives a developer out of the flow is a bad time. All design and implementation decisions take into account the potential for impeding developer flow and aim to eliminate or minimize it.

Personally, I find this quote very beautiful.

A "creative flow" or simply a "flow" is a state of mind in which you feel evenly synchronized and focused on the task at hand.

When you are in a state of flow, you feel completely absorbed in your activity and you forget time and space. The state of flow is the optimal state of consciousness. According to a McKinsey 10-year study, productivity increases by 500% when in flow.

After learning this design philosophy, we can't help but imagine how great our product would be if we could pull users into and stay in the flow state. Users can perform tasks efficiently, and production efficiency can be greatly improved.

2. Ergonomics

IntelliJ IDEA claims to use ergonomics in the design of IDEA, the "competent and ergonomic IDE for the JVM".

Ergonomics is the discipline of studying ways to increase human comfort and reduce fatigue and discomfort through product design. This concept has become very important in home design and human engineering to increase comfort, increase efficiency and reduce pressure.

Here are two typical examples of ergonomics.

Customer service headset

image.png

Without a customer service headset, customer service personnel would have a harder time.

Zipper carton box image.png

The quality and ergonomic zipper design of the Yiside zipper carton box is the best in the industry.

Ergonomic inspiration in software design

--Provide a consistent user experience. --Break complex tasks into simpler tasks. --Split a long sequence into separate steps. ――Because of the limited human memory, the product needs to be properly reminded so that the user is not completely absorbed in the work and disturbed in order to provide the user with valuable assistance. See the fifth article in the bibliography for more information.

If you want to experience ergonomic design, you can understand the meaning of ergonomics by looking at IDEA's design without shortcut keys and save buttons.

Inspiration for our work

image.png

Our team believes in IDEA's growth engine: great design concept, extraordinary user experience, open community, community and commercial parallel business model. It is available as a community version of the Apache 2 license and a proprietary commercial version. The evolutionary circle of IDEA is to increase the number of users who have a better product experience and to use the contributions from users to attract people to develop better products. What I learned from IDEA is that products must be subject to human-centered design.

--Flow state: It is necessary to list the user's tasks and keep them in the flow state to eliminate the factors that reduce the efficiency of the user. --Ergonomics: When designing a product, you must carefully consider the scenario in which the product will be used. This is an integrated design similar to the Sterling architecture. Coding is only part of software development. All other factors must be considered comprehensively, including requirements and idea submission, requirements analysis, R & D, product publishing, and commercialization analysis. The ultimate goal is to enable users to comfortably complete their tasks with their products. --Intelligent code completion: Use artificial intelligence to improve user efficiency. IntelliJ IDEA's intelligent code completion feature is a classic example to follow.

Conclusion

We would like to integrate the design concepts of Flow State and Ergonomics into the design of technical products, and we look forward to announcing the results in the near future.

Here I would like to introduce two flow state IDE plugins.

1. Hot code replacement tool: JRebel

A hot deployment plugin that helps developers modify Java files in a running project and dynamically reflect changes in the running project. Click to see details.

2. A must-have development and testing tool: Cloud toolkit

It allows developers to develop, test, diagnose, and deploy applications more efficiently. With this plugin, you can easily deploy your local application to any machine. For more information on Cloud Toolkit, see https://www.alibabacloud.com/help/doc-detail/98551.htm ) Please refer to.

References

1、https://www.javaworld.com/article/3114167/development-tools/choosing-your-java-ide.html 2、https://www.youtube.com/watch?v=Eyy9ddRgMX8 3、http://catalyticcolor.com/scientific-research-about-flow/ 4、https://en.wikipedia.org/wiki/Flow_(psychology) 5、http://ergo.human.cornell.edu/ahtutorials/interface.html 6、https://www.alibabacloud.com/help/doc-detail/98551.htm

About the author

Alibaba Cloud Senior Technical Expert Wu Xiang Wu Xiang has been an architect for the Alibaba Cloud Settlement Platform for many years and is also the founder of the tbbpm workflow engine. Wu Xiang was responsible for commercializing cloud products from scratch. In recent years, I have been in charge of middleware development for Alibaba systems such as stores and details.

Recommended Posts

The secret to the success of IntelliJ IDEA
The idea of quicksort
The idea of jQuery
I tried using the profiler of IntelliJ IDEA
I tried the new feature profiler of IntelliJ IDEA 2019.2.
A memorandum because I was addicted to the setting of the Android project of IntelliJ IDEA
The idea of C # (lambda expression, for statement) to chew
Try to imitate the idea of a two-dimensional array with a one-dimensional array
How to determine the number of parallels
How to sort the List of SelectItem
Output of the book "Introduction to Java"
The process of introducing Vuetify to Rails
How to change the value of a variable at a breakpoint in intelliJ
How to find the cause of the Ruby error
I want to output the day of the week
[Rails] Button to return to the top of the page
Add empty data to the top of the list
Customize how to divide the contents of Recyclerview
About the idea of anonymous classes in Java
Migration from Eclipse to IntelliJ (on the way)
Make a margin to the left of the TextField
The story of introducing Ajax communication to ruby
Settings to display Japanese Javadoc in IntelliJ IDEA
Set the time of LocalDateTime to a specific time
The story of raising Spring Boot 1.5 series to 2.1 series
I want to var_dump the contents of the intent
How to get today's day of the week
Change the timezone of the https-portal container to JST
Output of how to use the slice method
[Ruby] Code to display the day of the week
[IntelliJ IDEA] How to format only local changes when saving the source code
The story of adding the latest Node.js to DockerFile
How to display the result of form input
IntelliJ IDEA settings
[Java] How to get the authority of the folder
How to solve the font specification problem dedicated to using IntelliJ IDEA (Win x64)
Java Welcome to the Swamp of 2D Arrays
[Java] How to get the URL of the transition source
How to delete / update the list field of OneToMany
When the hover of Eclipse is hard to see
Extend Highfaces to flip the vertical axis of the graph
Prepare the execution environment of Tomcat in IntelliJ Community
How to write Scala from the perspective of Java
I was addicted to the record of the associated model
I tried to summarize the state transition of docker
Touch Glassfish 6 to commemorate the release of Jakarta EE 9
How to use java non-standard library on IntelliJ IDEA
Convert the array of errors.full_messages to characters and output
[Ruby] How to find the sum of each digit
The story of migrating from Paperclip to Active Storage
05. I tried to stub the source of Spring Boot
Understand the characteristics of Scala in 5 minutes (Introduction to Scala)
I tried to reduce the capacity of Spring Boot
How to install the root certificate of Centos7 (Cybertrust)
[Java] How to get the maximum value of HashMap
I want to know the answer of the rock-paper-scissors app
I want to display the name of the poster of the comment
[Rails] How to change the column name of the table
Mandels to create an image of the Mandelbrot set
[SwiftUI] How to specify the abbreviated position of Text
JavaFX-Specify the location of the CSS file relative to the fxml file