The "golden age" of programmers, dead and again?

Author丨RHEA MOUTAFIS
"I think the golden age of the past few decades has passed. The days when you can find a job as a programmer are gone. Programming is now more like reading and writing. You must have this Ability.” Silicon Valley technology evangelist Tim O'Reilly commented on the future of the software industry.
The great economist Keynes predicted more than 90 years ago that by the end of the 20th century, humans will work 15 hours a week. But today in 2021, people have not only failed to work 15 hours a week, sometimes they even have to work 15 hours a day.

According to the famous anthropologist David Graeber (David Graeber) "Bullshit Job" theory, most software development work may be considered as "Bullshit Job". (Trash jobs refer to jobs that, although they have emerged, may not always bring too much value to life.)

Regardless of whether you agree with Graber's point of view, he does make a point worth thinking about: As more and more processes are automated, most jobs will become obsolete at some point.

It is estimated that current technology can automate 45% of work. Over time, it is very possible that the work will be fully automated. The technology in the field of software development is updated very quickly, and even when software testing has become a hot topic, automation tools have begun to rise, and this is just one of the many areas that have been automated, which is the so-called "garbage" part (iterative and time-consuming) ).

So, will developers be eliminated by the automation tools they build? If more and more machines can write their own code, what else do humans need to do?

1
Programmer's thinking is more important than logic
. The job of software developers is to build logical links, algorithms, programs, projects, etc. The key is that they build things related to logic. With the rise of artificial intelligence, we have seen a paradigm shift. Developers no longer design logical links. Instead, they train models based on these logical links.

Many developers have moved from building logic to building ideas. In other words, more and more software developers are working in data science.

Anyone who has used an IDE must know how amazingly assisted software development can be. Once you get used to functions such as auto-completion or semantic code search, it is difficult to leave them. This is the first layer of software development automation: when machines know what you want to achieve, they can help you complete the whole process.

The second layer is a closed system. For example, a social app contains many different but connected pages, but it is still closed because it cannot directly communicate with other services. Although the technology for developing such apps is getting easier, it can't be said that this is true automation. So far, if you want to create dynamic pages, use variables, apply security rules, or integrate databases, you still need to write code.

The third layer of applications is the integrated system. The bank's API is such a system because it is built to communicate with other services. But at present, it is almost impossible to automate ATM integration, communications, deep security, and complex troubleshooting issues.

Three application levels of picture automation. Image provided by the author, adapted from Emil Wallner's speech at InfoQ

2
There are many things that humans cannot do. Computers do.
Humans will not think that they will be replaced by robots. This idea is also applicable to software development and other fields. People’s reasons are clear: creativity, empathy, collaboration, or critical thinking are not what computers are good at.

Usually, getting the job done is not the most important thing. Even the most complex project contains many parts that can be automated. Richard S. Sutton, a scientist at DeepMind, said:

Researchers try to use the domain knowledge they have already mastered, but in the long run, the only important thing is the use of computing power.

Of course, the human potential is undoubtedly amazing. For example, for a long time, researchers believed that the machine would never recognize the cat in the photo. But today, a single machine can classify billions of photos at once, and it is more accurate than humans. Although a machine may not be able to admire cute kittens like humans, it is really good at handling undefined states. The ability of the kitten photos to be seen through the eyes of the machine handles undefined states.

In addition to dealing with undefined states, there are two other things that computers do more efficiently than humans: one is scale, and the other is to study new manifolds.

We know that computers can handle tasks on a large scale. For example, if you ask the computer to print("I am a stupid") 200 times, it will do the same without complaining and complete the task in less than a second. And it takes several hours for one person to complete.

Manifold refers to a spatial subset that refers to and shares certain attributes through mathematics. For example, paper is a two-dimensional manifold in a three-dimensional space. If you crumple the paper or fold it into a paper airplane, it will still be a manifold.

It turns out that computers are better at manifold work. Computers can extend to twenty dimensions or have many complicated knots and edges, which is difficult for humans. Since many daily problems (such as human language or computer code) can be expressed as mathematical manifolds, in the future, this function of the computer has great potential to become a truly efficient product.

In the picture we are studying the first and second areas, but the third area is hardly touched. Image provided by the author, adapted from Emil Wallner's speech at InfoQ

3
automated tools threat programmers work?
It seems that developers are already using many automation programs, but we are only in the open air of software automation. So far, automated integrated systems are almost impossible, but other areas are already being automated.

Code review and debugging may soon become a thing of the past. DeepCode is developing a tool that can automatically identify errors. Google’s DeepMind can already recommend better solutions for existing codes, and Facebook’s Aroma can automatically complete small programs.

In addition, the Machine Inferred Code Similarity System (MISIM for short) claims to be able to understand computer code in a way similar to Alexa or Siri (that is, understanding human language). What is exciting is that such a system can help developers automate common and time-consuming tasks, such as pushing code to the cloud or implementing compliance processes.

So far, all of these automations have worked well on small projects, but have been useless on more complex projects. For example, there are still many false positives in error recognition software, and if the goals of the project are changed from before, the auto-completion function will not work properly.

Since MISIM has not been around for a long time, there is still a lack of attention to this kind of automation. But this is just the beginning, and these tools are expected to become more powerful in the future.

Some early applications of these automations also included tracking human activity. Of course, this does not mean that they are spyware. On the contrary, we can do some optimizations in this way, such as arranging employees' working hours or customizing courses for students.

This in itself provides a huge economic opportunity, because students can learn important things faster, and workers can provide services in a more efficient time.

If MISIM is as good as it promises, it can also be used to rewrite legacy code. For example, many banking and government software are developed in COBOL, and few people today understand this language. If these codes are converted into codes in a new language, it is easier to maintain.

All these new applications are exciting. But this is also a double-edged sword: what if you lose to these automation technologies? What if developers are eliminated because of them?

4
R&D personnel should participate in the project as soon as possible.
Although these are two buzzwords in the field of automation, they are very important anyway.

If the software is not tested before the product is released, it may damage the user experience or encounter security issues during the release process. Experience has shown that automated testing will cover situations that testers did not expect.

More and more teams are adopting continuous delivery. When a product is bundled with a large number of features, even if only one update is released, such as once every three months, it usually takes several months to fix the problems that occur in the process. This way of working not only greatly hinders rapid development, but also hurts the user experience.

There are many automated software for testing, as well as version control systems and frameworks for continuous delivery. In most cases, paying for these automation tools seems better than building them yourself. After all, companies hire developers to build new projects, not to perform tedious automation tasks.

Managers can treat automated testing software as an investment to provide support to developers as much as possible and let them do what they are really good at.

Usually, a project is created by a high-level team or a team close to R&D, and then passed down to the development team. The task of the development team is to realize the project.

However, not every project manager is an experienced software engineer, so the development team may be able to implement some parts of the project, while other parts may be costly or almost impossible to implement.

This approach may have been feasible in the past, but as the boring parts of software development are automated, developers have more and more opportunities to do more creative things.

This is an excellent opportunity for developers to have the opportunity to participate in the project planning stage as early as possible. Not only do they know what can and cannot be achieved, but at the same time, with their creativity, they may also bring value to the company in an unimaginable a priori way.

Five years ago, Microsoft CEO Satya Nadella declared that "all businesses will become software businesses." He is right, not only to allow developers to upgrade, the priority of the software should also be raised.

The epidemic has made it clear to us that most of our lives and value creation occur on the Internet. Software is king, and the higher the degree of automation of the software, the more obvious this is.

5
Get rid of the fear of the unknown
Long ago, it is no exaggeration to say that people who like computers are considered unsocial children, nerds, geeks, unflattering creatures, and zombies who lack human feelings and passions. biological. However, as time goes by, more and more people see the other side of developers. Programmers are now regarded as smart people who can develop cool products.

The higher the degree of automation of the software, the greater the capabilities of the developers. In this sense, the fear of developers losing their jobs due to automation is unfounded.

Ten years later, even a few months later, developers may be doing things that we can't imagine now, but this does not mean that the work of developers is gone. On the contrary, the work of the developers has been upgraded.

The real fear that programmers need to overcome is not the possibility of losing their job, but the fear of the unknown.

Developers, you will not be abandoned by the times, nor will you become a coding machine. On the contrary, you will become leaders.
Original link:
https://thenextweb.com/syndication/2020/10/18/why-software-developers-might-be-obsolete-by-2030/

Guess you like

Origin blog.csdn.net/cxyITgc/article/details/114082980