What is the "ultimate technology" required by software engineers?

Source: Internet
Author: User

Recently, I saw a microblog posted by @ programmer xin on Weibo-"many college students have an idea: First do a few years of technology and then do management. Some also said: I am not technically competent. I hope to find a management job, 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 "Technical sensitivity"
-Essential for grass-roots technical managers: This article emphasizes the importance of technical skills to grass-roots technical managers. So I commented on this microblog: "I suggest that you give me a good idea of learning technology, the advanced technology will certainly allow us to more or less integrate management (master the 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?


When writing this article, I always think I have written similar articles before. I checked that two years ago, I did say, "What should I learn from software development?" I wrote a blog post for the question. However, in the past two years, I have gained some new benefits. I may take this opportunity to share my understanding with you.
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. One of the more common mistakes that such people are likely to make is
-Be afraid of falling behind and be 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: 1) 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? 2) 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? 3) is software architect important? Or is it just a virtual job? What skills do software architects need to master if important? 4) CMM (software Maturity Model), which has a great influence in the software industry, advocates measuring the software development capability of the 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? 5) 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? 6) 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? 7 )......
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 ").
Recommended readingTechnical sensitivity-essential for grass-roots technical managers; Software Development: individuals and teams are always the core, what is software design, the true meaning of software design, what is software quality, the ability and characteristics of software architects, and the software platform and framework lifecycle
Damn "code is a document"
This article is from Li Yun's blog and must be kept at: http://blog.csdn.net/hzliyun/article/details/8053957.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.