If we compare the complexity of software (Development) to an elephant, then each of us may be blind and deaf people who are touching the image, build an image in your mind. This metaphor tells us indirectly that "ultimate technology" is not a static content, it covers the methods and beliefs that each person has summarized based on his own experience to successfully respond to difficulties on a high-quality and efficient way of working.
Recently, I saw a microblog posted by instructor xin on Weibo:
"Many college students have an idea: First do technology for a few years and then do management. Some also say: I am not technically competent. I hope to find a management job directly, just like PM. See what capabilities PM needs: (Omitted links )".
When I was reading the first part of this microblog, my first response was: Do students think that technical management does not require a good technical skills? Just before that, I wrote the article "Technical sensitivity-essential for grass-roots technical managers", emphasizing the importance of technical skills to grass-roots technical managers. So I commented on this microblog:
"It is recommended that the teacher explain how to learn the technology well. The advanced technology will certainly allow us to manage the technology more or less (master the common knowledge of software development ). If you really want to manage your skills, we suggest you set your mind to admit your 'ignorance of the technology, and fully respect and delegate your skills to them ".
Later, Mr. Yan Xin asked the students a deeply thought-"There are many technologies, and some technologies will be outdated. What technologies do you refer ?" To some extent, this question can be understood as: What is "ultimate technology?
In the fast-paced IT industry, software engineers must master the "ultimate technology" on their career development path, so that they can gain a competitive advantage even if the "waves of the Yangtze River" in the future. What does mastering "ultimate technology" mean to us? A deep understanding of this issue will help us not be confused or confused when faced with technological learning and technological choices. In my opinion, the ultimate goal of mastering "ultimate technology" is not to be "cool" at work ("wow, this problem cannot be solved by other buddies, but only me !"), I didn't want to catch up with the "technology trend" ("I heard that the go language can replace C/C ++ and Java in the future, so I have to learn it now !"), It is for high-quality and efficient work, because only in this way can we improve our quality of life and reduce waste (waste may include luxurious youth and/or valuable social resources ).
In fact, we always draw lines in the two-dimensional coordinate system of quality and efficiency ". Some people are hard to get out of the predicament of low quality and low efficiency (for example, the person represented by the black curve ), but some people can enter the high quality and efficient Hall (such as the people represented by the red curve ).
Understand the significance of mastering the "ultimate technology". What is the "ultimate technology? Will it be a C/C ++, Java, objective-C or go programming language? When a person proficient in the C/C ++ programming language joins a program using the objective-C programming language, it is clear that he must re-learn the programming language. From this perspective, it seems that programming languages are difficult to have the name of "ultimate technology" because they are not universal to different projects.
I doubt that many people on the Internet are using programming languages as "the ultimate technology. Once you know the existence of the "ultimate technology", you will surely find that the so-called "Advantages and Disadvantages" of programming languages are not a major problem in the industry. If a language directly causes a project failure, the language has long been extinct. In turn, if a language directly causes project success, this is the only language in the world. Therefore, the focus of selecting a programming language is not to examine its advantages and disadvantages, but its applicability. The "Advantages and Disadvantages" of programming languages are not mature. A common mistake for such people is to be afraid of falling behind and keen to learn new programming languages. Don't forget that we can't complete programming language in any way. Even if someone has learned it all, I doubt that what he has learned is just a flaw.
Will the "ultimate technology" Be an operating system platform like Linux or windows? Because they are also not universal, it is impossible to have the "ultimate technology. Similarly,. net, Ace, and QT cannot be "the ultimate technology ".
The true "ultimate technology" must be universal and can be applied to various software projects. For this reason, "ultimate technology" has a certain degree of abstraction. For the software industry, a true grasp of the "ultimate technology" means a deep understanding of the complexity nature of software (development) and the ability to help achieve high-quality and efficient work (consciousness, work habits, etc) capabilities (thinking, business, communication) and methods (processes, tools, reuse ).
Because the "ultimate technology" is too abstract, We have to indirectly perceive it through some problems. For example:
- Is Programming good habits important to the quality of software products? If important, how can we make the team develop good programming habits? Which programming habits are good?
- What is the root of software quality? Is it design or test? What does high-quality software mean to the work and life of engineers?
- Is the software architect important? Or is it just a virtual job? What skills do software architects need to master if important?
- CMM (software Maturity Model), which has a great influence in the software industry, advocates measuring the software development capability of an organization with the maturity of software processes. So why do organizations that pass the highest level of CMM certification still develop software with poor quality? If you are here, can you find the key cause of this bad result?
- Software platforms and frameworks are widely regarded as methods for efficient development of high-quality software. Why is the platform and framework a burden after enterprises use this method? What is the dilemma? What causes such a dilemma? Is there a way to avoid this dilemma?
- The word "best practices" is widely used in the industry. Is there really a best practice? Why are some "best practices" ineffective in the organization?
- ......
These problems are mostly open-ended, and many problems involve both management domains and technical domains. The key to these questions is not whether there is a standard answer (maybe there is no standard answer at all), but whether we have been suffering, thinking, and forming our own ideas. You know, these ideas are the basis for decision-making when we face the choice at work. Without such distress, it is hard to imagine that we have mastered the "ultimate technology ". It is worth mentioning that these questions are raised only based on my own superficial understanding. I believe there are many similar or other questions for readers.
If we compare the complexity of software (Development) to an elephant, then each of us may be blind and deaf people who are touching the image, build an image in your mind. This metaphor tells us indirectly that "ultimate technology" is not a static content, it covers the methods and beliefs that each person has summarized based on his own experience to successfully respond to difficulties on a high-quality and efficient way of working.
The "ultimate technology" must be mastered by mastering non-"ultimate technology" such as programming languages. It also requires us to accumulate through the painstaking efforts of software projects. Do not stay in the halo of programming language experts, Linux kernel experts, and. Net experts until you have mastered the "ultimate technology". Continue to explore. There is a bigger stage ahead of you! In the career journey of mastering the "ultimate technology", we must first realize that, in terms of technical content, the first competition in the workplace is not IQ, but our persistence and good work habits. We understand a lot of the truth in our work, but we cannot stick to the principle of in-depth research, and it is difficult to overcome bad habits to form more good habits. On the road to mastering the "ultimate technology", we will certainly see a lot of unsatisfactory content, as well as many difficulties and setbacks. Even if we are rationally pessimistic, however, we must be optimistic about our actions and aspirations (Note: Antonio
Gramsci's original saying is "rational pessimism and Will optimism ").