Home > Article > Backend Development > Programmers, are you ready for the future?
Perhaps programmers who have been working on the front line are sniffing at this title, especially full-stack engineers. This article is mainly to introduce ideas and predict future technical directions. In addition, there may be some incorrect expressions in the article, please correct me. If you only want to see the future, start in the middle.
After the advent of computers, the industry has developed rapidly, and new technologies are constantly being produced to solve new problems. The upgrading of computer languages is not regarded as a change in technology here. Computer programming languages should be regarded as specifications. In addition to solving new problems, the emergence and popularity of some languages also have historical reasons.
When computers were first created, they solved computing problems. It takes many people months to complete calculations in a matter of days. This generation of engineers is more focused on solving hardware problems. Programmers (or software engineers) translate problems into computer language (in fact, this is what programmers have always done), which is cardboard. Programmers probably did not play a core role in the computer system at that time. Because most of the problems and challenges lie in hardware systems and algorithms.
As the cost of computers decreased, the need for war decreased after the world war, and economic development began vigorously. The cost of hardware solutions began to become a problem, and general-purpose computers began to be produced. General-purpose computers gradually unified hardware standards and put more flexibility into software. The basic model is: Big Mac hardware manufacturers are responsible for providing computing resources, and programmers are responsible for solving problems. At this time, the spring of programmers is here. At the same time, the theory of software development is constantly evolving. With the emergence of various languages, basically everyone recognizes various computer concepts such as instructions, data, basic program flow, and library functions.
Moving forward, as the scope of computer applications becomes wider and wider, there will be more and more challenges. Due to the increase in system complexity, many systems can no longer be completed by just a few or even dozens of programmers. (Today’s operating systems and search engines are the result of decades of hard work by thousands or even tens of thousands of people). A new challenge has also come - software engineering, how to develop and maintain complex systems more efficiently and predictably. Challenges here include: how to put traditional project management experience into software project management; how to get programmers to adopt various standardized programming styles; how to build a suitable team structure, etc. At this time, the importance of programmers has become highlighted, and their status in the industry chain has also become higher. Throughout history, tens of thousands of people used to gather together for manual labor or war. Never before has humankind brought its intelligence together to solve problems on such a large scale.
At the same time, the scale and type of problems solved have also further increased. Among them, human-computer interaction is a popular and challenging direction. In terms of input, in addition to the keyboard derived from the typewriter, various human-computer interaction devices such as the mouse, display, and speaker were also invented. In addition to implementing the underlying driver code, programmers must also implement a convenient and easy-to-use interactive experience at the human-computer interaction level. At this time, in addition to algorithm and design challenges, there are also ergonomic and cultural challenges. For example, it took the Chinese many years to create a widely used Chinese keyboard and popular input method. In the end, English keyboard + Pinyin became the most mainstream input method. This is caused by the characteristics of Chinese characters themselves, and programmers have spent a lot of manpower and material resources to realize these cultural laws. In addition, the Internet is also another hot topic. Programmers connect computers together at the bottom level and rely on powerful network capabilities to enable people to communicate remotely.
In recent years, popular directions such as big data and the Internet of Things have emerged. Programmers implement batch processing, transmission, and storage of big data from the bottom level, solving various problems such as performance and reliability. Since the accuracy and completeness of big data usually does not reach 100%, big data also allows many programmers to start solving uncertain problems.
Programmers from other countries have been solving problems in different fields and types. The role of programmers has begun to differentiate (and many roles have differentiated from programmers), from development and testing to architecture design, experience optimization, front-end development, back-end development, driver development, database development, IT, etc. There are countless . Throughout the not too long history of the programmer profession, these roles are constantly emerging and disappearing. This means that programmers from generation to generation either keep learning or leave the industry (there is nothing wrong with it, many rich people became programmers). Historically, the problems programmers solve, the components they use, and their mindsets are constantly changing. But there are also some things that remain unchanged, such as the basic flow of programs, design patterns, and software engineering. So many programmers are constantly learning new things so that they can solve new problems.
So, what changes are happening now and in the future? I only want to discuss one here: the revolution in human-computer interaction, including revolutions in human-computer interaction methods and human-computer interaction levels. (Speaking humanly!) Well, it’s the new situation brought by Kinect, HoloLens, and Cortana. When these new products are brought together, they will bring about a disruptive revolution in the existing human-computer interaction. One sentence summary: In the future, people should spend less time learning how to use technology, and programmers should spend more time making technology adapt to people, rather than people adapting to technology. For example, a unicycle does not need to learn how to balance on one wheel, and a quadcopter does not need to learn how to turn or stabilize. These are all good examples.
1. Human-computer interaction method. People live in a three-dimensional space, and programmers are constantly simulating three-dimensional space in various input and output methods. First of all, the display screen is a two-dimensional output, so the mouse and various touch methods are also designed to be two-dimensional. The two-dimensionality here is not only that they are plane input and output, but it is really just a physical plane... The monitor is placed wherever it is, the touch needs to be completed on the monitor, and the mouse also needs to be moved on a plane. What about the keyboard? It can be said that its dimensions are not even one-dimensional.
What are the input devices of the future? It includes holographic input and output devices and hands-free input methods.
(1) Holographic input device. Somatosensory and gesture input devices such as Kinect are holographic input devices. Kinect is cool, but it has to be said that it is just the prototype of a holographic input device. This is not only because of its tepid status, but also because it still has a lot of room for improvement. On the one hand, the device itself is not accurate enough and the range of use is not 360 degrees without blind spots; on the other hand, there is no powerful artificial intelligence to support it (artificial intelligence is discussed in the interactive level section, here we only talk about holographic input devices). Future input devices should cover the entire space, accurately detect people's micro-movements and micro-expressions, and even be able to detect people's health status (security and privacy are aspects that need to be considered). From a single technology perspective, there should be no problems that cannot be overcome, but integrating them to create a perfect device still requires huge investment.
(2) Holographic output device. Holographic display technology has been demonstrated in many science fiction movies. Augmented reality devices such as HoloLens and various virtual reality devices are holographic display devices. These devices are still in their infancy, but they are already making a big splash. Before there is a breakthrough in physical technology, this kind of wearable device is the main carrier of holographic technology. In addition, there will also be various taste and touch devices. Together, these cover all human sense organs and can be called holographic output devices.
(3) Voice assistants such as Cortana. The most revolutionary thing about it is that it further frees up your hands (why does it sound so familiar?). This is certainly not comparable to the freedom of hands for humans to walk upright, but its revolutionary nature is also remarkable. Again, this type of voice assistant is still in its infancy, and their main challenges, in addition to speech recognition, are mainly at the level of interaction that will be discussed later. Cortana is not like a mouse and keyboard. On the one hand, you need to learn how to use it, and on the other hand, you need to go to a fixed position or a fixed posture to use it. Although Cortana currently requires you to pick up your phone to use it, it can be further developed through the further development of the Internet of Things.
Here comes the challenge for programmers:
(1) Manufacturing, integrating these devices, or even inventing new devices. These devices need to provide a perfect experience, seamlessly integrate with human movements and senses, and make people feel natural.
(2) At a higher level, how to collect fuzzy and large amounts of input and convert it into definite commands that the computer can process. Compared with traditional input methods, in addition to the space becoming three-dimensional, the amount of information has also increased by orders of magnitude.
(3) How to improve input efficiency and reduce learning costs? What programmers need to consider is how to subversively improve input efficiency. It's not just that the coordinates of the mouse and screen have changed from two-dimensional to three-dimensional. Think about how Iron Man entered it?
(4) How to make the device output the most natural experience? Especially for holographic display equipment, solving problems such as dizziness requires a lot of debugging and research.
(5). The most important thing is: how to use these devices to build a new experience model. For example, where should different types of applications be placed and how should they be presented? What kind of movement operation is the most efficient and natural? These require continuous iteration of products from generation to generation in order to deepen our understanding of new experiences and unleash the capabilities of the new generation of holographic devices.
2. Human-computer interaction level. In terms of current human-computer interaction methods, although many products claim to have a very good experience, people still need to adapt to the equipment. Not only the way of input and output, but also the way of thinking, the current human-computer interaction experience has a lot of room for improvement.
For example, when you want to travel, you should first research where to go, either online, listen to others, or go to a travel agency to book directly. Of course it is easiest to go to a travel agency, but without first-hand experience, the cost will be higher. If you want to do your own research, choose a place, confirm dates, buy air tickets, hotels, and find guides, you will have to use many search engines, various booking websites, and send emails during the process. From the beginning, it will basically take at least several days, and it will also take several hours to use various tools. And what about the rich? It may only take 5 minutes to complete the whole process: tell the assistant: you want to go out to play. The assistant might just ask where you want to go (maybe not a specific place)? How many days to play? When will you go? Then just report the arrangements after they are basically confirmed. The core difference between the two processes is the level of interaction. Ordinary people rely on computers to interact at the task level, while rich people interact at the intention level. This is the impact of different interaction levels on efficiency.
Voice assistants like Cortana not only free your hands, it is also a very natural input method. This allows programmers and scientists to begin to study more about the intentions behind people's language, thereby improving the level of interaction between computers and humans.
Open artificial intelligence components like Project Oxford and Azure Machine Learning have truly brought toys that have been in the laboratory for many years to the world. This is just like the release of Siri back then. Although it is not the best, without it, there would be no rapid launch of Google Now and Cortana. Well, here we go again: Although Project Oxford is only a prototype, the launch of Project Oxford has defined a higher-level interface standard for artificial intelligence components for the industry, lowering the threshold for learning and application of artificial intelligence. Especially the language model. In addition to the opening of artificial intelligence components, it is foreseeable that various data models based on big data by major companies will soon be shared. Based on them, artificial intelligence applications will soon blossom everywhere, and all programmers will be able to create smarter applications, so that everyone can have their own personal assistant. If you can’t wrap your head around the value of a personal assistant, watch the movie “Her” to see how artificial intelligence helps handle phone calls and emails.
On the other hand, under this wave of artificial intelligence craze, hardware companies have also begun to manufacture processors using artificial intelligence algorithms, which also represents the beginning of the popularity of a new generation of programming languages and concepts.
There are greater challenges for programmers in terms of interaction level:
(1). The biggest challenge is to learn and adapt to new programming concepts. Previous programs were all deterministic structured programs like if..else + while. Programmers need to start learning how to write metaprograms. Write a program that can adapt itself to the needs of individual users, rather than writing a program that can adapt to all users. Programmers' code will be directional and coordinated, rather than a stack of details.
(2) Expand your imagination on how to improve the level of human-computer interaction by combining technologies such as holographic interaction and the Internet of Things. Help people do things in 10 steps and 5 steps, 5 steps and 1 step. For example, under what circumstances does raising your hand indicate that you want to drink water, raising your head to indicate that you want to turn on the light, even without a specific action; it truly helps people manage time and coordinate schedules, not just a schedule.
All in all, the future described here could take 10, 20 or more years. Maybe our generation of programmers has withdrawn from the world. The hot topic will no longer be the invention of various languages, the discovery of various engineering management methods and software design models, but how technology can further put people first and promote the development of productivity. The challenge for programmers is not only to learn and explore new input and output methods, but also to learn completely different programming concepts such as artificial intelligence.
Receive LAMP Brothers’ original PHP video tutorial CD/"Essential PHP in Detail" for free. For details, please contact the official website customer service:
http://www.lampbrother.net
|