标签:
在Medium热榜上看到这篇文章,作者的背景在网上查不到太多信息,但观点很有意思。
文章大概意思是,19世纪电报的报务员和现在软件工程师非常像,行业高速发展,需要一定技术(当时电报转码啥的还是挺复杂的)的报务员薪水很高、在大城市工作机会到处都是、可以自由迁移。甚至伟大的发明家爱迪生同学在偷了特斯拉的想法建立电力帝国(后来发展为现在还很牛的通用电气)之前,也就是一个报务员。但是一旦电话发明,报务员们的好日子就完蛋了。1920年和1890年相比,报务员的工作岗位已经大大减少。
100年后,软件工程师的情形非常相似。一方面,有很多工具让人们不用编程也能开发。另一方面,开发软件的软件也逐渐成熟,至少能减少编程需求。
文中其实漏了另外几个因素:
一是软件需求总是有限的,随着各行各业所必需的软件都逐渐开发出来,长远看剩下的工作的确是渐渐减少的。想想看,搜索、电子商务、打车等等领域除了地位稳固的巨头之后,其实大部分工作都是在维护而已。
二是开源软件使得代码复用程度大大提高了。
三是人工智能的发展,开发软件的软件还是要靠这东西解决。想一下GitHub上的代码多到一定程度,搞个智能系统对代码和规则一通猛学,假以时日,难保不整出一个永不休息、极其高效的绝世编程高手啊(这个东东我觉得可以命名为Knuth)。
所有事物都有自己的生老病死,连宇宙都不例外,遑论其他,所以软件工程师过时论是不可驳斥的真理。不过,2060年肯定是太乐观了,也许2160年靠谱一点?
有两个问题是值得大家都思考一下的,如果干不成程序员,你觉得自己能去干什么?干程序员时候积累的什么能力还是有用?
Comment:“很有意思的观点,三十里河东,三十里河西。”
原文:
It’s a good time to be a software engineer. The industry is booming, demand for coders continues to grow, and salaries are at an all time high.
But how long will the party last?
Telegraph Operators of the 21st century
There are striking parallels between software engineers today and telegraph operators of the 19th century. By today’s standard, telegraph operators were technical lightweights: the bulk of the job consisted of receiving and transmitting messages sent over telegraph wires in Morse code, a monotonous albeit attention-heavy task. In contrast, contemporary software engineering generally involves a broad skill set that requires a deep understanding of complex systems and the ability to quickly master and re-master an accelerating parade of new software development frameworks.
However, during the mid 19th century, telegraph operators were well paid, well regarded, and considered quite technical relative to other mainstream professions. They had freedom to travel, and highly skilled operators flocked to large cities for the best jobs. As telegraphy took off and more and more cables were laid, the demand for telegraph operators skyrocketed. Standards for faster communication were developed, and operators had to keep up, memorizing increasingly efficient and complex systems of shorthand and communication protocols. Thomas Edison was a telegraph operator early in his career before settling into his true calling of stealing ideas from Nikola Tesla and empire-building. And unsurprisingly, as with contemporary software engineering, there were huge pay discrepancies between men and women.
Yet by the 20th century, the telephone had been invented, a technology that had the distinct advantage of not requiring an operator tasked with translation from code to natural language. By the 1920s, there were only a small fraction of the telegraph operators left compared to the 1890s.
The Downfall of Software Engineering
Fast forward a hundred years, and we seem to be in a similar situation with software engineers. While this profession is undeniably one of broader skill and intellectual ability than operating a telegraph, software engineers of today occupy a similar functional role to the telegraph operators of Edison’s era. The contemporary explosion of software parallels the 19th century rise of early networked communications. And just as the demand for telegraph operators scaled more or less linearly with the rise of the telegram, the demand for software engineers is currently scaling roughly linearly with the rise of software. Back then, every telegram had to be translated from Morse code to natural language by a human being. Today, every line of source code (sort of) has to be written by a human being.
To be sure, software is becoming more efficient, in that sophisticated frameworks have been developed so that fewer lines of source code have to be written, and advanced programming languages, compilers and interpreters have made the life of the programmer much easier than it had been in the 1980s or 1990s. But fundamentally, the process of writing software is still largely a human activity today.
That will change.
The current version of the profession is under pressure along two fronts. First, there are website-building tools like Weebly that allow anyone to build a website without writing software. Moreover, basic high level software engineering is getting more and more accessible, so that the delta between expressing clear ideas and being able to program is vanishing.
Second, on another front, software is getting better at facilitating the creation of software. While we are still a ways away from a fully automated piece of software that can write other pieces of software given some minimal, half-baked specification (i.e. do the job of a human software engineer), it is part way there. And more importantly, we do not need full artificial intelligence capabilities in order for role of the software engineer to shrink; instead, our software itself will just play a bigger and bigger role relative to humans in the creation of software. As an analogy, imagine semi-automated computer-assisted driving as a first step before fully self-driving cars.
While there will still be specialized software engineers and plenty of computer science-minded humans in the future, it seems inevitable given both of the above pressures that Software Engineering as a category will fade into historical obscurity as we approach the 22nd century.
But if you’re a software engineer (as I am), don’t despair?—?the critical thinking and technical skills will surely come in useful for future needs that arise. And if they don’t, well, keep some of that money saved up.
标签:
原文地址:http://www.cnblogs.com/logic1and0/p/4734588.html