Recently, I saw at the Micro-blog @ Programmer Shanxin Teacher issued a micro-blog-"A lot of college students have an idea: first to do a few years of technology, then do management; Some students said: I am not technical, I hope to directly find a management work, like PM. Please see PM what kind of ability: (link omitted). In reading the previous part of the microblogging, my first reaction is: Do students think that the technical management does not need a good technical skills? Just before this, I have written "technical sensitivity-basic technology managers must be necessary," the article stressed the importance of technical skills for grass-roots technical managers. So, I commented on the Micro blog: "Suggested Zou teacher advised them to learn a good science and technology, technical sophistication will let us more or less through management (knowledge of software development)." For those who really want to do management, they are advised to put their minds in the future-to acknowledge their ' ignorance ' of technology and to fully respect the technical talents and to delegate them. After that, Shanxin teacher to help the students to ask a thoughtful question-"There are many technologies, some technology will be outdated, you specifically refer to what technology?" "In a way, this question can be understood as asking:" What is the ultimate technology?
In writing this article, I always feel that I have written a similar article before. Check it out, two years ago indeed, "software development, in the end should learn what?" Wrote a blog post for the inscription. However, in the past two years I have a new harvest, perhaps to take this opportunity to comb my own understanding, so as to share with you.
In the fast-paced IT industry, software engineers must want to master the "ultimate technology" in their career path, so that even "Changjiang" can still gain a competitive advantage in the future. What does mastering "ultimate technology" mean for us? A deep understanding of this problem will help us in the face of technological learning and technological choice not to be confused or parrot. I think that the ultimate goal of mastering "ultimate technology" is not to be able to "play cool" in the work ("Wow, the other buddies are uncertain, only I can!") And not to catch the "technology trend" ("I heard that the go language can replace C + + and Java, I have to hurry to learn!") "), but to work with high quality and efficiency, because only in this way can we improve our quality of life and reduce waste (which may include luxurious youth and/or valuable social resources).
In fact, we are "drawing lines" in the two-dimensional coordinate system of work quality and efficiency in our life. Some people have a hard life getting out of low quality and inefficient situations (such as those represented by the black curve below), while others are able to enter high and efficient halls (such as those represented by the red curve in the image below).
Understand the meaning of mastering the ultimate technology, what is the ultimate technology? Will it be a C + +, Java, objective-c, or go programming language? When a person who is proficient in a C + + programming language is added to a project that is objective-c as a programming language, it is clear that he must learn the programming language again. It seems that the programming language is difficult to possess the name of "ultimate technology" because it does not have universality for different projects. For those of you who have a lot of fights on the Internet for programming languages, I really doubt they think of programming languages as "the ultimate technology". Once you know the "ultimate technology" exists, you will certainly find that the so-called programming language "pros and cons" and this is not a big problem in the industry. If a language leads directly to the failure of the project, the language is extinct; Conversely, if a language leads directly to the success of the project, it is estimated that the world will have only one language. Therefore, the choice of programming language is not to focus on its "pros and cons", but its applicability. Too much care about the "pros and cons" of programming languages is an immature performance. One of the problems that such people are apt to make is to be afraid of falling behind and eager to learn new programming languages. Please do not forget, the programming language we do not learn in any way, even if the real people learn all, I also suspect that he has learned only fur.
Will "ultimate technology" be a platform for operating systems such as Linux or Windows? Because they are also not universal, there can be no "ultimate technology" reality. In the same way,. Net, ACE, QT and so on cannot be "the ultimate technology".
The true "ultimate technology" must be universal, allowing us to use it for a variety of different software projects. Because of this, "ultimate technology" has a certain degree of abstraction. For the software industry, the real mastery of "ultimate technology" means a deep understanding of the complexity of software (development) and the behavior (awareness, work habits, etc.) that can help achieve high quality and efficient work, capacity (thinking, business, communication) and methods (processes, tools, reuse).
Because the "ultimate technology" is too abstract, we have to have some problems to perceive indirectly. Like what:
1 Is it important to have good programming habits for the quality of software products? If it's important, how do you get your team into good programming habits? What programming habits are good?
2 What is the basic quality of software? Is it a design, or a test? What does high quality software mean for the work and life of an engineer?
3 is the software architect important? Or is it just a sympathizers? If important, what skills does a software architect need to master?
4 in the software industry has a large impact of the CMM (software Maturity Model), which advocates the maturity of the software process to measure the organization's software development capabilities. So why does the organization with the highest level of CMM certification still develop a quality mess of software? If you are in it, can you find the key factors that lead to this bad result?
5 software platform and framework is widely considered to be a highly efficient way to develop high quality software, but why the enterprise use this method, platform and framework finally become a burden? What is the performance of the dilemma? What factors have caused this dilemma? Is there a way to avoid getting into this predicament?
6 The word "best practice" is used extensively in the industry. Is there really a best practice? Why do some "best practices" not work in the organization?
7) ...
Most of these problems are open, and many problems involve both administrative domain and technical domain. The key to these problems is not whether there is a standard answer (perhaps there is no standard answer), but whether we have suffered, thought, and formed our own ideas. You know, these ideas are the basis for making decisions when we face choices at work. It is hard to imagine that we really have the "ultimate technology" if we have never had this kind of distress. It is worth mentioning that these questions are simply based on my own superficial knowledge, and I believe that readers have many similar or other problems.
If the complexity of software (development) is likened to an elephant, then each one of us may be the blind and deaf person who is being felt, and we have a poor life to build "elephants" in our minds through the "touch" way. This metaphor indirectly tells us that "ultimate technology" is not a fixed content, which is more than a person according to their own experience summed up in the high quality and efficient work on the road to successfully deal with the plight of the methods and beliefs.
"Ultimate Technology" must be mastered by mastering such as programming language, such as non-"ultimate technology" and ultimately mastered, but also through the pain of the software project to be honed to precipitate. Do not stay in programming language experts, Linux kernel specialists, until you have mastered the ultimate technology. NET experts such a halo, continue to explore, the front still has a bigger stage waiting for you! In mastering the "ultimate technology" of the career journey, we must first realize that: in terms of technical content, the workplace is not the first competition IQ, but our insistence and good work habits. Many of the reasons in the work we understand, but is not adhere to the deep, it is difficult to persist in overcoming bad habits to form more good habits. On the road to mastering the "ultimate Technology", we will certainly see a lot of unsatisfactory content, will also face a lot of difficulties and setbacks, even if the rational pessimistic, but we must remain optimistic in action and will (note: Antonio Gramsci's words are "intellectually pessimistic, optimistic on the will").