为打破外界对程序员简单平面的偏见,一系列程序员访谈正在进行中。
第一个接受访谈的程序员 Gemini,在 SegmentFault 主要负责 Android 移动端开发,然而作为移动端工程师,他最喜欢的语言却是 JavaScript。喜欢一语惊人的他,在访谈中贡献了这篇文章的标题——“程序员的使命是让程序员失业”。
以下是访谈内容。
Part I. 程序员应该致力于“让所有人失业”
我们生活中的很多东西,都正在被计算机取代。对于年轻人来说,网上课程,电子邮件都不是新鲜事。然而如果你从 2016 年往回看历史,会发现计算机对人类社会已经造成了巨大的改变。计算机对整个社会的就业结构产生深远的影响,导致很多工作的需求直线下降,比如电话销售员。我的计算机教授曾经说过:当你在考虑就业方向时,最好考虑一个因素,你的工作将来是否有可能被自动化程序代替,计算机对我们的生活产生的影响可能高出你的预料。仅仅几个搜索引擎巨头主导了你大部分情况下获取的信息内容,从而影响你的思维。
“这是计算机的时代,是程序员的时代”,当被问到对计算机和互联网的展望时,Gemini 给了肯定地评价,“计算机和互联网行业的投资热绝不是泡沫”。我们现在可能处于与工业革命带来的影响力相匹配的计算机革命时代当中。然而对程序员的未来,他说:“我认为程序员的使命是写出一个可以自动写出所有程序的程序,从而导致所有程序员失业。曾经很多程序员被雇佣来写程序让 Photoshop 处理过的图片能在网页中显示,然而有一个程序员写出了能自动转换成 html 格式的脚本,导致这个工作不再有人工需求,部分程序员被转岗。”
“程序员不仅应致力于让程序员失业,也应致力于让所有人失业。”
Gemini 补充道,“我认为程序员不只限于写代码来实施项目,真正使命在于使用机器来代替人力,利用人工智能促进社会生产力的发展。互联网企业改变了一个又一个传统企业,倒逼他们进行产业改革或者制度改革。电子商务行业彻底颠覆了传统的零售业,Uber 等 O2O 打车行业引发社会对出行行业的思考,这些改变与颠覆让我们生活充满想像力,让人们充满动力”,Gemini 谈到了程序员自身的命运,“程序员作为一个新兴行业,在不断探索过程中,因为自己不断创新的一个本能,必将颠覆自己,‘失业’只是目光短浅情况下看到的结果,人类社会的进步一直都伴随着腥风血雨。”至于达到终极目标后,失业的人们应如何生活,我相信社会学家等会提出设想。
图右的 HACKer 为 Gemini
Part II. “我最喜欢的语言是 JavaScript”
“Mark Zukerberg 在大学里写出了 Facebook, 我大学时期就也写了一个类似 Facebook 的社交程序。我和一个学长合作,不是为了盈利或其他原因,只是纯粹地觉得我们也能写出这个程序。当时云服务器还不普遍,我们只能把服务器架构在学校实验室电脑上。”Gemini 如此描述他参与的第一个大型项目。至于个人的第一个程序,则是他高一的时候写的一个社交属性的论坛。他说道:“在论坛上,我可以发表文章,然后可以查看朋友的留言。我高一时费了很长时间把服务器架设在自己电脑上,我还一直开着电脑,为了让论坛持续在线,就这件事被我父母讲了很多遍。”
“我最喜欢的语言是 JavaScript”。
Gemini 学习和使用过很多语言。当被问到计算机语言的个人喜好时,他的回答是 JavaScript。“JavaScript 能时刻保持新鲜感,功能更新得很快,”他解释道,“JavaScript 让前端工程师有更大的潜能,能做一些后端工程师的工作,另外我对 JavaScript 的未来发展也很看好。我就是喜欢这门语言。”他最后加上一句。对于其他计算机语言,Gemini 认为“一些 Java 程序员可能会有些教条主义的倾向。Java 相对来说是一门历史较为悠久的语言,程序员在学习这门语言时,会学到许多 Design Pattern 的知识。某些 Java 程序员在写程序时,可能会受影响,然后写出很复杂的代码来解决两三行代码就能解决的问题。Design Pattern 是一把双刃剑,”他解释说,“开个玩笑的话,一行代码能运行的事情,让 Java 程序员来写,可能写得又臃肿又冗长。”
关于新手如何学习的建议,Gemini 说道:“官方网站是我最推荐的学习渠道,因为官网是更新最快的,其他途径比如通过看教学视频的话,因为视频制作周期较长,可能造成到学习到过期技术的情况。当 Android SDK 已经更新到 Ice Cream Sandwich 时,很多视频还在讲 Android Gingerbread 的开发。”他还提到对于客户端开发者来说,他认为高等数学是非常值得认真学习的一门课。“客户端开发者在制作动画的时候,会需要数学知识来模拟物体运动轨迹等,微积分等数学知识会用到。”
Part III. 技术,产品和未来
Gemini 同时是个酷爱技术的人。“如果有新的技术点等出现,我会放在脑子中的 to-do-list 里,然后等到空闲时间来研究学习。我喜欢看新功能的源代码,了解这些酷炫的效果是如何实现的。”源代码公开是一个热议话题,当问到对源代码公开的个人观点时,Gemini 说到:“虽然对程序员是一件好事,可以让程序员研究源代码,但我并不认为所有软件的源代码必须公开,源代码公开涉及到知识产权等各种问题。同时,我有一个请求,如果软件是闭源的话,我希望该公司能够尽快处理好 bug,既然他们不允许外部开发者通过研究源代码来帮助修复 bug”。
当被问到身为开发者的个人感受的时候,Gemini 感慨道,“程序员和产品经理是天生的冤家。”
很多情况下,好的设计效果和漂亮的代码不可同时兼得。好的代码能让程序员有舒心的感受,但是不一定有好的用户体验。有一种能减轻此矛盾的方法,就是开发者兼任程序设计的职位,当这两种职位由同一个人担当时,前文提到的矛盾貌似就可以解决。很多独立的游戏开发者,同时设计游戏场景,以及代码实现。然而 Gemini 认为,这样的情况还是会导致矛盾。“这样的情况下程序员有两个目标,一个是希望自己的产品能有更多用户,另一个是写代码写得舒心。然而大部分情况下很难用漂亮的代码来实现漂亮的界面,从而吸引更多的用户。”他评论道,“即使是一个人承担两种工作,这份工作本身就存在矛盾,但是一旦解决这个矛盾,那它一定就是一种被称为‘完美’的艺术。”
至于在 SegmentFault 的现任客户端工作,Gemini 表示非常有成就感。“我在 SegmentFault 待了一个月,就写出了 SegmentFault for Android,这是一个值得我自己骄傲的作品,我在其中融入了很多我想表现的东西,包含一些新奇的技术,以及作为一个 Android Developer 最爱的 Material Design。SegmentFault 团队给予了我最大的自由度让我表现自己,它让我感觉到了公司对一个技术人的信任,和对待技术的尊重。”
最后一个问题是:你对中国未来互联网的发展有什么展望?
“我希望中国能出现 Google 这样的为了研发科技而研发科技的公司。”他说到,“我个人觉得国内的一些程序员有时候有些功利,专注与有可见利益的项目,而不是为了个人的信念而去编写程序。Google X 的很多科研项目是在短时间内没有可见利益的,然而这些项目对科技和社会的发展有很重要的意义。”
-EOF-
如果大家有任何问题,或者就某一话题想讨论,请在评论区留言给 Gemini~
// 看破红尘清新文艺的编程女纸 Lily,愤世嫉俗逗逼无穷的编程喷子 Pepper
Pepper:Lily,我们是何方妖怪?
Lily:我们都是萌萌哒美帝大二在读生,现在在 SegmentFault 实习中。
Pepper:我们俩最近打什么酱油?
Lily:我们要制作一个访谈系列,为打破外界对程序员简单平面的偏见,他们其实都是有血有肉有思想的创造家。