There is a question on Zhihu:
Share an interesting answer.
I’m a big fan of JetBrains. I’ve been learning programming languages for about 10 years and using JetBrains for about 7 years.
In the process of learning programming and using the JetBrains family bucket for so many years, I believe that the success of JetBrains is not only due to technical reasons, but also product innovations, and these innovations are inseparable from the practical experience of large-scale software engineering, because only experience Only through the development and continuous iteration process of large-scale software projects can we know what functions are needed in an excellent IDE and which functions can help programmers to open software efficiently.
The earliest “killer” function of JetBrains’ IDEA series is the refactor (rename) reconstruction function. For example, in IDEA you can use Shift+F6 to quickly rename a variable, and this renaming operation will be applied to all code that references the variable. This requires IDEA to do parser for all the code in the entire project and track the reference relationship between them. This kind of function is inseparable from powerful code static analysis technology.
Therefore, to do professional software, first of all, it needs technical support. Secondly, product design considerations IDEA’s refactoring function is extremely powerful, including various powerful extracts, path moves, and so on.
IDEA is far less powerful. Its functions include but are not limited to
- Graphical debugging
- Graphical git operation, one-click rebase
- Code structure sorting, that is, the structure functional area in the lower left corner (I haven’t used source insight since I used CLion)
- Code collection, also friendly to trace code
- Close integration with major mainstream frameworks and programming languages (for example, WebStorm has extremely strong support for npm, can analyze scripts and .nvm, automatically select the appropriate node.js version to start scripts, and can automatically analyze node_modules to determine whether the current dependencies match the package. json etc)
- The newly launched code with me function, in the context of remote work during the epidemic, this function can facilitate hands-on debugging between colleagues without physical contact
- generator (for example, the getter setter method in JavaBean can be generated with one click), and live template and file template can also be configured. For example, when I write React.js, I often have a lot of repetitive boilerplate code, such as const {children} = this. props, I will configure this as cctp, I just need to press cctp and then press tab to quickly enter more functions, not to mention
Thinking of the ideas of the above functions, the product managers of JetBrains need to have a very long-term first-line coding experience, and the quality requirements of these software engineering projects are very high (if it is a Shishan project, there is no need to use the reconstruction function. ), especially after building a project from 0 and then encountering a situation that needs to be refactored.
And our country can’t make this kind of software, the main reasons are as follows:
- There are not as many people with very long coding experience abroad. Most of them learned coding after the Internet dividend began in 2010, and even many of them are biochemical loop material transcoding. The fewer people there are, the less chance of these talented product managers being born
- Most people still have a “hard-working and conservative” concept, that is, they believe that using tools to improve productivity is a form of laziness and opportunism, and advocating the use of software with high thresholds and steep learning curves such as vim is a kind of “strong technical ability”, The habit of “learning through hardships”.
- Excellent product managers need cross-border experience. For example, product managers at JetBrains are definitely not as simple as drawing a prototype and writing a PRD. These all require in-depth knowledge of the front-line software industry, mastering a large number of engineer contacts, and communicating with a lot of software engineers. Find out what they really need. From their point of view, I think about what kind of functions a good IDE should bring to me. The communication content of some domestic PM forums is still mainly based on Internet APP products. The PMs of such products still stay in school to learn UI design, and come out to follow the online course of “everyone is a product manager”, learn to do PPT, draw prototypes, and write. level of PRD. The upper limit of PM is too low, and the lack of experience and contacts in vertical industries has led to the lack of engineer culture in the inability to make top-level industrial software.
- The so-called engineer culture means that product progress is driven by engineers, and engineers use science and technology to improve the user experience, reliability, and safety of products. for various environmental reasons. Those who really have an “engineer mentality” are still relatively few in the crowd. It is difficult to produce excellent professional software if they have a “utilitarian heart” to read and brush GPA and work to brush KPI. The root of the lack of engineer culture is related to the economic foundation and the balance of distribution. When the economic foundation is too poor, it will be easier for everyone to choose conservative, and conservative will not easily lead to thinking about innovation. If the distribution balance is too poor, “engineers” are more inclined to use “skills” to involute a few resources, rather than use “science and technology” to create more resources and value.
- Milk powder money, maternity leave, housing prices, fair education, and without a good environment, top engineers and professional product managers cannot be retained. There is no need to mention things that are rotten on Zhihu. . .
To do industrial software, it is best for engineers in this field to directly change careers to be product managers of industrial software, because only people in their own industry know their own people best. Our current situation is that even companies with an engineer’s mind and an engineer’s culture are very rare, let alone expect real engineers to switch to PM after having rich experience, and then design excellent industrial software to help us accelerate production efficiency and liberate productivity.
Finally, let’s talk about JetBrains’ efforts in customer acquisition and retention. Many industrial software have help documentation.
But you can ask yourself, have you really seen IDEs for professional software? Have you ever opened the help menu of professional software?
Take the goland of JetBrains as an example, when you first install the software, a boot screen will be displayed when you start the software for the first time, which will use concise documents and sample codes to help you quickly master the various features of this IDE.
As shown in the figure, this is the learn function of goland, and the figure at this moment shows how to use shortcut keys to quickly delete lines of code or line breaks, and automatically convert the code with too long variable parameters into a more readable code multiline format
Whether it is the sample code or the copy of the help document, they are designed to be concise and concise, and even in English, English words that are common in the computer field are selected, which will not cause too many obstacles for non-native English speakers.
Only if users can learn to use your software quickly, then you can retain customers for a long time. And this, in most of the world-renowned top professional software I have seen (including Adobe family bucket in the field of design, MATLAB in the field of electronic engineering, Cadance ICC, Altium Designer, TI Texas Instruments LabView and Multisim, Intel Quartus, Xilinx Vivado) are very poor, basically not like JetBrains to provide concise explanations and just the right sample code to get you started quickly.
A professional software is difficult to learn, the learning threshold is extremely high, and it is difficult to retain customers. And JetBrains is absolutely excellent in the detailed design of the quick start and help documents.
There are also people in the comment area discussing whether vim adapts to keyboard operations? Or does vim have a scenario where you can edit code directly on ssh.
The first is keyboard adaptation. If you have used JetBrains in depth, you will actually find that IDEA’s pure keyboard operation efficiency is not lower than vim. All the functions you want have default shortcut keys. If not, you can configure it yourself, and this configuration It’s cloud-synced, and I sync across all platforms on my company computer, my surface tablet, and my game console at home. And auto-completion can write custom live templates according to your own coding field habits.
Finally, ctrl+shift+a and alt+enter can perform most of the common operations of writing code almost anywhere. I don’t think vim is much more efficient than JetBrains in this regard.
The other is the scenario where ssh directly edits the code.
I think this scenario is very dangerous and irregular. The projects that are truly in line with engineering are all edited locally using the IDE. The static analysis function of the IDE can help you check out the possible mistakes. After confirming that there is no problem, submit it with the version control tool. During the submission process, IDEA will run code formatting and lint rule checking. , import optimization, clean up unused code, and automatically do GPG git signature for you.
If it is a project of a company or an open source organization, it will automatically update the copyright for you, and then do TODO detection, code analysis, git hook, and finally push the code, and the CI/CD platform will start running unit tests, integration tests, etc., after all passed It is automatically released to the production environment by the CI platform via SSH.
If your code often needs to be directly connected to SSH and modified directly with vim, without any engineering tools preprocessing and code review, then I can only say that your project is very non-standard, and it is of course experience to develop such non-standard projects. Without the benefits that an IDE can bring.
The text and pictures in this article are from the programming technology universe
This article is reprinted from https://www.techug.com/post/why-can-t-china-produce-products-like-jetbrains/
This site is for inclusion only, and the copyright belongs to the original author.