What is your attitude towards technology and the ever-changing new technology?
I will know about new technologies, but I will not focus much on these technologies (such as nosql, node. JS, and so on ). These technologies are not yet mature. You only need to keep up with them. More than ten years of technology may be a threshold. Some people say that the technology upgrade is fast and I don't think so at all. Although immature technologies keep emerging, mature technologies, such as UNIX, 40 years, C, 40 years, C ++, 30 years, TCP/IP, and more than 20 years, java has been around for nearly 20 years ......, Therefore, there are not many mature technologies.
My point is: To understand technology, you must understand the history and evolution of computer technology. Because you need to move towards the trajectory of the ball, rather than the position of the ball. To know the trajectory of the ball, you need to know how it ran in history.
The emergence of UNIX in 1970s is a milestone in software development. The C language in that period is also a milestone in language. (At that time) all projects were on UNIX/C, and people around the world were using these two things to write software. Linux is followed by UNIX, while windows is also developed in C/C ++. At this time, the emergence of C ++ will naturally be accepted by everyone, and enterprise-level systems will naturally be migrated to this place. Although C ++ has taken over the baton of C, but its problem is that it does not have an enterprise architecture, and it is too casual. Otherwise, there will be no Java today. C ++ is very similar to C. It is just an extension of C, and has not had a framework of enterprise architecture for many years.
After the invention of Java, IBM has met the requirements of enterprise architecture. The emergence of J2EE has overwhelmed C/C ++. In terms of language evolution, there are also Python/Ruby, which will be available later. net, but unfortunately this is limited to Windows platforms. These are the backbone of C-> C ++-> JAVA on the language level of enterprise-level software, and the backbone of the operating system is Unix-> Linux/windows, the network knowledge you need to know in software development is the backbone of Ethernet-> ip-> TCP/UDP. Another context is the Internet (html/CSS/JS/lamp ...). I am a technically worried person, and the main lines of software development must not be abandoned.
In addition, in terms of architecture, we can see that,
- From the era of a single machine to the C/S architecture (interfaces, business logic, and data SQL are all on the client, and only the database server database is on the S)
- Then to the B/S structure (use a browser to act as the client, but the traditional programming such as ASP/PHP/JSP/perl/cgi also put the interface and business logic, and SQL), but B/S has put these things on the Web server,
- Next to the later middleware, we extracted the business logic layer and put it on a classic three-tier structure called app server.
- Then go to the distributed structure, the business layer is distributed, and the data layer is distributed.
Next to today's cloud architecture-Move all to servers.
We can see that technology changes have been moving things back and forth, with only one browser or one mobile phone at the front end. Through this, you can see the overall technological development trend. Therefore, if you understand these changes and understand the process of these changes, you will have a strong grasp of the technology. In addition, I have heard many people say that some technologies are not applicable, and some technologies are too academic. But for me, I will see that I have a lot of knowledge. The separation of application and academic work is knowledge, and learning is fine.
The development of technology should be rooted in history, not the future. Don't describe how beautiful the future of this technology will be with me (at the infoq archsummit conference, a person from Microsoft put node. JS is like fairy, and then gives a hello World). I admit that you can use some new technologies to implement a lot of fancy things. However, I believe that technology is a prerequisite, and only the prerequisite will be evergreen. Therefore, it is meaningless to say "XX (technology) is about to get angry". When it gets angry, there are more applications, and the scale is large, let's talk about it. Some people say, "It's okay if you don't learn C/C ++." my response is: If you don't even know the technical backbone, what else can you learn? These are the root, context, and ancestor of computer development. How can we not learn such things?
However, in the application environment, there is a high demand for new technologies. What do you think is the focus of computer science in the education field?
Most schools teach knowledge-intensive technologies, but most enterprises in society are labor-intensive. What are labor-intensive enterprises? McDonald's fries are labor-intensive jobs that do not use the knowledge that the school teaches. If one day you don't have French fries, but want to do something bigger and more professional, the school's knowledge will come in handy. Some people say that a language or technology can solve problems. I don't think so. I think you should at least know the evolution and evolution processes. If you want to solve some business and technical difficulties, you need to grasp a certain technology and study it as an art.
As I said in the "Software Development", the first focus is on business functions. In this focus, programming is required. The second focus is on business performance, in this important field, the basic technology is very useful, such as file management in the operating system, process scheduling, memory management, layer-7 network model, and TCP/ucpudp protocol, language usage, compilation, and implementation of class libraries, data structures, algorithms, and so on are critical. The third key is business intelligence. In this field, you will find that many things are very academic, for example, search algorithms, recommendation algorithms, prediction, statistics, machine learning, image recognition, distributed architecture and algorithms, etc. You need to read many academic papers from computer science.
In short, this mainly depends on the background of your career. If you are used as a labor force all day, the technology you use will be relatively simple and practical, however, if you do some knowledge-intensive work, you will need to do research with your heart, and you will find that you need theoretical knowledge. For example, I have previously done cross-country stock allocation and need to know the shortest path algorithm. However, I am working on the inventory Prediction System in Amazon, data mining requires strong mathematical modeling, algorithms, and data mining skills.
I think the real masters all come from knowledge-intensive academic schools. What they are more powerful is that they can apply the basic knowledge of those theories to their current business. However, it is a pity that our education in China is not very good at linking the theoretical knowledge of those schools with practical business problems. For example, some hash tables or binary tree data structures, if our school can join the actual business problems when talking about this knowledge, the results will be very good, such: design a query system for IP addresses and geographic locations, a distributed nosql database, or a retrieval application for geographic locations. When learning the operating system, it would be more interesting if the teacher could take the students into a mobile phone or embedded operating system, or study the source code of UNIX System V or Linux. When learning network knowledge, we can take students to focus on the characteristics of Ethernet and TCP/IP, and optimize them, it would be better if we could be a pub/sub message system on the network or a Web server like nginx. It would be even more interesting to lead students to practice a plotting tool or a game engine while learning graphics.
In short, the gap between our education and reality is too serious, and the teaching and teaching are both technically and practically backward and out of touch, it is a failure to teach students theoretical knowledge through actual business or technical issues.
So, is it more difficult to be a software developer?
I don't think so. It is easier to be a software developer. Because now the Internet is very developed, you can find a lot of shared knowledge-compared with my time. First, you can easily find the knowledge, and there are a lot of communities, and there are more and more people sharing articles. We didn't have one at that time. There is nothing online. You have to figure it out and investigate it yourself. So I think it is easier than that at that time. Second, there are more tools. The current tools are much easier to use than at that time. At that time, we were in VI from one day to the later, and there were no automatic prompts, even versions of library management. There are not only more tools, but also more frameworks and a variety of programming frameworks. At that time, we all wrote data. Write JavaScript, generate a write, not even jquery. Without these auxiliary things that increase your productivity. J2EE didn't exist at that time. The entire (Development Environment) is not mature. When the maximum configuration of a server is 1 GB, A WebSphere account for more than 900 mb. What applications can this run? Therefore, you can only use the most basic system. Therefore, I think the environment and development processes are now more standardized. In the past, when I was doing development, I got started when I didn't understand anything. I was confused, there was no development specification, and no one was responsible for you. If you did well, you could do a good job, if this is not the case, you cannot do it by yourself, including testing and maintenance. I think the current software development is very good. As soon as you go up, you will have good tools, a good knowledge base, a good Community, a good development framework, and good processes and methods, some people even help you with the test, and others tell you how to do it. Happy. Many people still say that this is not good, but it is difficult to develop. It is much easier.
However, I think it is more difficult for software developers than we did at that time. That is, when you are enjoying the benefits, people will become lazy and charming. There are more complaints about many things. Why did we complain at that time? If you have nothing to complain about, you can do it if you have a job. If you have something to learn, you can learn it quickly. Now, I have learned something to pick and pick. I complain that this language is too difficult, that IDE is not good, this framework is too poor, and version management tools are too difficult. It seems that I had nothing to eat before, and I had only one bread to eat. If I had a bread and a steamed bread, I felt very good. Now, we have learned to pick up more delicious food. This is not easy to use, and it is not easy to use.
It's not that the technology is getting harder, the environment is getting worse, and the programmers are getting better. As a result, software development becomes more difficult. In the final analysis, programmers become more delicate.
How do you enjoy the joy of technology under the pressure of progress?
The principle of the Chinese people is to join the WTO and the daily work is to join the WTO. For example, when I was in Shanghai 10 years ago, I had a one-day break every week for the Bank of Communications from to, working 12 hours a day, this kind of work has been going on for a whole year, and there are no holidays, so there is no technical significance in the project. At that time, I went back to my place at pm and wanted to learn some C ++/Java and UNIX/Windows technologies. So I read a book until am. Every day, I learned a lot in the next year, time is not wasted, and my heart is very happy. I felt happy at the time, because I felt happy when I was growing up.
Now, there are more things for me to work, write blogs, and raise children. When I get up at AM, I will go to overseas news, Hacker News, tech church, Reddit, havhavailability and other sites to go to work. Take the children to work at seven o'clock pm. At ten o'clock, when the child goes to bed, I will start to review what happened on this day. This time may also be used to read books. The process of learning (I) does not like to be interrupted, so from to, my family slept, which is a good time for continuous learning. Maybe from, I will take notes or write a blog. I have higher requirements on the quality of cool shell articles, so I can generate an article in about a week. I usually go to bed at about two o'clock every day. No way. I have a technical anxiety. However, I feel that such a life is very fulfilling and steadfast.
In addition, any technology is very interesting. Some human beings form a value orientation, "I only do what, never do what ". Some time ago, an engineer who had just arrived at Amazon was originally engaged in a data mining recommendation system. He refused to leave the company if the original company had been restructured to make him a front-end engineer, he said he didn't want to be a front-end. I think the frontend and backend are all programming, JavaScript is programming, and C ++ is also programming. Programming is not about the language you use to coding, but about the ability to organize programs and design software. As long as you go up to the level of mental work, everything is the same, technology is cool. You may not like that technology, but you still need to understand it, and there is no need to completely discard it. Javascript-as long as it can be implemented by JavaScript, JavaScript will replace it one day in the future.
Back to the question, how can we be happy?
- First, we need to separate China's entry into the WTO from China's new world. Do not let secular things disturb your inner world. Your emotions should not be controlled by others or be contaminated by the secular world, live is real, live is real, you will be happy.
- Second, you must be enthusiastic and enthusiastic, and your mood will be good. Working Overtime can make you happy. Think about the time we spent playing games all night, although very tired, but you are also very happy, because of enthusiasm.
In a word-if you are not interested, everything is an excuse. If you are interested, everything is fun.
Author: Chen Hao Original article link: http://coolshell.cn/articles/8088.html
Attitude towards technology