黑客与架构师

status
category
date
summary
slug
icon
tags
password

计算机科学

我向来不喜欢“计算机科学”这个词,当然我并不是因为没有被计算机科学与技术专业录取而怀恨在心,反而我更认同和欣赏录取我的专业:软件工程。我只是认为用科学给计算机冠名,还为时尚早,就像钦定了计算机的地位,但这是历史该做的事情。更让我恼火的是,谈论国内高校和专业时也用 Computer Science,似乎是一件高尚且政治正确的事情。总结起来,就是大家在吹捧我认为现阶段根本不存在的“计算机科学”。
我认为计算机专业有两个极端,一端是借助计算机舞台伸展拳脚的数学家或电子信息工程师,我猜计算机科学这个名词应该就是那些人发明的,另一端是只想写出有趣软件的人。我没有找到很好的词来概括后者,所以只能用平平无奇的“人”这个字。
这也是现在互联网普遍的现象,所有人都在疯狂鼓吹人工智能、物联网、大数据、区块链等名词,像我这样只想简简单单做个 App 的移动客户端开发者,好像总是矮人一截。同时,我不喜欢被称作程序员,因为 coding 只是我 dream job 的一小部分。除了写代码,还有很多我想做的事情,例如设计产品功能和外观,只可惜都被别人做了。虽然有时他们做的不是特别好,但我也不能代替他们。其实我是很想自称为移动软件工程师的,只不过在现在的环境下,这样自我介绍会显得有点奇怪。
同时我也不喜欢任何与产品和工程弱相关的东西,例如数学、物理、算法,甚至是操作系统和计算机网络等等,同行如果知道我连写个快速排序算法都很费劲,必然会无情地嘲笑我。但我不明白的是,达芬奇也不需要知道颜料的化学成分和制作原理,大家只看到蒙娜丽莎,就说他是个伟大的画家。所以希望将来有一天,我可以自豪地说我真的不会写快速排序,但这不妨碍我创造一款优秀的 App。

完美的技校

另一个互联网潜规则,就是歧视培训班。虽然前几年移动互联网刚刚兴起的时候,确实是因为很多无良培训班搅乱了国内的互联网环境,导致人才质量、工资幅度、行业水平都受到影响,甚至大学招生也出了问题,但培训班在我看来是最完美的地方。培训班的目的很简单,赋予学生 get things done 的能力,这种能力是真正用来评价一个工程师能力的客观标准。
互联网行业歧视培训班出来的学生,指责他们只学会了面试技巧,不懂原理,不会变通,没有能力攻克现实中遇到的工程难题,却不反思一下:那他们是怎么通过面试的?面试都在考核什么东西?当研究生为了顺利毕业,发表的论文对学术和工程都没有作用,人们却习以为常,只要查重率够低,这个社会上便又多了一位计算机科学与技术专业的硕士。但培训班不仅有与行业接轨的教育模式,还有与人才需求匹配的考核标准:开发 App 需要掌握什么就教什么,能开发 App 就毕业,这简直就是完美的学校,但前提是开培训班的人得把该做的事情做好。
我对其他行业也持有相同的看法,比如蓝翔毕业生能驾驶好一台挖掘机,新东方毕业生能做得一手好菜,那么这两所学校的教育就是成功的,办学理念也是高尚的。因此我认为技校值得拥有更优质的教育资源,学生在这里学的是 how to get things done,这个过程中自然会学到 why,而不是老师灌输的“知其然”和“知其所以然”。遗憾的是目前技校并不能培养软件工程师和产品经理,也不能培养律师、医生或者 CEO。

Hacker

如果自我介绍不说软件工程师,那么我理想的称谓有两个,其中一个叫做黑客。现在人们有一种偏见,黑客就是天天在小黑屋里,穿着连帽衫,噼里啪啦敲着键盘。我承认这很酷,而且我对黑客的印象也同样起源于那些影视作品。但现在我理解的黑客是 hacker,hack 本意是劈或者砍,解决一个难题就像砍倒一棵粗壮的树,所以计算机领域的攻坚者都可以称为黑客。
黑客本身是一个中性词,人们习惯以黑客的目的来判断他的好坏。例如干数据盗窃、病毒勒索之类勾当的黑客是坏人,发现漏洞及时告知并协助修复的黑客是好人,他们也常常被称为红客。但目的都是两面性的,抛开法律不谈,劫富济贫的黑客是好是坏呢?鉴于这个问题无解,我认为应该站在黑客的角度去思考。
真正的黑客在战斗中,是不会考虑战利品的。攻破某个防火墙,为几亿日活的产品添加一个新功能,还是破译邻居家的 WiFi 密码,结果无所谓,有没有用更无所谓,重要的是过程。就像我和同事,曾经就可乐和雪碧的含糖量百分比计算方法产生过激烈的辩论,再比如我在高中是极其讨厌数学和物理的,但被迫解出难题时,我依然在享受那份成就和喜悦,这是典型的黑客和极客精神胜利:Because I can.

Architect

另一个称谓叫做架构师。架构师这个词,在国内已经比程序员显得高级许多了,他们从事的工作主要是设计软件系统,以提高软件的综合素质。但在我看来,这只是每一名软件工程师应尽的职责而已,只不过很多人暂时做不好这份工作。但过分的是,找别人来擦屁股,还专门为其创造出架构师这么一种职业岗位。这就好比世上渣男多了,于是一个正常本分的男生就吹捧成了暖男。
不过我喜欢架构师的原因,是它和建筑师有着相同的含义(architect)。建筑师只是想盖房子而已,只不过盖房子有时候比较困难,需要掌握几何学、物理学、材料学等知识才能盖的起来。如果还想要房子更好看,或者建筑师本人将房子视为作品,希望通过它表达自己、影响别人,那么还得进修一下美学、设计学。同样的,达芬奇如果想精确地还原蒙娜丽莎的色彩,他可能得研究一下矿物颜料及其化学反应。
我也只是想写一款 App 而已,只不过有时候比较困难,例如为了制作自然流畅的动画效果,我得去学一学物理学、微积分和线性代数,以准确描述物体的运动;为了保障用户的合法权益,我应当了解一下基本的法律知识,并且懂得如何利用高等数学和密码学来保护用户隐私;有时候我单纯地想让更多人使用我的 App,我喜欢影响他人、改变世界的成就感,那么我得懂一点用户心理学,我还得掌握市场和社会的运作规律,以便更好地创造需求和价值。
我理解打好基础的意义,但我仍然是自顶向下方法论的坚定维护者。我猜达芬奇画鸡蛋并不是为了磨炼绘画技巧,以便将来画出什么伟大的作品,而只是单纯想画出一个完美的鸡蛋。但后人听了这个故事,就把鸡蛋定为绘画的必修课,自认为找到了艺术金字塔的基石,真是可惜。

Hacker or Architect

如此说来,黑客和架构师的含义产生了很多冲突:前者的过程驱动性更强,后者的目的驱动性更强。架构师是为了解决一个难题才开始 hack 的过程,而我是被迫成为了黑客。那我的目的是什么呢?这个目的是会逐渐放大和延伸的,拿之前做题的目的来举例,先是为了掌握知识、考高分,然后是为了上好大学,再是为了有好工作,又经过一系列的转折,最终是为了身心健康、幸福快乐等等。顺便谈一谈我对功利的定义:目的被放大和延伸的次数越多,或者效果越大,这个目的就越功利。例如我们鼓励孤独的人去结交朋友,但如果一个人社交的目的是集赞人脉以便将来好办事,我们就说他功利。
话说回来,作为架构师,我理应有一个单纯而不功利的目的,那就是计算机的一个极端:我想写出有趣的 App,就是这么简单。所以我字典里的黑客,应该是由架构师转职而来的:我先是有了单纯的目的,为了达成这个目的我需要解决很多问题,从解决问题这个微观角度来说,我是主动的黑客;从想尽一切办法达到最初目的的宏观角度来说,我是真正意义上的架构师。但我并非真正热爱计算机和软件行业,我并非觉得写代码是一件令人愉快的事情,对于 CPU 的运行原理我也丝毫没有兴趣,所以我不是一个真正意义上的黑客。
幸运的是,黑客和架构师就好像我人生的用户态和内核态,我可以在二者之间来回切换。有时我为了解决某个问题死磕到底,其他时候我又在为平凡的事情寻找激动人心的意义。这样说来,黑客和架构师似乎有点像高中时期的作文题目:脚踏实地和仰望星空。
至此我得到了这个模棱两可的答案,希望在人生其他方面我也可以加以运用。
Loading...

© 刘口子 2018-2025